Bài giảng Cơ sở dữ liệu - Chương 3: Thiết kế cơ sở dữ liệu logic

Nội dung

1. Mô hình dữ liệu quan hệ

2. Các ngôn ngữ thao tác trên quan hệ

3. Phụ thuộc hàm và khoá

4. Dạng chuẩn và chuẩn hoá

5. Chuyển đổi mô hình ER sang mô hình dữ liệu quan hệ

Nội dung

1. Mô hình dữ liệu quan hệ

2. Các ngôn ngữ thao tác trên quan hệ

3. Phụ thuộc hàm và khoá

4. Dạng chuẩn và chuẩn hoá

5. Chuyển đổi mô hình ER sang mô hình dữ liệu quan hệ

pdf207 trang | Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 338 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Cơ sở dữ liệu - Chương 3: Thiết kế cơ sở dữ liệu logic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ụ Cho R=, trong đó U={S, A, I, P} và F={S®A, SI ® P} Kiểm tra r=(SA, SIP) có là phép tách không tổn thất hay không? Đặt U1={S,A}, U2={S,I,P} Ta có U1ÇU2® U1\U2 Û S ®A Vì S ®A Î F+ nên r=(SA, SIP) là phép tách không tổn thất Phép tách bảo toàn tập phụ thuộc hàm Cho R= U1, U2, , Uk là các tập con của U sao cho U=U1 È U2 È È Uk Fi=PUi(F)={X®Y| X®Y ÎF+, XÈYÍUi}, "i=1,..,k Ri=, "i=1,..,k Phép tách r =(R1, R2, , Rk) được gọi là phép tách bảo toàn tập phụ thuộc hàm F nếu phủ F Chúng ta có thể viết phép tách r =(U1, U2, , Uk) ! k i iF 1= Phép tách bảo toàn tập phụ thuộc hàm Ví dụ 1. Cho R=, r=(AB, CD) Phép tách r có bảo toàn tập phụ thuộc hàm F không? Đặt F={A®B, C®D}, U1=AB, U2=CD F1= PU1(F)= PAB(A®B,C®D)={A®B} F2= PU2(F)= PCD(A®B,C®D)={C®D} => F1 È F2 = {A®B, C®D} = F => F1 È F2 phủ F => r=(AB, CD) là phép tách bảo toàn tập phụ thuộc hàm F Phép tách bảo toàn phụ thuộc Ví dụ 2. Cho R= , r=(CS,CZ) Phép tách r có bảo toàn tập phụ thuộc hàm F không? Đặt F={CS ® Z, Z ® C}, U1=CS, U2=CZ F1= PU1(F)=PCS(CS ® Z, Z ® C)=Æ F2= PU2(F)= PCZ(CS ® Z, Z ® C)={Z ® C} => F1 È F2 = {Z ® C} Ta có CS ® Z Î F CS+(F1ÈF2)=CS => ZË CS+(F1ÈF2) => CS ® Z ∉ (F1 È F2)+ => F1 È F2 không phủ F => r=(CS, CZ) là phép tách không bảo toàn phụ thuộc Các phép tách lược đồ quan hệ ¨ Định nghĩa phép tách lược đồ quan hệ ¨ Phép tách kết nối không tổn thất về chuẩn BCNF ¨ Phép tách bảo toàn phụ thuộc về chuẩn 3NF Bổ đề Cho lược đồ quan hệ R= U1, U2, , Uk là các tập con của U sao cho U1 È U2 È È Uk =U Fi= PUi(F)={X®Y| X®Y ÎF+, XÈYÍUi}, "i=1,..,k Ri=, "i=1,..,k r=(R1, R2, , Rk) là một phép tách của R i) Nếu s=( S1, S2, , Sm) là một phép tách của Ri, r và s là các phép tách kết nối không tổn thất, thì t=( R1, R2, , Ri-1, S1, S2, , Sm, Ri+1,, Rk) là phép tách kết nối không tổn thất ii)Nếu r là phép kết nối không tổn thất và Rk+1=Rk+2==Rm=R, thì t =( R1, R2, , Rk, Rk+1, Rk+2, , Rm) là phép tách kết nối không tổn thất Bài toán Cho lược đồ R=. Hãy tách lược đồ R thành các lược đồ con ở dạng chuẩn BCNF và đảm bảo tính kết nối không tổn thất Thuật toán Vào: R= Ra: r=( R1, R2, , Rk) là phép tách kết nối không tổn thất, sao cho Ri Î BCNF, "i=1, , k. Phương pháp Bước 1: r=(R) Bước 2: Nếu mọi lược đồ trong r đều thuộc BCNF thì chuyển sang bước 3. Ngược lại, tìm lược đồ S= trong r mà S ∉ BCNF. Chọn một phụ thuộc hàm X®A ÎFS, X không phải là khóa của S, và A ∉X, thay thế S bởi hai lược đồ XA và US\{A} với các tập phụ thuộc hàm tương ứng. Qay trở lại bước 2 Bước 3: Kết thúc Ví dụ Bài toán Cho lược đồ R= Tìm phép tách kết nối không tổn thất của R thành những lược đồ BCNF? Ví dụ R có thuộc BCNF không? R= Đặt U= CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R} Khóa của R là HS Vì C®T Î F và HS Ë C, nên R ∉ BCNF Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS CS ® G Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS CS ® G Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS U2=CT F2={C→T} Khoá C V2=CHRS FV2={HR ® C, HC ® R, HS ® R} Khoá HS CS ® G C ® T Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS U2=CT F2={C→T} Khoá C V2=CHRS FV2={HR ® C, HC ® R, HS ® R} Khoá HS CS ® G C ® T Ví dụ Phép tách U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS U2=CT F2={C→T} Khoá C V2=CHRS FV2={HR ® C, HC ® R, HS ® R} Khoá HS U3=HRC F3={HR ® C, HC ® R} Khoá HC hoặc HR U4=CHS F4={HS→C} Khoá HS CS ® G C ® T HC ® R Ví dụ Phép tách r=(U1,U2,U3,U4) U=CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R } Khóa HS U1=CSG F1={CS ® G} Khóa CS V1=CTHRS FV1={ C ® T, HR ® C, HT ® R, HS ® R} Khóa HS U2=CT F2={C→T} Khoá C V2=CHRS FV2={HR ® C, HC ® R, HS ® R} Khoá HS U3=HRC F3={HR ® C, HC ® R} Khoá HC hoặc HR U4=CHS F4={HS→C} Khoá HS CS ® G C ® T HC ® R Các phép tách lược đồ quan hệ ¨ Định nghĩa phép tách lược đồ quan hệ ¨ Phép tách kết nối không tổn thất về chuẩn BCNF ¨ Phép tách bảo toàn tập phụ thuộc hàm về chuẩn 3NF Bài toán Cho lược đồ R=. Hãy tách lược đồ R thành các lược đồ con ở dạng chuẩn 3NF và bảo toàn tập phụ thuộc hàm F Thuật toán Đầu vào: R=, F tối tiểu Đầu ra: r=(R1, R2, , Rk) là phép tách bảo toàn tập phụ thuộc hàm F và Ri Î 3NF, "i=1,,k Phương pháp: - Nếu có những thuộc tính không xuất hiện trong bất kỳ một phụ thuộc hàm nào của F, ở cả vế trái lẫn vế phải, thì ta xác định 1 lược đồ quan hệ gồm những thuộc tính này và xoá chúng ra khỏi U - Nếu 1 trong các phụ thuộc hàm của F chứa toàn thể các thuộc tính của U thì phép tách chỉ gồm R - Trường hợp còn lại, phép tách gồm các lược đồ tương ứng với tập thuộc tính có dạng XA, với X→A ÎF. Tuy nhiên, nếu trong F gồm các thuộc tính X→A1 , X→A2 , , X→Am thì thay cho các lược đồ với tập thuộc tính có dạng XAi, ta sử dụng lược đồ với tập thuộc tính: XA1 A2 Am Ví dụ Bài toán Cho R=. Tìm phép tách bảo toàn phụ thuộc thành 3NF của R Ví dụ R có thuộc 3NF không? R= Đặt U= CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R} Khóa của R là HS Các thuộc tính không khóa: C,T,R,G Vì HS → C Î F+(do HS là khóa của R) và C →T Î F => T phụ thuộc hàm bắc cầu vào khóa HS => R không thuộc 3NF Ví dụ F đã là tập phụ thuộc hàm tối thiểu chưa? R= U= CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R} F thỏa mãn các điều kiện sau: i) Vế phải của mỗi phụ thuộc hàm chỉ có 1 thuộc tính ii) Không có phụ thuộc hàm dư thừa iii) Không có thuộc tính dư thừa ở vế trái của bất kỳ phụ thuộc hàm nào => F là tập phụ thuộc hàm tối thiểu Ví dụ Phép tách R= U= CTHRSG F={C®T, HR ® C, HT ® R, CS ® G, HS ® R} -Không có thuộc tính nào trong U mà không xuất hiện trong bất kỳ một phụ thuộc hàm nào của F -Không có phụ thuộc hàm nào chứa toàn thể các thuộc tính trong U -Mỗi phụ thuộc hàm trong F có thể tách thành một lược đồ như sau: R1= R3= R5= R2= R4= r=(R1,R2,R3,R4,R5) là một phép tách bảo toàn phụ thuộc thành 3NF của R Phép tách kết nối không tổn thất và bảo toàn phụ thuộc thành các lược đồ 3NF Định lý Cho lược đồ R= r=(R1, R2, , Rk) là một phép tách bảo toàn phụ thuộc thành các lược đồ thuộc 3NF của R K là một khóa của R Khi đó phép tách s=(R1, R2, , Rk,K) thỏa mãn: i) Là phép tách bảo toàn thông tin ii) Là phép tách bảo toàn tập F iii) Các lược đồ con trong s đều thuộc 3NF Nội dung ¨ Phụ thuộc hàm ¨ Các dạng chuẩn ¨ Các phép tách lược đồ quan hệ ¨ Chuyển đổi mô hình thực thể liên kết sang mô hình quan hệ Mô tả bài toán quản lý Một công ti cần thiết kế CSDL để quản lý các thông tin sau: 1. Các phòng: Mỗi phòng có 1 tên duy nhất, 1 mã số duy nhất, 1 trưởng phòng và có thể có nhiều địa điểm. Ngày mà nhân viên được bổ nhiệm làm trưởng phòng được lưu trữ 2. Các dự án: Mỗi dự án có 1 mã số duy nhất, 1 tên duy nhất và 1 địa điểm. Một phòng quản lí một số dự án 3. Các nhân viên: Mỗi nhân viên cần lưu các thông tin: mã nhân viên, họ tên, ngày sinh, giới tính, bậc lương, lương, địa chỉ (phân chia thành số nhà, đường phố, xã, huyện, tỉnh). Mỗi nhân viên có 1 mã nhân viên duy nhất, phân biệt với các nhân viên khác. Một nhân viên thuộc vào một phòng nào đó, và có thể tham gia nhiều dự án (không bắt buộc các dự án này phải thuộc phòng làm việc của nhân viên). Số giờ làm việc của mỗi nhân viên cho mỗi dự án được lưu trữ. Một nhân viên có thể là người hướng dẫn công việc cho một số nhân viên khác 4. Các người phụ thuộc: Những người phụ thuộc của mỗi nhân viên gồm: con, vợ/chồng, bố, mẹ. Thông tin về người phụ thuộc gồm: họ tên, gới tính, ngày sinh và mối quan hệ với nhân viên Biểu đồ thực thể liên kết Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính PHÒNG Mã phòng Tên phòng Địa điểm DỰ ÁN Mã dự án Tên dự án Địa điểm PHỤ THUỘC Họ tên Ngày sinh Giới tính Quan hệ LÀM VIỆC CHO PHỤ THUỘC VÀO HƯỚN G DẪN ĐIỀU HÀNH QUẢN LÍ Ngày bổ nhiệm THAM GIA Số giờ 1 N 1 1 1 N M N 1 N 1 N h d tt Bước 1. Chuyển kiểu thực thể thành lược đồ quan hệ ¨ Mỗi thực thể trong biểu đồ ER chuyển thành một lược đồ quan hệ. Nguyên tắc: ¤ Các thuộc tính đơn của thực thể -> các thuộc tính của lược đồ ¤ Các thuộc tính phức hợp thì chỉ lấy thành phần đơn -> các thuộc tính của lược đồ ¤ Chọn một khóa của thực thể làm khóa chính của lược đồ Ví dụ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính Ví dụ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính Bước 2. Chuyển kiểu thực thể yếu thành lược đồ quan hệ ¨ Mỗi thực thể yếu trong biểu đồ ER chuyển thành một lược đồ quan hệ. Nguyên tắc: ¤ Thuộc tính đơn của thực thể-> Thuộc tính của lược đồ ¤ Thuộc tính phức hợp thì chỉ lấy thành phần đơn -> Các thuộc tính của lược đồ ¤ Khóa chính của thực thể chủ -> Khóa ngoài của lược đồ ¤ Tổ hợp khóa bộ phận của kiểu thực thể yếu và các khóa chính của các kiểu thực thể chủ liên kết với nó -> Khóa chính của lược đồ Ví dụ PHỤ_THUỘC(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Quan_hệ) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính PHỤ THUỘC Họ tên Ngày sinh Giới tính Quan hệ PHỤ THUỘC VÀO 1 N Bước 3. Chuyển thuộc tính đa trị thành lược đồ quan hệ ¨ Mỗi thuộc tính đa trị A tạo ra một lược đồ quan hệ mới R Nguyên tắc: ¤ Các thuộc tính đơn (hoặc các thành phần đơn của thuộc tính phức hợp) của A -> Các thuộc tính của R ¤ Các thuộc tính khóa (K) của lược đồ quan hệ hoặc kiểu liên kết có chứa A -> Các thuộc tính của R ¤ Tổ hợp các thuộc tính của A và K -> Khóa chính của R Ví dụ ĐỊA_ĐIỂM(Mã_phòng, địa_chỉ) PHÒNG(Mã_phòng, Tên_phòng) Hoặc PHÒNG(Mã phòng, địa chỉ, Tên phòng) PHÒNG Mã phòng Tên phòng Địa điểm Bước 4. Chuyển kiểu liên kết cấp 2, tỉ số liên kết 1:1 thành lược đồ quan hệ Nguyên tắc: ¤Giả sử, các lược đồ tương ứng với các thực thể tham gia vào liên kết này là S và T. Chọn một lược đồ (S) n Khóa chính của T -> Khóa ngoài của S n Các thuộc tính đơn (hoặc các thành phần đơn của các thuộc tính phức hợp) của kiểu liên kết -> các thuộc tính của S Ví dụ PHÒNG(Mã phòng, Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm) ĐỊA_ĐIỂM(Mã_phòng, địa_chỉ) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính PHÒNG Mã phòng Tên phòng Địa điểm QUẢN LÍ Ngày bổ nhiệm 11 Bước 5. Chuyển kiểu liên kết cấp 2, tỉ số liên kết 1:N thành lược đồ quan hệ Nguyên tắc: ¤Giả sử, lược đồ quan hệ S tương ứng với thực thể tham gia ở phía N, lược đồ quan hệ T tương ứng với thực thể tham gia ở phía 1 của kiểu liên kết. n Khóa chính của T -> Khóa ngoài của S n Các thuộc tính đơn (hoặc các thành phần đơn của các thuộc tính phức hợp) của kiểu liên kết -> các thuộc tính của S Ví dụ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính PHÒNG Mã phòng Tên phòng Địa điểm LÀM VIỆC CHO N 1 Bước 6. Chuyển kiểu liên kết cấp 2, tỉ số liên kết N:M thành lược đồ quan hệ Nguyên tắc: ¤Giả sử, lược đồ quan hệ S tương ứng với thực thể tham gia ở phía N, lược đồ quan hệ T tương ứng với thực thể tham gia ở phía M của kiểu liên kết. n Khóa chính của S và T -> Khóa ngoài của lược đồ mới n Các thuộc tính đơn (các thành phần đơn của các thuộc tính phức hợp) của kiểu liên kết -> Các thuộc tính của của lược đồ mới n Hợp của khóa chính của S và T -> Khóa chính của lược đồ mới Ví dụ THAM_GIA(Mã_nhân_viên, Mã_dự_án, Số_giờ) Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính DỰ ÁN Mã dự án Tên dự án Địa điểm THAM GIA Số giờ M N Cách thiết kế các lược đồ cơ sở dữ liệu cho một bài toán quản lí Cách 1: Chuyển biểu đồ ER thành các lược đồ quan hệ Cách 2: Dùng các phép tách Chuyển biểu đồ ER thành các lược đồ quan hệ ¨ Bước 1: Xây dựng biểu đồ thực thể liên kết (ER) của bài toán quản lí ¨ Bước 2: ER -> Các lược đồ quan hệ. ¨ Bước 3: Xây dựng tập phụ thuộc hàm của mỗi lược đồ. Kiểm tra dạng chuẩn của mỗi lược đồ. Lược đồ nào chưa thuộc dạng chuẩn tốt thì dùng các phép tách để tách lược đồ này thành các lược đồ con thuộc dạng chuẩn tốt Ví dụ Một công ti cần thiết kế CSDL để quản lý các thông tin sau: 1. Các phòng: Mỗi phòng có 1 tên duy nhất, 1 mã số duy nhất, 1 trưởng phòng và có thể có nhiều địa điểm. Ngày mà nhân viên được bổ nhiệm làm trưởng phòng được lưu trữ 2. Các dự án: Mỗi dự án có 1 mã số duy nhất, 1 tên duy nhất và 1 địa điểm. Một phòng quản lí một số dự án 3. Các nhân viên: Mỗi nhân viên cần lưu các thông tin: mã nhân viên, họ tên, ngày sinh, giới tính, bậc lương, lương, địa chỉ (phân chia thành số nhà, đường phố, xã, huyện, tỉnh). Mỗi nhân viên có 1 mã nhân viên duy nhất, phân biệt với các nhân viên khác. Một nhân viên thuộc vào một phòng nào đó, và có thể tham gia nhiều dự án (không bắt buộc các dự án này phải thuộc phòng làm việc của nhân viên). Số giờ làm việc của mỗi nhân viên cho mỗi dự án được lưu trữ. Một nhân viên có thể là người hướng dẫn công việc cho một số nhân viên khác 4. Các người phụ thuộc: Những người phụ thuộc của mỗi nhân viên gồm: con, vợ/chồng, bố, mẹ. Thông tin về người phụ thuộc gồm: họ tên, gới tính, ngày sinh và mối quan hệ với nhân viên Bước 1. Xây dựng biểu đồ ER Địa chỉHuyện Đường phố Xã Số nhà Tỉnh NHÂN VIÊN Họ tên Mã nhân viên Bậc lương Lương Ngày sinh Giới tính PHÒNG Mã phòng Tên phòng Địa điểm DỰ ÁN Mã dự án Tên dự án Địa điểm PHỤ THUỘC Họ tên Ngày sinh Giới tính Quan hệ LÀM VIỆC CHO PHỤ THUỘC VÀO HƯỚN G DẪN ĐIỀU HÀNH QUẢN LÍ Ngày bổ nhiệm THAM GIA Số giờ 1 N 1 1 1 N M N 1 N 1 N h d tt Bước 2. Xây dựng các lược đồ quan hệ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng) PHỤ_THUỘC(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Quan_hệ) PHÒNG(Mã phòng, Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm) ĐỊA_ĐIỂM(Mã_phòng, Địa_chỉ) DỰ_ÁN(Mã_dự_án, Tên_dự_án, Địa_điểm, Mã_phòng) THAM_GIA(Mã_nhân_viên, Mã_dự_án, Số_giờ) Bước 3. Kiểm tra dạng chuẩn của lược đồ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng) F1= {Mã_nhân_viên ®{Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng}} =>NHÂN_VIÊN Î BCNF PHỤ_THUỘC(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Quan_hệ) F2= {Mã_nhân_viên, Họ_tên ® {Ngày_sinh, Giới_tính, Quan_hệ}} =>PHỤ_THUỘC Î BCNF Bước 3. Kiểm tra dạng chuẩn của lược đồ PHÒNG(Mã phòng, Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm) F3 ={Mã_phòng ® {Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm}} =>PHÒNG Î BCNF ĐỊA_ĐIỂM(Mã_phòng, Địa_chỉ) F4={} =>ĐỊA_ĐIỂM Î BCNF Bước 3. Kiểm tra dạng chuẩn của lược đồ DỰ_ÁN(Mã_dự_án, Tên_dự_án, Địa_điểm, Mã_phòng) F5={Mã_dự_án ® {Tên_dự_án, Địa_điểm, Mã_phòng}} =>DỰ_ÁN Î BCNF THAM_GIA(Mã_nhân_viên, Mã_dự_án, Số_giờ) F6={{Mã_nhân_viên, Mã_dự_án} ® Số_giờ} =>THAM_GIA Î BCNF Tập các lược đồ quan hệ của bài toán NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng) F1= {Mã_nhân_viên ®{Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng}} PHỤ_THUỘC(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Quan_hệ) F2= {Mã_nhân_viên, Họ_tên ® {Ngày_sinh, Giới_tính, Quan_hệ}} PHÒNG(Mã phòng, Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm) F3 ={Mã_phòng ® {Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm}} ĐỊA_ĐIỂM(Mã_phòng, Địa_chỉ) F4={} DỰ_ÁN(Mã_dự_án, Tên_dự_án, Địa_điểm, Mã_phòng) F5={Mã_dự_án ® {Tên_dự_án, Địa_điểm, Mã_phòng}} THAM_GIA(Mã_nhân_viên, Mã_dự_án, Số_giờ) F6={{Mã_nhân_viên, Mã_dự_án} ® Số_giờ} Dùng các phép tách ¨ Bước 1: Xây dựng lược đồ ban đầu bao gồm tất cả các thuộc tính và tất cả các phụ thuộc hàm. Kiểm tra dạng chuẩn của lược đồ quan hệ ¨ Bước 2: Nếu lược đồ chưa thuộc dạng chuẩn tốt, dùng các phép tách để tách thành các lược đồ con ở dạng chuẩn tốt Ví dụ Một công ti cần thiết kế CSDL để quản lý các thông tin sau: 1. Các phòng: Mỗi phòng có 1 tên duy nhất, 1 mã số duy nhất, 1 trưởng phòng và có thể có nhiều địa điểm. Ngày mà nhân viên được bổ nhiệm làm trưởng phòng được lưu trữ 2. Các dự án: Mỗi dự án có 1 mã số duy nhất, 1 tên duy nhất và 1 địa điểm. Một phòng quản lí một số dự án 3. Các nhân viên: Mỗi nhân viên cần lưu các thông tin: mã nhân viên, họ tên, ngày sinh, giới tính, bậc lương, lương, địa chỉ (phân chia thành số nhà, đường phố, xã, huyện, tỉnh). Mỗi nhân viên có 1 mã nhân viên duy nhất, phân biệt với các nhân viên khác. Một nhân viên thuộc vào một phòng nào đó, và có thể tham gia nhiều dự án (không bắt buộc các dự án này phải thuộc phòng làm việc của nhân viên). Số giờ làm việc của mỗi nhân viên cho mỗi dự án được lưu trữ. Một nhân viên có thể là người hướng dẫn công việc cho một số nhân viên khác 4. Các người phụ thuộc: Những người phụ thuộc của mỗi nhân viên gồm: con, vợ/chồng, bố, mẹ. Thông tin về người phụ thuộc gồm: họ tên, gới tính, ngày sinh và mối quan hệ với nhân viên Bước 1 R(Mã_nhân_viên, Họ_tên_nv, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Họ_tên_pt, Ngày_sinh, Giới_tính, Quan_hệ, Mã phòng, Tên_phòng, Mã_nhân_viên_tp, Ngày_bổ_nhiệm, Mã_địa_điểm, Địa_chỉ_phòng, Mã_dự_án, Tên_dự_án, Địa_điểm, Số_giờ) F= {Mã_nhân_viên ®{Họ_tên_nv, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng}, {Mã_nhân_viên, Họ_tên_pt} ® {Ngày_sinh, Giới_tính, Quan_hệ}, Mã_phòng ® {Tên_phòng, Mã_nhân_viên_tp, Ngày_bổ_nhiệm}, Mã_nhân_viên_tp® Mã_nhân_viên, Mã_địa_điểm ® {Mã_phòng, Địa_chỉ_phòng}, Mã_dự_án ® {Tên_dự_án, Địa_điểm, Mã_phòng}, Mã_nhân_viên, Mã_dự_án} ® Số_giờ}} R Î 1NF Bước 2 Dùng phép tách kết nối không tổn thất thành BCNF ta có các lược đồ NHÂN_VIÊN(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng) F1= {Mã_nhân_viên ®{Họ_tên, Ngày_sinh, Giới_tính, Bậc_lương, Lương, Số_nhà, Đường_phố, Xã, Huyện, Tỉnh, Mã_phòng}} PHỤ_THUỘC(Mã_nhân_viên, Họ_tên, Ngày_sinh, Giới_tính, Quan_hệ) F2= {Mã_nhân_viên, Họ_tên ® {Ngày_sinh, Giới_tính, Quan_hệ}} PHÒNG(Mã phòng, Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm) F3 ={Mã_phòng ® {Tên_phòng, Mã_nhân_viên, Ngày_bổ_nhiệm}} ĐỊA_ĐIỂM(Mã_phòng, Địa_chỉ) F4={} DỰ_ÁN(Mã_dự_án, Tên_dự_án, Địa_điểm, Mã_phòng) F5={Mã_dự_án ® {Tên_dự_án, Địa_điểm, Mã_phòng}} THAM_GIA(Mã_nhân_viên, Mã_dự_án, Số_giờ) F6={{Mã_nhân_viên, Mã_dự_án} ® Số_giờ}

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_co_so_du_lieu_chuong_3_thiet_ke_co_so_du_lieu_logi.pdf