Ctt102 Chuong 8 PTH&DC

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

Nội'dung'chi':ết'

!  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"

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 3& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 4&


Các'bước'thiết'kế'CSDL'quan'hệ' Nội'dung'chi':ết'
!  Các bước cơ bản của thiết kế csdl ở mức quan niệm: !  Các"bước"thiết"kế"CSDL"quan"hệ"
-  Thiết kế mô hình DL ở mức quan niệm (ER). !  Sự&dư&thừa&thông&tin&&
-  Chuyển mô hình DL mức quan niệm sang mức logic
!  Phụ"thuộc"hàm""
(chuyển mô hình ER sang mô hình DL quan hệ).
-  Với mỗi quan hệ, xác định tập PTH nhận diện.
!  Luật"dẫn"Armstrong"
-  Nâng chuẩn của 1 lược đồ quan hệ bằng cách tách lược !  Các"dạng"chuẩn"
đồ để loại bỏ PTH không đầy đủ hoặc PTH bắc cầu vào "
khóa chính của lược đồ.
-  Đánh giá chất lượng của lược đồ qua mỗi lần nâng chuẩn
bằng tiêu chí dạng chuẩn

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 5& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 6&

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&

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 9& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 10&

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."

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 11& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 12&


Phụ'thuộc'hàm' Phụ'thuộc'hàm'

!  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?"

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 15& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 16&


Nội'dung'chi':ết' Dạng'chuẩn'

!  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&
"

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 17& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 18&

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.""

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 "
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

PG16 432 CMT8, QTB 01//01/2012 01/01/2013 150tr CO72 B.T.Thanh


Phi dạng chuẩn
PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 19& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 20&


Biến'đổi'phi'dạng'chuẩn'sang'DC1' Biến'đổi'phi'dạng'chuẩn'sang'DC1'

!  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

PG16 432 CMT8, QTB 01/09/2007 01/10/2011 150tr CO72 B.T.Thanh


CR76 L.V.Hùng
CR56 H.V.Gia PG4 125 Lê Văn Sỹ, Q3 01/08/2007 01/07/2012 50tr CO40 N.T.Lan
CR56 H.V.Gia
PG16 432 CMT8, QTB 01//01/2012 01/01/2013 150tr CO72 B.T.Thanh

PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong


NHA_CHO_THUE (MANT, MANHA, DCHI_NHA, NGAYTHUE_BT, NGAYTHUE_KT, GIATHUE, MACHUNHA, TENCHUNHA)

MANT MANHA DCHI_NHA NGAYTHUE_BT NGAYTHUE_KT GIATHUE MACHUNHA TENCHUNHA


MANT TENNT MANHA DCHI_NHA NGAYTHUE_BT NGAYTHUE_KT GIATHUE MACHUNHA TENCHUNHA
CR76 PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan
CR76 L.V.Hùng PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan
CR76 PG16 432 CMT8, QTB 01/09/2007 01/10/2011 150tr CO72 B.T.Thanh
CR76 L.V.Hùng 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
CR56 H.V.Gia PG4 125 Lê Văn Sỹ, Q3 01/08/2007 01/07/2012 50tr CO40 N.T.Lan
CR56 PG16 432 CMT8, QTB 01//01/2012 01/01/2013 150tr CO72 B.T.Thanh
CR56 H.V.Gia PG16 432 CMT8, QTB 01//01/2012 01/01/2013 150tr CO72 B.T.Thanh
CR56 PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong
CR56 H.V.Gia PG36 124 Tô Ký, Q12 01/01/2010 01/01/2014 200tr CO20 N.T.Phuong

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 21& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 22&

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)

Xét quan hệ NGUOI_THUE:


một"tập"thuộc"tính:" MANT TENNT
PK = {MANT}, F = {MANT → TENNT}
$ "A"là"một"thuộc"tính"phụ"thuộc"đầy"đủ"(không"phụ"thuộc"đầy" CR76 L.V.Hùng
NGUOI_THUE có đạt DC2 ?
đủ)"vào"X"nếu"X"→"A"là"một"phụ"thuộc"hàm"đầy"đủ"(không" CR56 H.V.Gia
► NGUOI_THUE: thỏa DC2
đầy"đủ)"

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 23& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 24&


Dạng'chuẩn'2'(DC2)' Biến'đổi'DC1'sang'DC2'

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

MANT MANHA DCHI_NHA NGAYTHUE_BT NGAYTHUE_KT GIATHUE MACHUNHA TENCHUNHA


!  B2:"Xác"định"các"pth"gây"ra"thuộc"tính"không"khóa"không"
CR76 PG4 125 Lê Văn Sỹ, Q3 01/08/2012 01/09/2013 50tr CO40 N.T Lan
phụ"thuộc"đầy"đủ"vào"khóa"
CR76 PG16 432 CMT8, QTB 01/09/2007 01/10/2011 150tr CO72 B.T.Thanh "MANHA"→"DCHI_NHA,"GIA_THUE,"MACHUNHA,"TENCHUNHA"
CR56

CR56
PG4

PG16
125 Lê Văn Sỹ, Q3

432 CMT8, QTB


01/08/2007

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

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 25& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 26&

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

DC2 CR56 PG16 01//01/2012 01/01/2013

CR56 PG36 01/01/2010 01/01/2014

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" DC2 27& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 28&


Dạng'chuẩn'3'(DC3)' Dạng'chuẩn'3'(DC3)'

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

MANHA DCHI_NHA GIATHUE MACHUNHA TENCHUNHA


NO"→"M" ⇒"NO"→MN":"thỏa"(i)" P không phụ thuộc
PG4 125 Lê Văn Sỹ, Q3 50tr CO40 N.T Lan

MN"→"P:thỏa"(ii)" bắc cầu vào NO PG16 432 CMT8, QTB 150tr CO72 B.T.Thanh

MN"→"O""⇒"MN"→NO":"không"thỏa"(iii)" PG36 124 Tô Ký, Q12 200tr CO20 N.T.Phuong

-  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"thuộc"tính"khóa"trong"quan"hệ"đạt"dạng"chuẩn"2" NHA_THUE (MANHA, DCHI_NHA, GIATHUE, MACHUNHA, TENCHUNHA)


"NHA_THUE:"PK"="{MANHA}" MANHA DCHI_NHA GIATHUE MACHUNHA TENCHUNHA

!  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

không"khóa"bắt"cầu"vào"khóa" PG16 432 CMT8, QTB 150tr CO72 B.T.Thanh

"MACHUNHA"→"TENCHUNHA" PG36 124 Tô Ký, Q12 200tr CO20 N.T.Phuong

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

CHUNHA)" MANHA DCHI_NHA GIATHUE MACHUNHA MACHUNHA TENCHUNHA

" PG4 125 Lê Văn Sỹ, Q3 50tr CO40 CO40 N.T Lan

PG16 432 CMT8, QTB 150tr CO72 CO72 B.T.Thanh

PG36 124 Tô Ký, Q12 200tr CO20 CO20 N.T.Phuong

DC3 DC3

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 31& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 32&


Dạng'chuẩn'3'(DC3)' Dạng'chuẩn'BCK'(Boyce'Codd'Ken)'

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

MANT MANHA NGAYTHUE_BT NGAYTHUE_KT


!  DC3 không đạt được là do sự xuất hiện của các thuộc tính không 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

CR76 PG16 01/09/2007 01/10/2011


!  DC3 là dạng chuẩn tối thiểu trong thiết kế CSDL" CR56 H.V.Gia
DC BCK CR56 PG4 01/08/2007 01/07/2012

CR56 PG16 01//01/2012 01/01/2013

CR56 PG36 01/01/2010 01/01/2014


BCK
NHA_THUE (MANHA, DCHI_NHA, GIATHUE, MACHUNHA) CHU_NHA(MACHUNHA, TENCHUNHA)

MANHA DCHI_NHA GIATHUE MACHUNHA


MACHUNHA TENCHUNHA
PG4 125 Lê Văn Sỹ, Q3 50tr CO40 BCK
CO40 N.T Lan
PG16 432 CMT8, QTB 150tr CO72 CO72 B.T.Thanh

PG36 124 Tô Ký, Q12 200tr CO20 CO20 N.T.Phuong

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 33& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 34&

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

CR74 13/05/2005 12:00 SG37 G102


!  Lặp"lại"qui"trình"trên"cho"Q2"đến"khi"không"thể"tiếp"tục."
CR56 1/07/2005 10:30 SG5 G201 !  Quan"hệ"Q1"và"các"Qi"phân"rã"được"từ"Q2"là"quan"hệ"cuối"
cùng"đạt"chuẩn"BCK."
F = { f1: MAUV, NGAYPV → GIOPV, MANV, MAPHG
f2: MANV, NGAYPV, GIOPV → MAUV
f3: MAPHG, NGAYPV, GIOPV → MAUV, MANV
f4: MANV, NGAYPV → MAPHG
}

Khóa chính = {MAUV, NGAYPV}


Khóa ứng viên = { (MANV, NGAYPV, GIOPV); (MAPHG, NGAYPV, GIOPV)}
⇒ PHONGVAN: Không đạt DC BCK, do PTH f4 có vế trái không là khóa/khóa ứng
viên.

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 35& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 36&


Biến'đổi'DC3'lên'DC'BCK' Dạng'chuẩn'BCK'

!  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

PHONGVAN(MAUV,NGAYPV, GIOPV, MANV)


F = { f1: MAUV, NGAYPV → GIOPV, MANV, MAPHG
f2: MANV, NGAYPV, GIOPV → MAUV MAUV NGAYPV GIOPV MANV
f3: MAPHG, NGAYPV, GIOPV → MAUV, MANV
CR76 13/05/2005 10:30 SG5
f4: MANV, NGAYPV → MAPHG
} CR56 13/05/2005 12:00 SG5

CR74 13/05/2005 12:00 SG37

CR56 1/07/2005 10:30 SG5

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 37& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 38&

©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 39&

You might also like