Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
HƯ NG D N ÔN T P
THI H T MÔN - THI T T NGHI P
MÔN CƠ S
D
LI U QUAN H
(Lưu hành n i b )
H :
Cao Đ ng – Đ i h c
Biên so n:
ThS. Nguy n M nh Cư ng
Tài li u bao g m:
- Gi i thi u các d ng bài t p môn cơ s d li u quan h .
- Gi i thi u phương pháp gi i các d ng bài t p.
- Ph l c 1: Các l i thư ng g p khi gi i bài t p CSDL.
- Ph l c 2: M t s bài t p sinh viên t ôn t p.
- Bài t p th c hành SQL và thi t k CSDL.
- M t s bài t p t ng h p
Tài li u sinh viên nên tham kh o:
- Nh p môn CSDL quan h - Lê Ti n Vương
- Đ cương chi ti t môn Cơ s d li u quan h - Ngô Th Bích Th - Đ i
h c Cơng nghi p Hà N i - 2004
....
Hà N i 5-2009
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
M CL C
1. Th c hi n bi u th c đ i s quan h . ............................................................. 4
2. Bi u di n yêu c u b ng bi u th c đ i s quan h . ........................................ 9
3. Bi u di n yêu c u b ng SQL. ........................................................................14
4. Ch ng minh ph thu c hàm. .........................................................................20
5. Tìm bao đóng c a t p thu c tính. ..................................................................22
6. Ph t i thi u và tìm ph t i thi u....................................................................23
7. Tìm khố t i thi u c a m t quan h ...............................................................27
8. Ki m tra tính m t mát thơng tin c a phép tách lư c đ quan h . ..................28
9. Chu n hoá lư c đ quan h . .........................................................................31
Ph l c 1: Các l i thư ng g p khi gi i bài t p CSDL.........................................36
Ph l c 2: M t s bài t p sinh viên t ôn t p.....................................................37
Bài th c hành SQL ............................................................................................39
Hư ng d n th c hành trong SQL Server 2000..................................................44
Bài t p thi t k CSDL ........................................................................................47
M t s bài t p t ng h p.....................................................................................49
Tài liệu tham khảo
Trang 2
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
L I NĨI Đ U
Trong m i d ng bài t p là tóm t t ki n th c liên quan và
phương pháp gi i c a t ng lo i bài t p đó. Tuy nhiên, có nh ng
phương pháp ch áp d ng trên m t l p r ng các bài t p mà không
ph i áp d ng cho t t c các bài t p trong d ng bài t p đó. Do v y,
sinh viên c n n m v ng phương pháp và m r ng ra các trư ng h p
đ c bi t.
M i d ng bài t p l i có th có nhi u phương pháp gi i, trong
tài li u này ch trình bày m t ho c m t s phương pháp cho m t d ng
bài t p mà tác gi cho là phù h p. Thi t nghĩ cũng t t v i m t đ
cương ôn t p do th i gian ôn t p không nhi u.
Do th i gian h n h p, tài li u khơng tránh kh i nh ng sai sót.
R t c m ơn các đóng góp c a các đ c gi đ tài li u đư c ti p t c
hoàn thi n.
Sinh viên ch nên coi đây là tài li u tham kh o.
Tài liệu tham khảo
Trang 3
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 1: TH C HI N BI U TH C Đ I S
QUAN H
Đ bài: Cho m t s lư c đ quan h và m t s bi u th c đ i s quan h . Hãy th c
hi n các bi u th c đ i s quan h đó.
Ki n th c liên quan:
Trong đ i s quan h có 8 phép tốn chia làm hai nhóm:
- Các phép tốn t p h p: Phép h p (∪), phép giao (∩), phép tr (-), phép tích đ
các (x).
- Các phép toán quan h : Phép chi u (∏), phép ch n (δ), phép k t n i (
phép chia (÷).
, * ),
[1]. Phép h p:
- Ch th c hi n trên các quan h kh h p (có cùng t p thu c tính).
- Phép h p hai quan h kh h p R và S th c ch t là vi c g p các b n ghi trong hai
quan h thành 1 quan h nhưng các b n ghi trùng nhau thì ch gi l i m t b n ghi.
Ví d :
R
A
a1
a2
a1
a1
B
b1
b1
b2
b1
C
1
2
3
2
S
A
a1
a2
a1
a3
B
b1
b2
b1
b3
C
1
3
2
1
Tính Q = R ∪ S
Các b n ghi trùng nhau đư c bôi đen. Do đó, khi h p chúng l i ta ph i lo i đi các
b n ghi trùng.
Q
các b n ghi c a R
Các b n ghi c a S
sau khi đã lo i b
các b n ghi trùng
A
a1
a2
a1
a1
a2
a3
B
b1
b1
b2
b1
b2
b3
C
1
2
3
2
3
1
[2]. Phép giao:
- Ch th c hi n trên hai quan h kh h p.
- Phép giao gi a R và S th c ch t là vi c ch n ra trong hai quan h R và S nh ng
b n ghi trựng nhau.
Vớ d :
R
A
a1
a2
a1
a1
Tài liệu tham khảo
B
b1
b1
b2
b1
C
1
2
3
2
S
A
a1
a2
a1
a3
B
b1
b2
b1
b3
C
1
3
2
1
Trang 4
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Tính Q = R ∩ S
Q
A
a1
a1
B
b1
b1
C
1
2
[3]. Phép tr :
- Ch th c hi n trên các quan h kh h p.
- Phép tr R - S th c ch t là vi c ch n ra các b n ghi ch có
R mà khơng có
S.
Ví d :
V i hai quan h R và S trên, Q = R-S s có d ng:
Q
A
a2
a1
B
b1
b2
C
2
3
[4]. Phép tích đ các:Th c hi n trên 2 quan h b t kỳ.
- Phép tích đ các c a hai quan h R và S th c ch t là vi c l y m i b n ghi c a R
"g n" v i m i b n ghi c a S.
- T p các thu c tính c a b ng quan h k t qu là t t c các thu c tính c a quan h
R và các thu c tính c a quan h S, x p theo th t : các thu c tính c a R trư c, các thu c
tính c a S sau. S b n ghi c a quan h k t qu b ng tích s b n ghi c a hai quan h (R
và S).
Ví d :
R
3b n
ghi
A
a1
a2
a1
B
b1
b1
b2
C
1
2
3
A
a1
a1
a1
a2
a2
a2
a1
a1
a1
B
b1
b1
b1
b1
b1
b1
b2
b2
b2
S
3b n
ghi
A
a1
a2
a1
D
d1
d2
d3
Tính Q = R x S:
Q
9b n
ghi
C
1
1
1
2
2
2
3
3
3
A
a1
a2
a1
a1
a2
a1
a1
a2
a1
D
d1
d2
d3
d1
d2
d3
d1
d2
d3
[5]. Phép chi u:
- Là phép c t d c quan h đ l y ra d li u trên m t s thu c tính c a quan h . Các
thu c tính đó t m g i là các thu c tính “c n chi u”.
- Quan h R có t p thu c tính U, ta c n chi u ra các thu c tính X thì X ph i là t p
con c a U (t c không th chi u trên R các thu c tính mà R khơng có)
Tµi liƯu tham kh¶o
Trang 5
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
- B ng k t qu có th xu t hi n các b n ghi trùng nhau. Khi đó, ph i lo i b các
b n ghi trùng.
Ví d :
R
A
a1
a2
a1
B
b1
b2
b1
C
1
2
3
∏ AB(R) thu đư c:
Q
A
a1
a2
a1
B
b1
b2
b1
Q
A
a1
a2
→
B
b1
b2
[6]. Phép ch n:
- Ch n ra các b n ghi tho mãn đi u ki n ch n.
- N u khơng có b n ghi nào tho mãn đi u ki n ch n thì b ng k t qu thu đư c là
r ng ( ∅ ).
- Đi u ki n ch n là m t bi u th c Logic.
Ví d :
R
A
A1
A2
A1
B
b1
b2
b1
C
1
2
3
Q
A
B
C
δA=a2 v C =1(R) thu đư c:
a1
a2
b1
b2
1
2
[7]. Phép k t n i:
- Phép k t n i gi a hai quan h R và S th c ch t là vi c l y m t b n ghi c a R
"g n" v i m t b n ghi c a S sao cho b n ghi k t qu tho mãn đi u ki n k t n i.
- Đi u ki n k t n i có d ng: A θ B trong đó A, B là hai thu c tính c a R ho c S. θ
là m t phép so sánh.
- Phép k t n i như v y, nói chung g i là k t n i thư ng (
).
Ví d :
R
A
B
a1
a2
a1
a1
Q=R
b1
b1
b2
b1
C
1
2
3
2
S
B
b1
b2
b1
b1
C
1
2
3
2
D
d1
d3
d2
d1
S là vi c l y m t b n ghi trong R "g n" v i m t b n ghi trong S v i
R.C < S.C
đi u ki n b n ghi k t qu ph i đ m b o giá tr trên thu c tính C c a quan h R ph i nh
Tµi liƯu tham kh¶o
Trang 6
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
hơn giá tr thu c tính C c a S. Thu đư c:
Q
A
a1
a1
a1
a2
a1
B
b1
b1
b1
b1
b1
C
1
1
1
2
2
B
b2
b1
b1
b1
b1
C
2
3
2
3
3
D
d3
d2
d1
d2
d2
- K t n i t nhiên (*) là k t n i b ng (=) trên các thu c tính cùng tên. T c phép so
sánh θ là phép so sánh “=”, và 2 quan h ch k t n i t nhiên đư c n u nó có các thu c
tính chung.
- Có th b đi các thu c tính (c t) trùng nhau sau khi k t n i t nhiên.
Ví d :
V i hai quan h R và S
trên, thì R
S
=
R*S
R.BC = S.BC
R
A
A1
A2
A1
A1
B
b1
b1
b2
b1
C
1
2
3
2
R*S
S
A
a1
a2
a1
B
b1
b2
b1
b1
C
1
2
2
C
1
2
3
2
D
d1
d3
d2
d1
D
d1
d1
d1
Thu đư c:
B
b1
b1
b1
[8]. Phép chia:
- Quan h R có t p thu c tính U và quan h S có t p thu c tính V. Phép chia R ÷ S
ch có th th c hi n đư c n u: V là t p con th c s c a U.
- Quan h k t qu thu đư c có t p thu c tính là U - V.
- B n ghi t n m trong quan h k t qu n u và ch n u: v i m i b n ghi t' thu c S thì
t^t' là m t b n ghi thu c R. (t^t' là phép l y t x p c nh t')
Ví d :
R
A
a1
a1
a1
a2
a2
a2
a2
a3
a3
B
b1
b1
b2
b1
b1
b2
b4
b1
b1
C
1
2
3
1
2
3
1
1
2
S
B
b1
b1
b2
K t qu thu đư c
Q=R÷S
C
1
2
3
A
a1
a2
Trong đó, U = {A, B, C}; V= {B, C}. D th y V là t p con c a U v U-V = {A}.
Tài liệu tham khảo
Trang 7
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Quan h k t qu có hai b n ghi có giá tr a1 và a2 là do: n u l y a1 ho c a2 x p
trư c m i b n ghi trong S ta đ u thu đư c các b n ghi có trong R.
Ví d t ng h p:
Cho các quan h R và S sau:
R
A
A1
A2
A1
A1
S
B
b1
b2
b1
b1
B
b1
b1
b1
C
1
2
2
D
d1
d1
d1
A
a1
a2
a1
B
b1
b1
b1
C
1
2
2
D
d1
d1
d1
P
Hãy tính:
B
b1
b1
b2
b1
C
1
2
3
2
A
a1
a2
C
1
2
3
2
D
d1
d3
d2
d1
B
b1
b1
P = ∏AB(δA=a1V B=b1(R*S))
B1: Tính R1 = R*S
R1
A
a1
a2
a1
B2: Tính R2 = δA=a1V B=b1(R1)
R2
B3: Tính P = AB(R2)
Tài liệu tham khảo
Trang 8
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 2: BI U DI N YÊU C U B NG Đ I S
QUAN H
Bài toán: Cho m t ho c nhi u lư c đ quan h và m t s yêu c u d li u. Hãy
bi u di n các yêu c u d li u đó b ng bi u th c đ i s quan h sao cho k t qu c a bi u
th c đó tho mãn yêu c u đ t ra.
Phương pháp:
Phương pháp sau đây giúp gi i m t l p r ng các bài t p thu c d ng này. Trong các
bài t p còn l i (xem ph n sau), phương pháp này ch mang tính ch t h tr .
B1: Xác đ nh xem có bao nhiêu thơng tin (trư ng) liên quan t i câu h i. Xác đ nh
xem các thơng tin đó thu c ít nh t m y b ng.
N u các thông tin liên quan ch thu c ít nh t 1 b ng thì bi u th c không c n phép
k t n i. Ngư c l i thì c n.
B2: Xác đ nh xem các b n ghi l y ra có c n tho mãn đi u ki n gì khơng? n u
khơng, bi u th c s khơng có phép ch n. Ngư c l i thì có phép ch n. Khi đó c n xác
đ nh đi u ki n ch n.
B3: Xác đ nh xem có l y m i thông tin trong các b ng liên quan khơng. N u có thì
bi u th c khơng có phép chi u. Ngư c l i thì bi u th c có phép chi u. Khi đó c n xác
đ nh các thu c tính c n chi u.
Chú ý: Bi u th c đi u ki n ch n là m t bi u th c Logic bao g m:
- Các toán t : và (∧), ho c (∨), ph đ nh (¬) so sánh ( >, <, ≥, ≤, =, ≠).
- Các toán h ng: Các tên trư ng ho c các h ng giá tr . H ng giá tr có 3 lo i g m:
h ng s , h ng xâu, h ng ngày tháng. H ng xâu và h ng ngày tháng đ t gi a hai d u
nháy đơn ' '. H ng s thì khơng.
Ví d :
Các b ng d li u sau s dùng làm ví d trong su t ph n này và c d ng bài t p th
3 (bi u di n yêu c u b ng SQL).
B ng S ch a thông tin v t t c các nhà cung c p g m: Mã nhà cung c p, tên nhà
cung c p, tình tr ng cung ng và đ a ch nhà cung c p:
S(S#, SName, Status, City)
B ng P ch a thông tin v t t c các s n ph m g m: Mã s n ph m, tên s n ph m,
màu s c, tr ng lư ng:
P(P#, PName, Color, Weight).
B ng SP ch a thông tin v nhà cung c p nào đã cung c p s n ph m nào v i s
l ng bao nhiờu:
SP(S#, P#, QTY).
Tài liệu tham khảo
Trang 9
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Ví d 1:
Cho bi t tên hàng và màu s c c a các m t hàng có tr ng lư ng ∈[20, 30]?
B1: Các thông tin liên quan: tên hàng, màu s c, tr ng lư ng. Tương ng v i
PName, Color, Weight. Các thơng tin này thu c ít nh t 1 b ng, đó là b ng P. V y bi u
th c đư c xây d ng:
(P)
B2: Các b n ghi l y ra c n tho mãn đi u ki n: Weight ≥ 20 ∧ Weight
bi u th c đư c xây d ng:
≤
30. V y
δWeight ≥ 20 ∧ Weight ≤ 30(P)
B3: Ta ch l y 2 thông tin trong s 4 thông tin c a b ng P (PName, Color) do đó có
phép chi u. Bi u th c đư c xây d ng:
∏PName, Color(δ Weight ≥ 20 ∧ Weight ≤ 30(P))
--------Ví d 2: Cho bi t Tên hàng, s lư ng đã cung ng, mã nhà cung c p đã cung ng
m t hàng đó.
Theo cách trên ta xác đ nh đư c 3 thông tin liên quan: PName, QTY, S#. Tuy
nhiên S# s đư c l y trong b ng SP (Vì ch l y mã nhà cung ng đã cung ng).
V y 3 thông tin trên thu c ít nh t 2 b ng P và SP. Khơng có đi u ki n ch n:
∏PName, QTY(P*SP)
D th y phương pháp trên ch thích h p trong vi c xây d ng các bi u th c có 3
phép tốn chi u, ch n, k t n i. Các phép toán khác chúng ta c n chú ý cách gi i trong
các ví d sau đây.
V i các ví d sau đây, phương pháp 3 bư c trên khơng hồn tồn đúng mà ch
mang tính ch t tr giúp:
Cho bi t mã nhà cung ng đã cung ng c m t hàng P1 và P2.
Các thông tin liên quan là S# và P#. Hai thông tin này n m trong ít nh t 1 b ng SP.
Tuy nhiên bi u th c ĐSQH sau là m t hi u l m mà sinh viên thư ng g p:
∏S#(δP#='P1' ∧ P#='P2'(SP))
Bi u th c trên sai vì khơng có b t kỳ b n ghi nào tho mãn P# v a b ng P1 và P#
l i v a b ng P2.
Hãy xem hình sau:
∏S#(δP#='P2' (SP))
∏S#(δP#='P1' (SP))
Tµi liƯu tham kh¶o
Trang 10
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Vịng trịn th nh t tư ng trưng cho mã c a các nhà cung c p đã cung c p P1.
Vòng tròn th 2 là mã các nhà cung c p đã cung c p P2. V y giao c a 2 vòng tròn này
là mã các nhà cung đã cung c p c p c P1 và P2.
∏S#(δP#='P1' (SP)) ∩ ∏S#(δP#='P2' (SP))
------Tương t , ta có th gi i quy t đư c các bài có d ng như:
- Cho bi t mã các nhà cung c p ch cung c p P1 mà không cung c p P2 (phép tr ).
∏S#(δ P#='P1' (SP)) - ∏S#(δP#='P2' (SP))
- Cho bi t mã các nhà cung c p đã cung c p P1 ho c P2 (phép h p - có th thay
b ng tốn t ho c (v)).
∏S#(δP#='P1' (SP)) ∪ ∏S#(δP#='P2' (SP)) ho c ∏S#(δP#='P1' V P#=’P2’ (SP))
Cho bi t mã hàng đư c t t c các nhà cung ng cung c p?
Ta hi u r ng đó là nh ng P# mà sao cho n u ta ghép nó v i m i S# c a b ng S thì
ta ln thu đư c c p S#, P# có trong b ng SP. Do đó, đây là m t ví d v phép chia
trong ĐSQH:
∏S#, P#(SP) ÷ ∏S#(S)
Phương pháp 3 bư c trên là r t quan tr ng giúp hình thành bi u th c đ i s quan
h và cũng giúp kh i đ ng quá trình tư duy khi làm bài t p d ng này. Khi s d ng nó,
đi m quan tr ng nh t là vi c xác đ nh đúng bi u th c đi u ki n ch n.
Sau đây là m t s chú ý khi vi t bi u th c đi u ki n ch n:
[1]. Khi nói “A và B” ta có th hi u theo 3 cách:
- A và B.
Ví d ta nói: Cho bi t các tên hàng màu đ Và có tr ng lư ng nh hơn 20!
- A ho c B.
Ví d ta nói: Cho bi t thơng tin c a các m t hàng có tr ng lư ng là 20 Và 30! Ta
c n hi u r ng ph i đưa ra thông tin c a các m t hàng có tr ng lư ng 20 ho c 30.
- A giao B
Ví d ta nói: Đưa ra tên hàng đư c c nhà cung c p S01 Và S02 cung ng! Khi
đó ta c n l y giao c a 2 t p h p. T p th nh t là t t c các tên hàng do nhà cung c p
S01 cung ng. T p th 2 g m toàn b các tên hàng do nhà cung c p S02 cung ng.
[2]. Sai l m khi s d ng hàm trong bi u th c đi u ki n ch n
Tµi liƯu tham kh¶o
Trang 11
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Hãy nghiên c u k các toán t và toán h ng đư c phép s d ng trong bi u th c
đi u ki n ch n. Trong đó, ta khơng th y các toán t s h c như +, -, *, / ho c các toán
h ng là hàm. Tuy nhiên, đ i s quan h m r ng l i cho phép s d ng chúng!
Ví d v i b ng quan h : Thí Sinh(SBD, HoTen, NS, Que) – (S báo danh, H tên,
ngày sinh, quê). Hãy cho bi t h tên thí sinh sinh năm 1990?
Bi u th c đi u ki n ch n sau đây là không h p l :
∏HoTen(δYear(NS) = 1990(ThiSinh))
Nhưng m t cách suy nghĩ đơn gi n có th gi i quy t đư c v n đ này:
∏HoTen(δNS ≥ ‘1/1/1990’ ∧ NS ≤ ‘31/12/1990’ (ThiSinh))
[3]. Khi s d ng c toán t ∧ và toán t ∨, hãy lưu ý t i các d u m , đóng
ngo c: Thơng thư ng phép ∧ đư c ưu tiên hơn phép ∨; tuy nhiên, trong m t s trư ng
h p, n u b n mu n đi u ngư c l i (ưu tiên phép ∨ trư c) thì v n có th đư c b ng cách
s d ng các d u ngo c đơn. Khi đó, máy tính s ưu tiên th c hi n ph n bi u th c trong
d u ngo c đơn trư c (xin xem ví d trong ph n sau)
[4]. Các tên b ng, tên trư ng trong bi u th c đ i s quan h ph i vi t gi ng v i
tên b ng, tên trư ng trong các b ng quan h đ u bài cho. N u không chú ý đi m này,
m t s b n có th khơng hi u vì sao đáp án c a mình l i không đư c ch p nh n.
Đ rõ hơn các v n đ trên, chúng tôi đưa ra m t lo t ví d như sau:
Cho các quan h sau:
Thí Sinh(SBD, HoTen, NS, Que) – (S báo danh, H tên, ngày sinh, quê)
Phách(SBD, SPH) – (S báo danh, s phách)
K t qu (SPH, M1, M2, M3) – (S phách, đi m môn 1, đi m môn 2, đi m môn 3)
Hãy so sánh đáp án c a 3 ví d sau:
-
Cho bi t H tên thí sinh sinh tháng 3 năm 1990 và có quê là “Hà Nam”.
∏Hoten(δNS ≥ ‘1/3/1990’ ∧ NS ≤ ‘31/3/1990’ ∧ Que = ‘Ha Nam’(ThiSinh))
Trong ví d trên, ta s d ng các tốn t ≥ và ≤ đ bi u di n đi u ki n thí sinh có
ngày sinh trong tháng 3 năm 1990 mà không s d ng hàm month, year;
- Cho bi t H tên các thí sinh quê
Hà Nam và H i Dương.
∏Hoten(δ Que = ‘Ha Nam’ ∨
Que = “Hai Duong’ (ThiSinh))
Trong ví d trên, 2 v c a đi u ki n cùng áp d ng trên m t trư ng, vì v y cách
nói “và” có th hi u là phép ∨ ho c ∩, và trong trư ng h p này chúng ta c n s d ng
phép ∨.
-
Cho bi t H tên c a các thí sinh mà đi m 3 mơn có c đi m 0 và đi m 10.
Ta tìm các thí sinh có đi m 0 trư c:
∏HoTen(δM1=0 ∨ M2=0 ∨ M3=0(ThiSinh*Phach*Ketqua))
Tµi liƯu tham kh¶o
Trang 12
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
R i đ n các thí sinh có đi m 10:
∏HoTen(δM1=10 ∨ M2=10 ∨ M3=10(ThiSinh*Phach*Ketqua))
Và d dàng tìm đư c các thí sinh có c đi m 0 và đi m 10:
∏HoTen(δM1=0 ∨ M2=0 ∨ M3=0(ThiSinh*Phach*Ketqua)) ∩
∏HoTen(δM1=10 ∨ M2=10 ∨ M3=10(ThiSinh*Phach*Ketqua))
T 3 ví d trên, sinh viên t rút ra d u hi u đ s d ng và, ho c, giao sao cho linh
ho t. Hãy chú ý các t chúng tôi in đ m và g ch chân trên.
- Cho bi t h tên các thí sinh có ít nh t m t đi m 10 và có ít nh t 1 đi m 0?
∏HoTen(δ(M1=10 ∨ M2=10 ∨ M3=10) ∧ (M1=0 ∨ M2=0 ∨ M3=0) (ThiSinh*Phach*Ketqua))
Bi u th c s sai khi b n không s d ng d u ngo c đơn khi vi t bi u th c có c tốn
t ∧ và ∨ trong trư ng h p này.
V i các ví d trên, b n d dàng hồn thành đư c ví d t ng h p sau đây (hãy trao
đ i v i m i ngư i v đáp án c a mình):
Cho bi t h tên các thí sinh c a các t nh H i phịng và Qu ng Ninh mà các thí
sinh đó sinh n a đ u năm 1989 và khơng có đi m no li t (i m 0).
Tài liệu tham khảo
Trang 13
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 3: BI U DI N YÊU C U B NG SQL
Bài toán: Cho m t ho c nhi u lư c đ quan h và m t s yêu c u d li u. Hãy
bi u di n các yêu c u d li u đó b ng câu truy v n SQL sao cho k t qu c a câu SQL đó
tho mãn yêu c u đ t ra.
Phương pháp:
Tài li u này ch t p trung vào câu Select. Các d ng khác sinh viên t tham kh o
trong các tài li u khác.
Ta t m phân chia các câu truy v n Select thành 5 lo i:
[1]. Chi u, ch n trên m t b ng.
[2]. Chi u ch n trên nhi u b ng.
[3]. S d ng các hàm, các v t .
[4]. Select l ng nhau.
[5]. T o nhóm s d ng Group by.
Tuy nhiên, m t câu Select thông thư ng s là câu select t ng h p. Vi c tách
chúng thành 5 lo i ch nh m m c đích d ti p thu ki n th c cơ b n.
Sau đây là các lưu ý khi vi t câu Select c a t ng d ng:
[1]. S d ng phương pháp 3 bư c trong d ng bài t p 2 (bi u di n yêu c u b ng bi u
th c đ i s quan h ).
Bi u th c đi u ki n ch n trong SQL có đi m khác:
- Các toán t : và (And), ho c (Or), so sánh (>, <, >=, <=, =, <>), s h c (+, -, *, /, mod..)
- Các toán h ng: Các trư ng ho c các h ng giá tr . H ng xâu và h ng ngày tháng
đ t gi a hai d u nháy đơn ' '. H ng s thì khơng.
Cú pháp câu Select đơn gi n:
Select <Tên trư ng> From <Tên b ng> Where <Đi u ki n>
Cho bi t tên hàng màu đ , có tr ng lư ng nh hơn 15?
SELECT PName FROM P WHERE Color = 'Đ ' And Weight < 15
[2]. V n s d ng phương pháp 3 bư c trên nhưng có 3 chú ý:
- Các tên trư ng xu t hi n trong ít nh t 2 b ng liên quan thì đư c vi t dư i d ng
<Tên b ng> . <Tên trư ng>.
- Tên các b ng đ t ngay sau FROM ph i cách nhau b i d u ph y.
- Ln có đi u ki n k t n i đ t ngay sau WHERE. Đi u ki n k t n i có d ng
b ng 1. A> = <Tên b ng 2. A> v i A là thu c tính chung c a hai quan h .
Cho bi t tên hàng đã cung c p v i s lư ng 30 cái m i lư t.
SELECT P. PName FROM P, SP WHERE P.P# = SP.P# and SP. QTY =30.
Các câu sau đ u sai vì khơng chú ý t i 3 v n đ đã nêu (theo đúng th t ):
Tµi liƯu tham kh¶o
Trang 14
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
SELECT P. PName FROM P and SP WHERE P.P# = SP.P# and SP. QTY =30.
SELECT PName FROM P, SP WHERE P# = P# and QTY =30.
SELECT P. PName FROM P, SP WHERE SP. QTY =30.
[3] Có 6 hàm hay dùng:
SUM, MAX, MIN, AVG, COUNT(*), COUNT(<C t>).
- Các hàm đư c s d ng ngay sau SELECT
SELECT <Tên trư ng> / <Hàm> … FROM …
- Có 3 V t chính: IN, BETWEEN, LIKE. Trong đó, IN và BETWEEN không b t
bu c ph i dùng.
- Khi dùng LIKE c n chú ý:
+ LIKE ch dùng cho d li u ki u xâu.
+ Hai ký t đ i di n trong xâu tìm ki m sau LIKE: “%” đ i di n cho 1 xâu ký
t b t kỳ. “_” đ i di n cho 1 ký t b t kỳ.
Cho bi t tên các nhà cung c p
Hà Tây:
SELECT SName FROM S WHERE City Like '%Hà Tây%'
Cho bi t tên các nhà cung c p có City là Hà Tây:
SELECT SName FROM S WHERE City = 'Hà Tây'
Cho bi t t ng s nhà cung c p có trong CSDL?
SELECT Count (*) FROM S
Khi s d ng hàm c n lưu ý 2 nguyên t c sau:
- Hàm không đư c s d ng tr c ti p trong bi u th c đi u ki n ch n c a m nh đ where.
- Không đư c vi t hàm l ng vào hàm: ví d SELECT Max(Count(…)) …
[4]. Câu SELECT con c n ph i đư c đ t gi a hai ngo c đơn ().
Câu Select l ng nhau có 4 d ng chính như sau:
(1). L ng nhau do s d ng hàm trong bi u th c đi u ki n ch n:
Bi u th c đi u ki n ch n sau where không th s d ng hàm m t cách tr c ti p.
Nhưng nó có th s d ng các k t qu c a m t câu l nh Select nào đó. Do v y, ngư i ta
thư ng s d ng Select l ng nhau trong trư ng h p này.
Cho bi t Tên hàng có tr ng lư ng l n nh t?
Câu SELECT sau là sai trong khi đa s sinh viên m c ph i:
Select PName From P Where Weight = Max(Weight)
Câu SELECT sau cho bi t tr ng lư ng l n nh t là bao nhiêu:
SELECT Max(Weight) FROM P
Tµi liƯu tham kh¶o
Trang 15
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Tuy nhiên câu h i không yêu c u cho bi t tr ng lư ng l n nh t này mà c n cho
bi t tên c a m t hàng có tr ng lư ng l n nh t.
SELECT PName From P Where Weight = (SELECT Max(Weight) FROM P)
(2). Thay b ng vi c k t n i b ng ta có th s d ng SELECT l ng nhau:
Cho bi t Tên các m t hàng do S2 cung ng?
Cách 1: s d ng k t n i, câu SELECT có d ng [2]:
SELECT P.PName FROM P, SP WHERE P.P# = SP.P# And SP.S# = 'S2'
Cách 2: S d ng Select l ng nhau, câu Select l i
d ng [4] này:
Ta hi u câu h i này là: Cho bi t tên hàng mà mã c a nó n m trong nh ng mã hàng
do S2 cung ng.
SELECT PName FROM P WHERE P# IN (SELECT P# FROM SP WHERE S#='S2').
Cho bi t tên hàng mà S2 chưa cung ng l n nào?
SELECT PName FROM P WHERE P# NOT IN (SELECT P# FROM SP WHERE S#='S2')
(3). L ng nhau do th hi n phép giao và phép tr :
Vi c s d ng các m nh đ Intersect (phép giao) và Minus (phép tr ) là th c s không
c n thi t và không đư c cài đ t trong m t s môi trư ng SQL nhúng. Tuy v y, ta v n d dàng
th hi n đư c hai phép toán t p h p này trong SQL nh câu l nh Select l ng nhau.
Ví d : Cho bi t tên hàng đư c c nhà cung c p S01 và S02 cung ng !
Câu sau đây cho ta t p các mã hàng do nhà cung c p S01 cung ng:
SELECT P# From SP WHERE S#= ‘S01’
Và tương t , câu select sau cho ta t p các mã hàng đư c nhà cung c p S02 cung ng:
SELECT P# From SP WHERE S#= ‘S02’
Vì v y d dàng tìm đư c tên hàng đư c c hai nhà cung c p cung ng b ng phép giao:
SELECT Pname FROM P WHERE
P# IN (SELECT P# From SP WHERE S#= ‘S01’) AND
P# IN (SELECT P# From SP WHERE S#= ‘S02’)
Như v y, s d ng v t IN – IN ta có th bi u di n đư c phép giao. Khi s d ng IN,
trong trư ng h p này, c n nh : câu select ln có d ng: X IN (SELECT X …) mà không
đư c phép vi t X IN (SELECT Y ….) v i Y khác X.
Tương t ta có th bi u di n đư c phép tr m t cách d dàng:
Cho bi t tên hàng đư c nhà cung c p S01 cung ng mà không đư c nhà cung c p
S02 cung ng:
SELECT Pname FROM P WHERE
P# IN (SELECT P# From SP WHERE S#= ‘S01’) AND
P# NOT IN (SELECT P# From SP WHERE S#= S02)
Tài liệu tham khảo
Trang 16
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Các v t IN – NOT IN cho phép ta th hi n phép tr m t cách d dàng.
(4). L ng nhau do SELECT t m t query (t c select t 1 câu select)
Thông thư ng, sau FROM là tên các b ng quan h (tables). Tuy nhiên, đơi khi ta
có th thay tên b ng quan h b ng m t query t c là 1 câu truy v n Select. S dĩ như v y
là vì k t qu c a câu Select cũng cho ta m t b ng quan h (hay nói đúng hơn là 1 t p
h p các b n ghi có d ng 1 quan h ).
Ví d : Cho bi t T ng s lư ng hàng l n nh t mà m t nhà cung c p đã cung
ng!
Ta hi u r ng m i nhà cung c p có th cung ng nhi u m t hàng khác nhau. M i
m t hàng l i cung c p làm nhi u đ t v i s lư ng m i đ t khác nhau. Tuy nhiên, m i
nhà cung c p đ u xác đ nh m t t ng s lư ng hàng hóa đã cung c p c a mình. Mu n
xác đ nh t ng s lư ng hàng cung ng cho t ng nhà cung c p, ta ch vi c c ng d n t t
c các s lư ng c a t t c các m t hàng, các l n cung ng c a t ng nhà s n xu t. Do
v y, ta c n nhóm theo t ng nhà s n xu t (nhóm – Group by – xin xem m c sau).
Ví d ta xét b ng SP như sau:
S#
S01
S01
S01
S02
S02
S03
P#
P01
P02
P03
P01
P05
P02
QTY
30
50
20
10
60
40
T ng SL
100
70
40
Theo câu h i trên, ta c n đưa ra t ng l n nh t là 100.
Hãy xét câu Select sau:
SELECT S#, SUM(QTY) as Tong FROM SP GROUP BY S#
K t qu ta thu đư c m t quan h (t m g i là quan h Q1) có d ng:
S#
S01
S02
S03
Tong
100
70
40
Nhưng câu h i ch yêu c u đưa ra t ng s lư ng l n nh t, do v y ta c n vi t :
SELECT Max(Tong) FROM Q1
Tµi liƯu tham kh¶o
Trang 17
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Nhưng Q1 chính là k t qu c a câu Select trên, do đó ta vi t:
SELECT Max(Tong)
FROM (SELECT S#, SUM(QTY) as Tong FROM SP GROUP BY S#)
[5]. Cú pháp GROUP BY:
GROUP BY <Tên c t> [HAVING <Đi u ki n>]
Ch c năng: T t c các b n ghi có giá tr trùng nhau trên c t đã ch ra sau GROUP
BY s đư c nhóm vào m t nhóm.
N u có [HAVING <Đi u ki n>] thì ch nh ng nhóm tho mãn đi u ki n sau
HAVING m i đư c l y ra.
Đ c bi t: N u có GROUP BY thì các hàm s th c hi n trên t ng nhóm thay vì trên
tồn b ng.
Cho bi tmã hàng và t ng s lư ng c a t ng m t hàng đã cung ng?
Câu Select sau là sai do nó đưa ra t ng s lư ng c a m i m t hàng:
SELECTP#, SUM(QTY) FROM SP
Nhưng n u có GROUP BY theo Mã hàng (P#) thì t t c các b n ghi c a cùng m t
mã hàng s đư c nhóm thành 1 nhóm (nói khác đi, m i m t hàng thu c m t nhóm) và
hàm SUM() s tính SUM trên t ng nhóm và câu SQL sau là chính xác:
SELECT P#, SUM(QTY) FROM SP GROUP BY P#
Cho bi t Mã nhà cung c p đã cung c p t ng s lư ng hàng l n hơn 300?
Câu SELECT sau s đưa ra các t t c các mã nhà cung c p có trong SP (t c đã
cung c p hàng) nhưng m i nhà cung c p là m t nhóm:
SELECT S# FROM SP GROUP BY S#
Nhưng câu sau ch đưa ra mã nhà cung c p thu c nhóm có t ng s lư ng l n hơn
300:
SELECT S# FROM SP GROUP BY S# HAVING SUM(QTY) >300
Khi dùng GROUP BY, cũng có nh ng chú ý mà ta khơng th b qua:
(1). Select trư ng nào, Group by theo trư ng đó:
Sau SELECT, có th là các trư ng ho c các hàm. Ví d : SELECT S#, SUM(SL)…
thì S# là tên trư ng còn SUM(SL) là hàm. Nguyên t c trên ch cho ta th y: ta luôn ph i
Group by theo tên các trư ng (không ph i hàm) mà ta đã li t kê sau Select trên. Có
bao nhiêu trư ng trong câu Select thì ph i Group by theo b y nhiêu trư ng.
(2). M nh đ Having [Đi u ki n] ch có khi ta s d ng Group by. Và đi u đ c
bi t là bi u th c [Đi u ki n] sau Having l i có th s d ng hm.
Tài liệu tham khảo
Trang 18
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Sau khi đã xem xét 5 lo i câu Select, chúng ta c n áp d ng nó m t cách linh ho t
đ vi t các câu Select t ng h p. Cú pháp sau c n đư c xem xét k :
SELECT
<Tên trư ng> / <Hàm> / <Bi u th c> / <H ng> [AS <Bí danh>]
FROM
<Tên b ng> / <Câu SELECT> [ AS <Bí danh>]
[WHERE
<Bi u th c đi u ki n>]
[GROUP BY <Tên trư ng> [HAVING <Bi u th c đi u ki n>]]
[ORDER BY <Tên trư ng> [DESC] [, …] ]
Hãy ki m tra câu l nh Select sau b ng MS-Access:
Select (Max(SL) + Min(SL)) AS A, 1 AS B FROM SP
ta s bi t cách s d ng <Bi u th c> và <H ng> trong câu Select.
Tµi liƯu tham kh¶o
Trang 19
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 4: CH NG MINH PH
THU C HÀM
Bài toán: Cho quan h R(U, F) Ch ng minh r ng n u R tho F thì R cũng tho
mãn m t ph thu c hàm X → Y nào đó.
Yêu c u: N m đư c 3 tiên đ AmStrong và 3 lu t.
-
Tiên đ tăng trư ng: N u ta b sung vào 2 v c a m t ph thu c hàm m t t p
thu c tính b t kỳ thì ta s thu đư c m t ph thu c hàm m i. T c là n u A → B
thì AC → BC
-
Tiên đ ph n x : T p X s xác đ nh hàm m i t p con c a nó. T c là n u Y ⊆ X
thì X → Y.
-
Tiên đ b c c u: N u X → Y và Y → Z thì X → Z.
-
Lu t tách: N u A → BC thì ta có A → B và A → C.
-
Lu t h p: N u A → B và C → D thì AC → BD.
-
Lu t t a b c c u: N u A → B và WB → C thì WA → C.
Ví d :
Cho quan h R(U, F): U={A, B, C, D, E, G, H} và F={AB → C, B → E, CE → G,
CB → H}. Ch ng minh r ng n u R tho F thì R cũng tho AB → GH.
Ta ch ng minh:
AB → G (1)
AB → H (2)
Ta CM (1):
Ta CM (2):
AB → C
B→ E
AB → E
AB → CE
CE → G
AB → G
AB → C
AB → CB
CB → H
AB → H
(gt)
(gt)
(TT và tách)
(H p)
(gt)
(BC)
(gt)
(TT)
(gt)
(BC)
T (1) và (2) theo lu t h p ta có AB → GH
Chú ý: có th áp d ng phương pháp suy di n lùi cũng r t hi u qu cho các bài
ph c t p, tuy nhiên không b t bu c.
V i ví d trên, sơ đ suy di n lùi như sau:
(1). Ch ng minh AB G:
Tài liệu tham khảo
Trang 20
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
C
AB
CE
B
G
E
(2). Ch ng minh AB → H:
AB
C
BC
H
B
Tuy nhiên, m t phương pháp ti n l i hơn có th giúp chúng ta ch ng minh
các ph thu c hàm m t cách d dàng.
N u mu n ch ng minh X → Y, ta ch c n tính bao đóng c a X, t c tính X+ (bao
đóng c a t p thu c tính, xin xem d ng 5). N u X+ có ch a Y thì hi n nhiên X → Y và
vi c ch ng minh hồn t t.
V i ví d trên, đ ch ng minh AB → GH, ta ch vi c tính bao đóng c a AB:
{AB}+ = {ABCEGH}
Đi u này cho bi t AB → {ABCEGH} và hi n nhiờn AB GH
Tài liệu tham khảo
Trang 21
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 5: TÌM BAO ĐĨNG C A M T T P THU C TÍNH
Bài tốn: Cho quan h R(U, F). X ⊆ U. Tìm bao đóng c a X (T c tìm X+)
Gi i thu t:
B1: Đ t V0 = X
B2:
Tính V1 = V0 ∪ Z n u ∃ Y → Z và Y ∈ V0
….
Tính Vi = Vi -1 ∪ Z n u ∃ Y → Z và Y ∈ Vi -1
L p cho đ n khi Vi ≡ Vi-1
B3: K t lu n: X+ = Vi
Ví d :
Cho quan h R(U, F): U = {A, B, C, D, E, G} và
F = {AB → D, A → G, C → E, GE → B}.
Tìm bao đóng c a t p thu c tính {AC}.
Đ t
V0 = {AC}
V1 = {ACG}
vì A → G
và A ∈ V0
V2 = {ACGE}
vì C → E
và C ∈ V1
V3 = {ACGEB}
vì GE → B và GE ∈ V2
V4 = {ACGEBD}
vì AB → D và AB ∈ V3
V5 ≡ V 4
V y {AC}+ = {ABCDEG}
Bao đóng c a X t i thi u là b ng chính t p X và t i đa là b ng t p U.
Vi c tìm bao đóng c a t p thu c tính là khá đơn gi n nhưng l i r t quan tr ng do
nó cịn đư c áp d ng đ gi i quy t nhi u d ng bài t p khác n a như : ch ng minh ph
thu c hàm, tìm ph t i thi u, chu n hóa v.v... Do v y c n dành s quan tâm đúng m c
cho d ng bài t p này.
M t s tài li u ký hi u bao đóng c a t p thu c tính X là {X}*. Ký hi u này cũng
tương t {X}+.
Tµi liƯu tham kh¶o
Trang 22
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
D NG 6: PH
T I THI U C A M T T P PH
THU C HÀM
Bài toán: Cho quan h R(U, F). H i r ng t p F đã t i thi u chưa? Vì sao? N u
chưa hãy tìm m t Ph t i thi u c a F.
Ki n th c liên quan:
Ta chú ý t i m t s khái ni m sau:
[1]. Ph thu c hàm dư th a: Ph thu c hàm X → Y thu c F đư c g i là dư th a
trong F n u ta lo i b nó ra kh i F ta v n thu đư c nó t các ph thu c hàm còn l i trong F.
VD: F = {AB → C, B → C, C → D, B → D}
Có AB → C dư th a vì n u có B → C thì cũng có AB → C.
Có B → D dư th a vì n u có B → C và C → D thì cũng có B → D.
Đ phát hi n ph thu c hàm dư th a ta chú ý: N u trong t p F có 2 ph thu c hàm
cùng có v ph i gi ng nhau thì trong 2 ph thu c hàm đó có th t n t i 1 ph thu c hàm
dư th a. Ngư c l i, n u X → Y mà trong F khơng cịn ph thu c hàm nào cũng có v
ph i là Y (cũng suy ra Y) thì nó khơng th dư th a.
Cách xác đ nh ph thu c hàm dư th a : Phương pháp này đư c minh h a b ng
ví d sau :
Cho F = {AB → C, AB → D, B → C, D → EG, AB → G}. Hãy xác đ nh ph
thu c hàm dư th a trong F.
B1. Ta chia các ph thu c hàm thành các c t theo nguyên t c: Các ph thu c hàm
có v ph i gi ng nhau s đư c x p chung vào m t c t:
AB → C
AB → D
D→E
B→C
D→G
AB → G
B2. Lo i b các c t có 1 ph thu c hàm, ta còn:
C t1
C t2
AB → C
D→G
B→C
AB → G
B3. Xét t ng c t đ xác đ nh ph thu c hàm dư th a: gi s m t c t nào đó có các
ph thu c hàm d ng:
X→Z
Y→Z
Đ ch ng minh Y → Z là th a ta ch vi c ch ng minh Y → X (vì n u Y → X và
X → Z thì hi n nhiên ta có Y → Z, do v y cho Y → Z là th a). Do đó ta ch c n tính Y+
n u có ch a X t c l Y Z th a.
Tài liệu tham khảo
Trang 23
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Tuy nhiên, c n chú ý khi tính Y , ta khơng đư c s d ng ph thu c hàm Y → Z
(t c ph i lo i b nó ra kh i F r i m i tính Y+). Lý do th t đơn gi n vì khơng th s d ng
m t v t dư th a đ ch ng minh chính v t đó là dư th a.
+
Xét c t 1: D dàng AB → B và ta k t lu n AB → C là th a.
Xét c t 2: D th y AB → D, do v y AB → G là th a.
Phương pháp trên t ra khá ph c t p, tuy nhiên, nó giúp hình thành k năng nh n
bi t ph thu c hàm dư th a, và khi có k năng đó, ta có kh năng nh n ra ngay ph
thu c hàm dư th a mà không c n dùng t i phư ng pháp. C n chú ý là phương pháp
trên không c n trình bày vào bài làm.
[2]. Thu c tính v trái dư th a: Ph thu c hàm AB → C có thu c tính v trái A
dư th a n u ta ch ng minh đư c B → C.
Ví d : F={A→B, AB→C, B→ E, AE → G}
Xét AB → C có B dư th a. Th t v y, ta có th ch ng minh A → C
(A → B; A → AB; AB → C; AB → C)
Xét AE → G có E dư th a. Th t v y, ta có th ch ng minh A → G
(A→B; B → E; A → E; A → AE; AE → G; A → G)
N u ph thu c hàm nào có v trái có ch 1 thu c tính thì nó khơng có thu c tính v
trái dư th a. Ngư c l i n u ph thu c hàm nào có v trái t hai thu c tính tr lên thì có
th có thu c tính v trái dư th a.
Cách xác đ nh thu c tính v trái dư th a: Phương pháp này cũng đư c minh h a
b ng ví d sau :
Cho F = {A → C, AC → D, B → C, C → G, BG → E}. Hãy xác đ nh thu c tính
v trái dư th a trong F.
B1 : Chia các ph thu c hàm làm 2 c t theo nguyên t c : các ph thu c hàm có v
trái là 1 thu c tính đư c x p vào m t c t, c t còn l i là các ph thu c hàm có v trái
nhi u thu c tính :
C t1
C t2
A→C
AC → D
B → C,
BG → E
C→G
B2. Ch xét các ph thu c hàm có v trái nhi u thu c tính (c t 2). Gi s ta xét ph
thu c hàm có d ng XY → Z. Ta c n ki m tra l n lư t xem X hay Y có dư th a hay
khơng. Gi s ta ki m tra tính dư th a c a Y, ta tính X+. N u X+ ch a Y thì Y th a.
Xét AC → D, d th y A+ ch a C, do ú C th a.
Tài liệu tham khảo
Trang 24
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp
CSDL quan hƯ
Xét BG → E, d th y B ch a G, do đó G th a.
+
Tuy nhiên phương pháp trên ch giúp ta phát hi n ra thu c tính v trái dư
th a và thư ng khơng đư c trình bày vào bài làm. Khi trình bày, xét XY → Z, n u
mu n ch ng minh Y là th a, ta c n ch ng minh X → Z. Nhưng do ta đã bi t ch c ch n
Y th a b ng cách s d ng phương pháp trên nên vi c ch ng minh X → Z là r t đơn gi n
(ch vi c tính X+).
Khi trình bày, c n vi t nh ng gì? Xin xem ví d trong ph n sau.
[3]. T p ph thu c hàm t i thi u: T p F đư c g i là t i thi u n u nó tho mãn
đ ng th i 3 đi u ki n sau:
-
Không t n t i ph thu c hàm trong F mà v ph i có nhi u thu c tính.
-
Khơng t n t i ph thu c hàm dư th a trong F.
-
Không t n t i ph thu c hàm trong F có thu c tính v trái dư th a.
M t v n đ đ t ra là n u F chưa t i thi u thì hãy bi n đ i F đ thu đư c m t t p
ph thu c hàm t i thi u t F.
Gi i thu t tìm t p ph thu c hàm t i thi u t F g m 3 bư c:
B1: N u trong F có t n t i m t ph thu c hàm mà v ph i nhi u thu c tính thì ta
tách ph thu c hàm đó thành nhi u ph thu c hàm sao cho m i ph thu c hàm đ u có
v ph i 1 thu c tính. K t qu ta thu đư c t p F1.
B2: Lo i b các ph thu c hàm dư th a trong F1 ta thu đư c F2.
B3: Lo i b các thu c tính v trái dư th a trong F2 ta thu đư c F3.
F3 là t p ph thu c hàm t i thi u thu đư c t F. F3 g i là m t ph t i thi u c a F.
Ví d : Cho t p ph thu c hàm sau:
F={A→C, AB→C, B→ EG, BE → D, C → H, A → H}
H i F đã t i thi u chưa? vì sao? n u chưa hãy tìm m t ph t i thi u c a F.
Tr l i:
F chưa t i thi u vì cịn t n t i B → EG có v ph i 2 thu c tính.
Tìm Ph t i thi u c a F:
B1: Tách các ph thu c hàm có v ph i nhi u thu c tính thành các ph thu c
hàm có v ph i 1 thu c tính ta thu đư c:
F1 ={A→C, AB→C, B→ E, B → G, BE → D, C → H, A → H}
B2: Lo i b ph thu c hàm dư th a trong F2:
AB → C là th a vì n u có A → C thì cũng có AB → C.
A → H là th a vì n u có A → C và C → H thì cũng có A → H.
V y ta thu đư c:
F2 ={A→C, B→ E, B → G, BE → D, C → H}
Tµi liƯu tham kh¶o
Trang 25