Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Bảng con nào trong Mối quan hệ Nhận dạng hoặc Không Định danh?

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 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ứa NULL để 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 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 tham khảo / phụ thuộc trên Employee bảng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Vi phạm tính nhất quán GTID của MySQL

  2. Tại sao MySQL COUNT không có tên bảng lại cho 1

  3. Sử dụng Java để thiết lập kết nối an toàn với MySQL Amazon RDS (SSL / TLS)

  4. Cách sử dụng nhóm kết nối với java, MySQL và Tomcat 6

  5. MySQL Chọn 7 ngày qua