4.1 Giới thiệu

Bằng cách chuyển đổi các bảng cơ sở dữ liệu thành các bảng thông thường, giờ đây bạn có thể phân tích mối quan hệ giữa chúng. Số lượng phần tử tương tác giữa hai bảng liên quan được gọi là cardinality. Cardinality giúp bạn kiểm soát mức độ hiệu quả mà bạn đã phân vùng dữ liệu của mình thành các bảng.

Về mặt lý thuyết, tất cả các thực thể có thể duy trì mối quan hệ với nhau, nhưng trên thực tế, có ba loại mối quan hệ giữa các thực thể:

  • một đối một
  • Một đến nhiều
  • nhiều nhiều

4.2 Trao đổi trực tiếp

Nếu chỉ có một thể hiện của thực thể A cho mỗi thể hiện của thực thể B, thì chúng được cho là có mối quan hệ một đối một (thường được ký hiệu là "1:1"). Trên sơ đồ ER, mối quan hệ như vậy được biểu thị bằng một dòng có một thanh nhỏ ở mỗi đầu:

Mối quan hệ 1:1 thường chỉ ra rằng, trừ khi bạn có lý do chính đáng để tách chúng ra, dữ liệu của hai bảng tốt nhất nên được kết hợp thành một.

Tuy nhiên, trong một số trường hợp, việc sử dụng các bảng có mối quan hệ 1:1 là hợp lý. Nếu các bảng của bạn có các trường có dữ liệu tùy chọn, chẳng hạn như mô tả và trong nhiều trường hợp chúng trống, bạn nên di chuyển tất cả các mô tả sang một bảng riêng biệt, điều này sẽ cho phép bạn loại bỏ các khoảng trống thường xuyên và tăng hiệu quả của cơ sở dữ liệu của mình .

Sau đó, để ánh xạ dữ liệu đúng cách, bạn sẽ phải bao gồm ít nhất một cột giống hệt nhau trong mỗi bảng (tốt nhất nên chọn một khóa chính cho việc này).

4.3 Mối quan hệ một-nhiều

Loại mối quan hệ này xảy ra khi một bản ghi trong một bảng được liên kết với nhiều thực thể trong một bảng khác. Ví dụ: cùng một khách hàng có thể đặt nhiều đơn hàng hoặc khách truy cập thư viện có thể mượn nhiều sách trong một lần truy cập. Mối quan hệ một-nhiều (hay gọi tắt là 1:M) được thể hiện trong sơ đồ sử dụng ký hiệu vết chân chim, như minh họa trong ví dụ bên dưới:

Để áp dụng mối quan hệ 1:M khi lập kế hoạch cơ sở dữ liệu, chỉ cần thêm khóa chính từ bảng "một" làm thuộc tính cho bảng "nhiều". Nếu khóa chính nằm trong một bảng khác, nó được gọi là "khóa ngoại". Bảng "một" được coi là bảng cha, trong khi bảng "nhiều" được coi là bảng con.

4.4 Mối quan hệ nhiều-nhiều

Khi nhiều thực thể trong một bảng có thể được kết nối với nhiều thực thể trong một bảng khác, chúng được coi là có mối quan hệ nhiều-nhiều (hoặc M:M). Ví dụ, có một mối quan hệ như vậy giữa sinh viên và lớp học, vì mỗi sinh viên có thể tham gia một số lớp khác nhau và theo đó, nhiều sinh viên có thể đến mỗi lớp.

Trên sơ đồ ER, loại mối quan hệ này được hiển thị như sau:

Thật không may, không thể thực hiện trực tiếp mối quan hệ như vậy trong cơ sở dữ liệu. Do đó, nó sẽ phải được chia thành hai mối quan hệ một-nhiều.

Để làm điều này, bạn sẽ cần tạo một thực thể mới giữa hai bảng. Nếu mối quan hệ M:M được thiết lập giữa doanh số bán hàng và sản phẩm, thì thực thể mới có thể được gọi là "sản phẩm đã bán" vì thực thể này sẽ đại diện cho nội dung của mỗi lần bán hàng.

Với bảng "hàng đã bán" và bảng "doanh thu" và bảng "hàng" sẽ được liên kết theo kiểu 1:M. Trong các mô hình khác nhau, các thực thể trung gian như vậy được gọi khác nhau - "bảng kết nối", "thực thể liên kết" hoặc "bảng nút".

Mỗi mục trong bảng liên kết kết nối hai thực thể khác nhau của các bảng liền kề (và cũng có thể chứa thông tin bổ sung). Ví dụ, một bảng liên kết giữa sinh viên và lớp học có thể trông như thế này:

4.5 Bắt buộc hay không?

Một cách tiếp cận khác để phân tích liên kết là xác định thực thể nào trong số các thực thể được kết nối là điều kiện tiên quyết cho sự hiện diện của thực thể khác. Mặt liên kết tùy chọn được đánh dấu bằng một vòng tròn trên thân cây.

Ví dụ: để một quốc gia có đại diện của riêng mình tại Liên Hợp Quốc, quốc gia đó phải tồn tại trên bản đồ thế giới, nhưng tuyên bố ngược lại sẽ sai:

Hai thực thể có thể phụ thuộc lẫn nhau (nghĩa là một thực thể không thể tồn tại mà không có thực thể kia).

liên kết đệ quy

Đôi khi một bảng có thể tham chiếu đến chính nó. Ví dụ: một bảng nhân viên có thể có thuộc tính "người quản lý" sẽ giới thiệu chúng ta với một nhân viên khác trong cùng một bảng. Đây là mối quan hệ đệ quy.

Kết nối bổ sung

Các liên kết được coi là dư thừa nếu chúng được thể hiện nhiều lần. Theo quy định, một trong số chúng có thể bị xóa mà không làm mất thông tin quan trọng. Ví dụ: nếu thực thể "sinh viên" được kết nối với thực thể "giáo viên" không chỉ trực tiếp mà còn gián tiếp thông qua "lớp học", thì việc loại bỏ mối quan hệ giữa thực thể "sinh viên" và "giáo viên" là hợp lý. Quyết định này được chứng minh bởi thực tế là chỉ có thể giao học sinh cho giáo viên thông qua các lớp học.

4.6 Tính toàn vẹn tham chiếu của dữ liệu

Khi thay đổi khóa chính và khóa ngoại, người ta nên quan sát một khía cạnh như tính toàn vẹn tham chiếu của dữ liệu . Ý tưởng chính của nó là giữ hai bảng trong cơ sở dữ liệu lưu trữ cùng một dữ liệu nhất quán.

Tính toàn vẹn của dữ liệu thể hiện mối quan hệ được xây dựng phù hợp giữa các bảng với liên kết chính xác giữa chúng. Trong trường hợp nào tính toàn vẹn dữ liệu có thể bị vi phạm:

  • Xóa bất thường . Xảy ra khi một hàng bị xóa khỏi bảng chính. Trong trường hợp này, khóa ngoại từ bảng phụ thuộc tiếp tục tham chiếu đến hàng đã xóa khỏi bảng chính.
  • Chèn bất thường . Xảy ra khi một hàng được chèn vào một bảng phụ thuộc. Trong trường hợp này, khóa ngoại từ bảng phụ thuộc không khớp với khóa chính của bất kỳ hàng nào trong bảng chính.
  • Cập nhật bất thường. Với sự bất thường như vậy, một số hàng của một bảng có thể chứa dữ liệu thuộc về cùng một đối tượng. Nếu bạn thay đổi dữ liệu trong một hàng, chúng có thể xung đột với dữ liệu từ một hàng khác.

xóa bất thường

Để giải quyết vấn đề xóa bất thường, khóa ngoại phải được đặt thành một trong hai ràng buộc:

Nếu một hàng từ bảng phụ thuộc nhất thiết yêu cầu một hàng từ bảng chính, thì khóa ngoại được đặt thành xóa theo tầng. Nghĩa là, khi một hàng bị xóa khỏi bảng chính, (các) hàng được liên kết sẽ bị xóa khỏi bảng phụ thuộc.

Nếu một hàng từ bảng phụ thuộc không cho phép liên quan đến một hàng từ bảng chính (nghĩa là mối quan hệ như vậy là tùy chọn), thì khóa ngoại được đặt thành NULL khi hàng liên quan bị xóa khỏi bảng chính. Cột khóa ngoại phải là nullable.

Chèn bất thường

Để giải quyết sự bất thường khi chèn khi thêm vào bảng dữ liệu phụ thuộc, cột đại diện cho khóa ngoại phải có giá trị rỗng. Và do đó, nếu đối tượng được thêm vào không có kết nối với bảng chính, thì cột khóa ngoại sẽ có giá trị NULL.

Cập nhật bất thường

Để giải quyết vấn đề cập nhật bất thường, quá trình chuẩn hóa được áp dụng, đã được thảo luận trước đó.