1.1. Tính dư thừa dữ liệu
a) Dư thừa dữ liệu có thể dẫn đến dữ liệu không nhất quán khi cập nhật
– Một số người cho rằng nên lưu tất cả dữ liệu vào một bảng, tuy nhiên đa số bài toán quản lí cần dùng nhiều hơn một bảng dữ liệu.
– Nếu chỉ sử dụng một bảng, có thể dẫn đến dư thừa dữ liệu.
– Như ví dụ ở trên, dữ liệu trùng lặp có thể dẫn đến sai nhầm, không nhất quán về dữ liệu. Việc tạo bảng riêng chỉ chứa thông tin người đọc và sử dụng trường Số thẻ TV làm khoá chính là giải pháp tránh dư thừa.
b) CSDL cần được thiết kế để tránh dư thừa dữ liệu
– Dư thừa dữ liệu tốn vùng nhớ và có thể làm dữ liệu không nhất quán.
– CSDL quan hệ thiết kế với nhiều bảng chứa dữ liệu riêng về đối tượng và sự kiện.
– Ví dụ, ở một thư viện nhỏ, CSDL có thể gồm 3 bảng (Hình 2):
+ Bảng SÁCH chứa dữ liệu về các quyển sách của thư viện.
+ Bảng NGƯỜI ĐỌC chứa dữ liệu về những người đọc.
+ Bảng MƯỢN-TRẢ chứa dữ liệu về việc mượn trả sách, liên quan đến hai đối tượng (người đọc và sách).
– Cách tổ chức CSDL gồm nhiều bảng giúp giảm dữ liệu lặp lại và tránh thông tin dư thừa.
– Việc cập nhật dữ liệu cũng tránh được nhiều rủi ro sai nhầm hơn.
1.2. Liên kết giữa các bảng và khoá ngoài
– Để trích xuất thông tin từ CSDL quan hệ, cần ghép nối đúng dữ liệu giữa các bảng với nhau.
– Thuộc tính liên kết hai bảng phải là khoá của bảng được tham chiếu, gọi là khoa ngoài của bảng MƯỢN -TRẢ.
Ví dụ: Xét CSDL Thư viện gồm ba bảng như Hình 2, để trả lời yêu cầu “Cho biết Họ và tên, Lớp của những học sinh đã mượn quyển sách có mã TH-01” cần dữ liệu từ hai bảng (MƯỢN-TRẢ và NGƯỜI ĐỌC) và thông tin được liên kết với nhau thông qua cặp khoá chính – khoá ngoài.
1.3. Hệ quản trị CSDL đảm bảo ràng buộc khoá ngoài
a) Ràng buộc khoá ngoài
– Khi hai bảng liên kết với nhau, giá trị khoá ngoài ở bảng tham chiếu sẽ được giải thích chi tiết hơn ở bảng được tham chiếu.
– Hiện tượng mất tham chiếu xảy ra khi giá trị khoá ngoài không xuất hiện trong giá trị khoá ở bảng được tham chiếu.
– Nếu muốn cập nhật giá trị khoá ngoài hợp lệ, phải bổ sung bản ghi có giá trị khoá đó vào bảng được tham chiếu trước.
– Đảm bảo tính tham chiếu đầy đủ giữa các bảng có liên kết với nhau là phần của tính toàn vẹn dữ liệu và được gọi là ràng buộc khoá ngoài.
– Ràng buộc khoá ngoài yêu cầu mọi giá trị của khoá ngoài trong bảng tham chiếu phải xuất hiện trong giá trị khoá ở bảng được tham chiếu.
b) Khai báo liên kết giữa các bảng
– Các hệ quản trị CSDL cho phép khai báo liên kết giữa các bảng.
– Phần mềm quản trị CSDL kiểm soát thao tác cập nhật dữ liệu dựa trên các liên kết để tránh vi phạm ràng buộc khoá ngoài.
– Hình 4 cho thấy kết quả trực quan của việc khai báo liên kết giữa 3 bảng khi dùng hệ quản trị CSDL Microsoft Access (phiên bản 365).
1.4. Thực hành về bảng với khoá ngoài
Yêu cầu:
Khám phá cách khai báo liên kết giữa các bảng trong môi trường Access và nhận biết các cập nhật vi phạm ràng buộc khoa ngoài.
Hướng dẫn thực hiện:
– Bước 1. Mở CSDL Thư viện đã có bảng SÁCH (kết quả mục thực hành ở Bài 2). Tạo cấu trúc như ở Hình 2 cho bảng NGƯỜI ĐỌC và bảng MƯỢN-TRẢ.
+ Chọn Số thẻ TV làm khoá chính cho bảng NGƯỜI ĐỌC, chọn khoá chính của bảng MƯỢN-TRẢ gồm ba thuộc tính: Số thẻ TV, Mã sách và Ngày mượn.
– Bước 2. Khám phá cách khai báo liên kết giữa các bảng.
+ Trong dải Database Tools, chọn Relationships.
+ Dùng chuột kéo thả các bảng vào cửa sổ khai báo liên kết (vùng trống ở giữa).
+ Dùng chuột kéo thả khoả ngoài của bảng tham chiếu thả vào khoá chính của bảng được tham chiếu, làm xuất hiện hộp thoại Edit Relationships.
+ Đánh dấu hộp kiểm Enforce Referential Integrity và chọn Create.
– Bước 3. Khám phá báo lỗi của phần mềm quản trị CSDL khi cập nhật vi phạm rằng buộc khoa ngoài.
+ Thêm một vài bản ghi trong đó có bản ghi vi phạm lỗi ràng buộc khoa ngoài (tham khảo Hình 3), quan sát báo lỗi của phần mềm.
+ Chọn xoá một bản ghi trong bang NGƯỜI ĐỌC nếu giá trị Số thẻ TV trong bản ghi này xuất hiện trong bảng MƯỢN-TRẢ, quan sát báo lỗi của phần mềm.