Khái niệm về quan hệ (liên hệ - relationship) trong Access

Nhằm đảm bảo CSDL không phát sinh ra những dữ liệu rác, những dữ liệu trùng lặp (tính toàn vẹn dữ liệu), thì Database thường tạo ra nhiều bảng dữ liệu - chia thông tin ra nhiều bảng - mỗi bảng này hướng quản lý một loại thông tin nào đó. Sau đó những bảng này kết hợp lại với nhau để có thông tin đầy đủ về đối tượng nào đó. Để làm điều này, bạn sẽ thiết lập những trường dữ liệu chung của các bảng từ đó hình thành mối liên hệ giữa các bảng. Phần này tìm hiểu về các mỗi liên hệ (relationship) giữa các bảng và cách sử dụng chúng trong CSDL

Khi tạo được mối liên hệ giữa các bảng thì bạn có thể tạo ra các truy vấn, các biểu mẫu và báo cáo hiện thị thông tin các nhiều bảng một lúc.

Các kiểu liên hệ giữa các bảng Access

Quan hệ một nhiều 1 - n

Quan hệ 1 - nhiều - một dòng (record) của bảng một liên kết với nhiều dòng của bảng nhiều. Nói ngược lại thì nhiều dòng của bảng nhiều liên kết với một dòng ở bảng một

Ví dụ bảng DanhMuc, mỗi dòng là một danh mục sản phẩm (đồ nội thất, đồ điện tử ...) liên kết với nhiều dòng (nhiều sản phẩm) ở bảng Sanpham

Quan hệ 1 - n được hình thành bằng cách tạo liên hệ giữa khóa chính (Primary key) và khóa ngoại (Foreign key)

Quan hệ nhiều - nhiều n - n

Hãy xem quan hệ giữa hai bảng Sanpham và bảng DonHang. Một sản phẩm có thể nằm trong nhiều đơn hàng, ngược lại một đơn hàng có thể có nhiều sản phẩm. Từ đó hai bảng này hình thành mối quan hệ nhiều nhiều. Mối liên hệ này được hình thành qua hai khóa ngoại của DonHangChiTiet là có DonHangIDSanphamID

Quan hệ n - n được hình thành do mỗi quan hệ giữa hai khóa ngoại (Foreign key)

Một loại sản phẩm có nhiều đơn hàng

Một đơn hàng có nhiều sản phẩm

Quan hệ một - một 1 - 1

Quan hệ 1 - 1 là 1 dòng (record) của bảng này liên kết với 1 dòng (record) duy nhất của bảng khác.

Hãy xem mối quan hệ giữa bảng Sanpham và bảng HuongDan. Mỗi sản phẩm (record) có thể có một hướng dẫn sử dụng sản phẩm đó.

Quan hệ 1 - 1 hình thành do mối liên hệ giữa hai khóa chính của hai bảng

Tạo ra các liên hệ trong Access

Khi tạo mối quan hệ, trước tiên hãy đóng các bảng nếu nó đang mở. Từ menu Ribbon, chọn mục Database Tools, tiếp theo chọn Relationships để mở cửa sổ soạn thảo các liên hệ:

Nếu là lần đầu vào thiết lập quan hệ, nó xuất hiện hộp thoại Show Table, tại đây chọn các bảng rồi bấm vào Add để đưa chúng vào cửa sổ soạn thảo liện hệ.

Bất cứ lúc nào đều có thể bật lại cửa sổ này bằng cách bấm phải chuột chọn Show Table

Các bảng xuất hiện, hãy kéo - thả để sắp xếp sao cho dễ quan sát trong cửa sổ. Cố gắng sắp xếp theo mối quan hệ bảng cha / bảng con theo vị trí trái / phải. Ví dụ, như hình dưới:


Để bắt đầu tạo ra mối liên hệ, ví dụ tạo liên hệ bảng DanhMuc (bảng trái) và bảng Sanpham (bảng phải), bấm vào tên khóa chính của DanhMuc (DanhMucID), kéo thả vào tên khóa ngoại DanhMucID của bảng Sanpham, lập tức xuất hiện hộp thoại Edit Relationships (soạn thảo liên hệ). Xem lại các thông tin như bảng trái, bảng phải, các khóa liên hệ chính xác chưa rồi bấm vào Create để tạo mối liên hệ.

Trong bảng này cũng lưu ý các tùy chọn:

  • Enforce Reference Integrity: Đảm bảo tính toàn vẹn dữ liệu. Trường trong bảng trái bắt buộc phải có thì bảng phải có. Ví dụ nếu một sản phẩm có DanhMucID là 10, thì trong bảng DanhMuc phải có record với DanhMucID là 10.
  • Cascade Update Related Fields: khi bảng trái (cha) thay đổi giá trị khóa chính - bảng phải cập nhật theo.
  • Cascade Delete Related Records - record bảng trái bị xóa, các record bảng phải có liên hệ bị xóa theo

Nếu muốn mở lại cửa sổ Edit Relationships nháy đúp chuột vào đừng biểu diễn liên kết. Hoặc nhấn phải chuột vào đường biểu diễn liên kết rồi chọn Edit Relationships

Nếu muốn xóa một liên hệ, nhấn phải chuột vào liên hệ, rồi chọn Delete

Kiểu kết nối

Trong liên hệ giữa hai bảng, có ba kiểu khớp nối dữ liệu. Để điều chỉnh nó vào cửa sổ Edit Relationships bấm vào Join Type. Tại đây có thể chọn một trong ba kiểu

  • Only include rows where the joined field from both tables are equal

    Đây gọi là liên kết nội, mặc định và phổ biến. Kết quả truy vấn theo liên hệ trả về dữ liệu mà trường liên kết tồn tại trong cả hai bảng.

    Ví dụ, Query lấy SanphamHuongDan: thì là liên kết nội, nên chỉ những sản phẩm nào cố HuongDan mới được trả về từ truy vấn

  • Include all records from “bảng bên trái” and only those records from “bảng bên phải” where the joined fields are equal

    Toàn bộ bảng trái, kể cả trường liên kết ở bảng phải không có

  • Include all records from “bảng bên phải” and only those records from “bảng bên trái” where the joined fields are equal

    Toàn bộ bảng phải, kể cả bảng trái không có

Đăng ký theo dõi ủng hộ kênh