Bảng con (A.K.A. thực thể yếu ) là một bảng có thuộc tính khóa chính phụ thuộc trên một bảng khác, do đó bảng con được xác định hoặc được xác định một phần bởi các hàng trong bảng nó phụ thuộc vào (cha). Các hàng trong bảng con không thể tồn tại nếu không có hàng tương ứng trong bảng mẹ của nó.
Để minh họa, hãy lấy một ví dụ đơn giản và hoàn toàn phù hợp mà chúng ta đều quen thuộc: Cha mẹ và con cái trong bối cảnh gia đình . Chúng ta có thể mô hình hóa mối quan hệ này với các bảng như sau:
Trong mô hình trên, mỗi hàng trong Parents
bảng được nhận dạng duy nhất bởi một SSN
. SSN
là một thuộc tính nội tại và duy nhất đối với mỗi phụ huynh, do đó nó là một thực thể độc lập hoặc "mạnh" vì nó không dựa vào bảng khác để xác định danh tính của mình.
Tuy nhiên, trẻ em, yêu cầu cha mẹ tồn tại (Parent_SSN
phải tham chiếu đến một SSN
hiện có trong Parents
bàn).
Lưu ý đến khóa chính tổng hợp (Parent_SSN, Name
) trong Children
bàn. Điều này có nghĩa là trẻ em được nhận dạng duy nhất bởi sự kết hợp của Parent_SSN
và Name
. Bạn không thể truy vấn từng đứa trẻ chỉ dựa trên Name
vì nhiều bậc cha mẹ có thể có con trùng tên. Tương tự như vậy, bạn không thể truy vấn từng đứa trẻ chỉ dựa trên Parent_SSN
vì một phụ huynh có thể có nhiều con. Xem xét điều đó, trẻ em được nhận dạng một phần bởi cha mẹ của chúng, do đó nhận dạng mối quan hệ.
Nhưng cũng không thể nhận dạng duy nhất trẻ em bằng SSN? Tại sao có, chắc chắn. Hãy tiếp tục và điều chỉnh mô hình của chúng tôi để bao gồm:
Trong phiên bản này của mô hình, hãy lưu ý rằng chúng tôi đã giới thiệu SSN
trường cho Children
. Danh tính duy nhất trẻ em hiện được xác định bởi SSN
nội tại và duy nhất của chúng . Danh tính của họ không còn phụ thuộc trên Parents
bàn. Mặc dù Parent_SSN
trường vẫn tham chiếu đến SSN
của Parents
bảng, nó không có phần trong danh tính duy nhất của đứa trẻ, do đó cha mẹ có không nhận dạng mối quan hệ với con cái của họ và cả hai bảng hiện có thể được coi là các thực thể độc lập "mạnh".
Ngoài ra, phiên bản này của mô hình có một vài ưu điểm so với phiên bản đầu tiên:
- Một cha mẹ hiện có thể có hai hoặc nhiều con có cùng tên, trong khi tính toàn vẹn của thực thể hạn chế trong mô hình trước đó sẽ không cho phép điều này.
- Bạn có thể cho phép
Parent_SSN
trường chứaNULL
để giải thích cho trường hợp bạn có dữ liệu về đứa trẻ nhưng không biết cha / mẹ của nó là ai.
Trong cả hai mô hình trên, Parents
bảng được coi là bảng mẹ của Children
bàn. Tuy nhiên, trong không xác định các mối quan hệ như trong mô hình thứ hai, Parents
chỉ là một bảng mẹ trong ngữ cảnh của khóa ngoại Parent_SSN
bởi vì Parent_SSN
tài liệu tham khảo / phụ thuộc trên SSN
trong Parents
bảng, nhưng không có bất kỳ phần nào trong việc xác định danh tính thực của trẻ em.
Để minh họa tại sao ngữ cảnh lại quan trọng khi quyết định bảng nào là bảng mẹ / bảng con, hãy xem xét ví dụ sau liên quan đến phụ thuộc vòng tròn:
Trong ví dụ này, các nhân viên và phòng ban được xác định duy nhất bằng các thuộc tính của riêng họ và không lấy bất kỳ phần nào của danh tính của họ từ các bảng khác.
Ở đây, chúng ta có hai mối quan hệ không xác định:một nhân viên làm việc cho một bộ phận (DeptNo
trong Employee
bảng), và một bộ phận được quản lý bởi một nhân viên (ManagerSSN
trong Department
bàn). Cái nào là bảng cha? ... Bảng con?
Nó phụ thuộc vào ngữ cảnh - bạn đang nói về mối quan hệ khóa ngoại nào? Bảng Cục sẽ được coi là bảng mẹ trong ngữ cảnh của DeptNo
trong Employee
bảng vì DeptNo
là tham khảo / phụ thuộc trên Department
bàn.
Tuy nhiên, bảng Nhân viên sẽ được coi là bảng mẹ trong ngữ cảnh của ManagerSSN
trong Department
bảng vì ManagerSSN
là tham khảo / phụ thuộc trên Employee
bảng.