Chúng là hai nguyên tắc khác nhau. Khá nhiều thứ duy nhất họ có chung là từ "độc thân".
Nguồn duy nhất của sự thật là kết quả cuối cùng của quá trình bình thường hóa cơ sở dữ liệu. Mỗi mẩu thông tin thực thể được lưu trữ một lần và chỉ một lần.
Nguồn duy nhất của sự thật giải thích lý do tại sao chúng tôi đặt Khách hàng vào một bảng và Sản phẩm ở một bảng khác. Bằng cách liên kết khách hàng với các sản phẩm, sử dụng bảng Khách hàng, chúng tôi tránh lưu trữ khách hàng hoặc sản phẩm ở hai nơi khác nhau và thay vào đó hãy đặt con trỏ vào bảng Khách hàng cho từng khách hàng và sản phẩm. Điều này cũng cho phép chúng tôi liên kết nhiều khách hàng với một sản phẩm và nhiều sản phẩm với một khách hàng mà không trùng lặp thông tin như tên sản phẩm hoặc giá của sản phẩm đó.
Có một Nguồn Sự thật duy nhất (mỗi mốc thời gian được lưu trữ ở một nơi duy nhất) có nghĩa là, khi bạn thay đổi mốc thời gian đó, toàn bộ hệ thống sẽ thấy cùng một thay đổi cùng một lúc. Ngược lại với nhiều nguồn sự thật, nơi bạn phải thay đổi mốc thời gian ở tất cả những nơi nó được lưu trữ. Các phần khác nhau của hệ thống có thể thấy hai giá trị khác nhau cho cùng một mốc thời gian, ít nhất là tạm thời.
Nguyên tắc trách nhiệm duy nhất (SRP) có nghĩa là một lớp chỉ nên có một trách nhiệm hoặc một lý do để thay đổi. Ví dụ mà Fowler đưa ra là của lớp Modem:
interface Modem
{
public void dial(String phoneNumber);
public void hangup();
public void send(char c);
public char recv();
}
Lớp này vi phạm SRP, vì nó có hai trách nhiệm chính: thiết lập kết nối và gửi dữ liệu. Để khắc phục sự cố, bạn sẽ chia giao diện thành hai giao diện khác nhau: giao diện kết nối và giao diện truyền thông. Giao diện đầu tiên sẽ chứa các phương thức quay số và gác máy, và giao diện thứ hai sẽ chứa các phương thức gửi và nhận.
SRP không phải là một luật, mà chỉ là một nguyên tắc. Đôi khi SRP bị vi phạm vì sự thuận tiện hoặc lý do khác. Điều tương tự cũng đúng với chuẩn hóa cơ sở dữ liệu; đôi khi dữ liệu được giữ ở dạng không chuẩn hóa (bao gồm một số sao chép) vì hiệu suất hoặc các lý do khác.
Sự thiếu hiểu biết dai dẳng là một dạng khác của SRP: một lớp nên không có kiến thức về cách tự lưu vào kho lưu trữ dữ liệu. Đó không phải là trách nhiệm của nó; đó là trách nhiệm của một số lớp khác. Nếu đây không phải là trường hợp, bạn sẽ phải thay đổi mọi lớp sử dụng kho lưu trữ dữ liệu nếu bạn muốn thay đổi kho lưu trữ dữ liệu thành một số loại lưu trữ dữ liệu khác.