1. 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ả | Khóa chính |
So_don | Số hiệu đơn đã đặt | |
Ma_khach_hang | Mã khách hàng | |
Ho_ten | Tên khách hàng | |
Ma_mat_hang | Mã mặt hàng | |
So_luong | Số lượng | |
Ten_mat_hang | Tên mặt hàng | |
Dia_chi | Địa chỉ khách hàng | |
Ngay_giao_hang | Ngày giao hàng | |
Don_gia | Đơn giá (VNĐ) |
Cách thứ hai: Lập CSDL KINH_DOANH gồm ba bảng có cấu trúc tương ứng như sau:
KHACH_HANG
Tên trường | Mô tả | Khóa chính |
Ma_khach_hang | Mã khách hàng | |
Ho_ten | Tên khách hàng | |
Dia_chi | Địa chỉ |
MAT_HANG
Tên trường | Mô tả | Khóa chính |
Ma_mat_hang | Mã mặt hàng | |
Ten_mat_hang | Tên mặt hàng | |
Don_gia | Đơn giá (VNĐ) |
HOA_DON
Tên trường | Mô tả | Khóa chính |
So_don | Số hiệu đơn đặt hàng | |
Ma_khach_hang | Mã khách hàng | |
Ma_mat_hang | Mã mặt hàng | |
So_luong | 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.
2. 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 I. Các bảng và trường trong từng bảng tương ứng như sau:
- KHACH_HANG: Ma_khach_hang, Ho_ten, Dia_chi.
- MAT_HANG: Ma_mat_hang, Ten_mat_hang, Don_gia.
- HOA_DON: So_don, Ma_khach_hang, Ma_mat_hang, So_luong, 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:
1. Mở CSDL KINH_DOANH.MDB. Nháy nút trên thanh công cụ hoặc chọn Tools → Relationships...
2. Nháy nút 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
3. Trong hộp thoại Show Table chọn các bảng (HOA_DON, 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 .
4. 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ổ.
5. Để thiết lập mối liên kết giữa bảng KHACH_HANG với bảng HOA_DON: kéo thả trường Ma_khach_hang của bảng KHACH_HANG qua trường Ma_khach_hang của bảng HOA_DON. 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
6. 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.
7. 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 để đóng cửa sổ Relationships. Nháy Yes để lưu lại liên kết.