Thứ Tư, 15 tháng 6, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 4 - Xử lý quan hệ nhiều-nhiều

James Perry, Richard Newmark


Chương 4
Tạo và dùng câu truy vấn


Xử lý quan hệ nhiều-nhiều


Quan hệ giữa bảng hóa đơn tblInvoice và bảng tồn kho tblInventory là nhiều-nhiều (M-M). Nghĩa là, một hóa đơn bất kỳ có thể chứa nhiều mặt hàng lấy từ kho, và một mặt hàng bất kỳ trong kho có thể xuất hiện trong nhiều hóa đơn. Bất kỳ khi nào xuất hiện M-M giữa hai bảng, bạn phải tạo bảng-quan-hệ. Tối thiểu bảng-quan-hệ phải chứa các khóa chính từ cả hai bảng tblInvoice tblInventory cho mọi hạng mục trên một hóa đơn cụ thể và cho mọi hóa đơn.

Số dòng trong bảng-quan-hệ sẽ bằng số dòng hóa đơn trong mọi hóa đơn. Các dòng hóa đơn được lưu trong bảng-quan-hệ tblInvoiceLine. Access sẽ khớp số hóa đơn với thuộc tính InvoiceID trong tblInvoiceLine để tra mọi mặt hàng thuộc một hóa đơn cụ thể. InvoiceID là khóa chính của bảng tblInvoice, trong khi thuộc tính InventoryID trong tblInvoiceLine là khóa chính ở tblInventory. Như vậy, InventoryID trong tblInvoiceLine là khóa ngoại. Các thuộc tính khác trong bảng-quan-hệ là số lượng Quantity, đơn giá UnitPrice, và phần trăm giảm giá Discount. Quantity là số lượng một mặt hàng cụ thể trên một dòng hóa đơn đã cho. Đơn giá là giá áp lên mặt hàng đó. Đơn giá có thể khác với cột giá Price lưu trong bảng tblInventory. Trường Discount sẽ lưu phần trăm giảm giá cho một dòng mặt hàng trên một hóa đơn cụ thể. Phần trăm giảm giá thay đổi theo khách hàng và theo năm. Hai thuộc tính thuộc bảng tblInvoiceLine, InvoiceID và InventoryID, tạo nên khóa chính phức hợp, vì cả hai bắt buộc phải có để tạo nên khóa chính cho bảng-quan-hệ tblInvoiceLine.

Nếu bạn gặp các bảng khác có quan hệ nhiều-nhiều nhưng không được hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) xử lý dễ dàng thì việc sửa chữa thật đơn giản. Hãy tạo bảng-quan-hệ chứa khóa chính phức hợp tạo nên từ các khóa chính của hai bảng có quan hệ nhiều-nhiều – như ta đã làm với bảng tblInvoiceLine. Một khi đã tạo bảng-quan-hệ, cả hai bảng ban đầu sẽ có quan hệ một-nhiều với bảng-quan-hệ. Nói cách khác, bảng-quan-hệ là “keo” kết nối hai bảng theo quan hệ một-nhiều.

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

Đăng nhận xét