Trả lời nhanh
Bài 7 (Tin học 12) là bài thực hành tạo CSDL KINH_DOANH gồm ba bảng KHACH_HANG, HOA_DON, MAT_HANG rồi liên kết chúng trong cửa sổ Relationships của Access. Điều kiện then chốt: hai trường liên kết phải cùng kiểu dữ liệu. Liên kết giúp tránh dư thừa, nhất quán dữ liệu và tổng hợp được thông tin từ nhiều bảng.
1. Vì sao phải liên kết giữa các bảng?
Thử hình dung chỉ dùng một bảng duy nhất cho cửa hàng: mỗi hóa đơn lại ghi đầy đủ tên, địa chỉ, điện thoại khách hàng và tên, giá mặt hàng. Một khách mua 10 lần thì thông tin khách bị chép 10 lần. Chỉ cần sửa sai một lần là dữ liệu mâu thuẫn nhau.
Cách khắc phục là tách thành nhiều bảng nhỏ, mỗi bảng nói về một đối tượng, rồi nối chúng bằng liên kết. Nhờ vậy:
- Tránh dư thừa dữ liệu: thông tin khách hàng chỉ lưu một lần ở bảng KHACH_HANG.
- Nhất quán dữ liệu: sửa địa chỉ một chỗ, mọi hóa đơn của khách đó đều hiển thị địa chỉ mới.
- Tổng hợp thông tin từ nhiều bảng: một truy vấn hay báo cáo có thể lấy tên khách (bảng này) cùng tên hàng (bảng kia) trong cùng một dòng kết quả.
2. Khái niệm cần nhớ trước khi tạo liên kết
| Khái niệm | Ý nghĩa | Ví dụ trong bài |
|---|---|---|
| Khóa chính (Primary Key) | Trường xác định duy nhất mỗi bản ghi của bảng, không trùng, không rỗng | Ma_khach_hang trong KHACH_HANG |
| Trường liên kết | Trường có mặt ở cả hai bảng, dùng để nối chúng | Ma_khach_hang xuất hiện ở cả KHACH_HANG và HOA_DON |
| Bảng chính | Bảng mà trường liên kết là khóa chính | KHACH_HANG, MAT_HANG |
| Bảng phụ (bảng liên quan) | Bảng chứa trường liên kết như một trường tham chiếu | HOA_DON |
Quan hệ thường gặp là một – nhiều: một khách hàng có nhiều hóa đơn, nhưng mỗi hóa đơn chỉ thuộc một khách hàng. Tương tự, một mặt hàng xuất hiện trong nhiều hóa đơn.
Lưu ý: cấu trúc các bảng dưới đây là cấu trúc minh họa theo ý bài học, các em đối chiếu với bảng thiết kế trong sách của mình khi làm thực hành.
3. Mục đích, yêu cầu của bài thực hành
- Tạo được CSDL có nhiều bảng.
- Rèn kĩ năng tạo liên kết và sửa liên kết giữa các bảng.
4. Bài 1: Tạo CSDL KINH_DOANH và nhập dữ liệu
CSDL KINH_DOANH có ba bảng. Gợi ý cấu trúc để các em hình dung:
- KHACH_HANG: Ma_khach_hang (khóa chính), Ten_khach_hang, Dia_chi, Dien_thoai…
- MAT_HANG: Ma_mat_hang (khóa chính), Ten_mat_hang, Don_vi_tinh, Gia…
- HOA_DON: Ma_hoa_don (khóa chính), Ma_khach_hang, Ma_mat_hang, So_luong, Ngay_dat…
Các bước làm:
- Tạo tệp CSDL mới, đặt tên KINH_DOANH.
- Tạo từng bảng ở chế độ thiết kế (Design View): khai báo tên trường, kiểu dữ liệu, kích thước, chọn khóa chính.
- Lưu bảng, chuyển sang chế độ Datasheet và nhập dữ liệu mẫu theo đề.
- Đóng các bảng trước khi tạo liên kết.
Mẹo: ngay lúc thiết kế, hãy cho trường Ma_khach_hang ở HOA_DON cùng kiểu và cùng kích thước với Ma_khach_hang ở KHACH_HANG. Làm đúng từ đầu sẽ đỡ lỗi khi tạo liên kết.
5. Bài 2: Tạo liên kết cho các bảng
Mục tiêu là có sơ đồ liên kết như hình dưới: KHACH_HANG nối với HOA_DON qua Ma_khach_hang, MAT_HANG nối với HOA_DON qua Ma_mat_hang.

Các bước tạo liên kết
- Mở cửa sổ Relationships: với Access đời cũ chọn Tools → Relationships, hoặc nháy nút Relationships trên thanh công cụ. Ở các phiên bản mới là Database Tools → Relationships.
- Hiển thị các bảng cần liên kết: trong hộp Show Table, chọn từng bảng rồi nháy Add, sau đó đóng hộp.
- Kéo thả trường liên kết: kéo trường khóa (khóa chính) từ bảng chính thả lên trường tương ứng của bảng phụ. Ví dụ kéo Ma_khach_hang từ KHACH_HANG sang Ma_khach_hang của HOA_DON.
- Chọn tham số liên kết trong hộp thoại Edit Relationships (ví dụ Enforce Referential Integrity), rồi nháy Create.
- Lặp lại cho cặp MAT_HANG – HOA_DON.
- Đóng cửa sổ Relationships và chọn Yes để lưu.
Tham số Enforce Referential Integrity (ràng buộc toàn vẹn tham chiếu) buộc dữ liệu ở bảng phụ phải khớp với bảng chính: không thể lập hóa đơn cho một mã khách hàng chưa có trong KHACH_HANG.
Sửa và xóa liên kết
- Sửa: chọn đường liên kết cần sửa, nháy đúp vào nó (hoặc chuột phải → Edit Relationship), chọn lại trường hoặc tham số trong hộp thoại Edit Relationships.
- Xóa: chọn đường liên kết giữa hai bảng rồi nhấn phím Delete → Yes; hoặc chuột phải vào đường liên kết → Delete → Yes.
6. Vì sao Access không chấp nhận tạo liên kết? (lỗi thường gặp)
- Hai trường khác kiểu dữ liệu hoặc khác kích thước (Field Size). Ví dụ một bên Text, một bên Number.
- Một trong hai bảng đang mở ở chế độ Design hoặc Datasheet. Phải đóng bảng trước.
- Dữ liệu cũ vi phạm khi bật Referential Integrity: HOA_DON có mã khách không tồn tại trong KHACH_HANG.
- Kéo ngược chiều (từ bảng phụ sang bảng chính) làm Access hiểu sai bảng chính/bảng phụ.
7. Trắc nghiệm Bài 7 có giải thích
Câu 1. Điều kiện để tạo mối liên kết giữa hai bảng là:
A. Trường liên kết của hai bảng phải cùng kiểu dữ liệu; B. Trường liên kết phải là chữ hoa; C. Trường liên kết phải là kiểu số; D. Trường liên kết phải khác kiểu dữ liệu.
Đáp án: A. Access chỉ nối được hai trường cùng kiểu. B sai vì chữ hoa/thường không phải điều kiện; C sai vì trường văn bản vẫn liên kết được; D trái hẳn quy tắc.
Câu 2. Vì sao khi lập quan hệ giữa hai trường của hai bảng, Access lại không chấp nhận?
A. Bảng chưa nhập dữ liệu; B. Một trong hai bảng đang mở; C. Hai trường khác kiểu dữ liệu, khác chiều dài; D. Cả B và C đúng.
Đáp án: D. Bảng đang mở và hai trường không tương thích đều gây lỗi. A sai vì bảng rỗng vẫn tạo liên kết được.
Câu 3. Khi liên kết bị sai, ta sửa lại bằng cách chọn đường liên kết cần sửa, sau đó:
A. Nháy đúp vào đường liên kết và chọn lại trường cần liên kết; B. Edit → Relationship; C. Tools → Relationship → Change Field; D. Nhấn Delete.
Đáp án: A. Nháy đúp mở hộp thoại Edit Relationships để chọn lại trường. D chỉ xóa liên kết chứ không sửa; B, C là các lệnh không có.
Câu 4. Muốn xóa liên kết giữa hai bảng, trong cửa sổ Relationships ta thực hiện:
A. Chọn hai bảng và nhấn Delete; B. Chọn đường liên kết giữa hai bảng và nhấn Delete; C. Chọn tất cả các bảng và nhấn Delete; D. Cả A, B, C đều sai.
Đáp án: B. Phải chọn đúng đường nối. Chọn bảng rồi Delete chỉ gỡ bảng khỏi cửa sổ Relationships (và nếu bảng có liên kết thì phải xóa liên kết trước), không phải thao tác xóa liên kết.
Câu 5. Sau khi chọn liên kết cần xóa, thao tác nào sau đây là SAI?
A. Nhấn Delete → Yes; B. Chuột phải, chọn Delete → Yes; C. Edit → Delete → Yes; D. Tools → Relationship → Delete → Yes.
Đáp án: D. Menu Tools → Relationships chỉ để mở cửa sổ quan hệ, không có lệnh Delete liên kết.
Câu 6. Liên kết giữa các bảng cho phép:
A. Tránh dư thừa dữ liệu; B. Có thông tin tổng hợp từ nhiều bảng; C. Nhất quán dữ liệu; D. Cả A, B, C đều đúng.
Đáp án: D. Đây chính là ba lợi ích đã nêu ở mục 1.
Câu 7. Để tạo liên kết giữa các bảng, ta chọn:
A. Tools/Relationships hoặc nháy nút Relationships; B. Tools/Relationships; C. Edit/Insert/Relationships; D. Tất cả đều đúng.
Đáp án: A. Có hai cách mở cửa sổ Relationships: dùng menu hoặc nút lệnh. B thiếu cách thứ hai; C không có lệnh như vậy.
Câu 8. Sắp xếp đúng thứ tự các bước tạo liên kết giữa hai bảng:
(1) Kéo thả trường khóa từ bảng chính tới bảng phụ; (2) Chọn các tham số liên kết; (3) Hiển thị hai bảng muốn liên kết; (4) Mở cửa sổ Relationships.
Thứ tự đúng: 4 → 3 → 1 → 2. Phải mở cửa sổ trước, đưa bảng vào, kéo thả trường, cuối cùng mới chọn tham số trong hộp thoại hiện ra. Nếu các phương án A, B, C, D trong đề của em không có dãy này, hãy kiểm tra lại đề: dãy 4 → 3 → 1 → 2 mới là đúng.
Mẹo nhớ: Mở – Hiện – Kéo – Chọn.
8. Bài luyện tập tự giải
Bài 1. Trong KINH_DOANH, nên kéo thả trường nào, từ bảng nào sang bảng nào để nối MAT_HANG với HOA_DON?
Đáp án: kéo Ma_mat_hang từ MAT_HANG (bảng chính, khóa chính) sang Ma_mat_hang của HOA_DON (bảng phụ).
Bài 2. Em tạo liên kết nhưng Access báo lỗi; kiểm tra thấy Ma_khach_hang ở KHACH_HANG kiểu Text (5 ký tự), còn ở HOA_DON kiểu Number. Cần làm gì?
Đáp án: đóng các bảng, mở HOA_DON ở Design View, đổi Ma_khach_hang sang Text với kích thước 5 (khớp bảng chính), lưu lại rồi tạo liên kết lại.
Bài 3. Đã bật Enforce Referential Integrity. Em thêm hóa đơn cho khách có mã K99 chưa có trong KHACH_HANG. Điều gì xảy ra và vì sao?
Đáp án: Access từ chối bản ghi vì ràng buộc toàn vẹn tham chiếu yêu cầu mã khách ở HOA_DON phải tồn tại trong bảng chính. Cần thêm khách K99 vào KHACH_HANG trước.
9. Học tiếp
Sau khi có CSDL nhiều bảng được liên kết, các em sẽ khai thác dữ liệu ở các bài sau:
Câu hỏi thường gặp
Điều kiện để tạo liên kết giữa hai bảng trong Access là gì?
Hai trường liên kết phải cùng kiểu dữ liệu (và nên cùng kích thước), đồng thời cả hai bảng phải đang đóng khi tạo liên kết. Thường một trường là khóa chính của bảng chính.
Tạo liên kết giữa các bảng trong Access theo thứ tự nào?
Mở cửa sổ Relationships, hiển thị các bảng cần liên kết, kéo thả trường khóa từ bảng chính sang bảng phụ, sau đó chọn tham số liên kết và nháy Create.
Làm sao sửa hoặc xóa một liên kết đã tạo?
Để sửa, nháy đúp vào đường liên kết rồi chọn lại trường trong hộp thoại Edit Relationships. Để xóa, chọn đường liên kết rồi nhấn Delete và chọn Yes.
Enforce Referential Integrity dùng để làm gì?
Tham số này bắt dữ liệu ở bảng phụ phải khớp với bảng chính, ví dụ không cho lập hóa đơn cho mã khách hàng chưa có, nhờ đó dữ liệu luôn nhất quán.