Tải bản đầy đủ (.pdf) (50 trang)

Hướng dẫn ôn tập CSDL 2009

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 50 trang )

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



×