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