Bạn đang suy nghĩ quá mức về mối liên hệ giữa tính tùy chọn và danh tính. Cho đến khi mọi thứ đến với bạn một cách tự nhiên hơn, tốt nhất bạn nên coi chúng là hoàn toàn không liên quan .
Về tính tùy chọn, điều quan trọng cần nhớ là tùy chọn có tính định hướng. Để sử dụng ví dụ của bạn về employee_equipment
:Chắc chắn rồi, nhân viên không cần thiết bị. Mối quan hệ một-nhiều từ employee
tới employee_equipment
Là tùy chọn. Đồng thời, nhìn ở góc độ ngược lại, mối quan hệ là bắt buộc. Bạn không thể có bản ghi trong employee_equipment
trừ khi có employee
để liên kết nó với.
Danh tính không liên quan gì đến tính tùy chọn, ngoại trừ tình cờ một mối quan hệ xác định là bắt buộc từ đứa trẻ đến cha mẹ. Việc cha mẹ đối với con cái có bắt buộc hay không thì không có ở đây cũng như không có liên quan đến danh tính.
Điều tạo nên mối quan hệ xác định là bạn phải biết bạn đang nói về cha mẹ nào (cũng như một số điều khác) để biết bạn đang nói về đứa trẻ nào. Nghĩa là, khóa chính của con phải bao gồm một khóa ngoại đối với mẹ.
Các bảng giao nhau thuần túy (ví dụ:employee_equipment
) là những ví dụ điển hình về điều này. Khóa chính của một giao điểm thuần túy là sự kết hợp của các khóa ngoại cho cả hai bảng cha. Lưu ý rằng một số người cũng có thể thêm khóa thay thế cho các loại bảng này. Từ góc độ danh tính không quan trọng lắm nếu có nhiều khóa ứng viên. Điều quan trọng trong việc xác định danh tính là liệu khóa ngoại có phải là một phần của khóa ứng viên hay không, liệu khóa ứng viên đó có phải là khóa chính hay không.
Một ví dụ điển hình khác sẽ là một cái gì đó giống như danh mục siêu dữ liệu của cơ sở dữ liệu, trong đó một cột được xác định bởi bảng mà nó thuộc về, giống như bảng được xác định bởi lược đồ mà nó nằm trong đó, v.v. Biết rằng một cột được gọi là NAME
không cho bạn biết nó là cột nào. Biết rằng đó là NAME
trong cột CUSTOMER
bảng giúp đỡ. (Bạn cũng sẽ phải biết CUSTOMER
lược đồ nào ở trong, v.v.).