Mereka adalah dua prinsip yang berbeda. Cukup banyak satu-satunya kesamaan mereka adalah kata "lajang."
Sumber Tunggal Kebenaran adalah hasil akhir dari proses normalisasi basis data. Setiap informasi entitas disimpan satu kali, dan hanya sekali.
Satu Sumber Kebenaran menjelaskan mengapa kami menempatkan Pelanggan di satu meja, dan Produk di meja lain. Dengan mengaitkan pelanggan dengan produk, menggunakan tabel CustomerProducts, kami menghindari menyimpan pelanggan atau produk di dua tempat yang berbeda, dan sebagai gantinya meletakkan pointer di tabel CustomerProducts yang mengarah ke setiap pelanggan dan produk. Ini juga memungkinkan kami untuk mengaitkan banyak pelanggan dengan suatu produk, dan beberapa produk dengan pelanggan, tanpa menggandakan informasi seperti nama produk atau harganya.
Memiliki Sumber Kebenaran Tunggal (setiap datum disimpan hanya di satu tempat) berarti bahwa, ketika Anda mengubah datum itu, seluruh sistem melihat perubahan yang sama pada saat yang bersamaan. Bandingkan dengan banyak sumber kebenaran, di mana Anda harus mengubah datum di semua tempat penyimpanannya. Bagian sistem yang berbeda mungkin melihat dua nilai berbeda untuk datum yang sama, setidaknya untuk sementara.
Prinsip Tanggung Jawab Tunggal (SRP) berarti bahwa suatu kelas hanya boleh memiliki satu tanggung jawab atau satu alasan untuk berubah. Contoh yang diberikan Fowler adalah kelas Modem:
interface Modem
{
public void dial(String phoneNumber);
public void hangup();
public void send(char c);
public char recv();
}
Kelas ini melanggar SRP, karena memiliki dua tanggung jawab utama: membangun koneksi, dan mengirim data. Untuk memperbaiki masalah, Anda akan membagi antarmuka menjadi dua antarmuka yang berbeda: antarmuka koneksi, dan antarmuka komunikasi. Antarmuka pertama akan berisi metode dial dan hangup, dan antarmuka kedua akan berisi metode kirim dan terima.
SRP bukan hukum, tetapi hanya prinsip. Terkadang SRP dilanggar untuk kenyamanan atau alasan lain. Hal yang sama berlaku untuk normalisasi basis data; terkadang data disimpan dalam bentuk denormalized (termasuk beberapa duplikasi) untuk kinerja atau alasan lain.
Ketidaktahuan Ketekunan adalah bentuk lain dari SRP: kelas seharusnya tidak memiliki pengetahuan tentang cara menyimpan dirinya ke penyimpanan data. Itu bukan tanggung jawabnya; itu adalah tanggung jawab beberapa kelas lain. Jika ini tidak terjadi, Anda harus mengubah setiap kelas yang menggunakan penyimpanan data jika Anda ingin mengubah penyimpanan data ke beberapa jenis penyimpanan data lainnya.