Chương 1 Tổng quan về thiết kế CSDL theo phương pháp mô hình 1.Kỹ thuật xác định thực thể và kỹ thuật đặc tả 1. Kỹ thuật xác định các thực thể Một thực thể được xác định nếu xác định được 3 thành phần: tên của thực thể, danh sách thuộc tính (ít nhất là một) và nhóm thuộc tính định danh (ít nhất là một thuộc tính). Có nhiều cách xác định thực thể. Chúng ta xem xét một ví dụ sau đây.
Cho một hoá đơn điển hình: HOÁ ĐƠN BÁN HÀNG Số: Ngày: Mã khách hàng: Tên khách hàng: Địa chỉ: STT Mã hàng Tên hàng Đơn vị Đơn giá Số lượng Thành tiền Tổng tiền 1. Trường hợp 1: Coi cả HOADON là một thực thể, ta có: HOADON #Số #Mã hàng* (2 thuộc tính {số, mã hàng} hợp thành nhóm thuộc tính định danh của thực thể) Ngày Mã khách hàng Tên khách hàng Địa chỉ Tên hàng* 2 Đơn vị tính* Đơn giá* Số lượng* Thành tiền* Tổng tiền (các thuộc tính có dấu * là thuộc tính lặp/đa trị) 2. Trường hợp 2: Xác định 2 thực thể: một nhóm thuộc tính đơn và 1 nhóm thuộc tính lặp. E1-HOADON E2- HANG #Số Ngày #Mã hàng Mã khách hàng Tên hàng Tên khách hàng Đơn vị tính Địa chỉ Tổng tiền 3.
Trường hợp 3: Xác định 3 thực thể: hai nhóm thuộc tính đơn và 1 nhóm thuộc tính lặp. E1-HOADON E2- KHACH E3-HANG #Số #Mã khách hàng #Mã hàng Ngày Tên khách hàng Tên hàng Tổng tiền Địa chỉ Đơn vị tính Chú ý: - Mỗi thuộc tính chỉ phân cho 1 thực thể - Có thể có thuộc tính không phân được cho một thực thể nào cả 1. Kỹ thuật đặc tả Chúng ta đã biết kỹ thuật đặc tả mối quan hệ giữa 2 thực thể dựa vào mô tả bằng ngôn ngữ tự nhiên. Ngoài cách này chúng ta còn có thể đặc tả mối quan hệ giữa 2 thực thể dựa trên những kỹ thuật sau đây: 1.
Dựa vào quy tắc quản lý hoặc những quy tắc toàn vẹn Ví dụ: Cho các thực thể và thuộc tính sau: 3 VATTU (mã vt, tên vt, ĐV), PHIEUXUAT (số phiếu, ngày, mã kho, mã khách), KHACH (mã khách, tên khách, địa chỉ, E_mail), KHO (mã kho, tên kho) Dựa vào những quy tắc được phát biểu trước, chúng ta vẽ được một đặc tả mối quan hệ giữa 2 thực thể: ”Trong mỗi phiếu xuất, ghi nhiều loại vật tư. Ngược lại mỗi loại vật tư có thể xuất hiện trong nhiều phiếu xuất với dữ liệu quan trọng là số lượng, đơn giá”. N-N R1 VẬT TU PHIẾU XUẤT Số lượg Đơn giá ”Một phiếu xuất chỉ viết cho một khách; ngược lại một khách có thể có nhiều phiếu xuất” 1-N KHÁCH R2 PHIẾU XUẤT ”Một phiếu xuất chỉ viết cho một kho, ngược lại mỗi kho có thể có nhiều phiếu xuất” 1-N KHO R3 PHIẾU XUẤT 2. Dựa vào khoá của các lược đồ quan hệ (Xác định qua khoá liên kết) Ví dụ: + Trường hợp hệ lược đồ quan hệ đã chuẩn hoá VATTU (mã vt, tên vt, ĐV), PHIEUXUAT (số phiếu, ngày, mã kho, mã khách), 4 KHACH (mã khách, tên khách, địa chỉ, E_mail), KHO (mã kho, tên kho) DONGVATTU (số phiếu, mã vt, số lượng, đơn giá) Từ VATTƯ và DONGVATTU ta thấy có nhóm thuộc tính chung là “mã vt”, ở thực thể VATTU chúng là khoá chính, vậy ở thực thể DONGVATTU chúng là khoá ngoại.
Sự tồn tại của khoá ngoại chứng tỏ giữa 2 lược đồ quan hệ đó có mối quan hệ với nhau. Ta vẽ được: 1-N VẬT TƯ Có trong DÒNG VẬT TƯ Phân tích tương tự, ta có: 1-N DÒNG VẬT TƯ Ở trong PHIẾU XUẤT 1-N KHÁCH Nhận PHIẾU XUẤT 1-N PHIẾU XUẤT Viết cho KHO Khoá ngoại (foreign key : FK) của 1 quan hệ là một nhóm thuộc tính trong quan hệ đó mà là khoá chính của một quan hệ khác liên kết với nó (các FK cũng có thể tham chiếu đến khoá chính trong cùng 1 quan hệ). Khoá ngoại còn gọi là khoá liên kết. + Trường hợp hệ lược đồ quan hệ chưa chuẩn hoá VATTU (mã vt, tên vt, ĐV), 5 DONGPHIEUXUAT (số phiếu, ngày, mã kho, mã khách, mã vt*, số lượng*, đơn giá*) KHACH (mã khách, tên khách, địa chỉ, E_mail), KHO (mã kho, tên kho) Ta thấy “mã vt” là khoá ngoại của DONGPHIEUXUAT trong mối quan hệ với VATTU nên có thể đặc tả mối quan hệ giữa chúng trước, sau đó chuẩn hoá: 1-N DÒNG VẬT TƯ R1 PHIẾU XUẤT số phiếu, Mã vt ngày, Tên VT mã kho, ĐV mã khách, mã vt*, số lượng* Đơn giá* số phiếu, ngày, PHIẾU XUẤT mã kho, mã khách 1-N R2 1-N VẬT TƯ R’1 DÒNG VẬT TƯ Mã vt số phiếu, Tên VT mã vt, ĐV số lượng, Đơn giá 1.Quy trình thiết kế Cơ sở của phương pháp Xây dựng mô hình khái niệm dữ liệu bằng phương pháp mô hình là các quy tắc quản lý.
Các bước thực hiện của phương pháp mô hình bao gồm các công việc sau: 1. Xác định danh sách các thuộc tính cần quản lý 6 2. Xác định các thực thể 3. Xác định các mối quan hệ giữa các thực thể 4.
Thiết lập mô hình khái niệm dữ liệu 1. Ví dụ Ví dụ: Một cơ sở bán hàng sử dụng hai loại chứng từ sau để theo dõi hoạt động kinh doanh của mình: A. ĐƠN ĐẶT HÀNG Số hoá đơn: Ngày đặt: Người đặt hàng: Địa chỉ: STT Tên hàng Mô tả hàng Đơn vị Số lượng (đặt) tính B. PHIEU GIAO HANG Số phiếu: Ngày giao: Tên khách hàng: Nơi giao hàng: Địa chỉ: STT Tên hàng Đơn vị Đơn Số lượng Thành tiền tính giá (giao) TONGTIEN: Cần thiết kế CSDL mức logic từ các tài liệu trên để quản lý hoạt động bán hàng.
Thủ tục tiến hành: 1. Liệt kê, chính xác hoá thông tin 7 Bảng 3. Danh sách thuộc tính cần quản lý Thực thể -Thuộc tính Ghi chú Đơn đặt hàng DONHANG Số đơn hàng Định danh Người đặt hàng tên khách hàng Thay bằng tên khách hàng (0) Mã khách hàng Thêm mới (1) Địa chỉ khách Ngày đặt hàng * Số thứ tự (2) Không cần * Mã hàng Thêm mới, Định danh (1) * Tên hàng * Mô tả hàng * Đơn vị tính * Số lượng đặt Phiếu giao hàng PHIEUGIAO Số phiếu giao Định danh Tên khách hàng mã khách Thay bằng mã khách (3) Nơi giao hàng Ngày giao * Số thứ tự (2) Không cần * Tên hàng -> mã hàng Thay bằng mã hàng (3) * Đơn vị tính Không cần (4) * Đơn giá hàng giao * Số lượng giao * Thành tiền Không cần (5) Tổng cộng 8 Chú thích: (0) “người đặt hàng” ở ĐƠN ĐẶT HÀNG và “Tên khách hàng” ở PHIẾU GIAO HÀNG chỉ cùng một đối tượng nên ta thống nhất chọn tên gọi cho đối tượng này là: “Tên khách hàng”. (1) “Tên khách hàng” là thuộc tính tên gọi của thực thể “khách hàng”, không xác định mỗi khách hàng cụ thể vì khách cã thể trùng tên.
Vì vậy phải thêm thuộc tính “Mã khách hàng” làm thuộc tính định danh cho “khách hàng”. Cũng tương tự như vậy cần thêm “Mã hàng” làm thuộc tính định danh cho “hàng”. (2) Số thứ tự để đánh số mỗi dòng hoá đơn chỉ cã ý nghĩa trong hoá đơn này, không cho thông tin gì khác, không cần lưu trữ. (3) Tên khách hàng, tên hàng là thuộc tính tên gọi đã cã ở trên, cần thay nã bằng thuộc tính định danh tương ứng.
(4) Các thuộc tính này là thuộc tính mô tả, đã gặp ở trên nên bỏ đi. Hai thuộc tính này đã được chọn ở trên nên cã thể tính được “thành tiền”, do đã không cần lưu giữ thuộc tính này. Xác định các thực thể và các thuộc tính Từ hai hồ sơ, chúng ta nhận biết được các thực thể cũng như các thuộc tính. Các thực thể: - E1-KHÁCH #Mã khách Tên khách Địa chỉ khách - E2-HÀNG #Mã hàng Tên hàng Mô tả hàng Đơn vị hàng E4-ĐƠN ĐẶT 9 #Số đơn đặt Ngày đặt hàng - E5-PHIẾU GIAO # Số phiếu giao Nơi giao Ngày giao Tổng tiền Chú ý: - Thực thể KHACH cã hai thuộc tính: tên khách, địa chỉ.
Tên khách không thể dùng làm định danh cho thực thể nên cần thêm định danh cho nã: mã khách - Thực thể HANG cã 3 thuộc tính: tên hàng, đơn vị, mô tả hàng. Cũng như thực thể KHACH ta cần thêm định danh: mã hàng cho thực thể này. Xác định các mối quan hệ và các thuộc tính của quan hệ Nhận xét: còn 3 thuộc tính sau chưa ghép vào thực thể nào cả là: Đơn giá hàng giao, Số lượng hàng giao và Số lượng đặt. Trong đơn đặt hàng, chúng ta xác định được quy tắc quản lý sau: - Trong mỗi đơn đặt hàng người ta chỉ viết cho một khách.
Ngược lại một khách cã thể có nhiều đơn đặt hàng. Vậy ta có đặc tả: 1, N ĐONĐAT R1 KHACH - Trong mỗi đơn đặt hàng người ta cã thể viết nhiều loại hàng (mỗi loại hàng trên một dòng hàng). Ngược lại, mỗi loại hàng cã thể cã mặt trong nhiều đơn đặt hàng. Vậy ta có đặc tả: N-N ĐONĐAT R2 HANG 10 Trong phiếu giao hàng, chúng ta cũng xác định được quy tắc quản lý sau: - Trong mỗi phiếu giao hàng người ta chỉ viết cho một khách.
Ngược lại một khách có thể có nhiều phiếu giao hàng. Vậy ta có đặc tả: 1-N PHIEUGIAO R3 KHACH - Trong mỗi phiếu giao hàng người ta cã thể viết nhiều loại hàng (mỗi loại hàng trên một dòng hàng). Ngược lại, mỗi loại hàng có thể có mặt trong nhiều phiếu giao hàng. Vậy ta có đặc tả : N-N PHIEUGIAO R4 HANG 4.
Vẽ mô hình khái niệm dữ liệu Ghép nối tất cả 4 đặc tả trên, chúng ta có được mô hình khái niệm dữ liệu cho bài toán: N-N 1-N R2 ĐON ĐAT R1 HANG 1-N KHACH N-N PHIEU R4 R3 GIAO Hình 3. Mô hình khái niệm dữ liệu 11 5.Chuyển mô hình khái niệm dữ liệu về hệ lược đồ quan hệ: Có 3 quy tắc chuyển: Quy tắc 1 (quy tắc biến đổi cơ bản): Mỗi thực thể được chuyển thành một quan hệ trong đó các thuộc tính của thực thể được chuyển thành thuộc tính của quan hệ, định danh của thực thể trở thành khóa của quan hệ. Quy tắc 2: Mỗi mối quan hệ 1-N mà không có thuộc tính riêng sẽ không được chuyển thành một quan hệ. Nhưng thực thể tham gia vào mối quan hệ về phía N (phía 1:1 trong mô hình) sẽ đổi mới bằng cách sau khi dùng phép biến đổi cơ bản sẽ nhận thêm khoá của thực thể tham gia vào mối quan hệ ở phía 1 làm khoá liên kết.
Còn thực thể tham gia vào mối quan hệ ở phía 1 sẽ biến đổi theo quy tắc 1. Quy tắc 3: Mỗi mối quan hệ N-N hoặc mối quan hệ có thuộc tính riêng sẽ được chuyển thành một quan hệ mới.