Mối quan hệ bảng mysql

Một trong các mục tiêu của công việc thiết kế cơ sở dữ liệu tốt là phải loại bỏ dữ liệu thừa (dữ liệu lặp lại). Để đạt được mục tiêu này, bạn hãy chia dữ liệu thành nhiều bảng theo chủ đề để mỗi sự kiện chỉ có thể xuất hiện một lần. Sau đó, bạn cung cấp cách thức truy cập tổng hợp các thông tin đã chia sẻ lại với nhau  — bạn thực hiện thao tác này bằng cách đặt các trường chung vào trong các bảng liên quan. Tuy nhiên, để thực hiện đúng bước này, bạn phải hiểu các mối quan hệ giữa các bảng, sau đó xác định các mối quan hệ này trong cơ sở dữ liệu của bạn

Trong bài viết này

Giới thiệu

Các kiểu bảng quan hệ

Tại sao phải tạo mối quan hệ bảng?

Tham chiếu toàn quyền hiểu biết

Xem mối quan hệ bảng

Giới thiệu

Sau khi bạn đã tạo xong một bảng cho từng chủ đề trong cơ sở dữ liệu của mình, bạn phải đưa ra cách để truy cập lại tổng hợp các thông tin đó khi cần thiết. Bạn thực hiện điều này bằng cách đặt các trường chung vào các liên quan và bằng cách xác định các mối quan hệ giữa các bảng. Sau đó, bạn có thể tạo truy vấn, biểu mẫu và báo cáo sẽ cùng hiển thị thông tin từ một số bảng. Ví dụ. biểu mẫu hiện ở đây bao gồm các thông tin được lấy từ một vài bảng

Mối quan hệ bảng mysql

1. Các thông tin trong biểu mẫu này được lấy từ bảng Khách hàng

2. . bảng Đơn hàng

3. . bảng sản phẩm

4. . and table Chi tiết Đơn hàng

Tên khách hàng trong hộp Gửi hóa đơn đến được truy xuất từ ​​bảng Khách hàng, ID Đơn hàng và các giá trị Ngày Đơn hàng được lấy từ bảng Đơn hàng, tên Sản phẩm được lấy từ bảng Sản phẩm và các giá trị Giá Đơn vị . Các bảng này được kết nối với nhau theo nhiều cách để thu thập các thông tin từ mỗi bảng vào biểu mẫu

Trong ví dụ trước, các trường trong các bảng phải được phân phối để có thể hiển thị các thông tin về cùng một đơn hàng. Thực hiện việc phân phối này bằng cách sử dụng các mối quan hệ bảng. Mối quan hệ bảng hoạt động bằng cách khớp dữ liệu trong các trường từ khóa — thường là một trường có cùng tên trong cả hai bảng. Trong hầu hết các trường hợp, các trường khớp này đều là khóa chính - khóa chính từ một bảng, bảng này sẽ cung cấp mã định danh duy nhất cho từng bản ghi và khóa ngoại - khóa ngoại trong bảng khác. Ví dụ. nhân viên có thể được kết hợp với các đơn hàng mà họ chịu trách nhiệm qua công việc tạo ra một mối quan hệ bảng giữa các trường IDNhân viên trong bảng Nhân viên và Đơn hàng

Mối quan hệ bảng mysql

1. ID Nhân viên xuất hiện ở cả hai bảng — ở dạng khóa chính

2. . and out of outside format

Các kiểu bảng quan hệ

Có ba kiểu bảng quan hệ trong Access

Chúng ta hãy sử dụng cơ sở dữ liệu theo dõi các đơn hàng có giới hạn như bao gồm một bảng Khách hàng và một bảng Đơn hàng. Một khách hàng có thể đặt bất kỳ số lượng đơn hàng nào. Vì vậy, đối với mọi khách hàng có thể hiển thị trong bảng Khách hàng, có thể có nhiều đơn hàng có thể hiển thị trong bảng Đơn hàng. Mối quan hệ giữa bảng Khách hàng và bảng Đơn hàng là mối quan hệ một đối nhiều

Để có thể hiện nhiều mối quan hệ trong thiết kế cơ sở dữ liệu của bạn, hãy lấy từ khóa chính ở bên "một" của mối quan hệ rồi thêm từ khóa đó dưới dạng một trường hoặc nhiều trường bổ sung vào bảng ở bên " . Không hạn chế như trong trường hợp này, bạn thêm một trường mới — ID trường từ bảng Khách_hàng — vào bảng Đơn_hàng, sau đó đặt tên cho trường đó là ID_khách_hàng. Sau đó, Access có thể sử dụng số ID khách hàng trong bảng Đơn_hàng để xác định khách hàng phù hợp cho từng đơn hàng

  • Mối quan hệ nhiều đối số

Bây giờ chúng ta hãy xem mối quan hệ giữa bảng Sản phẩm và bảng Đơn hàng. Mỗi đơn hàng có thể bao gồm nhiều hơn một sản phẩm. Mặt khác, mỗi sản phẩm có thể xuất hiện trên nhiều đơn hàng. Vì vậy, đối với mỗi bản ghi trong bảng Đơn hàng, có thể có nhiều bản ghi trong bảng Sản phẩm. Thêm vào đó, đối với mỗi bản ghi trong bảng Sản phẩm, có thể có nhiều bản ghi trong bảng Đơn hàng. Mối quan hệ này được gọi là mối quan hệ nhiều đối số. Lưu ý là để tìm ra các mối quan hệ nhiều đối tượng đã có sẵn giữa các bảng của bạn, điều quan trọng là bạn hãy cân nhắc cả hai phía của các mối quan hệ

Để hiện một mối quan hệ nhiều đối nhiều, bạn phải tạo ra một bảng thứ ba, bảng này sẽ cắt các mối quan hệ nhiều đối nhiều thành hai mối quan hệ một nhiều đối. Bạn hãy chọn từ khóa chính từ mỗi bảng trong hai bảng vào bảng thứ ba. Kết quả là bảng thứ ba sẽ ghi lại từng lần xuất hiện hay từng phiên bản của mối quan hệ. Ví dụ. bảng Đơn hàng và bảng Sản phẩm có mối quan hệ nhiều đối nhiều vốn được xác định bằng cách tạo ra hai mối quan hệ một đối nhiều với bảng Chi tiết Đơn hàng. Một đơn hàng có thể có nhiều sản phẩm và mỗi sản phẩm có thể xuất hiện trên nhiều đơn hàng

  • Mối quan hệ với một đối tượng

Trong quan hệ đối với một, mỗi bản ghi trong bảng thứ nhất chỉ có thể có một bản ghi khớp với bảng thứ hai và mỗi bản ghi trong bảng thứ hai chỉ có thể có một bản ghi khớp với bản ghi thứ nhất. Mối quan hệ là không bình thường, bởi vì biến phổ biến nhất đó là thông tin có liên quan theo cách này phải được lưu trong cùng một bảng. Bạn có thể sử dụng quan hệ đối lập để chia một bảng có nhiều trường, để tách một phần của bảng do các lý do bảo mật hoặc để lưu các thông tin chỉ được áp dụng đối với một tập hợp con trong bảng chính. Khi bạn thực sự xác định là một mối quan hệ, thì cả hai bảng phải có một trường chung

Tại sao phải tạo mối quan hệ bảng?

Bạn có thể tạo các mối quan hệ bảng một cách rõ ràng bằng cách sử dụng các Mối quan hệ cửa sổ hoặc bằng cách kéo một trường khỏi Danh sách trường ngăn chặn. Truy cập sẽ sử dụng mối quan hệ bảng để xác định cách kết nối các bảng khi bạn cần sử dụng chúng trong một cơ sở dữ liệu đối tượng. Có một số nguyên nhân giải thích tại sao bạn phải tạo các mối quan hệ bảng trước khi bạn tạo ra các đối tượng cơ sở dữ liệu khác như biểu mẫu, truy vấn và báo cáo

  • Mối quan hệ bảng truyền dữ liệu cho các thiết kế truy vấn của bạn

Để làm việc với các bản ghi có nhiều bảng, bạn thường phải tạo truy vấn để kết nối các bảng. Truy vấn hoạt động bằng cách khớp các giá trị trong trường từ khóa chính trong bảng đầu với trường khóa ngoài ở bảng thứ hai. Ví dụ. để trả lại các hàng theo đó sẽ liệt kê tất cả các đơn hàng cho từng khách hàng, bạn hãy tạo truy vấn để kết nối Bảng khách hàng với Bảng đơn hàng dựa vào trường ID Khách hàng. Trong cửa sổ Mối quan hệ, bạn có thể xác định trường để kết nối một cách thủ công. Nhưng nếu bạn đã có một mối quan hệ đã được xác định giữa các bảng, Access phải cung cấp đường nối mặc định, dựa trên mối quan hệ của bảng đã có sẵn. Ngoài ra, nếu bạn sử dụng một số trong các hướng dẫn truy vấn, Access phải sử dụng thông tin nó thu thập được từ các mối quan hệ bảng bạn đã xác định để cung cấp các lựa chọn thông tin cập nhật cho bạn và để nhập

  • Mối quan hệ bảng truyền dữ liệu cho các thiết kế biểu mẫu và báo cáo của bạn

Khi bạn thiết kế một biểu mẫu hoặc một báo cáo, Truy cập sử dụng thông tin thu thập được từ các mối quan hệ bảng bạn đã xác định để cung cấp các lựa chọn thông tin cập nhật cho bạn và để nhập trước thiết bị thuộc tính.

  • Mối quan hệ bảng là nền tảng, theo đó bạn có thể bắt buộc tính toàn thể hiện tham chiếu để giúp ngăn chặn các bản ghi vô định trong cơ sở dữ liệu của bạn. Bản ghi vô định là bản ghi có tham chiếu tới bản ghi không tồn tại — ví dụ. một bản ghi đơn hàng tham chiếu tới một bản ghi khách hàng không tồn tại

Khi bạn thiết kế một cơ sở dữ liệu, bạn hãy chia thông tin thành các bảng, mỗi bảng có một từ khóa chính. Sau đó bạn thêm các từ khóa ngoạị vào các bảng liên quan sẽ tham chiếu đến các từ khóa chính đó. Cặp khóa ngoại khóa chính này sẽ tạo nền tảng cho các mối quan hệ bảng và truy vấn đa bảng. Điều quan trọng là tham chiếu của khóa ngoại khóa chính này vẫn phải được đồng bộ hóa. Tính toàn hiện tham chiếu, phụ thuộc vào các mối quan hệ bảng, sẽ giúp đảm bảo chắc chắn các tham chiếu tiếp tục được đồng bộ hóa

Tham chiếu toàn quyền hiểu biết

Khi bạn thiết kế một cơ sở dữ liệu, bạn hãy chia thông tin cơ sở dữ liệu thành nhiều bảng theo chủ đề để giảm thiểu dư thừa dữ liệu. Sau đó, bạn hãy đưa ra cách để truy cập lại dữ liệu tổng hợp bằng cách đặt các trường chung vào các bảng liên quan. Ví dụ. to show quan hệ đối với nhiều bạn hãy lấy một từ khóa chính từ bảng "một" và thêm nó ở dạng một trường bổ sung vào bảng "nhiều". Để hợp nhất lại dữ liệu với nhau, Access sẽ lấy giá trị trong bảng "nhiều" và tra cứu giá trị tương ứng trong bảng "một". Bằng cách này, các giá trị trong bảng "nhiều" sẽ tham chiếu các giá trị tương ứng trong bảng "một"

Giả sử bạn có quan hệ đối lập nhiều giữa bảng Công ty Vận tải Hàng hải và Đơn hàng và bạn muốn xóa một Công ty Vận tải Hàng hải. Nếu công ty vận tải hàng hải bạn muốn xóa các đơn hàng trong bảng Đơn hàng, thì các đơn hàng đó sẽ trở thành "mồ dại" khi bạn xóa bản ghi của Công ty Vận tải hàng hải đó. Các menu hàng vẫn sẽ chứa ID của công ty vận tải hàng hải, nhưng ID đó sẽ không còn hợp lệ, vì bảng ghi nó tham chiếu đến không còn tồn tại nữa

Mục đích của tính toàn vẹn tham chiếu là phải ngăn chặn các dòng mồ côi và giữ các tham chiếu trong trạng thái đồng bộ hóa để giải quyết vấn đề này không xảy ra

Bạn thực hiện tính toàn thực tham chiếu bằng cách kích hoạt tính toàn thực trong mối quan hệ bảng. Khi đã bắt buộc tính toàn vẹn tham chiếu, Access sẽ từ chối bất cứ thao tác nào vi phạm tính toàn vẹn tham chiếu đối với mối quan hệ bảng đó. Điều này có nghĩa là Access sẽ từ chối tất cả cập nhật làm thay đổi đích của tham chiếu và những xóa mục đích loại bỏ mục đích của tham chiếu. Có thể là bạn có một nhu cầu hoàn toàn hợp lý để thay đổi từ khóa chính đối với một công ty vận tải hàng hải có các đơn hàng trong bảng Đơn hàng. Trong trường hợp này, những gì bạn cần là để Access tự động cập nhật tất cả các hàng hóa bị ảnh hưởng như một phần của từng thao tác. Bằng cách đó, Access sẽ đảm bảo rằng bản cập nhật đã được hoàn thành đầy đủ để cơ sở dữ liệu của bạn không bị rơi vào trạng thái không quán nhất, với một số hàng thì được cập nhật và một số thì không. Vì lý do này, quyền truy cập sẽ hỗ trợ cho tùy chọn Cập nhật theo tầng các trường liên quan. Khi bạn bắt buộc tính toàn vẹn của tham chiếu và chọn tùy chọn Cập nhật theo tầng các trường liên quan và sau đó cập nhật một khóa chính, Access sẽ tự động cập nhật tất cả các trường tham chiếu chính

Bạn có thể có một lý do cần thiết để xóa một hàng và tất cả các bản ghi liên quan — ví dụ, một bản ghi Công ty Vận tải Hàng hải và tất cả các đơn hàng liên quan cho công ty vận tải hàng hải đó. Vì lý do này, tùy chọn Access supports Cascade Delete Related Records. Khi bạn buộc tính toàn vẹn tham chiếu và chọn tùy chọn Cascade Delete Related Records và sau đó xóa bỏ một bản ghi ở phía sau khóa chính của mối quan hệ, Access sẽ tự động xóa tất cả các bản ghi tham chiếu từ khóa chính

Xem mối quan hệ bảng

Để xem bảng mối quan hệ, hãy nhấn vào Mối quan hệ trên tab Công cụ cơ sở dữ liệu. Cửa sổ Mối quan hệ sẽ mở ra và hiển thị mọi mối quan hệ có sẵn. Nếu chưa có mối quan hệ bảng nào được xác định và bạn đang mở cửa sổ Mối quan hệ lần đầu tiên, Access sẽ nhắc bạn thêm bảng hoặc truy vấn vào cửa sổ này

Mở cửa sổ Mối quan hệ

  1. Bấm Tệp, rồi bấm Mở
  2. Select and open database
  3. Trên tab Công cụ cơ sở dữ liệu, trong nhóm Mối quan hệ, nhấn vào Mối quan hệ

    Nếu cơ sở dữ liệu có chứa các mối quan hệ, thì cửa sổ kết nối hệ thống sẽ xuất hiện. Nếu cơ sở dữ liệu không chứa bất kỳ mối quan hệ nào và bạn đang mở cửa sổ Mối quan hệ lần đầu, thì hộp thoại Hiển thị Bảng sẽ xuất hiện. Bấm Close để đóng hộp thoại

  4. Trên tab Thiết kế, trong nhóm Mối quan hệ, hãy nhấn vào Tất cả mối quan hệ

    Thao tác này sẽ hiển thị tất cả các mối quan hệ đã được xác định trong cơ sở dữ liệu của bạn. Xin lưu ý là các bảng ẩn (bảng có hộp kiểm Ẩn trong hộp thoại Thuộc tính của bảng được chọn) và các mối quan hệ của chúng sẽ không thể hiển thị trừ khi bạn chọn hộp kiểm Hiển thị đối tượng ẩn trong hộp thoại Tùy chọn điều hướng

Một bảng quan hệ được thể hiện bởi một đường quan hệ kết nối giữa hai bảng trong cửa sổ Quan hệ. Một quan hệ không bắt buộc tính toàn bộ tham chiếu sẽ xuất hiện ở dạng một đoạn đường giữa các mối trường chung để hỗ trợ cho các mối quan hệ. Khi bạn chọn đường quan hệ bằng cách nhấn vào đường quan hệ, thì đường này sẽ tăng lên để biểu thị là nó được chọn. Nếu bạn bắt buộc tính toàn bộ tham chiếu cho mối quan hệ này, thì đường này sẽ hiển thị dày hơn ở mỗi đầu. Ngoài ra, số 1 sẽ xuất hiện trên phần dày của đường ở phía trước của mối quan hệ và biểu tượng vô cực (∞) sẽ xuất hiện ở phần dày của đường ở phía trước kia