75
CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI NIỆM TS. Nguyễn Thị Kim Ngân

CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ

Ở MỨC KHÁI NIỆM

TS. Nguyễn Thị Kim Ngân

Page 2: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Nội dung

Dư thừa và dị thường dữ liệu

Phụ thuộc hàm

Hệ tiên đề Armstrong

Bao đóng của tập thuộc tính

Phủ của một tập PTH

Xác định khóa của lược đồ quan hệ

Chuẩn hóa lược đồ quan hệ

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ệ

Page 3: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ề BCNF

Phép tách bảo toàn phụ thuộc về 3NF

Page 4: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 5: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Định nghĩa phép tách lược đồ quan hệ

Cho lược đồ quan hệ R=<U, F>

U1, U2, …, Uk là các tập con của U sao cho U1 U2 … Uk=U

Fi= Ui(F)={{XY| XY F+, XYUi}, i=1,..,k

Phép tách lược đồ R là việc thay thế R=<U, F> bằng các lược đồ

con R1 =<U1 , F1>, R2 =<U2 , F2>, …, Rk=<Uk, Fk>

Kí hiệu phép tách: =(R1, R2, …, Rk) hoặc =(U1, U2, …, Uk)

Page 6: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Phép tách kết nối không tổn thất

Cho lược đồ quan hệ R=<U, F>

r là một quan hệ bất kỳ trên R thỏa mãn F

U1, U2, …, Uk là các tập con của U sao cho U=U1 U2 … Uk

Fi= Ui(F)={XY| XY F+, XYUi}, i=1,..,k

Ri=<Ui,Fi>, i=1,..,k

ri=Ui(r), i=1,..,k

Phép tách R thành {R1, R2, …, Rk} được gọi là tách kết nối không

tổn thất (Lossless Join Decomposition) đối với tập phụ thuộc hàm

F nếu r=r1 * r2 *…* rk

Page 7: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Phép tách kết nối không tổn thất

Bổ đề

Cho, R=<U,F> là một lược đồ quan hệ,

r là một quan hệ trên R thỏa F

U1, U2, …, Uk là các tập con của U sao cho U=U1 U2 … Uk

Fi= Ui(F)={XY| XY F+, XYUi}, i=1,..,k

Ri=<Ui,Fi>, i=1,..,k

=(R1, R2, …, Rk) là một phép tách của R

ri=Ui(r), i=1,..,k

m(r)=r1 * r2 *…* rk

Khi đó i) r m(r)

ii) Nếu s=m(r) thì Ui(s)=ri, i=1,..,k

iii) m(m(r))=m(r)

Page 8: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Bài toán

Cho lược đồ R <U, F>, trong đó, U={A1, A2, …, An} là tập các thuộc

tính, F là tập các phụ thuộc hàm,

U1, U2, …, Uk là các tập con của U sao cho U1 U2 … Uk=U

Kiểm tra phép tách =(U1, U2, …, Uk) có phải là phép tách kết nối

không tổn thất hay không?

Page 9: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách Thuật toán

Vào: U={A1, A2, …, An}, F, =(U1, U2, …, Uk)

Ra: Kết luận có phải là phép tách kết nối không tổn thất hay không?

Phƣơng pháp:

Bước 1: Lập bảng kxn,

Tại dòng i, cột j ta kí hiệu là aj nếu AjUi, ngược lại, ta kí hiệu là bij

Bước 2: Với mỗi XY F, xét các dòng có kí hiệu bằng nhau trên tập X. Các dòng này sẽ

được thay đổi kí hiệu để chúng mang giá trị bằng nhau trên tập Y, theo quy tắc:

- Nếu tồn tại một kí hiệu có dạng aj thì các kí hiệu còn lại được đổi thành aj

- Nếu không có giá trị nào có dạng aj thì lấy tùy ý một ký hiệu bij để làm bằng

Bước 2 được lặp lại cho đến khi không có thay đổi nào trên bảng nữa

Nếu tại bước kết thúc, bảng có một dòng gồm toàn ký hiệu dạng aj thì là phép tách kết nối

không tổn thất, ngược lại là phép tách kết nối tổn thất

Page 10: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Ví dụ

Cho R=<U, F>, trong đó U={S, A, I, P} và F={SA, SI P}

Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?

Bảng khởi tạo

S A I P

SA a1 a2 b13 b14

SIP a1 b22 a3 a4

Page 11: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Ví dụ 1:

Cho U={S, A, I, P} và F={SA, SI P}

Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?

Xét SA

S A I P

SA a1 a2 b13 b14

SIP a1 b22 a3 a4

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

Page 12: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Ví dụ 1:

Cho U={S, A, I, P} và F={SA, SI P}

Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?

Xét SI P

S A I P

SA a1 a2 b13 b14

SIP a1 b22 a3 a4

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

Page 13: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Ví dụ 1:

Cho U={S, A, I, P} và F={SA, SI P}

Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?

Xét SI P

=(SA, SIP) là phép tách kết nối không tổn thất

S A I P

SA a1 a2 b13 b14

SIP a1 b22 a3 a4

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

S A I P

SA a1 a2 b13 b14

SIP a1 a2 a3 a4

Page 14: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Định lý

Giả sử =(U1, U2) là một phép tách của lược đồ quan hệ R=<U,F>.

Khi đó, là phép tách kết nối không tổn thất

FUUUU

FUUUU

1221

2121

\

\

Page 15: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Chứng minh định lý

Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}

U1={A1, A2, …, Ai-1, Ai …, Aj}

U2={Ai , …, Aj,Aj+1 …, An}

Bảng khởi tạo

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 b21 b22 … bi-1 ai … aj aj+1 … an

Page 16: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Chứng minh định lý

Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}

U1={A1, A2, …, Ai-1, Ai …, Aj}

U2={Ai , …, Aj,Aj+1 …, An}

Nếu U1U2 U1\U2 F+ => Ai, Ai+1 …, Aj A1, A2, …, Ai-1 F+

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 b21 b22 … bi-1 ai … aj aj+1 … an

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 a1 a2 … ai-1 ai … aj aj+1 … an

Page 17: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Chứng minh định lý

Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}

U1={A1, A2, …, Ai-1, Ai …, Aj}

U2={Ai , …, Aj,Aj+1 …, An}

Nếu U1U2 U1\U2 F+ => Ai, Ai+1 …, Aj A1, A2, …, Ai-1 F+

=(U1, U2) là phép tách kết nối không tổn thất

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 b21 b22 … bi-1 ai … aj aj+1 … an

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 a1 a2 … ai-1 ai … aj aj+1 … an

Page 18: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Chứng minh định lý

Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}

U1={A1, A2, …, Ai-1, Ai …, Aj}

U2={Ai , …, Aj,Aj+1 …, An}

Nếu U1U2 U2\U1 F+ => Ai, Ai+1 …, Aj Aj+1,…, Ai-1 F+

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 b21 b22 … bi-1 ai … aj aj+1 … an

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj aj+1 … an

U2 b21 b22 … bi-1 ai … aj aj+1 … an

Page 19: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Chứng minh định lý

Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}

U1={A1, A2, …, Ai-1, Ai …, Aj}

U2={Ai , …, Aj,Aj+1 …, An}

Nếu U1U2 U2\U1 F+ => Ai, Ai+1 …, Aj Aj+1,…, Ai-1 F+

=(U1, U2) là phép tách kết nối không tổn thất

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n

U2 b21 b22 … bi-1 ai … aj aj+1 … an

A1 A2 … Ai-1 Ai … Aj Aj+1 … An

U1 a1 a2 … ai-1 ai … aj aj+1 … an

U2 b21 b22 … bi-1 ai … aj aj+1 … an

Page 20: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Định lý

Giả sử =(U1, U2) là một phép tách của lược đồ quan hệ R=<U,F>.

Khi đó, là phép tách kết nối không tổn thất

=> là phép tách kết nối tổn thất

FUUUU

FUUUU

1221

2121

\

\

FUUUU

FUUUU

1221

2121

\

\

Page 21: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Kiểm tra tính kết nối không tổn thất của

một phép tách

Ví dụ

Cho R=<U,F>, trong đó U={S, A, I, P} và F={SA, SI P}

Kiểm tra =(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ó U1U2 U1\U2 S A

Vì S A F+ nên =(SA, SIP) là phép tách không tổn thất

Page 22: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Phép tách bảo toàn tập phụ thuộc hàm

Cho R=<U, F>

U1, U2, …, Uk là các tập con của U sao cho U=U1 U2 … Uk

Fi=Ui(F)={XY| XY F+, XYUi}, i=1,..,k

Ri=<Ui,Fi>, i=1,..,k

Phép tách =(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 =(U1, U2, …, Uk)

k

i

iF1

Page 23: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Phép tách bảo toàn tập phụ thuộc hàm

Ví dụ 1. Cho R=<ABCD, {AB, CD}>, =(AB, CD)

Phép tách có bảo toàn tập phụ thuộc hàm F không?

Đặt F={AB, CD}, U1=AB, U2=CD

F1= U1(F)= AB(AB,CD)={AB}

F2= U2(F)= CD(AB,CD)={CD}

=> F1 F2 = {AB, CD} = F

=> F1 F2 phủ F

=> =(AB, CD) là phép tách bảo toàn tập phụ thuộc hàm F

Page 24: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Phép tách bảo toàn phụ thuộc

Ví dụ 2. Cho R= <CSZ, {CS Z, Z C}>, =(CS,CZ)

Phép tách 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= U1(F)=CS(CS Z, Z C)=

F2= U2(F)= CZ(CS Z, Z C)={Z C}

=> F1 F2 = {Z C}

Ta có CS Z F

CS+(F1F2)=CS => Z CS+

(F1F2) => CS Z ∉ (F1 F2)+

=> F1 F2 không phủ F

=> =(CS, CZ) là phép tách không bảo toàn phụ thuộc

Page 25: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 26: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Bổ đề

Cho lược đồ quan hệ R=<U, F>

U1, U2, …, Uk là các tập con của U sao cho U1 U2 … Uk =U

Fi= Ui(F)={XY| XY F+, XYUi}, i=1,..,k

Ri=<Ui,Fi>, i=1,..,k

=(R1, R2, …, Rk) là một phép tách của R

i) Nếu =( S1, S2, …, Sm) là một phép tách của Ri, và là các phép tách kết

nối không tổn thất, thì =( 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 là phép kết nối không tổn thất và Rk+1=Rk+2=…=Rm=R, thì =( R1, R2,

…, Rk, Rk+1, Rk+2, …, Rm) là phép tách kết nối không tổn thất

Page 27: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Bài toán

Cho lược đồ R=<U, F>. 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

Page 28: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Thuật toán

Vào: R=<U, F>

Ra: =( 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)

Bước 2: Nếu mọi lược đồ trong đều thuộc BCNF thì chuyển sang bước 3.

Ngược lại, tìm lược đồ S=<US, FS> trong mà S ∉ BCNF. Chọn một phụ thuộc

hàm XA 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

Page 29: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Bài toán

Cho lược đồ R=<CTHRSG, {CT, HR C, HT R, CS G, HS 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?

Page 30: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

R có thuộc BCNF không?

R=<CTHRSG, {CT, HR C, HT R, CS G, HS R}>

Đặt U= CTHRSG

F={CT, HR C, HT R, CS G, HS R}

Khóa của R là HS

Vì CT F và HS C, nên R ∉ BCNF

Page 31: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, HR C, HT R, CS G, HS R }

Khóa HS

Page 32: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, HR C, HT R, CS G, HS R }

Khóa HS

Page 33: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, 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

Page 34: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, 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

Page 35: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, 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

Page 36: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, 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

Page 37: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

U=CTHRSG

F={CT, 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

Page 38: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

=(U1,U2,U3,U4)

U=CTHRSG

F={CT, 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

Page 39: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 40: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Bài toán

Cho lược đồ R=<U, F>. 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

Page 41: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Thuật toán

Đầu vào: R=<U, F>, F tối tiểu

Đầu ra: =(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

Page 42: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Bài toán

Cho R=<CTHRSG, {C→T, HR→C, HT→R, CS→G, HS→R}>.

Tìm phép tách bảo toàn phụ thuộc thành 3NF của R

Page 43: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

R có thuộc 3NF không?

R=<CTHRSG, {C→T, HR→C, HT→R, CS→G, HS→R}>

Đặt U= CTHRSG

F={CT, 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

Page 44: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

F đã là tập phụ thuộc hàm tối thiểu chƣa?

R=<U, F>

U= CTHRSG

F={CT, 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

Page 45: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

Phép tách

R=<U, F>

U= CTHRSG

F={CT, 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=<CT, {C→T}> R3=<HTR, {HT→R}> R5=<HSR, {HS→R}>

R2=<HRC, {HR→C}> R4=<CSG, {CS→G}>

=(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

Page 46: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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=<U, F>

=(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 =(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 đều thuộc 3NF

Page 47: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Nội dung

Dư thừa và dị thường dữ liệu

Phụ thuộc hàm

Hệ tiên đề Armstrong

Bao đóng của tập thuộc tính

Phủ của một tập PTH

Xác định khóa của lược đồ quan hệ

Chuẩn hóa lược đồ quan hệ

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ệ

Page 48: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 49: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ƯỚNG

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

hd tt

Page 50: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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 đồ

Page 51: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 52: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 53: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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 đồ

Page 54: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 55: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 56: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

Ví dụ

ĐỊA_ĐIỂM(Mã_phòng, địa_chỉ)

PHÒNG

Mã phòng

Tên

phòng Địa

điểm

Page 57: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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)

Khóa chính của T -> Khóa ngoài của S

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

Page 58: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

1 1

Page 59: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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.

Khóa chính của T -> Khóa ngoài của S

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

Page 60: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 61: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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.

Khóa chính của S và T -> Khóa ngoài của lược đồ mới

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

Hợp của khóa chính của S và T -> Khóa chính của lược đồ mới

Page 62: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁ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

Page 63: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 64: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 65: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 66: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ƯỚNG

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

hd tt

Page 67: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ờ)

Page 68: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 69: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 70: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 71: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ờ}

Page 72: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 73: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 74: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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

Page 75: CHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở …fit.hnue.edu.vn/~kienltt/HeCSDL/Chuong5-Phan2.pdfCHƢƠN V. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI

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ờ}