Thứ Sáu, 29 tháng 4, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 3 - Thiết lập tính toàn vẹn tham chiếu liên bảng

James Perry, Richard Newmark


Chương 3
Tạo, nhập liệu, và hiển thị bảng


Thiết lập tính toàn vẹn tham chiếu liên bảng


Access cung cấp một cách áp đặt tính toàn vẹn tham chiếu (referential integrity) nhờ đó các quan hệ định nghĩa giữa các bảng được duy trì thường trực và tự động. Chẳng hạn, các qui tắc toàn vẹn tham chiếu sẽ ngăn bạn thêm một bản ghi vào bảng quan hệ nếu chưa có bản ghi kết hợp trong bảng chính. Hơn nữa, các qui tắc này sẽ ngăn việc xóa hay sửa bản ghi trong bảng chính nếu xảy ra tình trạng bản ghi mồ côi trong bảng quan hệ. Giả sử bạn muốn áp đặt toàn vẹn tham chiếu giữa bảng nhân viên (tblMyEmployees) và bảng chức danh nhân viên (tblEmployeeTitle). Một khi bạn bảo Access áp đặt các qui tắc toàn vẹn tham chiếu giữa hai bảng, bạn không thể xóa một chức danh khỏi bảng chức danh nhân viên trừ phi không có nhân viên nào có chức danh đó trong bảng nhân viên. Nếu bạn xem bảng chức danh nhân viên là cha và bảng nhân viên là con, thì bạn không thể xóa chức danh nào khiến con bị mồ côi (nhân viên với chức danh trỏ đến một dòng hiện thời đã bị xóa). Khi làm việc nhiều với Access, bạn sẽ hiểu rõ hơn cách hoạt động của tính toàn vẹn tham chiếu nhằm duy trì quan hệ “cha/con” giữa các bảng.

Trong bài tập kế, bạn sẽ làm việc với cửa sổ quan hệ Relationships, là cửa sổ hiển thị liên kết giữa các bảng trong cơ sở dữ liệu đã cho. Bạn sẽ định nghĩa liên kết thường trực – quan hệ khóa chính khóa ngoại – để việc tạo truy vấn đa bảng dễ hơn. Bạn cũng có thể quyết định cửa sổ quan hệ Relationships không hiển thị, hiển thị một vài, hay hiển thị mọi quan hệ liên bảng. Để minh họa, bạn sẽ thiết lập tính toàn vẹn tham chiếu giữa bảng nhân viên mà cơ sở dữ liệu có sẵn (tblEmployee) và bảng chi nhánh cùng địa điểm (tblEmployeeDivision). Điều này sẽ đảm bảo là một chi nhánh trong bảng tblEmployeeDivision không thể bị xóa nếu mọi nhân viên (tblEmployee) chưa được gán một chi nhánh mới hay hay chưa được xóa.

BÀI TẬP 3.6: THIẾT LẬP TÍNH TOÀN VẸN THAM CHIẾU

1. Kích DATABASE TOOLS tab trên dải lệnh rồi kích lệnh Relationships trong nhóm Relationships. Relationships tab hiện lên.

2. Kích Show Table trong nhóm Relationships thuộc tab ngữ cảnh DESIGN để hiển thị tên bảng. Hộp thoại Show Table hiện lên.

3. Kích Tables tab trong hộp thoại Show Table, nếu cần, để chỉ hiển thị tên bảng.

4. Kích kép bảng tblMyEmployees trong danh sách để thêm nó vào cửa sổ Relationships. Sau này, bạn có thể muốn kéo biên dưới của tblMyEmployees để hiển thị tất cả tên trường của nó. Và kéo biên phải, nếu cần, để hiển thị các tên trường dài.

5. Lặp lại bước 4, nếu cần, để hiển thị các bảng tblEmployeeDivision, tblEmployeeTitle, và tblEmployee. (Xem Hình 3.8.)

Hình 3.8 Hộp thoại Show Table.

6. Kích nút Close để đóng hộp thoại. Bạn có thể sắp lại các bảng trong cửa sổ Relationships bằng cách kéo thanh tiêu đề của chúng đến vì thế bạn muốn.

7. Che tblMyEmployees trong cửa sổ Relationships bằng cách kích phải bất kỳ nơi nào trong tblMyEmployees rồi kích Hide Table trong pop-up menu. Kích và kéo thanh tiêu đề tblEmployee để đặt nó vào giữa hai bảng còn lại.

8. Kích trường DivisionID trong tblEmployeeDivision rồi kích và kéo nó đến trường EmpDivisionID trong tblEmployee.

9. Đánh dấu ô áp đặt tính toàn vẹn tham chiếu Enforce Referential Integrity (xem Hình 3.9).

Hình 3.9 Liên kết hai bảng và áp đặt tính toàn vẹn tham chiếu.

10. Kích nút Create để thiết lập tính toàn vẹn tham chiếu giữa hai bảng (xem Hình 3.10).

Hình 3.10 Đường liên kết hai bảng.

11. Kích Close trong nhóm Relationships rồi kích Yes khi bạn được hỏi “Do you want to save changes to the layout of Relationships?” (Bạn có muốn lưu các thay đổi về cách bố trí các quan hệ không?) Điều này sẽ duy trì quan hệ mới được thiết lập và ràng buộc toàn vẹn tham chiếu.

Hình 3.10 trình bày cửa sổ quan hệ trước khi bạn đóng nó. Một phía của đường liên kết hai bảng có số 1, cho biết đó là phía khóa chính của quan hệ. Phía kia của đường liên kết có ký hiệu vô cực (∞), cho biết đó là phía khóa ngoại của quan hệ. Ký hiệu vô cực nghĩa là nhiều bản ghi có thể quan hệ với một bản ghi trong bảng “cha”.

Khi bạn nối hai bảng trong cửa sổ quan hệ Relationships như được minh họa ở đây, góc nhìn Datasheet của chúng hơi khác với tình trạng trước khi nối. Một cột mới gọi là chỉ dấu mở rộng (expand indicator) xuất hiện ở cột đầu tiên trong bảng cha nhằm ký hiệu mối quan hệ với bảng con. Chỉ dấu hiển thị dấu cộng (+) hay dấu trừ (-). Điều này cho biết có một datasheet con gắn với bảng và các bản ghi trong bảng. Một datasheet lồng trong một datasheet khác thì được gọi là datasheet con (subdatasheet). Nó xuất hiện bất kỳ khi nào hai bảng quan hệ với nhau trong mối quan hệ một-nhiều, chẳng hạn quan hệ giữa bảng chi nhánh tblEmployeeDivision (phía một của quan hệ) và bảng nhân viên tblEmployee. Khi xem bảng liên kết ở góc nhìn Datasheet, bạn có thể kích chỉ dấu mở rộng gắn với dòng bất kỳ để xem các bản ghi liên quan. Bài tập kế minh họa cách xem bản ghi liên quan trong các bảng tblEmployee tblEmployeeDivision.

BÀI TẬP 3.7: HIỂN THỊ CÁC BẢNG QUAN HỆ BẰNG CHỈ DẤU MỞ RỘNG

1. Với cơ sở dữ liệu Chương 3 đang mở, kích kép tblEmployeeDivision trong Navigation Pane. Theo mặc định bảng sẽ mở ở góc nhìn Datasheet.

2. Kích chỉ dấu mở rộng (+) của dòng tblEmployeeDivision đầu tiên, ứng với DivisionID 101.

3. Nếu hộp thoại Insert Subdatasheet mở lên thì kích tblEmployee từ danh sách bảng. Access sẽ điền các trường cha và con từ quan hệ đã được thiết lập trước đây. Kích OK.

Một phần của bảng nhân viên Employee sẽ mở lên, cho biết những nhân viên nào đang làm việc ở chi nhánh đó (xem Hình 3.11). Để ý rằng chỉ dấu mở rộng, thường là dấu cộng, chuyển thành dấu trừ. Dấu trừ cho biết các dòng của bảng quan hệ đang mở. Dĩ nhiên, nếu không có dòng nào quan hệ với dòng đang mở thì dòng trống sẽ xuất hiện.

Hình 3.11 Mở datasheet con của một dòng cha.

4. Kích phải tblEmployeeDivision tab rồi kích Close All để đóng mọi tabs đang mở.

5. Kích Yes nếu được hỏi bạn muốn lưu cách bài trí bảng như thế không.

Không phải mọi dòng trong tblEmployeeDivision đều có datasheet con. Chẳng hạn, hiện thời không có nhân viên nào làm việc tại chi nhánh Milford, Connecticut. Bạn có thể thêm dòng vào datasheet con đang mở bằng cách nhập dữ liệu vào dòng trống ở cuối bảng. Nếu bạn thêm một dòng vào datasheet con tức vào bảng tblEmployee, Access sẽ tự động điền giá trị trường khóa ngoại EmployeeDivisionID – tức giá trị ứng với nhóm dòng liên quan với nhau đó.

THỬ NGHIỆM

Hãy kích chỉ dấu mở rộng ứng với Lincoln trong tblEmployeeDivision. Một dòng trống sẽ xuất hiện. Điều này cho biết không có nhân viên nào đang làm việc tại đó. Kích phải tblEmployeeDivision tab rồi kích Close All để đóng tất cả các tabs.

Không có nhận xét nào:

Đăng nhận xét