Professional Documents
Culture Documents
Ctt102 Chuong 8 PTH&DC
Ctt102 Chuong 8 PTH&DC
Ctt102 Chuong 8 PTH&DC
! Các&bước&thiết&kế&CSDL&quan&hệ&
! Sự"trùng"lắp"thông"tin"
'
CHƯƠNG'8'
! Phụ"thuộc"hàm""
! Luật"dẫn"Armstrong"
Phụ'thuộc'hàm'và'dạng'chuẩn' ! Các"dạng"chuẩn"
(Func:onal'Dependencies'&' "
Normal'Form)'
Slide&bài&giảng&môn&Cơ&sở&dữ&liệu&&
©"Bộ"môn"Hệ"Thống"Thông"Tin"/"Khoa"Công"Nghệ"Thông"Tin"/"Trường"Đại"học"Khoa"học"Tự"nhiên""" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 2&
Các'bước'thiết'kế'CSDL'quan'hệ' Các'bước'thiết'kế'CSDL'quan'hệ'
! Một"lược"đồ"CSDL"thiết"kế"tốt"được"thể"hiện:"
THIẾT&KẾ&QUAN&NIỆM& - Ngữ"nghĩa"của"quan"hệ,"thuộc"tính"được"thể"hiện"rõ"ràng"
" Đáp"ứng"các"yêu"cầu"thông"
(CONCEPTUAL&DESIGN)&
tin"cho"các"người"dùng"và" - Các"thuộc"tính"trên"quan"hệ"không"được"trùng"lắp"
các"ứng"dụng"cụ"thể." - Giảm"trùng"lắp"giữa"các"bộ"trên"một"quan"hệ"(dư"thừa"thông"
" Cung"cấp"kiến"trúc"lưu"trữ" tin)"
THIẾT&KẾ&LÔUGÍC& dữ"liệu"đúng"đắn,"tự"nhiên" - Giảm"giá"trị"rỗng"(Null)"trên"các"quan"hệ."
(LOGIC&DESIGN)& và"dễ"hiểu." ! Lược"đồ"thiết"kế"trùng"lắp"thông"tin"dẫn"đến:"
" Hỗ"trợ"một"số"yêu"cầu"về" - Tốn"không"gian"lưu"trữ"
hiệu"năng:"thời"gian"hồi"đáp," - Dị"thường"khi"thực"hiện"các"phép"cập"nhật"dữ"liệu"
thời"gian"xử"lý,"không"gian"
THIẾT&KẾ&VẬT&LÝ&
lưu"trữ,"…" ! Kiểm"tra"lược"đồ"tốt"hay"xấu?"
(PHYSICAL&DESIGN)& - Bằng"kinh"nghiệm"
"
- Bằng"tiêu"chuẩn"dạng"chuẩn"
Sự'dư'thừa'thông':n' Sự'dư'thừa'thông':n'
! Khi"một"phần"của"dữ"liệu"có"thể"suy"ra"từ"một"số"thành"phần" ! Các"dị"thường"khi"thực"hiện"thao"tác"cập"nhật:"
phần"dữ"liệu"khác"thì"ta"nói"có"sự"trùng"lắp"dữ"liệu." - Thêm:"Thêm"1"giáo"viên"thì"phải"thêm"thông"tin"bộ"môn"hoặc"phải"
để"giá"trị"cho"các"thuộc"tính"liên"quan"đến"bộ"môn"là"Null."Không"thể"
Dư thừa!
thêm"1"bộ"môn"mới"mà"chưa"có"giáo"viên"nào"thuộc"về"bộ"môn"đó."
- Sửa:"khi"sửa"thông"tin"bộ"môn,"thì"phải"sửa"đến"tất"cả"các"bộ"liên"
quan"nếu"không"sẽ"dẫn"tới"trình"trạng"không"nhất"quán."
- Xóa:"có"thể"bị"mất"thông"tin."Xem"xét"khi"xóa"giáo"viên"có"mã"006?"
Sự&dư&thừa&thông&tin:&&Thông&tin&về&tên&phòng&và&người&trưởng&phòng&lặp&lại&
nhiều&lần&
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 7& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 8&
Sự'dư'thừa'thông':n'' Nội'dung'chi':ết'
! Tốn"không"gian"lưu"trữ"" ! Các"bước"thiết"kế"CSDL"quan"hệ"
! Sự"trùng"lắp"thông"tin"và"các"dị"thường"
! Phụ&thuộc&hàm&&
Lược&đồ&1& ! Các"dạng"chuẩn"
"
Tính&kích&thước&lưu&trữ&của&mỗi&lược&đồ&khi&thêm&10&giáo&viên&cho&bộ&môn&
HTTT?&&(Giả&sử&kích&thước&mỗi&thuộc&tính&là&20&bytes)iên&mới&
Lược&đồ&2&
Phụ'thuộc'hàm' Phụ'thuộc'hàm'(PTH)'
! Cho R (A1, A2, …, An), r(R), ký hiệu R+ = {A1, A2, …, An}. ! Nhận"xét"
! Phụ thuộc hàm giữa 2 tập thuộc tính X, Y ⊆ R+. - PTH"thể"hiện"các"ràng"buộc"từ"thế"giới"thực."
- Ký hiệu : X # Y, X là vế trái, Y là vế phải. - ∀r"∈"R,"∀"t"∈"r,"nếu"t[X]"là"duy"nhất"thì"X"là"khóa"của"R."
- Ý nghĩa: ∀r ∈ R, t1, t2 ∈ r, nếu t1[X] = t2[X] thì t1[Y] = t2[Y]. - Nếu"K"là"khóa"của"R"thì"K"xác"định"hàm"tất"cả"các"tập"thuộc"
- Ví dụ: tính"con"của"R+."
MAGV # TENGV,NGSINH,DCHI MABM
MABM # {TENBM, TRGBM} - PTH"dùng"để"đánh"giá"một"kết"quả"thiết"kế"CSDL."
! Nhận"diện"PTH:"Việc"nhận"diện"PTH"dựa"vào"ý"nghĩa"của" ! Luật"dẫn"Armstrong"
thuộc"tính"và"mối"quan"hệ"của"chúng"trong"quan"hệ." - Luật"phản"hồi"
! Ví"dụ:"" (FD1) ∀Y ⊆ X, X→ Y
"
- Luật"cộng"
Nếu X → Y và Z ⊆ W
(FD2)
Thì X, W → Y, Z
! Dựa"vào"dữ"liệu"trên":" - Luật"bắc"cầu"
- MAGV"→"TENGV" (FD3)
Nếu X → Y và Y → Z
- TENGV"→"MAGV" Thì X → Z
! Tuy"nhiên,"chỉ"có"pth:"
- MAGV"→"TENGV"
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 13& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 14&
Phụ'thuộc'hàm' Phụ'thuộc'hàm'
! Luật"dẫn"khác:" ! PTH"đầy"đủ"
- Luật"bắc"cầu"giả"
Nếu X → Y và Y, W → Z
(FD4) Xét pth X → Y được định nghĩa trên R
Thì X, W → Z
- Luật"hội"
Nếu X → Y và X → Z
(FD5) Thì Y phụ thuộc đầy đủ vào X
Thì X → Y, Z
- Luật"phân"rã" ! Ví"dụ:""
Nếu X → Y và Z ⊆ Y - Cho"R(A,"B,"C,"D,"E,"I)"
(FD6)
- Tập"PTH:"F"="{"A→BCD,"BCD→E,"CD→EI"}"
Thì X → Z
- Pth"BCD→E"là"phụ"thuộc"hàm"đầy"đủ"không?"
! Các"bước"thiết"kế"CSDL"quan"hệ" ! Mục"đích:"đánh"giá"mức"độ"trùng"lắp"dữ"liệu"của"lược"đồ"
! Sự"trùng"lắp"thông"tin" CSDL"
"
! Phụ"thuộc"hàm""
! Các&dạng&chuẩn&
"
Dạng'chuẩn'1'(DC1)' Biến'đổi'phi'dạng'chuẩn'sang'DC1'
! Một"quan"hệ"ở"dạng"chuẩn"1"không"có"các"trường"lặp"và"các" ! Phương"pháp"
trường"kép,"còn"được"gọi"là"cấu"trúc"phẳng"(tất"cả"các"giá" 1. Phương"pháp"1:"Điền"đầy"đủ"các"dữ"liệu"vào"các"chỗ"trống"
trị"tại"các"thuộc"tính"phải"là"giá"trị"nguyên"tố)." bằng"dữ"liệu"trùng"lắp"→"dẫn"đến"nhiều"dữ"liệu"bị"trùng"lắp"
! Nhận"xét:" trên"quan"hệ."
- Mọi lược đồ quan hệ đều thuộc DC 1. 2. Phương"pháp"2:"Thay"thế"các"giá"trị"không"nguyên"tố"bằng"
- DC1 còn tình trạng trùng lắp dữ liệu cao, nên gây ra các bất thường về cập nhật cách"xác"định"tập"thuộc"tính"làm"khóa"chính"và"sau"đó"tách"
dữ liệu."
thành"một"quan"hệ"mới"→"tạo"ra"hai"hay"nhiều"quan"hệ"mới,"
! Ví"dụ:"cho"quan"hệ"THUENHA"như"sau" và"sẽ"làm"giảm"bớt"sự"trùng"lắp"thông"tin.""
CR76 L.V.Hùng PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan "
PG16 432 CMT8, QTB 01/09/2007 01/10/2011 150tr CO72 B.T.Thanh
CR56 H.V.Gia PG4 125 Lê Văn Sỹ, Q3 01/08/2007 01/07/2012 50tr CO40 N.T.Lan
! Phương"pháp"1:" ! Phương"pháp"2:"xác"định"khóa"và"tách"bảng"
NGUOI_THUE (MANT, TENNT)
MANT TENNT MANHA DCHI_NHA NGAYTHUE_BT NGAYTHUE_KT GIATHUE MACHUNHA TENCHUNHA
CR76 L.V.Hùng PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan MANT TENNT
Dạng'chuẩn'2'(DC2)' Dạng'chuẩn'2'(DC2)'
! Một"số"khái"niệm"bổ"sung" ! Một"lược"đồ"đạt"dạng"chuẩn"2"nếu"như"lược"đồ"đó"đã"đạt"
- Thuộc"tính"khóa"(không"khóa):"A"là"một"thuộc"tính"khóa" DC1"và"các"thuộc"tính"không"khóa"phụ&thuộc&đầy&đủ"vào"
(không"khóa)"của"Q"nếu:" thuộc"tính"khóa."
$ "A"∈"Q+" ! Nhận"xét:"
- Mọi lược đồ quan hệ đạt DC2 cũng đạt DC1.
$ "A"có"(không"có)"tham"gia"vào"một"khóa"của"Q"
- Nếu R chỉ có 1 khóa và khóa chỉ có 1 thuộc tính thì R đạt DC 2.
- "Ví"dụ"4.5:"""Q1(MNOPX)";"Q2(PY)" - DC2 còn xuất hiện sự trùng lặp dữ liệu nên vẫn còn xuất hiện các dị thường về
cập nhật dữ liệu.
"M,N,O"là"các"thuộc"tính"khóa"của"Q1,"P"là"thuộc"tính"khóa"
của"Q2"nhưng"là"thuộc"tính"không"khóa"của"Q1" ! Ví"dụ:""
- Thuộc"tính"phụ"thuộc"đầy"đủ"(không"phụ"thuộc"đầy"đủ)"vào" NGUOI_THUE (MANT, TENNT)
! Ví"dụ:"" ! B1:"Xác"định"khóa"chính"trên"quan"hệ"bị"DC1:"
NHA_CHO_THUE"với"PK"="{MANT,"MANHA}"
NHA_CHO_THUE (MANT, MANHA, DCHI_NHA, NGAYTHUE_BT, NGAYTHUE_KT, GIATHUE, MACHUNHA, TENCHUNHA)
CR56
PG4
PG16
125 Lê Văn Sỹ, Q3
01//01/2012
01/07/2012
01/01/2013
50tr
150tr
CO40
CO72
N.T.Lan
B.T.Thanh
! B3:"Nếu"có"tồn"tại"pth&không&đầy&đủ&trên"khóa"chính"thì"xóa"
CR56 PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong
chúng"ở"quan"hệ"cũ"và"đưa"chúng"vào"một"quan"hệ"mới.&
- Xóa"pth"MANHA"→"DCHI_NHA,"GIA_THUE,"MACHUNHA,"
Xét quan hệ NHA_CHO_THUE: TENCHUNHA"bằng"cách"đưa"chúng"vào"quan"hệ"mới"
PK = {MANT, MANHA} NHA_THUE"(MANHA,DCHI_NHA,"GIA_THUE,"MACHUNHA,"
F = { MANHA → DCHI_NHA, GIATHUE, MACHUNHA, TENCHUNHA TENCHUNHA)."
Vậy NHA_CHO_THUE có thỏa DC2?
- Đổi"tên"quan"hệ"cũ"thành"TT_THUE_NHA(MANT,MANHA,"
► NHA_CHO_THUE: không thỏa DC2 → chỉ đạt DC1 NGAYTHUE_BT,"NGAYTHUE_KT)"
Biến'đổi'DC1'sang'DC2' Dạng'chuẩn'3'(DC3)'
DC1
NHA_CHO_THUE (MANT, MANHA, DCHI_NHA, NGAYTHUE_BT, NGAYTHUE_KT, GIATHUE, MACHUNHA, TENCHUNHA) ! Khái"niệm"bổ"sung:"Thuộc&tính&phụ&thuộc&bắc&cầu&vào&một&
MANT MANHA DCHI_NHA NGAYTHUE_BT NGAYTHUE_KT GIATHUE MACHUNHA TENCHUNHA tập&thuộc&tính&:&
CR76 PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan
A"phụ"thuộc"bắc"cầu"vào"X"nếu"có"4"điều"kiện"sau:"
CR76 PG16 432 CMT8, QTB 01/09/2007 01/10/2011 150tr CO72 B.T.Thanh
CR56 PG4 125 Lê Văn Sỹ, Q3 01/08/2007 01/07/2012 50tr CO40 N.T.Lan $ X"→"Y ∈"F+" "(i)"
CR56 PG16 432 CMT8, QTB 01//01/2012 01/01/2013 150tr CO72 B.T.Thanh
$ Y"→"A"∈"F+" "(ii)"
CR56 PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong
$ Y"→"X"∉"F+" "(iii)"
NHA_THUE (MANHA, DCHI_NHA, GIATHUE, MACHUNHA, TENCHUNHA) $ A"∉"(X ∪Y)" "(iv)"
TT_THUE_NHA (MANT, MANHA, NGAYTHUE_BT, NGAYTHUE_KT)
MANHA DCHI_NHA GIATHUE MACHUNHA TENCHUNHA
MANT MANHA NGAYTHUE_BT NGAYTHUE_KT
PG4 125 Lê Văn Sỹ, Q3 50tr CO40 N.T Lan
CR76 PG4 01/08/2012 01/09/2013
PG16 432 CMT8, QTB 150tr CO72 B.T.Thanh
CR76 PG16 01/09/2007 01/10/2011
PG36 124 Tô Ký, Q12 200tr CO20 N.T.Phuong
CR56 PG4 01/08/2007 01/07/2012
! Khái"niệm"bổ"sung:&Thuộc&tính&phụ&thuộc&bắc&cầu&vào&một& ! Một"lược"đồ"R"ở"dạng"chuẩn"3"khi"nó"đạt"dạng"chuẩn"2"và"tất"
tập&thuộc&tính&& cả"các"thuộc"tính"không"khóa"không"phụ"thuộc"bắt"cầu"vào"
! Ví"dụ:"Cho"F"="{MN→OPRX;"NO"→M;"P"→RY}" khóa"
- P"có"phụ"thuộc"bắc"cầu"vào"NO"(NO"→"P)?"" ! Ví"dụ:" NHA_THUE (MANHA, DCHI_NHA, GIATHUE, MACHUNHA, TENCHUNHA)
MN"→"P:thỏa"(ii)" bắc cầu vào NO PG16 432 CMT8, QTB 150tr CO72 B.T.Thanh
- R"có"phụ"thuộc"bắc"cầu"vào"NO"(NO"→"R)?" PK = {MANHA}
F= { f1: MANHA → DCHI_NHA,GIA_THUE, MACHUNHA, TENCHUNHA
NO"→"MN"và"MN→P"⇒"NO"→P"(i)" f2: MACHUNHA → TENCHUNHA }
NHA_THUE có đạt DC3?
P"→"R"(ii)"
P"→"NO"∉"F+"(iii)" R phụ thuộc bắc cầu vào NO Ta có:
MANHA → MACHUNHA
R"∉"NOP"(iv)"" MACHUNHA → TENCHUNHA
⇒ MANHA → TENCHUNHA (do bắt cầu)
► NGUOI_THUE: không thỏa DC2, do TENCHUNHA phụ thuộc bắt cầu vào thuộc tính khóa
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 29& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 30&
Biến'đổi'DC2'lên'DC3' Biến'đổi'DC2'lên'DC3'
! Xác"định"phụ"thuộc"hàm"trong"quan"hệ"gây"ra"thuộc"tính" DC2 PG4 125 Lê Văn Sỹ, Q3 50tr CO40 N.T Lan
! Xóa"pth"gây"ra"tính"chất"bắt"cầu"bằng"cách"đưa"nó"vào"quan"
hệ"mới."
- Xóa"pth"MACHUNHA"→"TENCHUNHA"từ"quan"hệ"NHA_THUE" CHU_NHA(MACHUNHA, TENCHUNHA)
và"đưa"vào"quan"hệ"mới"CHU_NHA(MACHUNHA,TEN" NHA_THUE (MANHA, DCHI_NHA, GIATHUE, MACHUNHA)
" PG4 125 Lê Văn Sỹ, Q3 50tr CO40 CO40 N.T Lan
DC3 DC3
! Nhận"xét:" ! Một"lược"đồ"chỉ"đạt"dạng"chuẩn"BCK"nếu"khi"mỗi"xác"định"
! Mọi lược đồ quan hệ đạt DC3 cũng đạt DC2. (pth)"có"vế"trái"đều"là"siêu"khóa/khóa"
BCK
! Phụ thuộc hàm bắc cầu là nguyên nhân dẫn đến trùng lắp dữ liệu TT_THUE_NHA (MANT, MANHA, NGAYTHUE_BT, NGAYTHUE_KT)
và làm cho lược đồ không đạt DC3. NGUOI_THUE (MANT, TENNT)
khóa trong lược đồ suy ra được lẫn nhau. CR76 L.V.Hùng BCK CR76 PG4 01/08/2012 01/09/2013
Dạng'chuẩn'BCK'(Boyce'Codd'Ken)' Biến'đổi'DC3'lên'DC'BCK'
! Ví"dụ:" ! Xác"định"phụ"thuộc"hàm"A"→"B"của"Q,"trong"đó"A"≠"B"và"A"
PHONGVAN(MAUV, NGAYPV, GIOPV, MANV, MAPHG) không"là"siêu"khóa/khóa."
MAUV NGAYPV GIOPV MANV MAPHG
! Phân"rã"quan"hệ"gốc"Q"thành"hai"quan"hệ"Q1"="{A,B},"Q2"="
CR76 13/05/2005 10:30 SG5 G101
{tập"các"thuộc"tính"còn"lại"của"Q"}"–"{B}"
CR56 13/05/2005 12:00 SG5 G101
! Ví"dụ:" ! Nhận"xét:"
- Mọi lược đồ quan hệ đạt DC BCK cũng thuộc DC3.
NV_PHONG (MANV,NGAYPV, MAPHG)
PHONGVAN(MAUV, NGAYPV, GIOPV, MANV, MAPHG) DC3 MANV NGAYPV MAPHG
- Mục tiêu của quá trình thiết kế CSDL là đưa các lược đồ
MAUV NGAYPV GIOPV MANV MAPHG
SG5 13/05/2005 G101
quan hệ về DC3 hoặc BCK.
CR76 13/05/2005 10:30 SG5 G101 SG5 13/05/2005 G101
CR56 13/05/2005 12:00 SG5 G101 SG37 13/05/2005 G102
CR74 13/05/2005 12:00 SG37 G102 SG5 1/07/2005 G201
CR56 1/07/2005 10:30 SG5 G201
©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 39&