Ví dụ về liên kết giữa các bảng

LIÊN KẾT GIỮA CÁC BẢNG Khái niệm Trong CSDL, các bảng thường có liên quan với nhau. Khi xây dựng CSDL, liên kết được tạo giữa các bảng cho phép tổng hợp dữ liệu từ nhiều bảng. Để hiểu khái niệm liên kết, xét ví dụ sau đày. Một công ti chuyên bán dụng cụ văn phòng thường xuyên nhận đơn đặt hàng từ khách hàng. Để thống kê và phân tích các đơn đặt hàng, xét hai cách lập CSDL: Cách thứ nhất'. Lập CSDL gồm một bảng duy nhất chứa tất cả các thông tin cần thiết chia thành các trường như sau: Tên trường Mô tả Khoá chính So_don Số hiệu đơn đặt hàng Ma khach hang Mã khách hàng Ho Jen Tên khách hàng Ma mat hang Mã mặt hàng Sojuong Só lượng Ten mat hang Tên mặt hàng Dia chi Địa chỉ khách hàng Ngay giaoJiang Ngày giao hàng Don gia Đon giá [VNĐ] Cách thứ hai'. Lập CSDL KINHJDOANH gồm ba bảng có cấu trúc tương ứng như sau: KHACHHANG Tên trường Mô tả Khoá chính Ma_khach_hang Mã khách hàng Hojen Tên khách hàng Dia chi Địa chỉ MAT_HANG Tên trường Mô tả Khoá chính Ma_mat_hang Mã mặt hàng $ Ten mat hang Tên mặt hàng Don gia Đon giá [VNĐ] HOA_DON Tên trường Mô tả Khoá chính So_don. Số hiệu đon đặt hàng ĩ Ma khach hang Mã khách hàng Ma mat hang Mã mặt hàng Sojuong Số lượng Ngay giao hang Ngày giao hàng Khi phân tích việc lập CSDL theo hai cách trên, ta thấy so với cách thứ hai thì cách thứ nhất có những nhược điểm cần lưu ý sau: Dư thừa dữ liệu [ví dụ mã khách hàng, tên khách hàng, địa chỉ khách hàng, mã mặt hàng, tên mặt hàng, đơn giá lặp lại trong các đơn hàng có số hiệu đơn khác nhau,...]; Không bảo đảm sự nhất quán của dữ liệu [ví dụ mã khách hàng, tên khách hàng và địa chỉ khách hàng của cùng một khách hàng ở những đơn hàng khác nhau có thể nhập khác nhau,...]. Cách thứ hai khắc phục được những nhược điểm này. Tuy nhiên, để có được thông tin tổng hợp [chẳng hạn liệt kê tên các loại mặt hàng đã được đặt hàng cùng số lần được đặt hàng] thì cần thông tin từ cả ba bảng, nói cách khác cần có liên kết giữa các bảng. Kĩ thuật tạo liên kết giữa các báng Sau khi đã xây dựng xong hai hay nhiều bảng, ta có thể chỉ ra mối liên kết giữa các bảng với nhau. Mục đích của việc này là để Access biết phải kết nối các bảng như thế nào khi kết xuất thông tin. Các mối liên kết được thể hiện trong cửa sổ Relationships, mọi thao tác như xem, tạo, sửa, xoá liên kết đều được thực hiện trong cửa sổ này. Để mở cửa sổ này chọn Tools->Relationships... hoặc nháy nút . Ta sẽ tìm hiểu cách tạo liên kết qua ví dụ CSDL KINH_DOANH nêu trong mục 1. Các bảng và trường trong từng bảng tương ứng như sau: KHACH_HANG: Ma_khach_hang, Hojen, Dia_chi. MAT_HANG: Ma_mat_hang, Ten_mat_hang, Don_gia. HOA_DON: So_don, Ma_khach_hang, Ma_mat_hang, Sojuong, Ngay_giao_hang. Bảng KHACH_HANG và bảng HOA_DON đều có trường Ma_khach_hang. Ta dùng trường này để xác lập liên kết hai bảng theo các bước sau đây: Mở CSDL KINH_DOANH.MDB. Nháy nút ““ trên thanh công cụ hoặc chọn Tools-»Relationships... Nháy nút ÊD hoặc nháy nút phải chuột vào vùng trống trong cửa sổ Relationships và chọn Show Table... trong bảng chọn tắt để mở hộp thoại Show Table [h. 47a] nếu nó chưa xuất hiện. a] b] Hình 47. Tạo mối liên kết giữa các bảng Trong hộp thoại Show Table chọn các bảng [HOAJDON, KHACH_HANG, MAT_HANG] bằng cách chọn tên bảng rồi nháy Add. Cuối cùng nháy Close để đóng cửa sổ Show Table. Ta thấy các bảng vừa chọn xuất hiện trên cửa sổ Relationships [h. 47b] với các trường khoá chính của mỗi bảng được in đậm. Di chuyển các bảng sao cho hiển thị toàn bộ chúng trên cửa sổ. Để thiết lập mối liên kết giữa bảng KHACH_HANG với bảng HOAJDON: kéo thả trường Ma_khachJiang của bảng'KHACH_HANG qua trường Ma_khach_hang của bảng HOAJDON. Hộp thoại Edit Relationships xuất hiện [h. 48]. Hình 48. Mô tả tính chất của liên kết Trong hộp thoại Edit Relationships, nháy Create. Access tạo một đường nối giữa hai bảng để thể hiện mối liên kết. Tương tự như vậy, ta có thể thiết lập liên kết giữa bảng MAT_HANG và bảng HOA_DON. Cuối cùng ta có sơ đồ liên kết như trên hình 49. Hình 49. Sơ đồ liên kết Nháy nút ES để đóng cửa sổ Relationships. Nháy Yes để lưu lại liên kết.

Mời các em học sinh tham khảo ngay nội dung hướng dẫn soạn Tin 12 Bài 7: Liên kết giữa các bảng được bày chi tiết, dễ hiểu nhất dưới đây sẽ giúp bạn đọc hiểu rõ hơn về bài học này, từ đó chuẩn bị tốt cho tiết học sắp tới nhé.

1. Khái niệm

• Trong CSDL, các bảng thường có liên quan đến nhau. Liên kết được tạo giữa các bảng cho phép tổng hợp dữ liệu từ nhiều bảng

• Có hai cách lập CSDL:

   + Cách 1: Lập CSDL gồm một bảng duy nhất chứa tất cả các thông tin cần thiết

   + Cách 2: Lập CSDL thành các bảng với các cấu trúc tương ứng.

• Lưu ý: cách thứ nhất có những nhược điểm sau:

   + Dư thừa dữ liệu

   + Không đảm bảo sự nhất quán

2. Kỹ thuật tạo liên kết giữa các bảng

• Ta có thể chỉ ra mối liên kết giữa các bảng với nhau nhằm để Access biết phải kết nối các bảng như thế nào khi kết xuất thông tin.

• Các mối liên kết được thể hiện trong cửa sổ Relationships, các thao tác: xem, tạo, sửa, xoá được thực hiện ở đây.

Database Tools → Relationships

• Ví dụ: cho CSDL như trong 3 bảng dưới đây:

KHACH_HANG

• 1. Mở Database Tools → Relationships

• 2. Chọn các bảng: HOA_DON, MAT_HANG, KHACH_HANG rồi nhấn Add.

• 3. Thiết lập mối liên kết giữa các bảng

Kéo thả trường Ma_khach_hang trong bang KHACH_HANG qua trường Ma_khach_hang của bảng HOA_DON

• 4. Trong hộp thoại Edit Relationships, nháy Create.

• 5. Tương tự ta thiết lập các bảng còn lại, kết quả:

   + Kéo trường liên kết ở bảng khách hàng và thả vào trường tương ứng ở bảng hoá đơn.

   + Tương tự thiết lập liên kết bảng hóa đơn và bảng mặt hàng.

• 6. Nháy nút

để đóng cửa sổ Relationships. Nháy Yes để lưu lại liên kết.

►►CLICK NGAY vào đường dẫn bên dưới để TẢI VỀ hướng dẫn giải tin học 12 Bài 7: Liên kết giữa các bảng [ngắn gọn], hỗ trợ các em ôn luyện giải đề đạt hiệu quả nhất.

Đánh giá bài viết

Khái niệm về các liên kiết trong MS Access, thực hành tạo cập nhật các liên kết, những kiểu kết nối join type 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.

File CSDL ví dụ: Download

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]

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ó DonHangID và SanphamID

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ệ 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

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 Sanpham và HuongDan: 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ó

Video liên quan

Chủ Đề