You are on page 1of 20

6/14/2009

Trường Đại học Công nghệ thông tin, ĐHQG-HCM


Ôn thi cao học CNTT năm 2009
Nội dung
Phụ thuộc hàm
Phụ thuộc hàm và các dạng chuẩn „

„ Hệ tiên đề Armstrong
( Functional Dependency and Normal Forms) „ Bao đóng của tập thuộc tính
„ Bài toán thành viên
„ Phủ tối tiểu
Giảng viên: PGS.TS. Đỗ Phúc
„ Khóa và thuật toán tìm khóa
Khoa Hệ thống thông tin
„ Các dạng chuẩn
„ Chuẩn hóa lược đồ quan hệ
„ Các thuật toán kiểm tra phân rã nối không mất tin
„ Thuật toán phân rã LĐQH đạt DC3

Phụ thuộc hàm Định nghĩa phụ thuộc hàm


Functional Dependencies (1) Functional Dependencies (2)
„ PTH (FDs) được dùng để đo mức độ „ X -> Y đúng nếu bất kỳ khi nào hai bộ (tuple)
có cùng giá trị X phải có cùng giá trị Y
hoàn thiện của thiết kế các quan hệ „ Với bất kỳ hai bộ t1 và t2 trong thể hiện quan
„ PTH và khóa được dùng để xác định hệ r(R): Nếu t1[X]=t2[X] thì t1[Y]=t2[Y]
dạng chuẩn của quan hệ „ X -> Y trong R xác định ràng buộc trên tất cả
thể hiện r(R)
„ PTH là các ràng buộc (constraints) được „ Ký hiệu X -> Y ( đọc là “X xác định duy nhất
suy từ ý nghĩa và các liên hệ giũa các Y”)
thuộc tính dữ liệu „ PTH được suy từ các ràng buộc trong thế giới
thực trên các thuộc tính.

3 4

Ví dụ về phụ thuộc hàm (1) Ví dụ về ràng buộc PTH (2)


„ Mã nhân viên xác định tên nhân viên „ PTH là một tính chất của các thuộc tính trong
SSN -> ENAME lược đồ R
„ Mã đề án xác định tên đề án và địa điểm „ Ràng buộc phải thỏa trên tất cả các thể hiện
PNUMBER -> {PNAME, PLOCATION} của quan hệ r(R)
„ Mã nhân viên và mã đề án xác định giờ làm „ Nếu K là khóa của R thì K xác định phụ thuộc
việc trong tuần của nhân viên cho đề án với tất cả các thuộc tính của R (vì chúng ta
không bao giờ có hai bộ phân biệt mà
{SSN, PNUMBER} -> HOURS t1[K]=t2[K])

5 6

1
6/14/2009

Tính F+, bao đóng của tập các


Bài toán tìm tất cả PTH khả dĩ PTH F
„ Cho thể hiện của quan hệ, tìm tất cả các PTH khả dĩ: „ Khi thiết kế CSDL quan hệ,chúng ta bắt đầu
R(A B C) bằng cách xem xét tập các PTH khả dĩ.
-------------------- „ Khảo sát được tất cả các PTH là điều quan
1 2 4 trọng, do vậy làm thế nào để có tất cả PTH.
1 2 4 „ Bao đóng (closure) của tập PTH F là tập tất
2 5 7 cả PTH có thể suy diễn logic từ F. Ta ký hiệu
3 5 7 bao đóng của F là F+
Các PTH: A->B, A->C, B->C,AB->C,….
„ Ta tính F+ bằng cách áp dùng hệ tiên đề
Thuật toán ?
Armstrong

7 8

Các luật suy diễn khác của


Các luật suy diễn cho PTH (1) PTH (2)
„ Cho tập PTH F, ta có thể suy ra thêm các PTH khác Có thể suy thêm các luật hữu ích khác từ hệ tiên đề
thỏa. Armstrong:
Hệ tiên đề Armstrong: „ (Luật hợp) Nếu X -> Y và X -> Z thì X -> YZ

„ IR1. (Luật phản xạ) Nếu Y ⊆ X, thì X -> Y Vd: Nếu AB Æ CD và AB Æ EF thì AB Æ CDEF
Vd: ABC Æ BC „ (Luật tách) Nếu X -> YZ thì X -> Y và X -> Z

„ IR2. (Luật tăng trưởng) nếu X -> Y thì XZ -> YZ Vd: Nếu AB Æ CDEF thì AB Æ CD và AB Æ EF
Vd: nếu C Æ D thì ABC Æ ABD và AB Æ C và AB Æ D và AB Æ E và AB Æ F
„ IR3. (Luật bắc cầu) Nếu X -> Y và Y -> Z thì X -> Z „ (Luật bắc cầu giả) Nếu X -> Y và WY -> Z thì WX->Z

Vd: Nếu AB Æ CD và CD Æ EF thì AB Æ EF Vd: Nếu AB Æ EF và DEF Æ G thì ABD Æ G


„ Hệ tiên đề Armstrong là đúng và đủ

9 10

Bài tập: Áp dụng hệ tiên đề Armstrong


„ Cho quan hệ R = (A, B, C, G, H, I) và tập PTH: Bài tập: Hãy dùng hệ tiên đề Armstrong để
„ F = {A Æ B, A Æ C, CG Æ H, CG Æ I, B Æ H} chứng minh:
„ Dùng hệ tiên đề Armstrong và các luật mở rộng của nó để tính Nếu X -> Y và U -> V thì XU -> YV
F+ CM:
„ (Luật phản xạ) Nếu Y ⊆ X, thì X -> Y
„ (Luật tăng trưởng) Nếu X -> Y thì XZ -> YZ 1. X -> Y ( gt)
„ (Luật bắc cầu) Nếu X -> Y và Y -> Z thì X -> Z 2. XU-> YU, (tăng trưởng U vào (1) )
(Luật hợp) Nếu X -> Y và X -> Z thì X -> YZ
„
„ (Luật tách) Nếu X -> YZ thì X -> Y và X -> Z 3. U -> V (gt)
„ (Luật bắc cầu giả) Nếu X -> Y và WY -> Z thì WX -> Z 4. YU -> YV (tăng trưởng Y vào (3)
5. XU -> YV ( bắc cầu (2) và (4) )

11 12

2
6/14/2009

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


Bao đóng của tập thuộc tính „ F+ có thể có kích thước lớn, tìm F+ mất
The Closure of Attribute Sets nhiều công sức
„ Nếu chúng ta có thể xác định duy nhất tất cả
thuộc tính trong R bằng một tập con thuộc
tính X thì X là siêu khóa của R
„ Bao đóng của X trên F (được ký hiệu là X+)
là tập con của tập thuộc tính được xác định
duy nhất bởi X qua các PTH trong F

14

Thuật toán tính X+ ( bao đóng của X trên F)


Ví dụ tính bao đóng của tập thuộc tính
X+ = X // khởi tạo
repeat R=(A,B,C,D,E,H)
oldX+ = X+ „ F { AB → C, BC → AD, D → E, CE → B}

for each FD Y Æ Z in F do // kiểm tra từng PTH „ How to compute closure of {A,B}, i.e., {A,B}+?

if Y is a subset of X+, then // nếu vế trái trong X+


X+ = X+ U Z // thêm vế phải vào X+ 1. Start with X={A,B}
until X+ == oldX+ // lặp trong khi X+ thay đổi 2. Add C to X due to AB → C; X={A,B,C}
3. Add A,D to X due to BC → AD; X={A,B,C,D}
4. Add E to X due to D → E; X={A,B,C,D,E}
5. No more attributes can be added to X
6. {A,B}+ = {A,B,C,D,E}

15 16

Ví dụ tiếp theo
Ví dụ tính bao đóng X+ Cho R = (A, B, C, G, H, I) và F = {A Æ B, A Æ
C, CG Æ H, CG ÆI, B Æ H}, tính(AG)+
Cho quan hệ R = (A, B, C, G, H, I) và tập PTH
X+ = X
F = {A Æ B, A Æ C, CG Æ H, CG Æ I, B Æ H},
repeat
Tính (AG)+ ? oldX+ = X+
Ta muốn kiểm tra AG là siêu khóa của R. for each FD Y Æ Z in F do
„ Dùng thuật toán tính bao đóng (AG)+. if Y is a subset of X+, then
„ Nếu (AG)+ chứa tất cả thuộc tính của R thì X+ = X+ U Z
AG là siêu khóa của R. until X+ == oldX+

17 18

3
6/14/2009

Bài tập Tiếp theo


„ Cho F = { AB -> E, BE -> I, E -> C, CI -> D } „ 6. AB --> I, Transitivity on (4) and (5)
Chứng minh AB -> CD suy được từ F.
„ Simple Proof: „ 7. ABC --> CI, Augment (6) by C
„ (AB)+ = ABEICD which includes CD. „ 8. AB --> ABC, Augment (3) by AB
„ Proof using Armstrong's Axioms: „ 9. AB --> CI, Transitivity on (7) and (8)
1. AB --> E, Given
10. CI --> D, Given
„
„
„ 2. E --> C, Given
„ 3. AB --> C, Transitivity on (1) and (2) „ 11. AB --> D, Transitivity on (9) and (10)
„ 4. AB --> BE, Augment (1) by B „ 12. ABC --> CD, Augment (11) by C
„ 5. BE --> I, Given „ 13. AB --> CD, Transitivity on (8) and (12)
19 20

Định nghĩa khóa và các thuộc


tính tham gia vào khóa (1)
Tìm khóa „ Siêu khóa (superkey) của một lược đồ
Find Keys quan hệ R = {A1, A2, ...., An} là tập thuộc
tính S ⊆ R thỏa tính chất không có hai bộ t1
và t2 trong một trạng thái hợp lệ r của R mà
t1[S] = t2[S]

„ Khóa ( key) K là siêu khóa với tính chất bổ


sung là khi xóa thuộc tính nào khỏi K sẽ khiến
K không còn là siêu khóa.
22

Định nghĩa khóa và các thuộc


tính tham gia vào khóa (2) Khóa của quan hệ
„ Nếu lược đồ quan hệ có nhiều hơn một khóa, Định nghĩa: Cho quan hệ r( R ), tập K ⊂ R
mỗi khóa sẽ được gọi là khóa dự tuyển được gọi là khóa của quan hệ r nếu:K+=R
(candidate key). Một trong các khóa dự nếu bớt một phần tử khỏi K thì bao đóng của
tuyển được lựa chọn làm khóa chính nó sẽ khác R. Như thế tập K ⊂ R nếu K+=R
(primary key), các khóa còn lại làm khóa
và ( K \ A )+ ≠ R , ∀ A ⊂ R.
phụ (secondary keys).
„ Thuộc tính khóa là thuộc tính nằm trong
một khóa dự tuyển.
„ Thuộc tính không khóa không phải là „ Một quan hệ có thể có nhiều khóa.
thuộc tính khóa
23 24

4
6/14/2009

Ví dụ về khóa Tìm khóa (1)


Cho R = { A, B, C, D, E, G } và „ Gọi LHS là tập các thuộc tính nằm ở vế
F= {AB->C, D->EG , BE -> C , BC -> D , trái của các PTH. Đây là tập các ứng
CG ->BD, ACD ->B, CE -> AG} viên của siêu khóa.
Ta sẽ thấy các tập thuộc tính: „ Dùng bao đóng của tập thuộc tính và
K1 = { A, B} , K2 = {B,E} , K3={C,G} , tính chất của siêu khóa để kiểm tra ứng
K4={C,E} , K5 = {C,D}, K6={B,C} đều viên có có phải là siêu khóa hay không?
là khóa Nếu không phải thì bỏ qua ứng viên đó.

25 26

Vế trái CHRS, dàn các tập hợp


con của CHRS Tìm khóa (1)
„ Nếu ứng viên là siêu khóa thì tiếp tục
kiểm tra các tập con của ứng viên này.
„ Lặp lại cho đến khi gặp siêu khóa nhỏ
nhất
„ Siêu khóa nhỏ nhất là khóa dự tuyển
(candidate keys)

27 28

Ví dụ tìm khóa (1) Ví dụ tìm khóa (2)


„ Cho LĐQH r(R) với R = {A, B, C, D, E,
G, H,I} và tập PTH F „ Bước 1: Tìm siêu khóa
F={ AB -> CDEFGH, „ Tập LHS : ABCG

C -> BEI, „ Bước 2: Kiểm tra các tập con để


G -> H } tìm siêu khóa ; tập con nhỏ nhất
„ Tìm tất cả các khóa dự tuyển của để tìm khó dự tuyển
LĐQH trên và chỉ định khóa chính ? „ Kiểm tra ABC
ABC+ = ABCDEGHI =R

29 30

5
6/14/2009

Ví dụ tìm khóa (3) Ví dụ tìm khóa (4)


„ Lặp lại bước 2 cho ABC:
Kiểm tra ACG
„ Xét AB
„

ACG+= ABCDEGHI =R AB+ = ABCDEGHI = R


„ Kiểm tra BCG
„ Xét AC
BCG+= BCGEHI ≠ R ? KHÔNG AC+ = ABCDEGHI = R
„ Can ABG
„ Xét BC determine A? No
ABG+ = ABCDEGHI =R BC+ = BCEI ≠ R ? KHÔNG
VẬy ABC, ABG, ACG là các siêu khóa Vậy AB và AC là siêu khóa

31 32

Ví dụ tìm khóa (5) Ví dụ tìm khóa (6)


„ Lặp lại bước 2 cho ACG: „ Lặp lại bước 2 cho ABG:
„ Xét AC „ Xét AB

AC+ = ABCDEGHI = R AB+=ABCDEGHI = R


„ Xét AG „ Xét AG

AG+ = AGH ≠ R ? KHÔNG AG+ = AGH ≠ R ? KHÔNG


„ Xét CG „ Xét BG

CG+ = CGBEHI ≠ R ? KHÔNG BG+= BGH ≠ R ? KHÔNG


„ Vậy AC là siêu khóa Vậy AB là siêu khóa

33 34

Ví dụ tìm khóa (7) Ví dụ tìm khóa (8)


„ Tiếp tục lặp bước 2 cho AB:
„ Tiếp tục lặp bước 2 cho AC:
„ Xét A „ Xét A
A+= A ≠ R A+= A ≠ R
„ Xét B „ Xét C

B+= B ≠ R C+=CBEI ≠ R
„ Vậy AC là siêu khóa nhỏ nhất
„ Vậy AB là siêu khóa nhỏ nhất (minimal

superkey) „ Tóm lại ta có AB và AC là các khóa dự tuyển,


chọn một trong hai làm khóa chính

35 36

6
6/14/2009

Bài tập tìm khóa: Tìm khóa ? (1)


„ cho R = { A,B,C,D,E,G,H,I} „ Loại phần tử A: ta có
F= { AC → B, BI → ACD, ABC → D , H {B,C,D,E,G,H,I}+ = R vì pth CG → AE
→ I , ACE → BCG , CG → AE } khiến A thuộc về {B,C,D,E,G,H,I}+ nên
Tìm khóa ? (1) K = {B,C,D,E,G,H,I}.
„ Bước 1: Gán K = R = {A,B,C,D,E,G,H,I} „ Loại phần tử B, ta có {C,D,E,G,H,I}+
„ Bước 2: Lần lượt loại các thuộc tính của K = R vì pth CG → AE khiến A thuộc về
{C,D,E,G,H,I}+ và pth AC → B nên K
{C,D,E,G,H,I}.
37 38

Tìm khóa ? ( 2) Tìm khóa ? (3)


„ Loại phần tử C, ta có {D,E,G,H,I}+ ≠ R „ Loại phần tử G, ta có: {C, H,I}+ ≠ R
nên K vẫn là {C, D,E,G,H,I} nên K vẫn là {C, G,H,I}.
„ Loại phần tử D, ta có: {C, E,G,H,I}+ = R vì „ Loại phần tử H, ta có: {C, G,I}+ ≠ R
pth CG → AE khiến A thuộc về {C, nên K vẫn là {C, G,H,I}.
E,G,H,I}+ và pth AC → B nên K „ Loại phần tử I, ta có: {C,G,H}+ = R
={C,E,G,H,I}. vì CG → AE , AC → B, ABC→ D nên
„ Loại phần tử E, ta có: {C, G,H,I}+ = R vì K={C,G,H}.
pth CG → AE , AC → B , ABC→ D nên K
„ Vậy K={ C,G,H} là một khóa của r ( R )
={C,G,H,I}.
39 40

Bài tập 1 Bài tập 2


Cho LĐQH r( R) với R=ABCD và tập PTH „ Cho LĐQH r( R) với R=ABCD và tập
F ={AB->C, C->D, D->A} PTH F ={AB->C, B->D, D->B}
„ Tìm các khóa dự tuyển ? „ Tìm các khóa dự tuyển ?
„ Xét các tập con của ABCD „ Xét các tập con của ABD
„ Khóa AB,DB „ Khóa AB,AD
„ AB+=ABCD=R và DB=DBAC=R „ AB+=ABCD=R và AD=DBAC=R

41 42

7
6/14/2009

Bài tập 3
„ Cho tập PTH
„ F={XY->W, Y->Z, WZ->P, WP->QR, Q->X}
„ CM XY->P có thể suy được từ F Tương đương giữa các tập PTH
(1) Ta có XY-> W ( cho)
(2) Ta có WZ->P (cho)
(3)XYZ->P ( bắc cầu giả (1) và (2)
(4) Y->Z ( cho)
(5) XY->P ( bắc cầu giả (4) và (3)
Có thể dùng bao đóng XY+=XYWZPQR
đpcm
43

Bài toán thành viên Tương đương của tập các PTH
„ Hai tập PTH F và G là tương đương nếu:
Procedure Member „ Mọi PTH của F đều có thể suy được từ G và
Vào: F và PTH X → Y
„ Mọi PTH của G đều có thể suy được từ F
Ra : Đúng nếu F |= X → Y và Sai nếu nguợc lại
„ Do vậy F và G là tương đương nếu F + = G +
Cách thức:
Member(F, X → Y) „ Định nghĩa: F phủ G nếu mọi PTH của G đều
Begin suy được từ F ( G + ⊆ F +)
If Y ⊂ Closure(X,F) Then return (True) „ F và G là tương đương nếu F phủ G và G phủ
Else Return (False) F
End

45 46

Thuật toán EQUIVALENCE kiểm


Thuật toán DERIVES kiểm tra F |= G tra F tương đương G
„ Vào : hai tập PTH F và G „ Vào: hai tập PTH F và G
Ra: Đúng nếu F |= G và sai nếu ngược lại.
Ra: Đúng nếu F tương đương G, sai nếu
„
„ Cách thức:
„
„ DERIVES (F,G) ngược lại
„ Begin „ Cách thức
V:= true;
„
„ For each X → Y ∈ G do EQUIVALENCE( F, G)
„ V := V AND member(F, X → Y) Begin
„ Return (V); V := Derives (F,G) AND Derives(G,F)
„ End.

Dựa trên hàm DERIVES để xây dựng hàm tương đương của hai tập Return (V)
PTH. End.

47 48

8
6/14/2009

Bài tập kiểm tra tương đương Phủ của tập PTH, tập PTH tương đương

„ Kiểm tra 2 tập PTH tương đương?


„ Giải thích lý do
F = { AB -> C, B -> C, A -> D } „ Cho F và G là tập các PTH, ta nói F
G = { A -> B, B -> C, C -> D } tương đương với G và ký hiệu F ≡ G
Giải: Hai tập PTH F và G là không tương đương vì nếu F+= G+.
„ PTH A -> B ∈ G nhưng không thể suy được từ F
( Bao đóng A+ trên F là AD và không chứa B). „ Nếu F và G là tương đương thì ta nói F
„ PTH C -> D ∈ G cũng không suy được từ F ( Bao phủ G hay G phủ F.
đóng C+ trên F là C and và cũng không chứa D )

49 50

Tương đương giữa 2 tập PTH Tương đương giữa 2 tập PTH
Bài tập: Cho quan hệ Q(ABCDE) với:
„
„ Ta cần CM: F ╞ G⇔F├ G
F = {A  BC ,
A D „ Xét PTH A  E ∈ G suy được từ F nhờ vào
CD  E các luật dẫn.Trong F,ta có:
}
„ {A  C; A  D}├ {A  CD; CD ├ E} ├ A 

G= { E (bắc cầu)
A  BCE „ Kết luận: F ╞ G
A  ABD „ Ta nhận thấy F ⊆ G , do đó hiển nhiên G ╞ F
CD  E
} „ Kết luận: F ≡ G

51 52

Phủ tối tiểu của PTH


PTH đầy đủ Minimal Covers of FDs (1)
„ Cho quan hệ r(U), F và X,Y ⊂ U, Tập PTH là tối tiểu nếu thỏa các điều kiện sau:
„ (1) Mọi PTH của F đều có một thuộc tính duy
„ PTH f: X → Y∈ F là đầy đủ với X nếu nhất ở vế phải (RHS).
không tồn tại X’ ⊂ X sao cho F|=X’→ Y. „ (2) Không thể loại bất kỳ PTH nào khỏi F mà
tập các PTH còn lại vẫn tương đương với F.
„ (3) Không thể thay thế PTH X -> A của F với
PTH Y -> A khi Y ⊂ X mà vẫn có tập PTH
tương đương với F (tất cả các PTH đều là
PTH đầy đủ)

53 54

9
6/14/2009

Phủ tối tiểu của PTH Thuật toán tìm phủ tối thiểu của F
MINIMALCOVER(F,G)
„ Mọi tập PTH đều tương đương với một „ Vào: tập phụ thuộc hàm F
phủ tối tiểu „ Ra: G là phủ tối thiểu của F
G := F
„ Có thể tương đương với nhiều phủ tiểu Thay thế từng PTH X  { A, A2, . . . , An} trong G bằng các PTH XA1,
XA2, . . . , XAn
„ Có thuật toán để tính phủ tối tiểu FOR EACH PTH XA trong G
FOR EACH B ∈ X
IF ( G \ { XA} ) ∪ ( X \ {B}) A ) tương đương với G
Then Thay XA bằng ( X \ {B})A trong G
FOR EACH XA trong G
IF ( G \ { XA} ) tương đương với G then loại XA khỏi G
RETURN (G)
END.

55 56

Ví dụ tìm phủ tối thiểu Các bước của thuật toán (1)
„ Cho tập thuộc tính R = {PCHART} và „ Bước 1: G = F.
tập phụ thuộc hàm F như sau: „ Bước 2: G = { P → C;P → H; P→ A; P→ R;
P→T; CH → P; CH → A; CH → R; CH → T;
„ F = { P → CHART C → T; A → R } ( 11 PTH)
CH → PART „ Buớc 3: Kiểm tra PTH đầy đủ. Xóa lần lượt
C→ T các thuộc tính trong vế trái của các PTH mà
vế trái có nhiều thuộc tính, ví dụ CH → P;
A→ R CH → A; CH → R; CH → T (Vế trái có 2
} thuộc tính).

57 58

Các bước của thuật toán (2) Các bước của thuật toán (3)
„ 3.a. (Xóa thuộc tính C từ CH → P), chứng tỏ „ 3.e.(Xóa thuộc tính C từ CH → R)
có thể suy H → P từ G. (sai) chứng tỏ có thể suy H→R từ G. (sai)
„ 3.b. (Xóa thuộc tính H from CH → P) chứng „ 3.f.(Xóa thuộc tính H từ CH → R)
tỏ có thể suy C→P có thể được suy ra từ G.
(sai) chứng tỏ có thể suy C→R từ G. (sai)
„ 3.c.(Xóa thuộc tính C từ CH → A) chứng tỏ có „ 3.g(Xóa thuộc tính C từ CH → T)
thể suy H→A từ G. (sai) chứng tỏ có thể suy H→T từ G. (sai)
„ 3.d.(Xóa thuộc tính h từ CH → A) chứng tỏ „ 3.h. (Xóa thuộc tính H từ CH → T)
có thể suy C→A từ G. (sai) chứng tỏ có thể suy C→T từ G. (đúng)

59 60

10
6/14/2009

Các bước của thuật toán (4) Các bước của thuật toán (5)
Bước 4: Kiểm tra có thể loại bỏ các PTH trong G .
„ Do vậy, vào cuối bước 3, ta có : „
Mỗi lần loại bỏ sẽ phát sinh tập các PTH mới G'.
„ G= { P→C; P→H; P→ A; P→ R; 4.a. Có thể loại P→C ? (không )
4.b. Có thể loại P→ H? (không)
P→ T; CH → P; CH → A; 4.c. Có thể loại P→A ? (không)
4.d. Có thể loại P→R ? (được vì P→A và A→R)
CH → R; C→ T; A→ R } ( 10 PTH) 4.e. Có thể loại P→ T ? (được vì P→C và C→T)
4.f. Có thể loại CH → P ? (không)
„ Loại CH → T 4.g. Có thể loại CH → A ? (được, vì CH→ P và
P→A)
4.h. Có thể loại CH→ R ? (được vì CH→ P and P→R)

61 62

Các bước của thuật toán (6) Bài tập tìm phủ tối tiểu
„ 4.i. Có thể loại C→ T ? (không) „ Cho R = ABCDE và
4.j. Có thể loại A→ R ? (không) „ F = { A -> C, BD -> E, B -> D, B -> E, C -> AD }.

Do vậy vào cuối bước 4, ta có:


1) Tìm phủ tối thiểu của PTT(F) ?
G = { P→C; P→H; P→A; Đáp
CH -> P; C -> T; A → R } „ PTT(F)= { A-> C, B -> D, B-> E, C-> A, C-> D }
Kết quả: Phủ tối thiểu của F là : „ Tìm tất cả các khóa của F ?
2)
G = { P→C; P→ H; P→ A;
„ Đáp: AB và BC
CH→ P; C→ T; A→ R}

63 64

Các dạng chuẩn


Các dạng chuẩn Dạng chuẩn 1 (DC1): First Normal Form (1NF)
Normal Forms
„

„ Dạng chuẩn 2 (DC2): Second Normal Form (2NF)


„ Dạng chuẩn 3 (DC3): Third Normal Form (3NF)

„ Để chuẩn hóa 1NF-> 2NF-> 3NF

66

11
6/14/2009

Dạng chuẩn 1
Các loại PTH (1NF - First Normal Form)
™ Phụ thuộc hàm riêng phần ™ Định nghĩa
f partial functional dependency
f Quan hệ R ở dạng chuẩn 1 (1NF - First Normal Form)
f X → A được gọi là phụ thuộc hàm riêng phần nếu tồn tại Y ⊂ X
để cho Y → A.
nếu mọi thuộc tính của R đều chứa các giá trị nguyên tố
(atomic value), giá trị này không là một danh sách các
™ Phụ thuộc hàm đầy đủ
giá trị hoặc các giá trị phức hợp (composite value).
f full functional dependency
f X → A được gọi là phụ thuộc hàm đầy đủ nếu không tồn tại Y ™ Các thuộc tính của quan hệ R
⊂ X để cho Y → A. f Không là thuộc tính đa trị (multivalued attribute).
™ Phụ thuộc bắc cầu
f Không là thuộc tính phức hợp (composite attribute).
f transitive dependency
f X → A được gọi là phụ thuộc bắc cầu nếu tồn tại Y để cho X →
Y, Y → A, Y −/→ X và A ∉ XY.

67 68

Ví dụ quan hệ không ở DC1 Dạng chuẩn 2


Một quan hệ ở 1NF nếu các gía trị của tất cả thuộc
tính trong quan hệ là nguyên tử. ™ Định nghĩa
Ví dụ quan hệ sau đây không phải là 1NF
CNHAN (MACN HOTEN LOAINGHE MACBPT MANOILAM)
f Quan hệ R ở dạng chuẩn 2 (2NF - Second
1235 Tran An Dien 1311 {312,512} Normal Form) nếu R ở dạng chuẩn 1 và mọi
thuộc tính không khóa đều phụ thuộc hàm đầy
1412 Le Son Moc {312,400,435
}
đủ vào mọi khóa của R.
1311 Vo Ngoc Dien {435}

Lý do là thuộc tính MANOILAM có các giá trị không phải là


nguyên tử.

69 70

Dạng chuẩn 3
Ví dụ về quan hệ ở DC2 Third Normal Form (2)

Ví dụ: Cho LĐQH R = {A,B,C,D,E,G} và „ Lược đồ quan hệ R ở 3NF nếu nó ở 2NF


F = { A → BC, C → DE, E → G } và không có thuộc tính không khóa nào
„ Ta thấy A là khóa vì A+ = R ( tập thuộc trong A trong R là phụ thuộc bắc cầu
tính của quan hệ). vào khóa
„ Các thuộc tính không khóa là „ Có thể phân rã quan hệ thành các quan
{B,C,D,E,G}. hệ ở 3NF qua tiến trình chuẩn hóa 3NF
„ Do khóa chỉ có một thuộc tính nên quan
hệ R ở 2NF.
71 72

12
6/14/2009

Dạng chuẩn 3(2) Ví dụ về quan hệ không ở DC3


„ Lược đồ quan hệ R ở 3NF nếu nó ở 2NF „ Xét quan hệ CNHAN nhu sau:
CNHAN(MACN LOAINGHE HESOTHUONG)
và không có thuộc tính không khóa A „ Khóa của quan hệ là MACN
nào trong R là phụ thuộc bắc cầu vào „ Ta thấy có các pth trong quan hệ:
bất kỳ khóa nào của R MACN → LOAINGHE
MACN → HESOTHUONG
„ Định nghĩa: Lược đồ quan hệ R ở 3NF LOAINGHE → HESOTHUONG
nếu có PTH X -> A thỏa trên R thì: „ Pth bắt cầu: MACN -> LOAINGHE và
LOAINGHE -> HESOTHUONG
„ X là siêu khóa của R, hay „ Thuộc tính không khóa HESOTHUONG phụ thuộc
„ A là thuộc tính khóa của R bắc cầu vào thuộc tính khóa MACN, do đó quan
hệ CNHAN không phải là 3NF.

73 74

Bài tập 1 Bài tập 1 ( Xét DC cao nhất)


Thuộc tính không khóa {C,D}
„ Xét LĐQH r(R) với R=ABCDE và tập 2) Xác định dạng chuẩn 2
PTH F = {AB->CE, E->AB, C->D} Các thuộc tính không khóa phải phụ thuộc đầy đủ vào khóa. Đúng
nên ở DC2
„ Dạng chuẩn cao nhất của quan hệ này 3) Xác định dạng chuẩn 3
Các thuộc tính không khóa phải không được phụ thuộc bắc cầu vào
là gì ? khóa
Hoặc nếu có PTH X->A thì X phải là siêu khóa hoặc A là thuộc tính
1) Tìm khóa: AB, E khóa
Xét PTH C->D ta có C không phải siêu khóa, D cũng không phải
AB+=ABCDE và E+=ABCDE thuộc tính khóa
Ta có AB->C và C-> D, vậy D phụ thuộc bắc cầu vào khóa AB

75 76

Bài tập 2( Xét DC cao nhất) Bài tập 2( Xét DC cao nhất)
„ Cho LĐQH r(R) với R=ABCD „ Các thuộc tính khóa A,C
„ F= {A->C, D->B, C->ABD}
„ Xác định dạng chuẩn cao nhất „ Các thuộc tính không khóa B,D
„ Giải: „ PTH D->B có vế trái D không phải là
„ Xác định khóa: A, C siêu khóa.
„ A+=ACBD
„ C+ACBD
„ Ta có C->D và D->B phụ thuộc bắc
„ Do tất cả các PTH đều có vế trái chỉ chứa 1 cầu: không ở DC3
thuộc tính nên DC2 „ Dạng chuẩn cao nhất là DC2

77 78

13
6/14/2009

Thiết kế CSDL quan hệ Vấn đề thiết kế không tồi


T1
„ CSDLQH yêu cầu tìm tập các lược đồ first_name

Dewi
last_name

Srijaya
address

12a Jln Lempeng


department

Toys
position

clerk
salary

2000

quan hệ “tốt” Izabel


John
Leong
Smith
10 Outram Park
107 Clementi Rd
Sports
Toys
trainee
clerk
1200
2000
Redundant storage
„ Các PTH được dùng để lọc sơ đồ ER Axel

Winny
Bayer

Lee
55 Cuscaden Rd

10 West Coast Rd
Sports

Sports
trainee

manager
1200

2500

(phân rã quan hệ phổ quát) Sylvia

Eric
Tok

Wei
22 East Coast Lane

100 Jurong drive


Toys

Toys
manager

assistant manager
2600

2200
Update anomaly

„ Thiết kế tồi có thể đưa đến sai sót ? ? ? ? security guard 1500

key
Assume the position determines the salary: Potential deletion anomaly
position → salary
Insertion anomaly

79 80

T2
Ví dụ về chuẩn hóa Chuẩn hóa
first_name last_name address department position
Dewi
Izabel
Srijaya
Leong
12a Jln lempeng
10 Outram Park
Toys
Sports
clerk
trainee
„ Chuẩn hóa là tiến trình phân rã lược đồ
John Smith 107 Clementi Rd Toys clerk quan hệ R thành các into mảnh (vd
bảng nhỏ hơn) R1, R2,.., Rn sao cho:
Axel Bayer 55 Cuscaden Rd Sports trainee
Winny Lee 10 West Coast Rd Sports manager
Sylvia
Eric
Tok
Wei
22 East Coast Lane
100 Jurong drive
Toys
Toys
manager
assistant manager
„ Phân rã không mất tin (Lossless
decomposition): Các mảnh chứa cùng
T3 thông tin như bản gốc. Ngược lại sẽ bị mất
position salary ‡No Redundant storage tin.
clerk 2000
‡No Update anomaly
trainee 1200
‡No Deletion anomaly
manager 2500
assistant manager 2200 ‡No Insertion anomaly
security guard 1500

81 82

Chuẩn hóa Phân rã kết không mất tin


„ Bảo toàn phụ thuộc (Dependency „ Phân rã R không mất tin thành 2 quan hệ R1 và R2
nếu có thể khôi phục lại quan hệ R từ R1 và R2:
preservation): Cần bảo toàn các phụ thuộc
trong từng quan hệ Ri R= R1 R2
„ Dạng tốt (Good form): Các mảnh Ri không
nên bị dư (bảng bị dư nếu có PTH mà vế
trái LHS không phải là khóa). „ SELECT first_name, last_name, address,
department, T2.position, salary
FROM T2, T3
WHERE T2.position = T3.position

83 84

14
6/14/2009

Phân rã kết không mất tin Ví dụ về phân rã có mất tin


„ Phân rã R thành R1 và R2 là không mất tin
(lossless) nếu và chỉ nếu ít nhất một trong R1=∏A(R)
các PTH sau có mặt trong F+: A ∏A(R) ∏B(R)
R
„ R1 ∩ R2 → R1 a
A B A B
b
„ R1 ∩ R2 → R2
a 1 a 1
„ Nói cách khác, tập thuộc tính chung của a
b
2
1
R1=∏B(R) a
b
2
1
R1 và R2 phải là khóa dự tuyển cho R1 B b 2

hay R2. 1
2

85 86

Ví dụ về phân rã không bả
bảo toà
toàn phụ
phụ thuộ
thuộc
Phân rã bảo toàn phụ thuộc R = (A, B, C), F = {{A}→{B}, {B}→{C}, {A}→{C}}. Key: A
Có PTH {B}→ {C}, với vế tráikhông phải khóa ( có thể bị dư trong R.)
Giải: Tách thành 2 bảng R1(A,B), R2(A,C) (chuẩn hóa)

„ Phân rã lược đồ quan hệ R với tập PTH A B A C


F thành tập các bảng (mảnh) Ri với PTH A B C
1 2 1 3
1 2 3
Fi 2 2 2 3
2 2 3 3 2 3 3
„ Fi là tập các phụ thuộc trong F+ (bao 3 2 3 4 2 4 4
đóng của F) chỉ bao hàm các thuộc tính 4 2 4
có trong Ri.
Phân rã là không mất tin vì thuộc tính chung là A ( khóa của R1 và R2)
„ Phân rã bảo toàn phụ thuộc nếu và chỉ Phân rã là không bảo toàn phụ thuộc vì F1={{A}→{B}}, F2={{A}→{C}} và (F1∪F2)+≠F+

nếu (∪i Fi)+ = F+ PTH {B}→{C}. Đã bị mất

87 88

Ví dụ về phân rã bả
bảo toà
toàn phụ
phụ thuộ
thuộc Thuật toán kiểm tra phép phân
R = (A, B, C), F = {{A}→{B}, {B}→{C}, {A}→{C}}. Key: A
Tách R thành 2 bảng R1(A,B), R2(B,C)
rã không mất tin
A B C „ Vào: Lược đồ quan hệ R={A1, A2, . . . , An}, tập các
A B B C
pth F và phép tách
1 2 3 1 2 2 3 „ ρ( R1,R2, . . . , Rk)
2 2 3 2 2 2 4
3 2 „ Ra: Kết luận phép tách ρ không mất tin.
3 2 3 „ Các buớc của thuật toán:
4 2
4 2 4 „ Thiết lập một bảng với n cột( thuộc tính) và k dòng
(quan hệ), cột thứ j ứng với thuộc tính Aj, dòng thứ i
Phân rã là không mất tin vì thuộc tính chung là B ( khóa của R2 ) ứng với lược đồ Ri .
Phân rã bảo toàn phụ thuộc vì F1={{A}→{B}}, F2={{B}→{C}} và (F1∪F2)+=F+ „ Tại dòng i và cột j , ta điền ký hiệu aj nếu thuộc tinh
Aj ∈ Ri. Ngược lại ta điền ký hiệu bij.

89 90

15
6/14/2009

Ví dụ: dùng thuật toán kiểm tra


phép phân rã không mất tin Tạo bảng
„ Cho LĐQH r( R) với R={A,B,C,D} A B C D
„ Và tập PTH F
AB a1 a2 b13 b14
„ F={A->B, AC->D}
„ Phép phân rã ρ(AB,ACD) ACD a1 b22 a3 a4
„ Kiểm tra phép phân rã ρ không mất tin
PTH: A->B , AC->D

91 92

Làm bằng dùng PTH A->B Kiểm tra phép phân rã mất tin
A B C D „ Cho LĐQH r( R) với R={A,B,C,D,E}
„ Và tập PTH F
AB a1 a2 b13 b14
„ F={A->C, B->C,C->D,DE->C,CE->A}
„ Phép phân rã ρ(AD,AB,BE,CDE)
ACD a1 b22/a2 a3 a4
„ Kiểm tra phép phân rã ρ là mất tin

Dùng PTH A->B để làm bằng phần tử b22 thành a2


Vì bảng có dòng 2 chứa toàn ai nên phân rã trên là không mất tin
93 94

Thuật toán kiểm tra bảo toàn


Phân rã bảo toàn phụ thuộc phụ thuộc
„ Vào: Phân rã ρ=(R1,R2, . . ., Rk) và tập
„ Một phân rã ρ=(R1,R2, . . ., Rk) của lược đồ quan pth F
hệ R trên tập PTH F bảo toàn phụ thuộc nếu có thể
suy ra được F từ các hình chiếu của F trên Ri. „ Ra: Đúng nếu ρ bảo toàn phụ thuộc và sai
„ Hình chiếu của F trên một tập các thuộc tính Z, ký nếu ngược lại
hiệu là ΠZ(F) là tập các phụ thuộc X → Y thuộc F+
sao cho XY ⊂ Z ( chú ý X → Y có thể không thuộc F
„ Gọi G là hợp của tất cả ΠRi(F) với i=1,…,k
và chỉ thuộc F+). „ Dùng thuật toán EQUIVALENCE để xem
„ Ta nói phân rã ρ bảo toàn tập PTH F nếu hợp tất cả xét G có tương đương với F hay không. Nếu
các PTH trong ΠRi(F) với i=1,2,…,k khẳng định logic
tất cả PTH trong F.
có trả về đúng, ngược lại trả về sai.

95 96

16
6/14/2009

Thuật toán phân rã lược đồ thành DC3


không mất tin, bảo toàn phụ thuộc Ví dụ
„ Bước 1: Loại khỏi R tất cả các thuộc tính không có „ Cho LĐQH r (R) với R=XYZWQ và tập PTH F
mặt trong vế trái và vế phải của tất cả các PTH trong
F. „ F={X->Y, XZ->W, YW->Q}
„ Bước 2: Nếu có PTH X->Y mà XY=R thì kết quả „ Tìm một khóa dự tuyển: XZ
chính là R
„ Bước 3: Với từng PTH X->A của F, tạo lược đồ XA. „ XZ+=XZWYQ
„ Bước 4:Nếu có các PTH X->A1, X->A2,…,X->An thì „ Bước 1:Không có thuộc tính nào thỏa nên
tạo lược đồ XA1A2..An thay cho từng lược đồ XAi. không thực hiên bước 1.
Bước 5: Nếu tất cả các phần tử của khóa K không
Bước 2:Không có PTH nào thỏa nên không
„
xuất hiện ở vế trái trong bất kỳ quan hệ nào được „
tạo ở bước 4 thì tạo quan hệ mới có thuộc tính là thực hiện bước 2.
khóa K
„ Bước 3:Xét PTH X->Y, ta có quan hệ R(XY)
97 98

Ví dụ Bài tập 1
„ Cho LĐQH r( R) với R={A,B,C,D,E} và tập PTH
„ Bước 3:Xét PTH XZ->W, ta có quan hệ R(XZW) F={A→BC}. Một phân rã R1(A,B,C) and
„ Bước 3:Xét PTH YW->Q, ta có quan hệ R(YWQ) R2(A,D,E)
„ Bước 4: Không có quan hệ nào có chung vế trái của „ Phân rã này không mất tin?
các PTH nên không gộp
Đúng vì thuộc tính chung A là thuộc tính khóa
Bước 5: Các thuộc tính khóa XZ xuất hiện ở vế trái
của R1
„
của PTH XZ->W, do vậy KHÔNG tạo quan hệ mới
„ Kết quả: R1(XY), R2(XZW) và R3(YWQ) đạt DC3 „ Phân rã này có bảo toàn phụ thuộc?
không mất tin và bảo toàn phụ thuộc. Đúng vì PTH:A→BC được duy trì trong R1
„ Phân rã R1(A,B,C) và R2(C,D,E) không mất
tin?
Không vì C ( thuộc tính chung) không phải là
99
khóa của bất kỳ bảng nào. 100

Bài tập 2 Bài tập 3:


„ Cho LĐQH r(R) với R= {A, B, C, D, E} và tập „ Cho LĐQH r(R) với R={A, B, C, D} và
PTH F = {A->BC, CD->E, B->D, E->A}. Xét tập PTH F={AB->CD, B ->C}.
phân rã R1= (A, B, C) R2= (A, D, E)
„ Phân rã không mất tin? „ R ở DC2?
Đúng vì thuộc tính chung A là khóa của R1. „ Khóa: AB vì AB+ = ABCD=R
„ Phân rã bào toàn phụ thuộc? „ B →C vi phạm DC2 vì B là tập con của
khóa và C không phải là thuộc tính khóa.
Không: ta mất các PTH CD->E và B->D

101 102

17
6/14/2009

Bài tập 4 Bài tập 5


Cho LĐQH r(R) với R={A, B, C, D} and „ Cho LĐQH r(R) với R={A, B, C, D, E} và tập
F={AB->CD, C->D}. PTH
„ F={A->B, BC->E, ED->A}
„ R ở dạng chuẩn 2?
Tìm các khóa của R
Khóa: AB ta có AB+= ABCD
ACD , BCD , CDE
Ta có C->D, C không phải là tập con
của khóa vậy R ở dạng chuẩn 2 Phân rã R đạt 3NF. R đã ở DC3 vì tất cả
các thuộc tính đều là thuộc tính khóa.

103 104

Bài tập 6 Bài tập 6 (tt)


„ Cho quan hệ „ Quan hệ Sale có ở dạng chuẩn 3?
„ Sale (Customer, Store, Product, Price)
„ Và ràng buộc: Không vì cả 2 PTH đều vi phạm định nghĩa
„ Khách mua hàng chỉ mua hàng trong 1 cửa hàng duy DC3.
nhất. Trong một của hàng các sản phẩm có một đơn
giá duy nhất ứng với từng sản phẩm của cửa hàng. „ Phân rã Sale thành DC3
„ Mô tả trên ứng với các PTH sau: R1(Customer,Store), R2(Store,Product,Price)
{Customer} → {Store}
Phân rã bảo toàn phụ thuộc?
„
„
„ {Store, Product} → {Price}
„ Khóa dự tuyển: Đúng vì từng PTH đều nằm trong từng quan
„ {Customer, Product} hệ

105 106

Bài tập 7 Bài tập 8


Phân rã (Customer,Store), (Store,Product,Price) là mất tin vì thuộc tính
chung Store không phải là khóa của bất kỳ bảng con nào Cho LĐQH r(R) với R ={A, B, C, D, E, F, G},
KEY: Customer, Product F={AB ->CD, C->EF, G->A, G->F, CE->F}
Custome Store Produc Price Customer Store Store Product Price „ Phân rã thành các quan hệ ở DC3
rc1 s1 tp1 pr1 c1 s1 s1 p1 pr1
c1 s1 p2 pr2 c2 s1 s1 p2 pr2
„ Tính phủ tối tiểu
c2 s1 p1 pr1 FC={AB->CD, C->EF, G->AF}
Kết 2 bảng con (trên thuộc tính chung store)
„ Các khóa dự tuyển : GB
Customer Product
không khôi phục trở lại bảng gốc . Kết quả kết
tạo ra 4 mẩu tin trong khi bảng gốc chỉ có 3 mẩu c1 p1
„ Phân rã đạt DC3
tin. Vấn đề phát sinh vì không có bảng con nào c1 p2 R1={ABCD} , R2={CEF} , R3={GAF} , R4={GB}
chứa khóa dự tuyển Lời giải: thêm bảng con c2 p1
(Customer, Product) trong phân rã. ( thuật toán
phân rã đạt DC3) 107 108

18
6/14/2009

Bài tập 9
Cho LĐQH r(R) với R = {A,B,C,D}. Phân rã R thành
„ Cho LĐQH r(R) với R = {A,B,C,D}. „
các quan hệ ở DC3 theo từng PTH
sau{A,B,C}→{D} , {D}→{A}
„ Phân rã R thành các quan hệ ở DC3 Khóa dự tuyển: ABC, BCD
theo từng PTH sau: {B}→{C} , Phân rã R(A,B,C,D) đã ở DC3
{D}→{A} „ Quan hệ r ( R ) có dư thừa?

Có vì vế trái của PTH {D}→{A} có thuộc tính D


„ Khóa dự tuyển: BD không phải là khóa
Phân rã R(A,B,C,D) theo cách bảo toànn phụ thuộc và
„ Phân rã: (B,C), (D,A), (B,D) không dư thừa?
Không có {A,B,C}→{D} chứa 4 thuộc tính. Nếu phân
rã R sẽ mất PTH này.

109 110

Bài tập 11: Phân rã không mất tin (LJD)


Bài tập 10
Xác định dạng chuẩn cao nhất cỉa các LĐQH sau: Cho LĐQH r(R) với R = {A,B,C,D,E}.
ƒ R1(A, C, B, D, E), F1={A→B, C→D} F = {A→BC, CD →E, B → D, E→A }.
Khóa là ACE
DC1 (cả 2 PTH đều vi phạm DC2) Các phân rã sau là không mất tin ?
ƒ R2(A, B, C, F), F2={AB→C, C→F}, 1) R1 = {A,B,C}, R2 ={A,D,E}.
Khóa là
2NF (C→F vi phạm DC3) 2) R1 = {A,B,C}, R2 ={C,D,E}.
ƒ R3(A, B, C), F3={AB→C, C→B} „ 1) Vì R1 ∩ R2 = A và A là khóa của R1,
Khóa là AB, AC , Tất cả thuộc tính của quan hệ đều là thuộc tính
khóa, nên ở DC3. phân rã là không mất tin.
„ 2) Do R1 ∩ R2 = C và C không phải là

khóa của R1 R2,nên phân ra này không


111 phải là phân rạ không mất tin. 112

Bài tập 12 : Phân rã bảo toàn PTH Bài tập 13

R = {A,B,C,D,E}. Cho LĐQH r(R) với R =(A, B, C, D).


F = {A→BC, CD →E, B → D, E→A }. F = {C→D, C→A, B→C}.
R1 = {A,B,C}, R2 = {A,D,E}.
Phân rã trên có bảo toàn phụ thuộc? 1) Xác định các khóa dự tuyển.
2) Xác định dạng chuẩn cao nhất.
Không vì mất CD → E và B → D. 3) Phân rã R thành các quan hệ ở DC3.

113 114

19
6/14/2009

Bài tập 13 (1) Bài tập 13 (2)


R =(A, B, C, D). R =(A, B, C, D).
F = {C→D, C→A, B→C}. F = {C→D, C→A, B→C}.

1) Xác định các khóa dự tuyển. 2) Xác định dạng chuẩn cao nhất.
Khóa là B
B+ = B (B→B)
= BC (B→C) R không ở DC3 vì:
= BCD (C→D) PTH C→D vi phạm,
C→D không hiển nhiên ({D} ⊄ {C}).
= ABCD (C→A) C không phải là siêu khóa.
Khóa dự tuyển là B. D không phải là thành phần của khóa bất kỳ.
C→A gây ra vi phạm
Tương tự ở trên
B là khóa dự tuyển DUY NHẤT B→C không gây vi phạm
115 116

Bài tập 13 (3)

R =(A, B, C, D). Bài tập 14


F = {C→D, C→A, B→C}.
R = (A, B, C, D)
F = {AB→C, AB→D, C→A, D→B}
3) Phân rã R thành các quan hệ ở DC3.
Đúng.
Phủ chính tắ (canonical cover) là
Fc = {C→DA, B→C}. Xác định tất cả các khóa dự tuyển :
Đối với từng PTH trong Fc tạo bảng AB, BC, CD, AD
R1 = {C, D, A}, R2 = {B, C}. Kiểm tra tất cả PTH thỏa DC3
„ Bảng R2 chứa khóa dự tuyển cho R -kết thúc.

117 118

Bài tập 15 Tài liệu tham khảo


R = (A, B, C, D) „ David Maier, Theory of Relational Database,
Computer Science Press, 1983
F = {ABC→D, D→A} „ Đỗ Phúc, Nguyễn Đăng Tỵ: Cơ sở dữ liệu , NXB
1. Xác định tất cả khóa dự tuyển của R ĐHQG-HCM, 2004
Lê Tiến Vượng: Nhập môn cơ sở dữ liệu quan hệ,
ABC, BCD
„
NXb Thống kê, 2003
2. Xác định dạng chuẩn cao nhất „ Nguyễn Xuân Huy, Lê Hoài Bắc, Bài tập CSDL, NXB
Thống Kê, 2003
Dạng chuẩn 3 vì tất cả các thuộc tính „ Nguyễn Văn Tâm, Nguyễn Hữu Hạnh, Cơ sở dữ liệu
đều là thuộc tính khóa. quan hệ: Lý thuyết và thực hành. NXB Thống kê,
2002

119 120

20

You might also like