Son dos principios diferentes. Casi lo único que tienen en común es la palabra "soltero".
Single Source of Truth es el resultado final del proceso de normalización de una base de datos. Cada pieza de información de la entidad se almacena una vez, y solo una vez.
Fuente única de la verdad explica por qué ponemos a los clientes en una tabla y los productos en otra. Al asociar clientes con productos, usando una tabla CustomerProducts, evitamos almacenar clientes o productos en dos lugares diferentes, y en su lugar colocamos punteros en la tabla CustomerProducts que apuntan a cada cliente y producto. Esto también nos permite asociar múltiples clientes con un producto, y múltiples productos con un cliente, sin duplicar información como el nombre del producto o su precio.
Tener una única fuente de verdad (cada dato se almacena en un solo lugar) significa que, cuando cambia ese dato, todo el sistema ve el mismo cambio en el mismo instante. Compare eso con múltiples fuentes de verdad, donde tiene que cambiar el dato en todos los lugares donde se almacena. Las diferentes partes del sistema pueden ver dos valores diferentes para el mismo dato, al menos temporalmente.
El Principio de responsabilidad única (SRP) significa que una clase solo debe tener una responsabilidad o una razón para cambiar. El ejemplo que da Fowler es el de una clase de módem:
interface Modem
{
public void dial(String phoneNumber);
public void hangup();
public void send(char c);
public char recv();
}
Esta clase viola SRP, porque tiene dos responsabilidades principales: establecer una conexión y enviar datos. Para corregir el problema, dividiría la interfaz en dos interfaces diferentes: una interfaz de conexión y una interfaz de comunicación. La primera interfaz contendría los métodos de marcar y colgar, y la segunda interfaz contendría los métodos de envío y recepción.
SRP no es una ley, sino simplemente un principio. Algunas veces se viola SRP por conveniencia u otras razones. Lo mismo es cierto para la normalización de la base de datos; a veces los datos se mantienen en forma desnormalizada (incluye alguna duplicación) por rendimiento u otras razones.
La ignorancia de persistencia es otra forma de SRP: una clase no debe saber cómo salvarse en un almacén de datos. Esa no es su responsabilidad; Es responsabilidad de otra clase. Si este no fuera el caso, tendría que cambiar cada clase que usa el almacén de datos si desea cambiar el almacén de datos a otro tipo de almacén de datos.