CÁC MÔ HÌNH DỮ LIỆU (Phần 2) 1 CÁC MÔ HÌNH DỮ LIỆU Giới thiệu Quá trình thiết kế một CSDL Mô hình thực thể liên kết E-R Một số vấn đề cần quan tâm khi thiết kế mô hình E-R Mô hình dữ liệu quan hệ Ánh xạ mô hình thực thể liên kết sang mô hình quan hệ 2 MỘT SỐ VẤN ĐỀ CẦN QUAN TÂM KHI THIẾT KẾ MÔ HÌNH E-R 3 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA Cấu trúc của khóa chính cho tập các quan hệ phụ thuộc vào việc ánh xạ lực lượng liên kết. Xét lược đồ E-R sau: CUSTOMER depositor ACCOUNT access date => Lược đồ này thể hiện một quan hệ M-M cho quan hệ depositor với thuộc tính access-date liên quan tới tập quan hệ giữa hai thực thể CUSTOMER và ACCOUNT. Khóa chính của quan hệ này sẽ bao gồm hợp của các khóa chính của hai tập thực thể CUSTOMER và ACCOUNT. 4 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) Để rõ hơn, xét lược đồ dữ liệu của hai tập thực thể: CUSTOMER (customer-id, customer-name, address, city) ACCOUNT (account-number, balance) Quan hệ M-M giữa hai tập thực thể CUSTOMER và ACCOUNT nghĩa là: một khách hàng có thể có nhiều tài khoản, và tương tự một tài khoản có thể được quản lý bởi nhiều khách hàng.
Phép hợp các khóa chính của cả hai tập thực thể CUSTOMER và ACCOUNT sẽ xác định duy nhất một quan hệ giữa hai thực thể trong CUSTOMER và ACCOUNT. 5 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) Để nhìn thấy lần nộp tiền cuối cùng (last deposit) vào một tài khoản cụ thể nào đó, cần xác định người nộp tiền vì với mỗi tài khoản có thể có một số người nộp tiền vào. Lược đồ cho mối quan hệ depositor như sau: Depositor (customer-id, account-number, access-date). 6 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) Xét trường hợp một khách hàng chỉ được phép nộp tiền vào một tài khoản duy nhất.
=> quan hệ depositor là M:1 từ CUSTOMER tới ACCOUNT: CUSTOMER depositor ACCOUNT access date => Khóa chính của quan hệ depositor sẽ chỉ bao gồm khóa chính của tập thực thể CUSTOMER. 7 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) Để rõ hơn, xét lược đồ dữ liệu của hai tập thực thể: CUSTOMER (customer-id, customer-name, address, city) ACCOUNT (account-number, balance) Quan hệ M:1 nghĩa là một khách hàng chỉ có duy nhất một tài khoản. Như vậy, việc chỉ ra số tài khoản đó là không cần thiết. Khóa chính của quan hệ depositor chỉ đơn giản là khóa chính của thực thể CUSTOMER.
Một khách hàng xác định chỉ có thể thực hiện một lần nộp tiền gần nhất tới tài khoản duy nhất họ có thể truy nhập. Lược đồ của tập các quan hệ depositor như sau: Depositor (customer-id, access-date) 8 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) Xét trường hợp quan hệ depositor là M:1 từ ACCOUNT tới CUSTOMER, nghĩa là: mỗi tài khoản được làm chủ bởi nhiều nhất là một khách hàng nhưng mỗi khách hàng có thể có nhiều hơn một tài khoản. CUSTOMER depositor ACCOUNT access date 9 ẢNH HƢỞNG CỦA ÁNH XẠ LỰC LƢỢNG LIÊN KẾT LÊN CÁC KHÓA (Cont.) => Trong trường hợp này, khóa chính của quan hệ depositor chỉ đơn giản bao gồm khóa chính của thực thể ACCOUNT vì chỉ có thể có nhiều nhất một lần nộp tiền gần nhất tới một tài khoản nào đó xác định, và chỉ có nhiều nhất một khách hàng có thể thực hiện việc nộp tiền. Không cần xác định khách hàng nào đã thực hiện nộp tiền vì chỉ có thể có một và chỉ một khách hàng có khả năng nộp tiền vào một tài khoản xác định.
Lược đồ cho mối quan hệ depositor như sau: Depositor (account-number, access-date) 10 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ Các thuộc tính của một tập quan hệ dạng 1:1 hoặc 1:M thường được đặt vào trong các tập thực thể tham gia liên kết, hơn là được đặt vào bản thân tập các mối quan hệ đó. Ví dụ, với quan hệ depositor: CUSTOMER depositor ACCOUNT access date 11 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ (Cont.) Thuộc tính access-date có thể được đặt liên quan tới thực thể ACCOUNT mà không làm tổn thất thông tin: CUSTOMER depositor ACCOUNT access date => Vì một tài khoản cụ thể thuộc sở hữu bởi nhiều nhất là một khách hàng, và tài khoản đó có thể có nhiều nhất một access- date. 12 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ (Cont.) Xét trường hợp: một tài khoản được làm chủ bởi nhiều nhất một khách hàng và một khách hàng chỉ có thể sở hữu duy nhất một tài khoản. CUSTOMER depositor ACCOUNT access date => Thuộc tính access-date có thể gắn vào hoặc thực thể CUSTOMER hoặc tập thực thể ACCOUNT mà không làm tổn thất thông tin.
13 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ (Cont.) Nếu thuộc tính access-date được lưu trữ với tập CUSTOMER thì nó phải tham chiếu tới lần truy nhập cuối cùng của khách hàng tới tài khoản duy nhất mà họ có. CUSTOMER depositor ACCOUNT access date Nếu thuộc tính access-date được lưu trữ trong thực thể ACCOUNT thì nó sẽ tham chiếu tới lần truy nhập cuối cùng tới tài khoản bởi người khách hàng duy nhất sở hữu nó. CUSTOMER depositor ACCOUNT access date 14 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ (Cont.) Xét trường hợp: quan hệ depositor có ràng buộc N:N CUSTOMER depositor ACCOUNT access date => Việc gắn thuộc tính access-date với bất kỳ tập thực thể tham gia nào cũng không mô hình hóa được tình huống này mà không làm tổn thất thông tin. 15 ĐẶT VỊ TRÍ CHO CÁC THUỘC TÍNH CỦA QUAN HỆ (Cont.) Nếu cần lưu trữ ngày truy nhập cuối cùng của một khách hàng cụ thể tới một tài khoản cụ thể thì thuộc tính access-date nhất thiết phải là một thuộc tính của tập quan hệ depositor, chứ không thể là thuộc tính của bất kỳ tập thực thể tham gia nào.
• Nếu access-date là một thuộc tính của ACCOUNT thì không thể xác định được khách hàng nào đã thực hiện việc chuyển tiền vào tài khoản đó. • Còn nếu access-date là một thuộc tính của CUSTOMER, thì cũng không thể xác định được tài khoản nào khách hàng đã truy nhập vào lần cuối. 16 TẬP THỰC THỂ HAY CÁC THUỘC TÍNH Xét một tập thực thể: EMPLOYEE(emp-name, telephone-number, age) Nếu máy điện thoại telephone có thể được coi là một thực thể (với các thuộc tính telephone-number, location, manufacturer, serial-num,. Thực thể EMPLOYEE phải được định nghĩa lại như sau: EMPLOYEE (emp-name, age).
Sau đó phải tạo ra một tập thực thể mới: TELEPHONE (telephone-number, location, manufacturer, serial- num,. Và phải tạo ra một tập các mối quan hệ để xác định mối liên hệ giữa các nhân viên và các máy điện thoại mà họ sở hữu: EMP-PHONE(emp-name, telephone-number, age, location, manufacturer, serial-num,. 17 TẬP THỰC THỂ HAY CÁC THUỘC TÍNH (Cont.) Trong trường hợp mỗi nhân viên có một số điện thoại => coi máy điện thoại như một thuộc tính telephone-number. Trong trường hợp các nhân viên có thể sở hữu nhiều điện thoại => coi máy điện thoại như một thực thể (không xét đến trường hợp thuộc tính là đa trị).
=> Sự phân biệt 2 vai trò thực thể và thuộc tính phụ thuộc vào cấu trúc ngữ cảnh trong thế giới thực cần mô hình hóa dữ liệu và dựa vào ngữ nghĩa liên quan đến các thuộc tính trong bài toán cụ thể. 18 TẬP THỰC THỂ HAY TẬP QUAN HỆ Xét ví dụ ngân hàng: đã mô hình hóa khoản vay như một thực thể (LOAN). => Cách khác: có thể mô hình hóa khoản vay như một mối quan hệ giữa khách khàng (CUSTOMER) và các chi nhánh (BRANCHES) của ngân hàng với loan-number và amount là các thuộc tính mô tả. 19 TẬP THỰC THỂ HAY TẬP QUAN HỆ (Cont.) Việc mô hình hóa theo cách trên không thuận lợi trong tình huống nhiều khách hàng cùng sở hữu chung một khoản vay.
=> Cần định nghĩa các mối quan hệ riêng cho từng người sở hữu khoản vay chung. Sau đó, dùng lại tất cả các giá trị cho các thuộc tính loan-number và amount trong mỗi quan hệ này (hiển nhiên, các quan hệ phải có cùng giá trị cho các thuộc tính mô tả). Có 2 vấn đề phát sinh khi dùng lặp lại các giá trị: 1. Dữ liệu được lưu trữ ở nhiều nơi.
Việc cập nhật dữ liệu làm tăng khả năng không nhất quán dữ liệu. 20 TẬP THỰC THỂ MẠNH HAY TẬP THỰC THỂ YẾU Tập thực thể không đủ các thuộc tính để hình thành một khóa chính gọi là tập thực thể yếu. Tập thực thể có khóa chính được gọi là tập thực thể mạnh. Ví dụ: Xét tập thực thể trả tiền: PAYMENT(payment-number, payment date, payment amount).
=> Mã số trả tiền (payment-number) thường là các số liên tiếp, bắt đầu từ 1 và được sinh ra riêng rẽ cho mỗi khoản nợ. Do đó, mặc dù mỗi thực thể PAYMENT là khác nhau, việc trả tiền cho các khoản nợ khác nhau có thể có cùng mã số payment-number. => tập PAYMENT không có khóa chính và chỉ là một tập thực thể yếu. 21 TẬP THỰC THỂ MẠNH HAY TẬP THỰC THỂ YẾU (Cont.) Để một tập thực thể yếu có ý nghĩa, nó phải liên hệ với một tập thực thể khác, được gọi là tập thực thể xác định hay tập thực thể sở hữu.
Mối quan hệ giữa tập thực thể yếu với tập thực thể xác định được gọi là mối quan hệ xác định. Mối quan hệ xác định là quan hệ M:1 từ tập thực thể yếu tới tập xác định và sự tham gia của tập thực thể yếu trong quan hệ là đầy đủ. 22 TẬP THỰC THỂ MẠNH HAY TẬP THỰC THỂ YẾU (Cont.) Mặc dù tập thực thể yếu không có khóa chính, nhưng có một phương thức để phân biệt tất cả các thực thể trong tập thực thể yếu phụ thuộc vào một thực thể mạnh cụ thể. => Tập các thuộc tính của một thực thể yếu cho phép phân biệt các thực thể được gọi là thuộc tính phân biệt (hay khóa bán phần).
Ví dụ: Thuộc tính phân biệt của tập thực thể yếu PAYMENT là payment-number, vì với mỗi khoản nợ, một mã số trả tiền sẽ xác định duy nhất một lần trả tiền riêng biệt cho khoản nợ này. 23 TẬP THỰC THỂ MẠNH HAY TẬP THỰC THỂ YẾU (Cont.) Khóa chính của một tập thực thể yếu được cấu thành bởi khóa chính của tập thực thể xác định và thuộc tính phân biệt của tập thực thể yếu.