Vous êtes sur la page 1sur 117

Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 1

Ch−¬ng 1 : §¹i c−¬ng vÒ c¸c hÖ c¬ së d÷ liÖu

1.1 Kh¸i niÖm vÒ c¬ së d÷ liÖu (Database)


1.1.1Kh¸i niÖm vÒ c¬ së d÷ liÖu
C¬ së d÷ liÖu lµ mét tËp hîp cã cÊu tróc cña c¸c d÷ liÖu ®−îc l−u tr÷ trªn
c¸c thiÕt bÞ ghi nhí vµ cã thÓ truy xuÊt ®−äc bëi c¸c ch−¬ng tr×nh m¸y tÝnh, ®−îc
gäi lµ ch−¬ng tr×nh qu¶n trÞ c¬ së d÷ liÖu, ®Ó tho¶ m·n ®ång thêi cho nhiÒu
ng−êi sö dông.

HÖ c¬ së d÷
liÖu

H×nh 1.1HÖ c¬ së d÷ liÖu


1.1.2 Môc ®Ých cña c¸c hÖ c¬ së d÷ liÖu
Gi¶ sö ta xem xÐt mét phÇn viÖc l−u tr÷ th«ng tin ë ng©n hµng tiÕt kiÖm vÒ
c¸c kh¸ch hµng vµ c¸c tµi kho¶n mµ ®−îc l−u trong c¸c files hÖ thèng th−êng
trùc. H¬n n÷a, hÖ thèng nµy chøa mét sè c¸c ch−¬ng tr×nh øng dông cho phÐp
ng−êi sö dông thao t¸c c¸c files nµy, bao gåm c¸c ch−¬ng tr×nh:
• Ch−¬ng tr×nh ghi nî hoÆc göi tiÒn vµo mét tµi kho¶n
• Ch−¬ng tr×nh thªm mét tµi kho¶n míi
• Ch−¬ng tr×nh quyÕt to¸n
• Ch−¬ng tr×nh ph¸t sinh b¶ng thèng kª hµng th¸ng
C¸c ch−¬ng tr×nh nµy ®−îc viÕt bëi c¸c lËp tr×nh viªn hÖ thèng ®Ó ®¸p øng
c¸c nhu cÇu cña tæ chøc ng©n hµng.C¸c ch−¬ng tr×nh øng dông míi ®−îc thªm
vµo hÖ thèng khi cã nhu cÇu ph¸t sinh.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 2

Gi¶ sö c¸c ®iÒu lÖ míi cña chÝnh phñ cho phÐp ng©n hµng tiÕt kiÖm cung
cÊp c¸c th«ng tin kiÓm tra c¸c tµi kho¶n. Nh− thÕ mét sè c¸c files th−êng trùc
míi sÏ ®−îc t¹o ra ®Ó chøa c¸c th«ng tin vÒ tÊt c¶ c¸c kiÓm tra tµi kho¶n hiÖn cã
trong ng©n hµng vµ c¸c ch−¬ng tr×nh øng dông míi cÇn ®−îc viÕt ra. V× thÕ theo
thêi gian nhiÒu files nhiÒu ch−¬ng tr×nh øng dông ®−îc thªm vµo hÖ thèng.
HÖ thèng xö lý file (file-processing system) m« t¶ ë trªn ®−îc hç trî bëi
mét hÖ ®iÒu hµnh. NhiÒu mÉu tin th−êng trùc ®−îc l−u tr÷ trong nhiÒu files vµ
mét sè c¸c ch−¬ng tr×nh øng dông kh¸c nhau còng ®−îc viÕt ra ®Ó trÝch hoÆc
thªm c¸c mÉu tin vµo c¸c files thÝch hîp. L−îc ®å nµy cã mét sè bÊt lîi chÝnh:

• Sù d− thõa d÷ liÖu vµ sù m©u thuÉn d÷ liÖu (Data redundancy and


inconsistency).
Khi c¸c files vµ c¸c ch−¬ng tr×nh øng dông ®−îc t¹o ra bëi c¸c lËp tr×nh
viªn kh¸c nhau qua mét thêi gian dµi th× c¸c files nµy cã c¸c ®Þnh d¹ng kh¸c
nhau vµ c¸c ch−¬ng tr×nh ®−îc viÕt b»ng nhiÒu ng«n ng÷ lËp tr×nh. H¬n n÷a,
cïng mét mÉu th«ng tin cã thÓ ®−îc nh©n b¶n ë nhiÒu n¬i (files). VÝ dô ®Þa chØ
vµ sè phone cña mét kh¸ch hµng cã thÓ xuÊt hiÖn trong file chøa c¸c mÉu tin
tµi kho¶n tiÕt kiÖm vµ trong file chøa c¸c mÉu tin kiÓm tra tµi kho¶n. Sù d−
thõa nµy dÉn ®Õn kho l−u tr÷ vµ chi phÝ truy xuÊt ph¶i lín h¬n. H¬n n÷a, nã cã
thÓ dÉn ®Õn sù m©u thuÉn d÷ liÖu, do ®ã nhiÒu b¶n copies cña cïng mét d÷ liÖu
sÏ kh«ng phï hîp l©u dµi. VÝ dô mét sù thay ®æi ®Þa chØ kh¸ch hµng cã thÓ chØ
®−îc ph¶n ¸nh trong c¸c mÉu tin tµi kho¶n tiÕt kiÖm mµ kh«ng ë n¬i kh¸c
trong hÖ thèng. KÕt qu¶ dÉn ®Õn sù m©u thuÉn d÷ liÖu.

• Sù khã kh¨n trong viÖc truy xuÊt d÷ liÖu.


Gi¶ sö mét nh©n viªn cña ng©n hµng cÇn t×m kiÕm tªn cña c¸c kh¸ch
hµng sèng t¹i thµnh phè cã m· 78733. Nh©n viªn nµy yªu cÇu phßng xö lý d÷
liÖu ®−a ra mét danh s¸ch nh− thÕ. Bëi yªu cÇu nµy kh«ng ®−îc dù ®Þnh tr−íc
khi hÖ thèng ®−îc thiÕt kÕ, nªn kh«ng cã mét ch−¬ng tr×nh øng dông nµo ®¸p
øng yªu cÇu ®ã. Tuy nhiªn cã mét ch−¬ng tr×nh ph¸t sinh danh s¸ch cña tÊt c¶
c¸c kh¸ch hµng. Ng−êi nh©n viªn lóc nµy cã hai chän lùa: mét lµ lÊy danh
s¸ch cña tÊt c¶ c¸c kh¸ch hµng råi trÝch c¸c th«ng tin cÇn thiÕt b»ng tay, hai lµ
yªu cÇu phßng xö lý d÷ liÖu viÕt mét ch−¬ng tr×nh øng dông cÇn thiÕt. C¶ hai
lùa chän ®Òu kh«ng tho¶ m·n. Gi¶ sö r»ng mét ch−¬ng tr×nh nh− thÕ ®−îc viÕt
vµ, vµi ngµy sau ®ã , chÝnh nh©n viªn ®ã cÇn läc l¹i danh s¸ch sao cho chØ chøa
nh÷ng kh¸ch hµng nµo cã tµi kho¶n lín h¬n hoÆc b»ng $10000. Mét ch−¬ng
tr×nh ph¸t sinh mét danh s¸ch nh− thÕ kh«ng cã. Mét lÇn n÷a, nh©n viªn nµy
cã hai chän lùa nh− tr−íc mµ kh«ng cã c¸i nµo tho¶ m·n.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 3

ë ®©y c¸c m«i tr−êng xö lý file quy −íc kh«ng cho phÐp d÷ liÖu cÇn thiÕt
®−îc t×m kiÕm mét c¸ch hîp lý vµ hiÖu qu¶. C¸c hÖ thèng t×m kiÕm th«ng tin
tèt h¬n ph¶i ®−îc ph¸t triÓn cho viÖc sö dông chung.

• Sù t¸ch biÖt d÷ liÖu (data isolation).


Bëi d÷ liÖu ®−îc r¶i ë nhiÒu files, c¸c files cã thÓ ®−îc ®Þnh d¹ng kh¸c
nhau, nªn g©y khã kh¨n cho viÖc viÕt c¸c ch−¬ng tr×nh øng dông míi ®Ó t×m
kiÕm c¸c th«ng tin cÇn thiÕt.

• Sù bÊt th−êng trong truy xuÊt ®ång thêi (Concurrent access


anomalies)
§Ó c¶i tiÕn sù thùc thi cña toµn bé hÖ thèng vµ ®¹t ®−îc thêi gian ®¸p øng
nhanh, nhiÒu hÖ thèng cho phÐp nhiÒu ng−êi sö dông cËp nhËt d÷ liÖu ®ång
thêi. Trong m«i tr−êng nh− thÕ, sù t−¬ng t¸c cña c¸c cËp nhËt ®ång thêi cã thÓ
®−a ®Õn hËu qu¶ lµ sù m©u thuÉn d÷ liÖu.
Gi¶ sö mét tµi kho¶n A cã $500. NÕu cã hai kh¸ch hµng rót tiÒn ($50 vµ
$100 t−¬ng øng) tõ tµi khoµn A ë cïng thêi ®iÓm, kÕt qu¶ cña viÖc gi¶i quyÕt
®ång thêi cã thÓ g©y ra mét sù m©u thuÉn ë tµi kho¶n nµy. Cô thÓ, tµi kho¶n
nµy cã thÓ chøa c¶ $450 hoÆc $400 thay v× $350. §Ó ®Ò phßng kh¶ n¨ng nµy,
viÖc gi¸m s¸t hÖ thèng ph¶i ®−îc duy tr×. Bëi d÷ liÖu cã thÓ ®−îc truy xuÊt bëi
c¸c ch−¬ng tr×nh øng dông kh¸c nhau mµ tr−íc ®©y kh«ng cã quan hÖ víi
nhau, nªn viÖc gi¸m s¸t cµng khã kh¨n h¬n.

• C¸c vÊn ®Õ an toµn (security problems).


Kh«ng thÓ ®Ó mäi ng−êi sö dông ®Òu cã kh¶ n¨ng truy xuÊt tÊt c¶ d÷ liÖu.
Nh− trong hÖ thèng ng©n hµng, bé phËn lµm l−¬ng chØ cÇn thÊy mét phÇn c¬ së
d÷ liÖu lµ c¸c th«ng tin vÒ c¸c nh©n viªn cña ng©n hµng. Hä kh«ng cÇn truy
xuÊt th«ng tin tµi kho¶n cña kh¸ch hµng. Bëi c¸c ch−¬ng tr×nh øng dông ®−îc
thªm vµo hÖ thèng theo mét c¸ch kh«ng dù tÝnh tr−íc nªn nã g©y khã kh¨n
cho viÖc tu©n thñ c¸c rµng buéc an toµn nµy.

• C¸c vÊn ®Ò toµn vÑn (Integrity problems).


C¸c gi¸ trÞ d÷ liÖu l−u tr÷ trong c¬ së d÷ liÖu ph¶i tho¶ m·n mét sè kiÓu
rµng buéc toµn vÑn. VÝ dô ng©n kho¶n kh«ng bao giê xuèng thÊp h¬n mét sè
(nh− $25). C¸c rµng buéc nµy ®−îc ®−a vµo hÖ thèng b»ng c¸ch thªm nh÷ng
m· lÖnh thÝch hîp, nã g©y khã kh¨n khi thay ®æi ch−¬ng tr×nh. VÊn ®Ò sÏ phøc
t¹p khi c¸c rµng buéc bao gåm mét sè d÷ liÖu tõ nhiÒu files kh¸c nhau.Nh÷ng
khã kh¨n nµy, mét sè kh¸c n÷a, ®· thóc ®Èy sù ph¸t triÓn c¸c hÖ qu¶n trÞ c¬ së

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 4

d÷ liÖu. Sau nµy, chóng ta sÏ thÊy c¸c quan niÖm vµ c¸c thuËt to¸n mµ ®· ®−îc
ph¸t triÓn cho c¸c hÖ c¬ së d÷ liÖu ®Ó gi¶i quyÕt c¸c vÊn ®Ò ®· bµn ë trªn.

1.2 KiÕn tróc cña mét hÖ thèng c¬ së d÷ liÖu


HÖ qu¶n trÞ c¬ së d÷ liÖu lµ tËp hîp c¸c files cã mèi quan hÖ vµ mét tËp
ch−¬ng tr×nh cho phÐp nh÷ng ng−êi sö dông truy xuÊt vµ thay ®æi c¸c files nµy.
Môc ®Ých chÝnh cña hÖ c¬ së d÷ liÖu lµ cung cÊp cho nh÷ng ng−êi sö dông mét
c¸i nh×n trõu t−îng (abstract view) vÒ d÷ liÖu. HÖ thèng sÏ dÊu mét sè chÝ tiÕt
phøc t¹p nh− lµm thÕ nµo d÷ liÖu ®−îc l−u tr÷ vµ duy tr×. Tuy nhiªn ®Ó cho hÖ
thèng cã thÓ

Khung Nh×n 2 Khung Nh×n 3

Khung Nh×n 1

Møc quan niÖm

Møc vËt lý

H×nh 1.2 KiÕn tróc hÖ c¬ së d÷ liÖu


dïng ®−îc, d÷ liÖu ph¶i ®−¬c t×m kiÕm mét c¸ch cã hiÖu qu¶. ViÖc nµy ®· dÉn
®Õn viÖc thiÕt kÕ kiÕn tróc c¬ së d÷ liÖu phøc t¹p cho sù thÓ hiÖn d÷ liÖu trong c¬
së d÷ liÖu. Bëi nhiÒu ng−êi sö dông hÖ thèng c¬ së d÷ liÖu kh«ng ph¶i lµ chuyªn
gia m¸y tÝnh nªn sù phøc t¹p ®−îc dÊu ®i d−íi mét sè møc.

• Møc vËt lý (Physical level)


§©y lµ møc thÊp nhÊt m« t¶ d÷ liÖu ®−îc l−u tr÷ thùc sù nh− thÕ nµo. T¹i
møc vËt lý, c¸c cÊu tróc vËt lý phøc t¹p ®−îc m« t¶ chi tiÕt.

• Møc quan niÖm (Conceptual level)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 5

Møc quan niÖm lµ møc cao tiÕp theo, nã m« t¶ mét m« h×nh d÷ liÖu ph¶n
¸nh thÕ giíi thùc mµ ta cÇn l−u tr÷ trong c¬ së d÷ liÖu. ë ®©y toµn bé c¬ së d÷
liÖu ®−îc m« t¶ nh− lµ mét sè l−îc ®å quan hÖ ®¬n gi¶n. MÆc dï viÖc hiÖn thùc
c¸c l−îc ®å quan hÖ nµy ë møc quan niÖm cã thÓ bao gåm nhiÒu cÊu tróc phøc
t¹p ë møc vËt lý, ng−êi sö dông ë møc quan niÖm kh«ng cÇn quan t©m ®Õn
chóng. Møc quan niÖm ®−îc dïng cho ng−êi qu¶n trÞ c¬ së d÷ liÖu vµ c¸c lËp
tr×nh viªn, hä ph¶i quyÕt ®Þnh nh÷ng th«ng tin nµo ®−îc gi÷ l¹i trong c¬ së d÷
liÖu vµ lËp tr×nh nh− thÕ nµo.

• Møc khung nh×n (View level)


§©y lµ møc cao nhÊt m« t¶ chØ mét phÇn c¬ së d÷ liÖu. Thay v× sö dông
l−îc ®å ®¬n gi¶n h¬n ë møc quan niÖm, mét sè l−îc ®å phøc t¹p sÏ ®−îc gi÷
l¹i do kÝch th−íc d÷ liÖu lín cña c¬ së d÷ liÖu. NhiÒu ng−êi sö dông hÖ thèng
c¬ së d÷ liÖu kh«ng quan t©m ®Õn tÊt c¶ th«ng tin nµy mµ chØ mét phÇn cña c¬
së d÷ liÖu. Do ®ã ®Ó ®¬n gi¶n hãa sù t−¬ng t¸c víi hÖ thèng, møc khung nh×n
®−îc ®Þnh nghÜa. HÖ thèng cã thÓ cung cÊp nhiÒu khung nh×n trªn cïng mét c¬
së d÷ liÖu cho c¸c ®èi t−îng sö dông kh¸c nhau.
Mèi quan hÖ gi÷a ba møc ®−îc minh häa qua h×nh1.2
Sù t−¬ng tù víi kh¸i niÖm kiÓu d÷ liÖu trong c¸c ng«n ng÷ lËp tr×nh cã thÓ
lµm s¸ng tá sù ph©n biÖt gi÷a c¸c møc. §a sè c¸c ng«n ng÷ lËp tr×nh cÊp cao ®Òu
hç trî kh¸i niÖm kiÓu mÉu tin. VÝ dô ng«n ng÷ tùa Pascal cã thÓ khai b¸o mét
mÉu tin nh− sau:
type customer = record
name: string;
street: string;
city: string;
end;
§iÒu nµy ®Þnh nghÜa mét mÉu tin míi ®−îc gäi lµ customer víi ba tr−êng.
Mçi mét tr−êng cã tªn vµ kiÓu d÷ liÖu kÌm theo. Th«ng tin ng©n hµng cã thÓ cã
vµi kiÓu mÉu tin nh− thÕ bao gåm:
• account víi tr−êng number vµ balance
• employee víi tr−êng name vµ salary
T¹i møc vËt lý, mÉu tin customer, account hoÆc employee cã thÓ ®−îc m«
t¶ nh− mét khèi ®Þnh vÞ l−u tr÷ liªn tiÕp nhau (nh− words, bytes).

ë møc quan niÖm, mçi mÉu tin ®−îc m« t¶ nh− mét ®Þnh nghÜa kiÓu, ®−îc
minh häa ë trªn, vµ c¸c mèi quan hÖ gi÷a c¸c kiÔu mÉu tin nµy còng ph¶i ®−îc

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 6

®Þnh nghÜa. Cuèi cïng ë møc khung nh×n, mét vµi khung nh×n cña c¬ së d÷ liÖu
®−îc ®Þnh nghÜa. VÝ dô nh÷ng ng−êi thu ng©n chØ thÊy mét phÇn c¬ së d÷ liÖu lµ
th«ng tin vÒ tµi kho¶n kh¸ch hµng. Hä kh«ng thÓ truy xuÊt tíi th«ng tin liªn quan
®Õn tiÒn l−¬ng cña nh©n viªn.

1.3 HÖ qu¶n trÞ c¬ së d÷ liÖu (Database Management System : DBMS)


1.3.1 Kh¸i niÖm
HÖ qu¶n trÞ c¬ së d÷ liÖu lµ mét phÇn mÒm tøc lµ mét hÖ thèng c¸c ch−¬ng
tr×nh cho phÐp ng−êi sö dông giao tiÕp víi c¬ së d÷ liÖu nh− minh häa ë h×nh
1.3.

USER DBMS DATABASE

H×nh 1.3 Giao tiÕp gi÷a c¬ së d÷ liÖu víi ng−êi sö dông

HÖ qu¶n trÞ c¬ së d÷ liÖu cho phÐp ta tæ chøc c¬ së d÷ liÖu, l−u tr÷ nã trªn
thiÕt bÞ ghi nhí vµ cung cÊp cho chóng ta c¸c thñ tôc ®Ó söa ®æi cÊu tróc c¬ së d÷
liÖu, cËp nhËt d÷ liÖu vµ truy vÊn trªn c¸c d÷ liÖu.
1.3.2 C¸c chøc n¨ng cña hÖ qu¶n trÞ c¬ së d÷ liÖu
C¸c hÖ qu¶n trÞ c¬ së d÷ liÖu cung cÊp cho chóng ta nh÷ng chøc n¨ng sau:
1) Hç trî mét m« h×nh d÷ liÖu ®Ó tæ chøc c¬ së d÷ liÖu nghÜa lµ mét c«ng
cô ®Ó trõu t−îng hãa mét c¸ch toµn häc thÕ giíi thùc cÇn qu¶n lý vµ th«ng qua
®ã ng−êi sö dông cã thÓ thÊy ®−îc c¸c d÷ liÖu cña thÕ giíi thùc nµy.
VÝ dô: Tæ chøc th«ng tin vÒ Sinh viªn gåm c¸c th«ng tin:
M· sinh viªn
Hä tªn
§Þa chØ
N¨m sinh
Líp
M« h×nh d÷ liÖu quan hÖ cho ta thiÕt lËp mét l−îc ®å quan hÖ :
Sinh viªn (msv, hä tªn, ®Þa chØ, n¨m sinh , líp).
T−¬ng tù, ®Ó tæ chøc th«ng tin vÒ m«n häc gåm c¸c th«ng tin:
m· m«n häc
Tªn m«n

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 7

sè tiÕt
Häc kú
Ta ®−îc l−îc ®å quan hÖ sau: M«n häc ( m· m«n häc, tªn m«n häc, tiÕt,
häc kú)
2) Hç trî cho mét vµi ng«n ng÷ lËp tr×nh cÊp cao cho phÐp ng−êi sö dông
®Þnh nghÜa cÊu tróc d÷ liÖu, truy xuÊt d÷ liÖu. Ngoµi ra cßn cung cÊp mét ng«n
ng÷ ®Ó thao t¸c d÷ liÖu vµ truy vÊn d÷ liÖu. C¸c ng«n ng÷ ®ã ®−îc gäi lµ ng«n
ng÷ hái (Query Language), trong ®ã ng«n ng÷ ®−îc sö dông réng r·i nhÊt lµ
ng«n ng÷ SQL (Structured Query Language )
VÝ dô: Gi¶ sö ta cã m« h×nh d÷ liÖu quan hÖ gåm hai l−îc ®å quan hÖ sau:
Nh©nviªn ( tªnnh©nviªn ,Phßng)
Phßngban ( Phßng, Tr−ëngphßng )
Th«ng tin cña hai l−îc ®å quan hÖ ®−îc m« t¶ ë h×nh 1.4
Nh©n viªn Phßng Ban
Tªn nh©n viªn Phßng Phßng Tr−ëng phßng
Lª V¨n A §µo T¹o KÕ ho¹ch Ph¹m V¨n F
TrÇn ThÞ B Hµnh ch¸nh KÕ to¸n NguyÔn ThÞ G
NguyÔn V¨n C KÕ to¸n §µo T¹o Lª ThÞ H
Lª Thi E KÕ ho¹ch Hµnh ch¸nh Vâ V¨n T
H×nh 1.4 B¶ng thÓ hiÖn l−îc ®å quan hÖ
* Ai lµ tr−ëng phßng cña nh©n viªn Lª V¨n A ?
¸p dông c©u lÖnh cña ng«n ng÷ SQL ta tr¶ lêi c©u hái trªn nh− sau::
Select tr−ëngphßng
From nh©nviªn, phßngban
Where nh©nviªn.tªn nh©n viªn = ‘Lª V¨n A ‘ and
nh©nviªn. phßng = phßngban.phßng
* Cho biÕt danh s¸ch nh©nviªn cña tr−ëng phßng Lª ThÞ H ?
¸p dông c©u lÖnh cña ng«n ng÷ SQL ta tr¶ lêi c©u hái trªn nh− sau::
Select Tªnnh©nviªn
From Nh©nviªn, phßngban
Where Phßngban.tr−ëngphßng = ‘Lª ThÞ H’ and
nh©n viªn . phßng = phßngban. phßng
* Cho biÕt tªn nh÷ng ng−êi thuéc phßng kÕ to¸n

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 8

Select tªn nh©n viªn


From nh©nviªn
Where nh©n viªn. phßng = ‘kÕ to¸n’
3) Qu¶n lý giao dÞch (transaction)
Cø mét lÇn truy xuÊt c¬ së d÷ liªu ®−îc gäi lµ mét giao dÞch. HÖ qu¶n trÞ
c¬ së d÷ liÖu cung cÊp c«ng cô cho phÐp nhiÒu ng−êi sö dông truy xuÊt ®ång
thêi ®Õn c¬ së d÷ liÖu.

Kho hµng A=100

Cöa hµng 1 Cöa hµng 2

H×nh 1.5 Giao t¸c gi÷a cöa hµng víi kho hµng
VÝ dô: Gi¶ sö cïng lóc hai cöa hµng giao dÞch víi kho hµng vµ cÇn cung
cÊp 90 mÆt hµng A cho cöa hµng 1 vµ 30 cho cöa hµng B. NÕu kh«ng qu¶n lý
chÆt chÏ th× kho hµng cã thÓ ®ång ý cÊp cho c¶ 2 cöa hµng. Do ®ã ph¶i thùc hiÖn
xong giao dÞch cña mét cöa hµng th× giao dÞch cña cöa hµng cßn l¹i míi ®−îc
thùc hiÖn. khi cã mét giao dÞch thay ®æi mét d÷ liÖu th× hÖ qu¶n trÞ c¬ së d÷ liÖu
sÏ ng¨n c¶n mäi giao dÞch kh¸c truy xuÊt ®Õn d÷ liÖu nµy cho ®Õn khi giao dÞch
tr−íc ®ã ®· kÕt thóc.
4) Kh¶ n¨ng b¶o vÖ vµ phôc håi d÷ liÖu : HÖ qu¶n trÞ c¬ së d÷ liÖu cã kh¶
n¨ng b¶o vÖ vµ phôc håi d÷ liÖu tõ c¸c hÖ thèng bÞ h− háng do c¸c t¸c nh©n:
- Virus
- Ch−¬ng tr×nh kh«ng hoµn chØnh, thiÕu an toµn nªn bÞ háng bëi
chÝnh ng−êi sö dông.
- §Üa h−
C¬ chÕ b¶o vÖ d÷ liÖu lµ backup, nÐn l¹i d÷ liÖu l¹i th−êng xuyªn vµ cÊt
chóng vµo mét thiÕt bÞ l−u tr÷ an toµn ®ång thêi l−u tr÷ mäi giao dÞch vµo mét
nhËt ký. Ngoµi ra khi hÖ thèng bÞ háng hÖ qu¶n trÞ c¬ së d÷ liÖu cho phÐp phôc
håi l¹i phÇn nµo c¸c d÷ liÖu bÞ mÊt dùa vµo nhËt ký giao dÞch ®ã.
5) §iÒu khiÓn truy xuÊt: HÖ qu¶n trÞ c¬ së d÷ liÖu cã kh¶ n¨ng giíi h¹n
quyÒn truy xuÊt d÷ liÖu cña ng−êi sö dông vµ h¬n n÷a cßn kiÓm tra tÝnh hîp lÖ
cña d÷ liÖu khi ®−a vµo c¬ së d÷ liÖu

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 9

• QuyÒn truy xuÊt: HÖ qu¶n trÞ c¬ së d÷ liÖu cho phÐp cÊp hoÆc lÊy ®i
c¸c quyÒn th©m nhËp vµ truy xuÊt c¬ së d÷ liÖu cho nh÷ng ng−êi sö dông nh−
c¸c quyÒn:
- Kh«ng ®−îc xem d÷ liÖu
- §−îc xem nh−ng kh«ng ®−îc söa d÷ liÖu
- §−îc xem vµ ®−îc söa d÷ liÖu
Mçi ng−êi sö dông ®−îc cÊp cho mét quyÒn truy xuÊt vµ quyÒn ®ã ®−îc l−u
tr÷ trong 1 b¶ng ph©n quyÒn.

• KiÓm tra tÝnh hîp lÖ cña d÷ liÖu: hÖ qu¶n trÞ c¬ së d÷ liÖu cho phÐp
rµng buéc c¸c d÷ liÖu nhÊt lµ c¸c d÷ liÖu nhËp ®Ó thÓ hiÖn tÝnh toµn vÑn cña d÷
liÖu.
1.3.3 Kh¸i niÖm vÒ sù ®éc lËp d÷ liÖu vµ ch−¬ng tr×nh
Trong phÇn 1.2 chóng ta ®· ®Þnh nghÜa kiÕn tróc cña hÖ c¬ së d÷ liÖu. KiÕn
tróc ba líp nµy cho phÐp thay ®æi cÊu tróc ë mét líp mµ kh«ng ¶nh h−ëng ®Õn
líp cao h¬n kÕ nã. §iÒu nµy ®−îc gäi lµ ®éc lËp d÷ liÖu. §éc lËp d÷ liÖu vµ
ch−¬ng tr×nh lµ cÊu tróc d÷ liÖu dï cã thay ®æi nh−ng ch−¬ng tr×nh vÉn kh«ng
thay ®æi.
Ta cã 2 lo¹i ®éc lËp d÷ liÖu:
* §éc lËp d÷ liÖu vËt lý: lµ tr−êng hîp s¬ ®å vËt lý bÞ thay ®æi (nghÜa lµ
®−ßng ®Þa chØ th− môc d÷ liÖu bÞ thay ®æi, c¸c cÊu tróc tËp tin bÞ thay ®æi nh−ng
s¬ ®å ý niÖm kh«ng thay ®æi vµ nh− vËy c¸c ch−¬ng tr×nh øng dông còng kh«ng
ph¶i thay ®æi. §Ó lµm ®−îc ®iÒu nµy ta ph¶i thay ®æi c¸c phÐp biÕn ®æi tõ s¬ ®å
vËt lý
* §éc lËp d÷ liÖu luËn lý: lµ khi s¬ ®å ý niÖm thay ®æi nh−ng s¬ ®å ngoµi
kh«ng thay ®æi nghÜa lµ c¸c ch−¬ng tr×nh øng dông kh«ng cÇn ph¶i viÕt l¹i,
tõ ®ã ta ph¶i thay ®æi c¸c phÐp biÕn ®æi tõ s¬ ®å ngoµi ®Õn s¬ ®å ý niÖm.
1.3.4 Bé qu¶n lý c¬ së d÷ liÖu
Bé qu¶n lý c¬ së d÷ liÖu lµ mét module ch−¬ng tr×nh cung cÊp sù giao tiÕp
gi÷a d÷ liÖu ë møc thÊp ®−îc l−u tr÷ trong c¬ së d÷ liÖu víi c¸c ch−¬ng tr×nh øng
dông. Bé qu¶n lý c¬ së d÷ liÖu cã nhiÖm vô thùc hiÖn c¸c chøc n¨ng ®−îc tr×nh
bµy ë phÇn 1.3.2

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 10

1.3.5 Ng−êi qu¶n trÞ c¬ së d÷ liÖu


Bëi v× hÖ thèng c¬ së d÷ liÖu lµ mét hÖ thèng d÷ liÖu lín vµ ®−îc sö dông
th−êng xuyªn vµ l©u dµi do ®ã ph¶i cÇn cã mét ng−êi qu¶n lý tËp trung c¶ hÖ
thèng. Ng−êi ®ã ®−îc gäi lµ ng−êi qu¶n trÞ c¬ së d÷ liÖu. C¸c chøc n¨ng cña
ng−êi qu¶n trÞ c¬ së d÷ liÖu bao gåm:
• X¸c ®Þnh l−îc ®å c¬ së d÷ liÖu. L−îc ®å c¬ së d÷ liÖu ®−îc t¹o ra
cho hÖ thèng sÏ ®−îc l−u tr÷ th−êng trùc trong tù ®iÓn d÷ liÖu.
• X¸c ®Þnh ®−îc cÊu tróc l−u tr÷ d÷ liÖu vµ ph−¬ng thøc truy xuÊt c¬
së d÷ liÖu.
• Thay ®æi l−îc ®å vµ tæ chøc vËt lý. C¸c thay ®æi l−îc ®å c¬ së d÷
liÖu hoÆc c¸c tæ chøc l−u tr÷ vËt lý mÆc dï rÊt hiÕm ph¶i ®−îc thùc hiÖn bëi
ng−êi qu¶n trÞ c¬ së d÷ liÖu th«ng qua ng«n ng÷ ®Þnh nghÜa d÷ liÖu.
• CÊp quyÒn truy xuÊt d÷ liÖu cho ng−êi sö dông.
• §Æc t¶ c¸c rµng buéc toµn vÑn. C¸c rµng buéc toµn vÑn ®−îc gi÷
trong mét cÊu tróc hÖ thèng ®Æc biÖt vµ ®−îc tham kh¶o bëi ng−êi qu¶n trÞ c¬
së d÷ liÖu khi cã mét sù thay ®æi trong hÖ thèng.
1.3.6 Nh÷ng ng−êi sö dông c¬ së d÷ liÖu
Môc ®Ých chÝnh cña hÖ thèng c¬ së d÷ liÖu lµ cung cÊp mét m«i tr−êng cho
viÖc t×m kiÕm th«ng tin cho nhiÒu ng−êi sö dông. Nh÷ng ng−êi sö dông c¬ së d÷
liÖu ®−îc chia thµnh 4 lo¹i sau:
• LËp tr×nh viªn: nh÷ng ng−êi viÕt ra c¸c ch−¬ng tr×nh øng dông cho
c¬ së d÷ liÖu.
• C¸c chuyªn viªn: Nh÷ng ng−êi nµy kh«ng dïng c¸c ch−¬ng tr×nh
øng dông ®Ó truy cËp vµo c¬ së d÷ liÖu. Hä sö dông ng«n ng÷ hái ®Ó truy cËp
trùc tiÕp vµo c¬ së d÷ liÖu.
• Ng−êi khai th¸c: Ng−êi khai th¸c lµ ng−êi giao tiÕp víi hÖ thèng
th«ng qua c¸c ch−¬ng tr×nh øng dông.
1.3.7 CÊu tróc tæng qu¸t cña hÖ thèng qu¶n trÞ c¬ së d÷ liÖu
HÖ qu¶n trÞ c¬ së d÷ liÖu bao gåm c¸c thµnh phÇn sau:
• Bé qu¶n lý tËp tin (File manager): Bé qu¶n lý tËp tin qu¶n lý sù ®Þnh vÞ
c¸c kh«ng gian l−u tr÷ vµ c¸c cÊu tróc d÷ liÖu dïng ®Ó thÓ hiÖn c¸c th«ng tin l−u
tr÷ trªn ®Üa.
• Bé qu¶n lý c¬ së d÷ liÖu (Database manager): Cung cÊp sù giao tiÕp gi÷a
d÷ liÖu ®−îc l−u tr÷ ë møc thÊp trong c¬ së d÷ liÖu víi c¸c ch−¬ng tr×nh øng
dông.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 11

• Bé xö lý c©u truy vÊn (Query processor): Bé nµy biªn dÞch c¸c ph¸t biÓu
trong ng«n ng÷ hái thµnh c¸c c©u lÖnh ë møc thÊp sao cho bé qu¶n lý c¬ së d÷
liÖu cã thÓ hiÓu ®−îc. H¬n n÷a nã cßn tèi −u ho¸ c©u truy vÊn sao cho viÖc thùc
thi c©u hái ®−îc nhanh h¬n.
• Bé tiÒn biªn dÞch DML (DML precompiler): Bé tiÒn biªn dÞch DML dÞch
c¸c ph¸t biÓu cña ng«n ng÷ hái ®−îc nhóng trong ng«n ng÷ chñ thµnh c¸c m·
lÖnh thÝch hîp.
• Bé biªn dÞch DDL (DDL compiler): Biªn dÞch c¸c ph¸t biÓu DDL thµnh
mét tËp c¸c b¶ng.
• C¸c files d÷ liÖu: l−u tr÷ chÝnh c¬ së d÷ liÖu.
• Tù ®iÓn d÷ liÖu: Chøa c¸c d÷ liÖu ®Þnh nghÜa d÷ liÖu tøc toµn bé c¸c ®Þnh
nghÜa cña c¬ së d÷ liÖu.
• C¸c chØ môc: Cung cÊp viÖc truy xuÊt nhanh c¸c mÉu d÷ liÖu.
Toµn bé hÖ thèng qu¶n trÞ c¬ së d÷ liÖu ®−îc m« t¶ trong h×nh 1.6.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 1 §¹i C−¬ng C¸c HÖ C¬ Së D÷ LiÖu Trang 12

Users
Ng−êi khai th¸c LËp tr×nh viªn Chuyªn viªn Ng−êi qu¶n trÞ
CSDL

Khai th¸c øng Ch−¬ng tr×nh C©u hái L−îc c¬ së


dông øng dông d÷ liÖu

Bé tiÒn biªn dÞch Bé xö lý c©u Bé tiÒn biªn dÞch


DML truy vÊn DDL

M· lÖnh c¸c ®èi


Bé qu¶n lý
t−îng ch−¬ng tr×nh
c¬ së d÷ liÖu
øng dông
HÖ qu¶n trÞ c¬ së d÷ liÖu

Bé qu¶n lý
file

File d÷ liÖu

Tù ®iÓn d÷ liÖu

H×nh 1.6 CÊu tróc hÖ thèng qu¶n trÞ c¬ së

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 13

Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu

2.1 M« h×nh d÷ liÖu (data model)


2.1.1 C¸c m« h×nh d÷ liÖu (Data models)
CÊu tróc c¬ së cña c¬ së d÷ liÖu lµ quan niÖm vÒ m« h×nh d÷ liÖu. M« h×nh
d÷ liÖu cã mét tËp c¸c c«ng cô quan niÖm cho viÖc m« t¶ d÷ liÖu, m« t¶ c¸c mèi
quan hÖ d÷ liÖu, c¸c ng÷ nghÜa d÷ liÖu vµ c¸c rµng buéc nhÊt qu¸n. NhiÒu m«
h×nh d÷ liÖu ®−îc ®−a ra, chóng ®−îc ph©n thµnh ba nhãm: c¸c m« h×nh logic
dùa trªn ®èi t−îng, c¸c m« h×nh logic dùa trªn mÉu tin vµ c¸c m« h×nh d÷ liÖu
vËt lý.
2.1.2 C¸c m« h×nh logic dùa trªn ®èi t−îng (Object-Based logical models)
C¸c m« h×nh logic dùa trªn ®èi t−îng ®−îc sö dông ®Ó m« t¶ c¸c møc quan
niÖm vµ møc tÇm nh×n. Chóng ®−îc ®Æc tr−ng bëi c¸c kh¶ n¨ng cÊu tróc hãa linh
®éng vµ cho phÐp ®Æc t¶ mét c¸c râ rµng c¸c rµng buéc d÷ liÖu. Cã nhiÒu lo¹i
m« h×nh kh¸c nhau. Mét sè c¸c m« h×nh ®−îc biÕt ®Õn réng r·i lµ:
• M« h×nh thùc thÓ liªn kÕt
• M« h×nh h−íng ®èi t−îng
• M« h×nh nhÞ ph©n
• M« h×nh d÷ liÖu ng÷ nghÜa
• M« h×nh d÷ liÖu chøc n¨ng
ë ®©y chóng ta chØ nghiªn cøu m« h×nh thùc thÓ liªn kÕt vµ m« h×nh h−íng
®èi t−îng nh− lµ c¸c thÓ hiÖn cña líp m« h×nh logic dùa trªn ®èi t−îng.

(Entity--Relationship Model)
♦ M« h×nh thùc thÓ mèi liªn kÕt (Entity
M« h×nh thùc thÓ mèi liªn kÕt (ER) dùa trªn sù nhËn thøc vÒ thÕ giíi thùc
bao gåm mét tËp c¸c ®èi t−îng c¬ b¶n ®−îc gäi lµ thùc thÓ (entity) vµ c¸c mèi
liªn kÕt (relationship) gi÷a c¸c ®èi t−îng nµy. Mét thùc thÓ lµ mét ®èi t−îng mµ
ph©n biÖt ®−îc víi nh÷ng ®èi t−îng kh¸c bëi mét tËp thuéc tÝnh ®Æc t¶.
VÝ dô c¸c thuéc tÝnh number vµ balance m« t¶ mét sè tµi kho¶n cô thÓ trong
ng©n hµng vµ ng©n kho¶n cña nã. Mét mèi liªn kÕt lµ mèi quan hÖ gi÷a c¸c thùc
thÓ.
VÝ dô mèi liªn kÕt CustAcct liªn kÕt kh¸ch hµng víi mçi tµi kho¶n cña hä.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 14

TËp tÊt c¶ c¸c thùc thÓ cïng kiÓu vµ tËp c¸c mèi liªn kÕt cã cïng kiÓu ®−îc
gäi lµ tËp thùc thÓ vµ tËp mèi liªn kÕt t−¬ng øng.
Bæ sung cho c¸c thùc thÓ vµ c¸c liªn kÕt, m« h×nh thùc thÓ mèi liªn kÕt ER
thÓ hiÖn mét vµi rµng buéc mµ néi dung d÷ liÖu trong c¬ së d÷ liÖu ph¶i tu©n
theo. Mét trong c¸c rµng buéc quan träng lµ rµng buéc sè phÇn tö ¸nh x¹
(mapping cardinalities), nã biÓu diÔn sè l−îng c¸c thùc thÓ cña tËp thùc thÓ nµy
cã thÓ liªn kÕt sè thùc thÓ cña tËp thùc thÓ kia.
CÊu tróc logic cña toµn bé c¬ së d÷ liÖu cã thÓ d−îc biÓu diÔn mét c¸ch ®å
häa b»ng mét s¬ ®å thùc thÓ mèi liªn kÕt ER (ER diagram) bao gåm c¸c thµnh
phÇn sau:
• H×nh ch÷ nhËt thÓ hiÖn tËp thùc thÓ.
• H×nh Elip thÓ hiÖn c¸c thuéc tÝnh.
• H×nh thoi thÓ hiÖn mèi liªn kÕt gi÷a c¸c tËp thùc thÓ.
• §−êng nèi liªn kÕt c¸c thuéc tÝnh víi tËp thùc thÓ vµ tËp thùc thÓ
víi mèi liªn kÕt.
Mçi thµnh phÇn ®Òu cã tªn mµ thùc thÓ vµ mèi liªn kÕ thÓ hiÖn chóng.§Ó
minh häa, ta xÐt mét phÇn hÖ thèng c¬ së d÷ liÖu ng©n hµng bao gåm c¸c kh¸ch
hµng vµ c¸c tµi kho¶n cña hä. S¬ ®å ER t−¬ng øng ®−îc minh häa ë h×nh 2.1

street city
name
number balance

Customer CustAcc Account

H×nh 2.1 S¬ ®å ER

Object--Oriented Model)
♦ M« h×nh h−íng ®èi t−îng (The Object
T−¬ng tù m« h×nh ER, m« h×nh h−íng ®èi t−îng còng dùa trªn mét tËp c¸c
®èi t−îng. Mét ®èi t−îng chøa c¸c gi¸ trÞ ®−îc l−u trong c¸c biÕn riªng (instance
variables) bªn trong ®èi t−îng. Kh«ng nh− c¸c m« h×nh h−íng mÉu tin, c¸c gi¸
trÞ nµy tù nã lµ c¸c ®èi t−îng. Do ®ã, c¸c ®èi t−îng chøa c¸c ®èi t−îng ®Õn mét

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 15

®é s©u lång vµo nhau tïy ý. Mét ®èi t−îng còng chøa phÇn m· lÖnh ®Ó ®iÒu hµnh
®èi t−îng. C¸c phÇn m· lÖnh nµy ®−îc gäi lµ ph−¬ng thøc (method).
C¸c ®èi t−îng chøa cïng kiÓu gi¸ trÞ vµ cïng kiÓu ph−¬ng thøc ®−îc gom
l¹i trong mét líp (class). Mét líp cã thÓ ®−îc xem nh− mét ®Þnh nghÜa kiÓu cho
c¸c ®èi t−îng.
Mét c¸ch duy nhÊt mµ mét ®èi t−îng cã thÓ truy xuÊt d÷ liÖu cña mét ®èi
t−îng kh¸c lµ gäi mét ph−¬ng thøc cña ®èi t−îng ®ã. §iÒu nµy ®−îc gäi lµ gëi
th«ng b¸o ®Õn ®èi t−îng.
§Ó minh häa m« h×nh h−íng ®èi t−îng, ta xÐt mét ®èi t−îng thÓ hiÖn tµi
kho¶n ng©n hµng (bank account). §èi t−îng nµy chøa c¸c biÕn number vµ
balance thÓ hiÖn sè tµi kho¶n vµ ng©n kho¶n cña nã. §èi t−îng nµy còng chøa
ph−¬ng thøc chi tr¶ l·i (pay-interest) (xem h×nh 2.2).
Gi¶ sö tr−íc ®©y ng©n hµng chi tr¶ l·i 6% cho tÊt c¶ c¸c tµi kho¶n nh−ng
nay ng©n hµng thay ®æi c¸ch chi tr¶ l·i nh− sau: tr¶ l·i 5% ®èi víi c¸c tµi kho¶n
cã ng©n kho¶n nhá h¬n $1000 vµ 6% ®èi víi c¸c tµi kho¶n cã ng©n kho¶n lín
h¬n hay b»ng $1000. §èi víi hÇu hÕt c¸c m« h×nh, sù thay ®æi nµy dÉn ®Õn viÖc
thay ®æi m· lÖnh trong mét hoÆc nhiÒu ch−¬ng tr×nh øng dông. Nh−ng trong m«
h×nh h−íng ®èi t−îng th× ®iÒu nµy chØ cÇn thay ®æi trong ph−¬ng thøc pay-
interest mµ th«i.

§èi t−îng bank account


Number
BiÕn

Balance
Ph−¬ng thøc Pay_Interest

H×nh 2.2 M« h×nh mét ®èi t−îng

2.1.3 C¸c m« h×nh dùa trªn mÉu tin (Record-Based Logical Models)
C¸c m« h×nh dùa trªn mÉu tin ®−îc sö dông ®Ó m« t¶ d÷ liÖu ë c¸c møc
quan niÖm vµ khung nh×n. Ng−îc l¹i víi c¸c m« h×nh dùa trªn ®èi t−îng, chóng
®−îc dïng cho viÖc ®Æc t¶ toµn bé cÊu tróc logic cña c¬ së d÷ liÖu vµ cung cÊp
mét m« t¶ møc cao h¬n cho viÖc hiÖn thùc c¬ së d÷ liÖu vËt lý.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 16

C¸c m« h×nh d−îc gäi lµ m« h×nh dùa trªn mÉu tin v× c¬ së d÷ liÖu ®−îc x©y
dùng theo d¹ng c¸c mÉu tin x¸c ®Þnh. Mçi kiÓu mÉu tin dÞnh nghÜa mét sè c¸c
tr−êng hoÆc c¸c thuéc tÝnh vµ mçi tr−êng th−êng cã chiÒu dµi cè ®Þnh.
C¸c m« h×nh dùa trªn mÉu tin kh«ng chøa mét c¬ chÕ cho viÖc thÓ hiÖn c¸c
m· lÖnh trùc tiÕp trong c¬ së d÷ liÖu. V× thÕ nã cã hai ng«n ng÷ riªng rÏ nh−ng
g¾n liÒn víi m« h×nh ®Ó biÓu diÔn c¸c truy vÊn c¬ së d÷ liÖu vµ cËp nhËt c¬ së
d÷ liÖu.
Ba m« h×nh d÷ liÖu dùa trªn mÉu tin ®−îc chÊp nhËn réng r·i nhÊt lµ m«
h×nh quan hÖ, m« h×nh m¹ng vµ m« h×nh ph©n cÊp. M« h×nh quan hÖ lµ mé h×nh
dµnh ®−îc sù −a chuéng h¬n hai m« h×nh kia trong nh÷ng n¨m gÇn ®©y, nã sÏ
®−îc nghiªn cøu s©u trong gi¸o tr×nh nµy. M« h×nh m¹ng vµ m« h×nh ph©n cÊp
chØ cßn ®−îc sö dông trong mét sè c¸c c¬ së d÷ liÖu cò.

♦ M« h×nh quan hÖ
M« h×nh quan hÖ thÓ hiÖn d÷ liÖu vµ mèi quan hÖ gi÷a chóng b»ng mét tËp
c¸c b¶ng. Mçi b¶ng chøa mét sè cét víi tªn duy nhÊt.
§Ó biÓu diÔn m« h×nh d÷ liÖu quan hÖ víi ng−êi dïng b¶ng, trong ®ã:
1 cét th× t−¬ng øng víi mét thuéc tÝnh.
1 hµng th× t−¬ng øng víi 1 bé (record).
1 b¶ng th× t−¬ng øng víi 1 quan hÖ (file).

B¶ng ⇔ quan hÖ

Cét ⇔ thuéc tÝnh

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 17

VÝ dô : §Ó minh häa cho mÉu c¬ së d÷ liÖu thÓ hiÖn kh¸ch hµng

name street city number


Lowery Mapple Queens 900
Shiver North Bronx 556
Shiver North Bronx 647
Hodges Sidehill Brooklyn 801
Hodges Sidehill Brooklyn 647

number balance
900 55
556 100000
647 105366
801 10533

H×nh 2.3 Mét mÉu c¬ së d÷ liÖu quan hÖ


(customer) vµ tµi kho¶n (account) cña hä, ta cã hai b¶ng thÓ hiÖn sau (h×nh 2.3):

♦ M« h×nh m¹ng
D÷ liÖu trong m« h×nh m¹ng ®−îc thÓ hiÖn bëi mét tËp c¸c mÉu tin vµ mèi
quan hÖ gi÷a c¸c d÷ liÖu ®−îc thÓ hiÖn bëi c¸c liªn kÕt (links)mµ ta cã thÓ xem
nh− c¸c con trá (pointers). C¸c mÉu tin trong c¬ së d÷ liÖu ®−îc tæ chøc thµnh
c¸c ®å thÞ tïy ý. H×nh 2.4 thÓ hiÖn mét mÉu c¬ së d÷ liÖu d¹ng m« h×nh m¹ng
víi c¸c th«ng tin nh− h×nh 2.3.
Lowery Maple Queens 900 55

Shiver North Bronx 556 100000

647 105366

Hodges Sidehill Brooklyn 801 10533

H×nh 2.4 Mét mÉu c¬ së d÷ liÖu m¹ng

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 18

♦ M« h×nh ph©n cÊp


M« h×nh ph©n cÊp t−¬ng tù nh− m« h×nh m¹ng, nã còng thÓ hiÖn d÷ liÖu
b»ng c¸c mÉu tin cßn c¸c quan hÖ b»ng c¸c liªn kÕt. Nã kh¸c m« h×nh m¹ng lµ
c¸c mÉu tin ®−îc tæ chøc nh− lµ mét tËp hîp c¸c c©y h¬n lµ mét ®å thÞ bÊt kú.
H×nh 2.5 thÓ hiÖn mét mÉu c¬ së d÷ liÖu ph©n cÊp víi th«ng tin nh− h×nh 2.4.

Lowery Maple Queens Hodges Sidehill Brooklyn

Shiver North Bronx

556 100000 647 105366

900 55 647 105366


801 10533
H×nh 2.5 Mét mÉu c¬ së d÷ liÖu ph©n cÊp

2.2 M« h×nh thùc thÓ mèi liªn kÕt (Entity


(Entity Relationship Model)
M« h×nh thùc thÓ lµ m« h×nh ban ®Çu ®Ó tõ ®ã ng−êi ta biÕn ®æi nã thµnh
mét trong 3 m« h×nh d÷ liÖu, nã cho phÐp m« t¶ s¬ ®å ý niÖm cña thÕ giíi thùc
mµ kh«ng quan t©m ®Õn hiÖu qu¶ hoÆc thiÕt kÕ c¬ së d÷ liÖu vËt lý. S¬ ®å thùc
thÓ mèi liªn kÕt (Entity Relationship Mode Diagram) sau nµy sÏ ®−îc biÕn ®æi
thµnh mét s¬ ®å quan niÖm cña mét trong ba m« h×nh d÷ liÖu dùa theo mÉu tin ë
trªn. Trong gi¸o tr×nh nµy ta chØ nghiªn cøu tíi viÖc biÕn ®æi m« h×nh thùc thÓ
mèi liªn kÕt thµnh m« h×nh quan hÖ.
M« h×nh thùc thÓ mèi liÖn kÕt gåm cã 2 thµnh phÇn : thùc thÓ vµ liªn kÕt
2.2.1 Thùc thÓ (Entity)
Thùc thÓ lµ 1 sù vËt hay sù viÖc mµ ta cã thÓ ph©n biÖt ®−îc, tån t¹i trong
thÕ giíi kh¸ch quan mµ ta cã thÓ liªn kÕt thùc thÓ nµy víi 1 thùc thÓ kh¸c. Thùc
thÓ cã thÓ lµ mét thùc thÓ cô thÓ hoÆc trõu t−îng. Mçi thùc thÓ ®−îc m« t¶ bëi
mét sè thuéc tÝnh.
VÝ dô : - Sinh viªn lµ 1 thùc thÓ cô thÓ. Ta cã thÓ ph©n biÖt sinh viªn nµy
víi sinh viªn kh¸c dùa vµo m· sè, ta cã thÓ liªn kÕt sinh viªn nµy víi sinh viªn
kia dùa vµo mèi liªn kÕt cïng líp.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 19

- M«n häc lµ 1 thùc thÓ trõu t−îng, ta cã thÓ ph©n biÖt m«n häc nµy
víi m«n häc kh¸c dùa vµo tªn m«n häc, ta cã thÓ liªn kÕt m«n häc nµy víi m«n
häc kia dùa vµo liªn kÕt m«n häc nµo lµ c¬ së cña m«n häc kia.
2.2.2 TËp thùc thÓ (Entity set) :
TËp thùc thÓ lµ mét tËp bao gåm nh÷ng thùc thÓ gièng nhau.
VÝ dô : - NhiÒu thùc thÓ sinh viªn hîp l¹i thµnh tËp thÓ sinh viªn.
- NhiÒu m«n häc hîp l¹i t¹o ra tËp thÓ m«n häc.
2.2.3 C¸c thuéc tÝnh vµ c¸c kho¸ :
Thuéc tÝnh: C¸c tËp thùc thÓ th× cã nh÷ng ®Æc tÝnh, nh÷ng ®Æc tÝnh nµy gäi
lµ thuéc tÝnh.
VÝ dô : TËp thùc thÓ MÆt hµng cã c¸c thuéc tÝnh: tªn mÆt hµng, sè l−îng.
Mçi thuéc tÝnh cã mét kiÖu d÷ liÖu (sè nguyªn, sè thùc, c¸c chuçi ký tù .. .)
vµ cã gi¸ trÞ trong mét miÒn.
VÝ dô : M· vËt t− lµ mét chuçi c¸c ký tù.
- Sè l−îng lµ 1 sè nguyªn.
- Khèi l−îng lµ 1 sè thùc.
Khãa lµ mét thuéc tÝnh hoÆc lµ mét tËp c¸c thuéc tÝnh mµ gi¸ trÞ cña nã
®−îc dïng ®Ó x¸c ®Þnh duy nhÊt 1 thùc thÓ trong mét tËp thùc thÓ.
VÝ dô : §Ó ph©n biÖt c¸c sinh viªn ng−êi ta cã thÓ dïng khãa sau:
- M· sinh viªn cã 1 thuéc tÝnh mµ ng−êi ta gäi lµ khãa ®¬n (single key).
- Dïng hä tªn vµ n¨m sinh cã nhiÒu thuéc tÝnh, khãa nµy gäi lµ khãa tæ
hîp.
- Dïng m· sinh viªn vµ hä tªn ®Ó lµm khãa th× kho¸ nµy ®−îc gäi lµ siªu
kho¸ (supper key). Siªu khãa lµ 1 khãa mµ cã tËp con c¸c thuéc tÝnh khãa cña nã
l¹i lµ khãa.
2.2.4 HÖ ph©n cÊp isa hay sù tæng qu¸t ho¸ - chuyªn biÖt hãa
Ta nãi A isa B ®−îc ®äc lµ “A lµ B” nghÜa lµ nÕu tËp thùc thÓ B lµ sù tæng
qu¸t hãa cña tËp thùc thÓ A hay nãi c¸ch kh¸c ®i A lµ 1 lo¹i riªng biÖt cña B.
VÝ dô : Sinh viªn Isa con ng−êi.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 20

con ng−êi

sinh viªn c«ng nh©n

Ta nãi:

A Isa B ⇔ ∀a ∈ A th× a ∈ B vµ ∃b ∈ B sao cho a = b


TÝnh chÊt cña hÖ ph©n cÊp Isa:
• A thõa h−ëng mäi thuéc tÝnh cña B.
• A cã nh÷ng thuéc tÝnh mµ B kh«ng cã.
• B cã tån t¹i 1 thùc thÓ mµ kh«ng t−¬ng øng 1 thùc thÓ trong A.
VÝ dô : Sinh viªn chøa mäi thuéc tÝnh cña Con ng−êi, khi ®ã thuéc tÝnh
khãa cña Con Ng−êi còng sÏ lµ thuéc tÝnh khãa cña Sinh viªn, vµ c¸c thuéc tÝnh
riªng cña Sinh viªn trong ®ã cã thuéc tÝnh nhËn d¹ng thùc thÓ sinh viªn. Vµ
trong Con ng−êi ch¾c ch¾n tån t¹i thùc thÓ kh«ng ph¶i lµ Sinh viªn mµ lµ C«ng
nh©n.
2.2.5 Mèi liªn kÕt
Mét mèi liªn kÕt gi÷a c¸c tËp thùc thÓ lµ 1 danh s¸ch cã thø tù cña c¸c tËp
thùc thÓ. Mét tËp thùc thÓ cã thÓ xuÊt hiÖn nhiÒu lÇn trong 1 danh s¸ch. Danh
s¸ch c¸c tËp thùc thÓ lµ 1 kh¸i niÖm ë møc s¬ ®å thÓ hiÖn mét mèi liªn kÕt. NÕu
cã 1 mèi liªn kÕt R gi÷a c¸c tËp thùc thÓ E1, E2,... Ek th× 1 minh häa cña R lµ 1
tËp hîp c¸c bé k.Ta gäi 1 tËp hîp nh− thÕ lµ 1 tËp mèi liªn kÕt.
Mét bé k (e1,e2, ..., ek) trong 1 tËp mèi liªn kÕt R gåm c¸c thùc thÓ
(e1,e2, ..., ek víi ei ∈ Ei, i = 1 ... k).
VÝ dô : XÐt mèi liªn kÕt gi÷a tËp thùc thÓ Sinh viªn vµ m«n häc.
R = ®· häc
Sinh viªn m«n häc
§· häc (sinh viªn, m«n häc)
Bé (x, y) : x ®· häc m«n y
x thuéc sinh viªn
y thuéc m«n häc

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 21

VÝ dô : XÐt mèi liªn kÕt gi÷a tËp thùc thÓ SV :


R = cïng líp
Sinh viªn sinh viªn

Cïng líp (sinh viªn, sinh viªn)


Bé (n, m) ⇔ n ë cïng líp víi m.
VÝ dô : XÐt mèi liªn kÕt gi÷a m«n häc, gi¶ng viªn, líp.
gi¶ng viªn m«n häc
d¹y

líp
d¹y (gi¶ng viªn, m«n häc, líp)
Bé (l, m, p) ⇔ gv l d¹y m«n häc m ë líp p)
Mèi liªn kÕt sÏ chøa c¸c thuéc tÝnh khãa cña c¸c c¸c tËp thùc thÓ tham gia
liªn kÕt (cßn gäi lµ thuéc tÝnh khãa vay m−în) vµ c¸c thuéc tÝnh riªng ®Æc t¶ cho
mèi liªn kÕt ®ã.
VÝ dô: C¸c thuéc tÝnh khãa vay m−în:
Sinh viªn cã khãa lµ m· SV.
M«n häc cã khãa lµ m· MH.
Mèi liªn kÕt “§· häc” liªn kÕt hai tËp thùc thÓ Sinh viªn vµ M«n häc sÏ
cã khãa lµ m· SV vµ m· MH. VËy khãa cña chóng lµ khãa vay m−în cña c¸c tËp
thùc thÓ Sinh viªn vµ M«n häc.
2.2.6 S¬ ®å thùc thÓ mèi liªn kÕt
Qui −íc :
- H×nh ch÷ nhËt t−¬ng øng víi tËp thùc thÓ.
- H×nh trßn t−¬ng øng víi thuéc tÝnh.
- H×nh trßn mµ trong ®ã cã g¹ch d−íi ta gäi ®ã lµ thuéc tÝnh khãa.
- H×nh thoi dïng ®Ó thÓ hiÖn mèi liªn kÕt.
- G¹ch nèi gi÷a h×nh ch÷ nhËt vµ h×nh thoi cã thÓ cã h−íng hoÆc kh«ng
h−íng.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 22

TËp thùc thÓ

Thuéc tÝnh

X khãa

Mèi liªn kÕt

Kh«ng h−íng

Cã h−íng

§Æc biÖt : nÕu 1 tËp thùc thÓ chØ cã mét thuéc tÝnh th× ta nªn gäi tªn tËp
thùc thÓ b»ng tªn thuéc tÝnh vµ tËp thùc thÓ ®ã ®−îc ghi trong h×nh trßn.
VÝ dô: MÆt hµng ®−îc b¸n víi nhiÒu gi¸

n−íc sx mÆt hµng b¸n gi¸

m·mh tªnmh

- Gi¸ chØ cã 1 thuéc tÝnh lµ ®¬n gi¸ nªn ta vÏ h×nh ch÷ thµnh h×nh trßn.

n−ícsx mÆt hµng b¸n gi¸ tiÒn

m·mh tªnmh

VÝ dô : Mét c«ng ty cã nhiÒu bé phËn. Mçi bé phËn cã nhiÒu nh©n viªn,


nh−ng nh©n viªn chØ lµm viÖc ë 1 bé phËn. Mçi bé phËn cã 1 ng−êi qu¶n lý vµ
ng−êi qu¶n lý chØ qu¶n lý 1 bé phËn mµ th«i. H·y tr×nh bµy s¬ ®å thùc thÓ mèi
liªn kÕt c«ng ty trªn.
TËp thùc thÓ Thuéc tÝnh Mèi liªn kÕt TËp thùc thÓ
Bé phËn - tªn bé phËn cã (nhiÒu) Nh©n viªn
- sè phßng bÞ qu¶n lý (bëi 1) Ng−êi qu¶n lý
Nh©n viªn m· NV lµm viÖc (t¹i 1) Bé phËn
hä tªn
l−¬ng
Ng−êi qu¶n lý hä tªn qu¶n lý (1) Bé phËn
sè phone

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 23

l−¬ng tªn bé phËn

sè phßng
hä tªn nh©n viªn lµm viÖc bé phËn

m·nv
qlý
hätªn

ng−êiqlý
sèphone

VÝ dô : Mét cöa hµng bµy b¸n mÆt hµng trong nhiÒu quÇy hµng. Mét quÇy
hµng th× b¸n nhiÒu lo¹i mÆt hµng nh−ng 1 mÆt hµng chØ ®−îc bµy b¸n ë 1 quÇy
hµng víi 1 gi¸ cè ®Þnh.

TËp thùc thÓ Thuéc tÝnh Mèi liªn kÕt TËp thùc thÓ
QuÇy hµng - tªn bµy (nhiÒu) mÆt hµng
- sè
MÆt hµng - tªn b¸n ( ë mét ) quÇy hµng
- gi¸ víi mét gi¸
- m· hµng (thuéc tÝnh
riªng)

QuÇy hµng MÆt hµng

Bµy b¸n

Gi¸

VÝ dô : Mét tr−êng cã nhiÒu gi¶ng viªn, c¸c gi¶ng viªn d¹y nhiÒu m«n häc,
m«n häc cã thÓ ®−îc nhiÒu gi¶ng viªn d¹y. Mçi gi¶ng viªn d¹y m«n häc th× sö
dông nhiÒu gi¸o tr×nh.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 24

Gi¶ng viªn d¹y m«n häc

sö dông

Gi¸o tr×nh
C©u hái : Cho biÕt thÇy H¹nh d¹y m«n c¬ së d÷ liÖu th× sö dông gi¸o tr×nh
g× th× m« h×nh trªn sÏ kh«ng tr¶ lêi ®−îc c©u hái trªn. Ph¶i sö dông m« h×nh liªn
kÕt 3.
Gi¶ng viªn m«n häc

sö dông

Gi¸o tr×nh

2.2.7 TÝnh hµm cña mèi liªn kÕt


Ta cÇn ph¶i ph©n lo¹i c¸c mèi liªn kÕt dùa vµo tÝnh chÊt lµ 1 thùc thÓ cña
tËp thùc thÓ liªn kÕt ®−îc víi bao nhiªu thùc thÓ cña tËp kia do ®ã gi¸ trÞ cña tÝnh
chÊt hµm chØ cã 2 gi¸ trÞ ®ã lµ 1 hoÆc nhiÒu.
2.2.7.1 Mèi liªn kÕt 1-1 :
Mèi liªn kÕt 1-1Lµ mèi liªn kÕt gi÷a 2 tËp thùc thÓ mµ øng víi 1 thùc thÓ
cña tËp nµy liªn kÕt nhiÒu nhÊt víi 1 thùc thÓ cña tËp kia vµ ng−îc l¹i.
1 1
E1 E2

VÝ dô : TËp thùc thÓ chång vµ tËp thùc thÓ vî lµ liªn kÕt 1-1 theo quan ®iÓm
hiÖn ®¹i.
Chång 1 1 vî

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 25

- Mèi liªn kÕt isa còng lµ mèi liªn kÕt 1-1


1 1
sinh viªn Isa con ng−êi

VÝ dô : Cø 1 sinh viªn th× ch¾c ch¾n lµ 1 ng−êi vµ ng−îc l¹i.


Nh©n viªn nÕu lµ 1 ng−êi qu¶n lý th× nh©n viªn chÝnh lµ ng−êi qu¶n lý.
1 1
nh©n isa ng−êi qu¶n lý

2.2.7.2 Mèi liªn kÕt nhiÒu -1 :


XÐt mèi liªn kÕt nhiÒu -1 tõ tËp thùc thÓ E1 vµ tËp thùc thÓ E2 th× 1 thùc thÓ
cña tËp thùc thÓ E2 liªn kÕt víi 0 hoÆc nhiÒu thùc thÓ cña tËp E1 nh−ng ng−îc
l¹i, 1 thùc thÓ cña tËp E1 chØ liªn kÕt nhiÒu nhÊt víi 1 thùc thÓ cña tËp E2.
n 1
E1 E2

VÝ dô : XÐt tËp thùc thÓ cha mÑ vµ con c¸i.


Cha mÑ cã thÓ cã nhiÒu con c¸i, nh−ng con c¸i chØ cã 1 cÆp cha mÑ.

♦ Kh¸i niÖm vÒ mèi liªn kÕt nhiÒu -1 :


Tõ 2 tËp thùc thÓ cã thÓ ®−îc tæng qu¸t ho¸ thµnh nhiÒu mèi liªn kÕt nhiÒu
-1 víi k tËp thùc thÓ (k >2)
NÕu cã 1 mèi liªn kÕt gi÷a c¸c tËp thùc thÓ E1, E2, E3, ..., Ek gäi lµ R øng
víi c¸c thùc thÓ e1, e2, ei-1, ei+1, ..., ek còa c¸c tËp thùc thÓ E1, E2, ... Ei-1,
Ei+1, ..., Ek th× kiªn kÕt víi nhiÒu nhÊt 1 thùc thÓ ei cña tËp Ei th× ta nãi R lµ
mèi liªn kÕt nhiÒu 1.
Chó ý :

• Khi ta x©y dùng 1 mèi liªn kÕt gi÷a k tËp thùc thÓ ®iÒu ®ã chøng tá
r»ng ta chØ x¸c ®Þnh ®−îc 1 thùc thÓ ei nµo ®ã nÕu ®· biÕt ek-1 cña c¸c tËp thùc
thÓ kia.
VÝ dô : Gi÷a ng−êi cung cÊp mÆt hµng. H·y x¸c ®Þnh mèi liªn kÕt trªn.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 26

Ng−êi cung mÆt hµng

cung cÊp

gi¸

VÝ dô : Cã 3 tËp thùc thÓ líp häc, giê häc vµ phßng häc.

Líp häc giê häc

Häc

Phßng häc

2.2.7.3 Mèi liªn hÖ nhiÒu - nhiÒu


Mét mèi liªn kÕt ®−îc gäi lµ nhiÒu - nhiÒu gi÷a c¸c tËp thùc thÓ nÕu nh−
kh«ng cã 1 giíi h¹n nµo ®ã vÒ sè l−îng cña c¸c tËp thùc thÓ tham gia trong mèi
liªn kÕt nghÜa lµ 1 thùc thÓ cña tËp thÓ nµy cã thÓ liªn kÕt ®−îc víi 0 hoÆc nhiÒu
thùc thÓ cña tËp thùc thÓ kia vµ ng−îc l¹i.
VÝ dô : Ng−êi cung cÊp vµ mÆt hµng :

Ng−êi cung cÊp cung cÊp mÆt hµng

2.2.8 VÝ dô vÒ s¬ ®å thùc thÓ mèi liªn kÕt (ERD)


VÝ dô 1: X©y dùng 1 s¬ ®å ERD cña siªu thÞ.
Mét siªu thÞ cã nhiÒu nh©n viªn. Th«ng tin vÒ nh©n viªn gåm cã tªn nh©n
viªn vµ tiÒn l−¬ng. Mçi nh©n viªn lµm viÖc ë 1 bé phËn, 1 bé phËn cã thÓ cã
nhiÒu nh©n viªn. Th«ng tin vÒ bé phËn gåm cã tªn bé phËn vµ m· sè bé phËn.
Trong nh÷ng nh©n viªn cã ng−êi lµm qu¶n lý, 1 ng−êi chØ qu¶n lý tèi ®a 1 bé
phËn, 1 bé phËn chØ cã 1 ng−êi lµm qu¶n lý. ë 1 bé phËn cã nhiÒu mÆt hµng
nh−ng 1 mÆt hµng chØ ®−îc ®Æt ë 1 bé phËn mµ th«i. Th«ng tin vÒ mÆt hµng gåm
cã tªn mÆt hµng vµ m· sè mÆt hµng. MÆt hµng do nhiÒu ng−êi cung cÊp b¸n,

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 27

nh−ng 1 ng−êi cung cÊp b¸n 1 mÆt hµng víi 1 gi¸. Th«ng tin vÒ ng−êi b¸n hµng
gåm cã tªn ng−êi b¸n hµng vµ ®Þa chØ.
Siªu thÞ cã nhiÒu kh¸ch hµng. Th«ng tin vÒ kh¸ch hµng gåm cã tªn kh¸ch
hµng, ®Þa chØ kh¸ch hµng vµ sè d−. Mçi kh¸ch hµng cã nhiÒu ®¬n ®Æt hµng nh−ng
1 ®¬n ®Æt hµng th× chØ cã 1 kh¸ch hµng mµ th«i. Th«ng tin vÒ ®¬n ®Æt hµng gåm
cã sè hiÖu ®¬n, ngµy ®Æt hµng. Mçi ®¬n ®Æt hµng bao gåm nhiÒu mÆt hµng ®Æt
mua víi 1 sè l−îng duy nhÊt.

n. viªn lµm viÖc bé phËn bµy b¸n mÆt hµng

isa Qlý gåm ccÊp

NgQ Sl−îng Gi¸ Ncc

k.hµng cã §¬n ®Æt hµng

VÝ dô 2: Mét tr−êng cã nhiÒu líp, mét líp häc cã nhiÒu m«n, mçi m«n chØ
cã 1 ng−êi d¹y, 1 m«n cã thÓ häc ë nhiÒu buæi vµ 1 m«n häc ë 1 buæi chØ häc ë 1
phßng. Mét tr−êng cã nhiÒu bé m«n, mét bé m«n th× cã nhiÒu gi¸o viªn nh−ng 1
gi¸o viªn chØ ë 1 bé m«n.
1 bé m«n th× ®¶m nhËn nhiÒu m«n häc vµ 1 m«n häc chØ thuéc 1 bé m«n.
Mét gi¸o viªn cã kh¶ n¨ng d¹y nhiÒu m«n, mét m«n th× cã thÓ cã nhiÒu gi¸o
viªn. H·y tr×nh bµy m« h×nh ERD ë tr−êng trªn.

th×häc buæi

líp häc m«n cã Phßng

d¹y
gi¸oviªn

phôtr¸ch
gåm

bém«n

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 28

2.3 M« h×nh d÷ liÖu quan hÖ.


2.3.1 C¸c kh¸i niÖm c¬ b¶n.
2.3.1.1 Thuéc tÝnh
• Mçi ®èi t−îng ®−îc kh¶o s¸t ®Òu cã nh÷ng ®Æc tÝnh. Nh÷ng ®Æc tÝnh
nµy ®−îc gäi lµ thuéc tÝnh.
• Mçi thuéc tÝnh ®Òu thuéc mét kiÓu d÷ liÖu.
• Mçi thuéc tÝnh chØ lÊy gi¸ trÞ trong mét tËp con cña kiÓu d÷ liÖu
®−îc gäi lµ miÒn (domain) gi¸ trÞ cña thuéc tÝnh, ký hiÖu lµ Dom (A) víi A lµ
thuéc tÝnh.
• MiÒn gi¸ trÞ cã thÓ chøa thªm mét gi¸ trÞ ®Æc biÖt gäi lµ gi¸ trÞ rçng
(NULL).
2.3.1.2 L−îc ®å quan hÖ
• Mét l−îc ®å quan hÖ ®−îc ®Æc tr−ng bëi mét tªn ph©n biÖt (Q) vµ
mét tËp hîp h÷u h¹n c¸c thuéc tÝnh cña l−îc ®å quan hÖ ®ã.
• TËp hîp c¸c thuéc tÝnh cña l−îc ®å quan hÖ Q, ký hiÖu lµ
Q+ = {A 1 , A 2 .....A N }; víi c¸c miÒn gi¸ trÞ DOM (Ai).
• Sè ph©n tö cña Q+, ký hiÖu Card (Q+ ) ®−îc gäi lµ sè ng«i cña l−îc
®å quan hÖ.
• Thø tù c¸c thuéc tÝnh trong kh«ng quan träng.
• Mét l−îc ®å quan hÖ Q víi tËp thuéc tÝnh Q+ = {A 1 , A 2 .....A N }, còng
cã thÓ viÕt gän thµnh Q(A1, A2,.. .,An).
• T©n tõ cña l−îc ®å quan hÖ Q, ký hiÖu ||Q|| dïng ®Ó m« t¶ ý nghÜa
(ng÷ nghÜa) cña l−îc ®å quan hÖ Q.
VÝ dô : SINH VI£N(MASV,HOSV, TENSV, NGSINH, MAKHOA,
HOCBONG).
T©n tõ ||SINH VI£N||: Mçi sinh viªn ®−îc nhËn diÖn qua MASV, ph¶i cã
hä, tªn, ngµy sinh, khoa x¸c ®Þnh vµ cã thÓ/kh«ng häc bæng.
KETQUA( MASV, MAMH, LANTHI, DIEM).
T©n tõ ||KET QUA||: Mçi sinh viªn cã thÓ dù thi c¸c m«n ®· ®¨ng ký. Mçi
m«n ®−îc thi tèi ®a 2 lÇn.
• L−îc ®å quan hÖ cã thÓ biÓu diÔn cho mét lo¹i thùc thÓ cô thÓ hoÆc
trõu t−îng.
• Mét l−îc ®å c¬ së d÷ liÖu C bao gåm nhiÒu l−îc ®å quan hÖ con :
C = { Qi} i : 1->n

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 29

2.3.1.3. Bé (tuple)
• Mét bé lµ c¸c th«ng tin cña 1 ®èi t−îng thuéc 1 l−îc ®å quan hÖ.
Nã cßn ®−îc gäi lµ 1 mÉu tin hay b¶n ghi.
• VÒ mÆt h×nh thøc mét bé q lµ 1 vect¬ gåm n thµnh phÇn thuéc tËp
con cña tÝch Descartes gi÷a c¸c miÒn gi¸ trÞ cña c¸c thuéc tÝnh vµ tho¶ m·n t©n
tõ ||Q||.
q = (a1, a2,...an) ∈ Dom (A1) × Dom (A2) × ... × Dom (An).
2.3.1.4. Quan hÖ (Relation)
Mét quan hÖ T Q ®Þnh nghÜa trªn 1 l−îc ®å quan hÖ Q lµ 1 thÓ hiÖn (hay 1
t×nh tr¹ng) cña l−îc ®å quan hÖ Q ë 1 thêi ®iÓm nµo ®ã. Khi ®ã TQ chøa c¸c bé q
tho¶ t©n tõ cña l−îc ®å quan hÖ Q.

T Q = { q = (a1, a2,...an) / ai ∈ Dom (Ai) vµ q tho¶ || q || }


Mét quan hÖ cßn ®−îc gäi lµ b¶ng.
VÝ dô : Quan hÖ Sinh viªn

MASV HOSV TENSV NGSINH MAKHOA HOCBONG


C981001 NguyÔn V¨n Anh 12/8/1976 VT
C981002 Lª V¨n Anh 1/5/1977 VT 100000
C981003 TrÇn ThÞ BÐ 6/7/1976 VT 100000

Mét l−îc ®å c¬ së d÷ liÖu C = {QI}, tËp hîp c¸c l−îc ®å quan hÖ con . T Qi
®Þnh nghÜa trªn nh÷ng l−îc ®å quan hÖ con Qi t¹i 1 thêi diÓm gäi lµ t×nh tr¹ng
cña l−îc ®å c¬ së d÷ liÖu C vµ ký hiÖu lµ T C = {TQi}
2.3.1.5. Siªu kho¸ - Kho¸ chØ ®Þnh.
♦ Kh¸i niÖm
Mét tËp con S cña Q+ ®−îc gäi lµ siªu kho¸ cña l−îc ®å quan hÖ Q nÕu S cã
thÓ dïng lµm c¬ së ®Ó ph©n biÖt 2 bé kh¸c nhau tïy ý trong 1 quan hÖ T Q bÊt kú
®−îc ®Þnh nghÜa trªn l−îc ®å quan hÖ Q.

♦ §Þnh nghÜa

Cho quan hÖ T Q . TËp con K ⊂ Q+ ®−îc gäi :

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 30

• 1/ Lµ siªu kho¸ cña Q nÕu ∀ t , t' ∈ T Q ta cã t (K) = t’ (K) => t =


t'. Trong ®ã t(K) lµ bé t nh−ng chØ xÐt c¸c thuèc tÝnh K.
• 2/ Lµ 1 khãa cña Q nÕu K lµ siªu kho¸ vµ kh«ng cã tËp con thËt sù
nµo cña K tho¶ tÝnh chÊt nµy. K cßn ®−îc gäi lµ kho¸ dù tuyÓn (candidate key)
hay khãa néi.
VÝ dô : SINHVIEN (MASV, HOTEN, TENSV, NGSINH, HOCBONG)
L−îc ®å quan hÖ SINHVIEN cã c¸c siªu kho¸ sau :
S1 = {MASV}
S2 = {MASV, HOSV, TENSV}
S3 = {MASV, NGSINH}
Trong ®ã S1 lµ khãa cßn S2, S3 lµ siªu khãa.

Trong tr−êng hîp l−îc ®å quan hÖ Q cã nhiÒu kho¸ chØ ®Þnh, ng−êi sö dông
sÏ chän mét trong c¸c kho¸ chØ ®Þnh nµy dÓ t¹o chØ môc. Khi ®ã kho¸ chØ ®Þnh
nµy ®−îc gäi lµ kho¸ chÝnh (primary key), c¸c kho¸ cßn l¹i gäi lµ kho¸ t−¬ng
®−¬ng.
C¸c thuéc tÝnh tham gia vµo kho¸ ®−îc gäi lµ thuéc tÝnh kho¸ vµ khi liÖt kª
khãa trong 1 l−îc ®å quan hÖ sÏ ®−îc g¹ch d−íi, ng−îc l¹i lµ thuéc tÝnh kh«ng
kho¸.
Quy −íc : - Kho¸ kh«ng chøa gi¸ trÞ rçng.
- Kh«ng ®−îc phÐp söa ®æi gi¸ trÞ cña thuéc tÝnh kho¸.
• Gi¶i thuËt kiÓm tra khãa cña mét thÓ hiÖn T Q
Gi¶i thuËt : Satisfy_key (T Q, K)
Vµo : TQ vµ kho¸ K ⊂ Q+
Ra : §óng hoÆc sai
C¸c b−íc :
1. T'Q :={t(K)| t ∈ T Q }
2. Return Card(T Q )= card(T'Q ).
2.3.2 Sù chuyÓn hãa tõ s¬ ®å ER sang m« h×nh d÷ liÖu quan hÖ.
§Ó biÕn ®æi biÓu ®å ERD thµnh c¸c quan hÖ th× ta ph¶i x¸c ®Þnh c¸c lo¹i
quan hÖ. Cã 2 lo¹i quan hÖ : quan hÖ thùc thÓ vµ quan hÖ mèi liªn kÕt.

♦ X©y dùng quan hÖ thùc thÓ :

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 31

Mét tËp thùc thÓ E cã thÓ ®−îc biÓu diÔn bëi 1 quan hÖ mµ l−îc ®å quan
hÖ bao gåm tÊt c¶ c¸c thuéc tÝnh cña tËp thùc thÓ. Quan hÖ nµy lµ quan hÖ thùc
thÓ.
VÝ dô : TËp thùc thÓ kh¸ch hµng (Tªnkh, Dchi, Sodu) suy ra quan hÖ
thùc thÓ kh¸ch hµng gåm cã c¸c thuéc tÝnhtªnkh, chi, sodu.
* Chó ý : NÕu E lµ tËp thùc thÓ chuyªn biÖt hãa bëi tËp thùc thÓ F nµo
®ã th× l−îc ®å quan hÖ cña E cã chøa c¸c thuéc tÝnh cña F mµ chóng ®−îc dïng
lµm khãa.
VÝ dô :
F E
L−¬ng NV isa ng−êiqlý

Hätªn

Quan hÖ E (hätªn, ...)

F E
Nsinh ng−êi isa SV

Hätªn
SV (hätªn, n¨msinh ,...)
♦ X©y dùng quan hÖ liªn kÕt.
Mét mèi liªn kÕt R gi÷a c¸c tËp thùc thÓ E1, E2,...En ®−îc biÓu diÔn b»ng
quan hÖ mµ s¬ ®å quan hÖ bao gåm c¸c thuéc tÝnh dïng trong khãa cho mçi tËp
E1, E2, ..., En.
VÝ dô : Cho c¸c thùc thÓ:
Giaovien(MAGV,TENGV),
MonHoc(MAMON,TENMON,SOTIET)
Lop(MALOP,SISOLOP)
- Gi¸o viªn X d¹y m«n Y cho líp Z.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 32

hätªn Gi¸oviªn d¹y m«n häc tªn m«n

Magv líp

m·m«n
m·líp
sØsèlíp

Quan hÖ liªn kÕt D¹y cã l−îc ®å quan hÖ sau:


D¹y(MAGV,MAMON,MALOP)
C¸c kho¸ cña quan hÖ.
Quy t¾c x¸c ®Þnh khãa :
§Ó x¸c ®Þnh khãa cña 1 quan hÖ ta ph¶i dùa vµo ý nghÜa cña quan hÖ ®ã chø
kh«ng nªn dùa vµo minh häa cña quan hÖ. Tõ ý nghÜa cña c¸c quan hÖ thùc thÓ,
quan hÖ liªn kÕt mét-mét, nhiÒu-mét, nhiÒu-nhiÒu, ta rót ra ®−îc 1 sè nguyªn t¾c
sau :
• NÕu 1 quan hÖ ®−îc x¸c ®Þnh tõ 1 tËp thùc thÓ th× tËp c¸c thuéc tÝnh
khãa cña tËp thùc thÓ còng chÝnh lµ tËp c¸c thuéc tÝnh khãa cña quan hÖ.
• NÕu 1 quan hÖ ®−îc x¸c ®Þnh tõ 1 mèi liªn kÕt nhiÒu-nhiÒu th× khãa
dïng cho quan hÖ liªn kÕt lµ tÊt c¶ c¸c thuéc tÝnh cña nã.
VÝ dô : XÐt mèi quan hÖ:

MH l−utr÷ kho

Mamh Makho
l−utr÷ (m·mh,m·kho)

Magv GV gi¸otr×nh sèhiÖu

Thamkh¶o

m«nhäc Mamon

Tham kh¶o (m·gv,m·m«n,sèhiÖu)


• Khãa cña mèi liªn kÕt tõ quan hÖ mét-mét.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 33

NÕu 1 quan hÖ ®−îc x¸c ®Þnh tõ mèi liªn kÕt mét-mét gi÷a c¸c tËp thùc
thÓ E vµ F th× khãa dïng chung cho E vµ F lµ nh÷ng khãa dïng cho quan hÖ (1
trong 2 khãa ®ã lµ khãa)
VÝ dô : Gi÷a Qu¶nLý vµ BéPhËn.

ng−êiqlý qlý béphËn

hätªn tªnbéphËn
Qlý (hätªn , tªnbéphËn)

• Khãa cña mèi liªn kÕt nhiÒu-mét.


Mét quan hÖ ®−îc x¸c ®Þnh tõ mèi liªn kÕt nhiÒu- mét tõ c¸c tËp E1, E2,
..., Ek-1 vµo tËp Ek th× khãa cña quan hÖ lµ c¸c thuéc tÝnh khãa cña c¸c quan hÖ
thùc thÓ nhiÒu.

tªncc ng−êicc mÆthµng m·mh


cungcÊp

gi¸

CungcÊp (tªncc, m·mh, gi¸)


KÕt luËn : Khãa cña c¸c quan hÖ liªn kÕt lµ khãa cña c¸c quan hÖ thùc
thÓ nhiÒu.

♦ Tæ hîp c¸c quan hÖ cã khãa chung


Khi 2 quan hÖ cã chung 1 khãa vµ t©n tõ cã ý nghÜa cã thÓ g¾n liÒn víi
nhau th× ta cã thÓ tæ hîp c¸c thuéc tÝnh cña 2 quan hÖ nµy thµnh 1 quan hÖ cã tËp
c¸c thuéc tÝnh lµ hîp cña 2 tËp thuéc tÝnh cña 2 quan hÖ kia.
VÝ dô : Tinh chÕ l−îc ®å c¬ së d÷ liÖu Qu¶n lý Siªu thÞ:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 34

Quan hÖ thùc thÓ Quan hÖ liªn kÕt


Nh©nviªn (tªnnv, l−¬ng) lµmviÖc (tªnnv, tªnbéphËn)
Ng−êiqlý (tªnnv) qu¶nlý (tªnnv, m·béphËn)
BéphËn (tªnbéphËn, m·béphËn) bµyb¸n (m·béphËn, m·mh)
Ng−êicc (tªncc, ®ÞachØ) CungcÊp (m·mh, tªncc, gi¸)
MÆthµng (tªnmh, m·mh) cã (tªnkh, sèhiÖu)
§¬n®Æthµng (sèhiÖu, ngµy) Gåm (sèhiÖu, sèl−îng, m·mh)
Kh¸chhµng (tªnkh, ®ÞachØ, sèd−)
Qu¸ tr×nh tæ hîp c¸c l−îc ®å quan hÖ:
Ng−êiqlý (tªnnv) +Qlý (tªnnv, m·béphËn) => Qlý1 (tªnnv, m·béphËn)
Qlý1 (tªnnv, m·béphËn) + BéphËn (tªnbéphËn, m·béphËn)
=> QlýbéphËn (tªnbéphËn, m·béphËn, tªnnv) (1)
Nh©nviªn (tªnnv, l−¬ng) + LµmviÖc (tªnnv, tªnbéphËn)
=> Nh©nviªnlµmviÖc (tªnnv, tªnbéphËn. l−¬ng) (2)
MÆthµng (tªnmh, m·mh) + Bµy (m·béphËn, m·mh)
=> MÆthµngbµyb¸n (m·mh, tªnmh, m·béphËn) (3)
§¬n®Æthµng (sèhiÖu, ngµy) + §Æt (sèhiÖu, tªnkh)
=> §¬n®Æthµng (sèhiÖu, ngµy, tªnkh) (4)
C¸c l−îc ®å quan hÖ kh«ng thÓ tæ hîp ®−îc :
Ng−êicc (tªncc, ®ÞachØ) (5)
Kh¸chhµng (tªnkh, ®ÞachØ, sèd−) (6)
CungcÊp (tªncc, m·mh, gi¸) (7)
Chøa (m·mh, sèhiÖu, sèl−îng) (8)
2.3.3 C¸c phÐp to¸n ®¹i sè trong m« h×nh d÷ liÖu quan hÖ
2.3.3.1 C¸c phÐp to¸n ®¹i sè quan hÖ c¬ b¶n.
♦ To¸n h¹ng :
To¸n h¹ng cña c¸c phÐp to¸n ®¹i sè lµ h»ng hay lµ biÕn cã kiÓu quan hÖ
♦ C¸c phÐp to¸n :
PhÐp hîp, hiÖu, tÝch ®Ò c¸c, chiÕu vµ chän
• PhÐp hîp :
PhÐp hîp cña 2 quan hÖ R vµ S lµ tËp hîp c¸c bé thuéc K hoÆc thuéc S víi
®iÒu kiÖn R vµ S cã cïng bËc.
PhÐp hîp ®−îc ký hiÖu R U S = { t | t∈ R v t∈ S }
VÝ dô

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 35

R(A,B,C) U S (A,B,C) = RUS


a b c a b d a b c
a e f a e f a e f
c b d c b d
a b d
• PhÐp hiÖu :
PhÐp hiÖu cña 2 quan hÖ lµ tËp hîp c¸c bé thuéc R mµ kh«ng thuéc S víi
®iÒu kiÖn R vµ S cã cïng bËc.

VÝ dô: R -S = { t | t∈ R ∧ t∉ S}
a b c
c b d
• TÝch ®Ò c¸c :
Cho 2 quan hÖ R vµ S cã bËc K1 vµ K2, lµ tËp hîp tÊt c¶ c¸c bé K1 + k2
vµ k1 thµnh phÇn ®Çu tiªn thuéc R vµ K2 thµnh phÇn cuèi thuéc S.

R x S = Q(r1,r2,...,rk1,s1,s2, ...,sk2) ={ t | t(R+) ∈ R ∧ t(S+) ∈ S}


VÝ dô R xS =
a b c a b d
a b c a e f
a e f a b d
a e f a e f
c b d a b d
c b d a e f
• PhÐp chiÕu :
VÝ dô :
Masv Hosv Tªnsv QQ
001 NguyÔn Anh Sg
002 TrÇn B×nh Hn
003 Lª Cóc Sg
004 NguyÔn Minh Sg
005 Vò ThÞ §n

{Gi¶ sö ta chiÕu lªn QQ ⇒ Sg, Hn, §n}

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 36

Cho 1 quan hÖ cã bËc K, phÐp chiÕu cña R trªn c¸c thµnh phÇn (thuéc tÝnh)
y1, y2, ..., ym lµ tËp hîp c¸c bé m (a1, a2, ..., am) sao cho cã 1 bé b nµo ®ã cña
R lµ b(b1, b2,..., bk) mµ aj = bj (j ch¹y tõ 1 ®Õn m).
Ký hiÖu cã phÐp chiÕu cña R trªn c¸c thµnh phÇn i1, i2, ...im lµ
π i1, i2,..., im (R) = Q(i1, i2, ...,im) = {t(Q+)| t ∈ R}
VÝ dô : π A,B (R)
a b
a e
c b

• PhÐp chän lùa :


VÝ dô : Chän lùa c¸c sinh viªn cã quª qu¸n ë Sµi Gßn.
Víi l−îc ®å quan hÖ Sinhvien(Masv,hosv,tensv,quan)
σqquan = 'Sg' (Sinhvien)

001 NguyÔn Anh Sg


003 Lª Cóc Sg
004 NguyÔn Minh Sg
Cho 1 quan hÖ R, phÐp chän lùa trong quan hÖ R theo 1 c«ng thøc F lµ tËp
hîp c¸c bé µ trong R mµ c¸c thµnh phÇn cña bé nµy tho¶ ®−îc c«ng thøc F.
_ C«ng thøc F bao gåm :
• C¸c to¸n h¹ng lµ nh÷ng h»ng hoÆc sè hiÖu thµnh phÇn. Thµnh phÇn
thø i ®−îc ký hiÖu lµ $i.
• C¸c phÐp to¸n so s¸nh =, < >, >, <, <=. >=
• C¸c phÐp to¸n luËn lý and, not, or (∧, , ∨ )
• PhÐp chän lùa ®−îc ký hiÖu lµ σ F (R)
VÝ dô : σ $1 > $2 (R)
c b d
♦ C¸c phÐp to¸n kh¸c :

• PhÐp giao
Cho 2 quan hÖ R vµ S cã cïng bËc, phÐp giao R vµ S lµ c¸c bé võa thuéc R
vµ võa thuéc S.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 37

Ký hiÖu lµ R ∩ S = { t| t∈ R ∧ t∈S}
Ta cã ®Þnh nghÜa phÐp giao th«ng qua phÐp hiÖu : R ∩ S = R - (R - S)
VÝ dô : R ∩ S
a e f
• PhÐp chia
Cho 2 quan hÖ R vµ S cã bËc r vµ s vµ r > s, s ≠ 0. PhÐp chia R cho S ký
hiÖu R ÷S lµ tËp hîp c¸c bé r - s ( a1, a2,... ar -s ) sao cho ®èi víi tÊt c¶ bé s(ar -s +1,
... , ar) trong quan hÖ S th× tån t¹i bé r (a1, a2 ..., ar) ë trong R

VÝ dô : R(A, B, C, D) S (C, D)
a b c d c d
a b e f e f
b c e f
e d c d R÷S
e d e f a b
a b d e e d
§Ó tÝnh R ÷ S ta lµm nh− sau :
- T = π 1, 2, ..., r - s (R)
- TÝnh T x S - R
- TÝnh V = π 1, 2, r - s (T x S - R)
-R÷S=T-V
VÝ dô: T = π 1, 2, (R) TxS-R
a b b c c b
b c V= π 1, 2, r - s (T x S
e d - R) b c

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 38

TxS
a b c d
a b e f T-V
b c e d a b
b c e f e d
e d c d
e d e f
VÝ dô :
R (A, B) S(B)
1018 Cs30 Cs10
1050 Cs10 Cs20
1070 Cs10 Cs30
1050 Cs20
1070 Cs20
1021 Cs10 R÷S=T-V
1050 Cs30 1050
1021 Cs30 1070
1070 Cs30

T = π1 (R) TxS TxS-R


1080 1080 Cs10 1080 Cs10
1050 1080 Cs20 1080 Cs20
1070 1080 Cs30 1021 Cs30
1021 1050 Cs10
1050 Cs20
1050 Cs30
1070 Cs10
1070 Cs20
V = π1 (T x S - R)
1070 Cs30
1080 1021 Cs10
1021 1021 Cs20
1021 Cs10
ý nghÜa cña phÐp chia:
PhÐp chia ®−îc dïng ®Ó tr¶ lêi cho c©u truy vÊn th«ng tin “ ®Çy ®ñ “
VÝ dô 1 Cho hai l−îc ®å quan hÖ :
cungcÊp (tªncc, m·mh, gi¸)
MÆthµng (tªnmh, m·mh)
πtªncc (cungcÊp) → tªn ng−êi cung cÊp Ýt nhÊt 1 mÆt hµng.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 39

πm·mh (cungcÊp) → m· mÆt hµng cã Ýt nhÊt 1 ng−êi cung cÊp.


πm·mh (mÆthµng) → tÊt c¶ c¸c mÆt hµng.
CungcÊp ÷ πm·mh (mÆthµng) → tªn ng−êi cung cÊp tÊt c¶ c¸c mÆt hµng.
VÝ dô 2: Cho hai l−îc ®å quan hÖ :
M«n®¹t (m·sv, m·mh, ®iÓm).
M«nThiTN (m·mh, ...... ).
Cho biÕt sinh viªn tèt nghiÖp (víi ®iÒu kiÖn thi ®¹t hÕt c¸c m«n tèt
nghiÖp)?
π m·sv, m·mh (m«n®¹t) ÷ π m·mh (m«nthiTN)
• PhÐp kÕt nèi
PhÐp kÕt nèi R vµ S trªn c¸c thµnh phÇn i vµ j ®−îc ký hiÖu lµ :
R l><l S
iθj
trong ®ã θ lµ phÐp to¸n so s¸nh ®−îc ®Þnh nghÜa lµ
R l><l S = σ $10 $ (r + j) (R xS)
iθj
víi r lµ bËc quan hÖ cña R.
VÝ dô : R S
A B C D E
1 2 3 3 1
4 5 6 6 2
7 8 9
R l><l S
B<D A B C D E
1 2 3 3 1
1 2 3 6 2
4 5 6 6 2

• PhÐp kÕt nèi tù nhiªn


PhÐp kÕt nèi tù nhiÖn gi÷a 2 quan hÖ R vµ S ®−îc ký hiÖu lµ R l><l S
trong ®ã R vµ S cã1 c¸c thuéc tÝnh cïng tªn th× sÏ ®−îc tÝnh nh− sau.
- TÝnh R x S
- §èi víi c¸c thuéc tÝnh chung A1, A2, ..., Ak th× ta sÏ cã.
R l><l S = π i 1, i 2,...,im (σR x A1= S x A1 ∧ R x A2= S x A2 ∧_ R x Ak = S x Ak = S x Ak (R x S))
It ≠ S.Aj (t : 1 .. m ; j = 1 .. k)
VÝ dô :

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 40

A B C B C D
A b c b c g
E b c k e f
D e f e f k

RxS
A R.B R.C S.B S.C D
a b c b c g
a b c k e f
a b c e f k
e b c b c g
e b c k e f
e b c e f k
d e f b c g
d e f k e f
d e f e f k

R l><l S = σ R . B = S.. B ∧ R. C = S. C (R x S)

A B C D
a b c g
e b c g
d e f k

VÝ dô : Cho hai l−îc ®å quan hÖ:


phßngban (m·pb, tªnpb)
Qu¶nlý (tªnng−êi, m·pb)
Tªn ng−êi tr−ëng phßng qu¶n lý phßng nµo vµ m· ?
Phßngban l><l qu¶nlý
Tªn ng−êi qu¶n lý khoa 'CNTT'
πtªnng−êi (σm·ph = 'CNTT' (phßngban l><l qu¶nlý))
VÝ dô: Cho hai l−îc ®å sau:
sinhviªn (m·sv, häsv, tªnsv,...)
®¨ngký (m·sv, m·mh)
Cho biÕt hä tªn sinh viªn ®¨ng ký m«n 'CSDL'
πhäsv, tªnsv (σm·mh = 'CSDL' (sinhviªn l><l ®¨ngký))
kÕt qu¶ (m·mh, m·sv, ®iÓm,...)
sinhviªn (m·sv, häsv, tªnsv,...)
m«nhäc (tªnmh, m·mh)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 41

Cho biÕt c¸c sinh viªn ®· thi ®Ëu m«n ‘NNLT’ ?


C¸ch 1: σtªnmh = 'NNLT' (m«nhäc)
S = σ®iÓm >= 5 (kÕtqu¶ l><l σtªnmh = 'NNLT' (m«nhäc)
πhäsv, tªnsv (sinhviªn l><l S)
C¸ch 2: πhäsv, tªnsv (σtªnmh = 'NNLT' ∧ ®iÓm >= 5 ((sinhviªn l><l kÕtqu¶) l><l
m«mhäc))
• PhÐp n÷a kÕt nèi
PhÐp n÷a kÕt lµ phÐp kÕt nèi tù nhiªn nh−ng chØ chiÕu trªn c¸c thuéc tÝnh
cña R: R l>< S = πR (R l><l S)

• NhËn xÐt :
§¹i sè quan hÖ lµ 1 ng«n ng÷ hái ta cã thÓ sö dông c¸c phÐp to¸n cña ®¹i sè
quan hÖ ®Ó tr¶ lêi 1 sè c©u hái.
VÝ dô : Ta cã quan hÖ cung cÊp trong m« h×nh siªu thÞ
cungcÊp(tªncc,m·mh, gi¸). Cho biÕt c¸c mÆt hµng vµ gi¸ cña ng−êi cung cÊp cã
tªn lµ ‘ABC’
πtªnmh, gi¸ (σtªncc = 'ABC' (cungcÊp))
H·y cho biÕt tªn c¸c mÆt hµng cã ng−êi cung cÊp
πtªnmh (cungcÊp)
2.2.4 ThiÕt kÕ c¬ së d÷ liÖu quan hÖ
§Ó thiÕt kÕ c¬ së d÷ liÖu, ta tiÕn hµnh theo c¸c b−íc sau :
• X¸c ®Þnh c¸c tËp thùc thÓ vµ c¸c mèi liªn kÕt gi÷a c¸c tËp thùc thÓ
®Ó tõ ®ã x©y dùng s¬ ®å ER
• BiÕn ®æi s¬ ®å ER thµnh c¸c quan hÖ dù tuyÓn
• ChuÈn hãa c¸c quan hÖ dù tuyÓn
2.2.4.1 X¸c ®Þnh c¸c tËp thùc thÓ vµ c¸c mèi liªn kÕt

• X¸c ®Þnh c¸c tËp thùc thÓ :


Ta cã 1 sè gîi ý sau :
- NÕu cã th«ng tin m« t¶ 1 ®èi t−îng th× ®èi t−îng nµy ®−îc xem nh− 1 thùc
thÓ.
VÝ dô : §Ó m« t¶ 1 thµnh phè ng−êi ta cã c¸c thuéc tÝnh nh− d©n sè, sè
quËn huyÖn, tªn thµnh phè. Tõ ®ã ta xem thµnh phè nh− 1 thùc thÓ

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 42

- NÕu cã nhiÒu h¬n 1 gi¸ trÞ 1 thuéc tÝnh m« t¶ t−¬ng øng víi 1 gi¸ trÞ cña
danh hiÖu th× thuéc tÝnh m« t¶ nµy nªn ®−îc xem lµ thùc thÓ
VÝ dô : kÝch th−íc gåm cã chiÒu cao, réng... cña c¨n nhµ nªn ta coi kÝch
th−íc nh− 1 thùc thÓ.
Trong c¸c thuéc tÝnh th× cã 2 lo¹i thuéc tÝnh:
• Thuéc tÝnh m« t¶
• Thuéc tÝnh danh hiÖu (khãa)
- NÕu 1 thuéc tÝnh m« t¶ cña 1 thùc thÓ cã mèi liªn kÕt nhiÒu-mét víi thùc
thÓ kh¸c th× nªn xem thuéc tÝnh m« t¶ nµy lµ 1 thùc thÓ
VÝ dô : Ta cã tËp thùc thÓ : kho (m·kho, tªnthµnhphè, tiÓubang (sètb)
Kho tiÓu bang
M· kho T - phè M·TB
001 HCM Nam
002 CT Trung
003 HUE B¾c
004 §N

V× vËy ta t¸ch thµnh phè thµnh 1 tËp thùc thÓ

Kho Thµnh phè TiÓu bang

- Nªn g¸n c¸c thuéc tÝnh cho tËp thùc thÓ mµ chóng m« t¶ trùc tiÕp nhÊt
VÝ dô : Ta cã 2 tËp thùc thÓ lµ c«ng nh©n vµ phßng ban, (th× ng−êi qu¶n lý
n»m trong phßng ban)
- Nªn tr¸nh c¸c khãa tæ hîp trong c¸c tËp thùc thÓ.
• X©y dùng c¸c mèi liªn kÕt :
- Nªn lo¹i bá c¸c mèi liªn kÕt d− thøa th−êng x¶y ra khi ta dïng mèi liªn
kÕt b¾c cÇu.
VÝ dô : Ta cã 3 tËp thùc thÓ SV, líp, tr−êng

SV líp

D− tr−êng

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 43

- H¹n chÕ sö dông mèi liªn kÕt 3


VÝ dô : mét sinh viªn cã thÓ tham gia nhiÒu ®Ò ¸n vµ 1 gi¶ng viªn cã thÓ
h−íng dÉn nhiÒu sinh viªn ë bÊt kú ®Ò ¸n nµo.

GV SV §Ò ¸n

Mçi sinh viªn cã thÓ tham gia ®Ò ¸n vµ cã nhiÒu gi¸o viªn h−íng dÉn nh−ng
ë 1 ®Ò ¸n mµ sinh viªn tham gia chØ cã 1 gi¸o viªn h−íng dÉn.

GV SV

§Ò ¸n

- Ta chØ nªn x©y dùng 3 lo¹i mèi liªn kÕt.


Liªn kÕt 1 ng«i
Liªn kÕt 2 ng«i
Liªn kÕt 3 ng«i
• Liªn kÕt 1 ng«i :
VÝ dô : Mçi ng−êi tËp sù chØ cã 1 ng−êi tËp sù kh¸c lµ céng sù viªn cña
m×nh trong c«ng viÖc
Ng−êi tËp sù

VÝ dô : mäi ®Ò ¸n ®Òu cã sù liªn hÖ víi nhau

§Ò ¸n

• Mèi liªn kÕt 2 ng«i


VÝ dô : mét ng−êi tËp sù chØ cã 1 h−íng dÉn viªn vµ h−íng dÉn viªn chØ
h−íng dÉn 1 ng−êi tËp sù

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 44

Ng−êi tËp sù H−íng dÉn viªn

• Mèi liªn kÕt 3 ngéi : d−îc thiÕt lËp khi ph¶i cÇn 2 thùc thÓ míi suy ra
®−îc thùc thÓ cßn l¹i.
VÝ dô : Mét kü s− chØ sö dông I sè s¸ch cho 1 ®Ò ¸n. C¸c kü s− kh¸c nhau
sö dông c¸c s¸ch kh¸c nhau cho cïng 1 ®Ò ¸n. Kh«ng kü s− nµo sö dông cïng 1
s¸ch cho c¸c ®Ò ¸n kh¸c nhau.

Kü s−

S¸ch §Ò ¸n

M« h×nh 1
- C¸c nh©n viªn cã thÓ tham gia nhiÒu ®Ò ¸n nh−ng chØ cã thÓ tham gia
nhiÒu nhÊt vµo 1 ®Ò ¸n ë vÞ trÝ ®· cho.

Nh©n viªn

VÞ trÝ §Ò ¸n

M« h×nh 2
- Ng−êi tËp sù lµm viÖc trong c¸c ®Ò ¸n d−íi sù chØ dÉn cña ng−êi h−íng
dÉn. Mét ng−êi h−íng dÉn chØ cã thÓ h−íng dÉn nhiÒu nhÊt 1 ®Ò ¸n cho 1 ng−êi
tËp sù nµo ®ã. Mét ng−êi tËp sù tham gia vµo 1 ®Ò ¸n nµo ®ã d−íi sù chØ dÉn cña
nhiÒu nhÊt 1 ng−êi h−íng dÉn.

TËp sù

H−íng dÉn §Ò ¸n

M« h×nh 3

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 45

- C¸c kü s− sö dông c¸c kü n¨ng cho mçi ®Ò ¸n mµ hä tham gia

Kü s−

Kü n¨ng §Ò ¸n

M« h×nh 4
2.2.4.2 X©y dùng c¸c quan hÖ dù tuyÓn tõ m« h×nh ER
- BiÕn ®æi quan hÖ thùc thÓ thµnh mèi liªn kÕt thùc thÓ víi khãa cña quan
hÖ thùc thÓ còng chÝnh lµ khãa.
- BiÕn ®æi mèi liªn kÕt thµnh quan hÖ liªn kÕt.
+ NÕu lµ mèi liªn kÕt 1-1 th× khãa cña quan hÖ liªn kÕt nµy sÏ lµ 1 trong 2
khãa cña 2 hoÆc 3 tËp thùc thÓ tham gia vµo mèi liªn kÕt.
+ NÕu lµ mèi liªn kÕt nhiÒu-1 th× quan hÖ cña liªn kÕt nµy cã khãa lµ khãa
cña tËp thùc thÓ phÝa nhiÒu.
+ NÕu lµ mèi liªn kÕt nhiÒu-nhiÒu th× khãa cña quan hÖ nµy sÏ lµ tÊt c¶ c¸c
khãa cña c¸c ®èi t−îng tËp thùc thÓ.
Chó ý : Trong mèi liªn kÕt 3 ng«i v× ph¶i cã 2 ®èi t−îng ®Ó x¸c ®Þnh ®èi
t−îng cßn l¹i do ®ã cÇn ph¶i cã 2 khãa cña 2 ®èi t−îng nµy ®Ó suy ra ®èi t−îng
cßn l¹i.
VÝ dô : Theo m« h×nh sè 1 ta cã :
Küs− (m·ks, ...)
S¸ch (m·s¸ch, ...)
§Ò¸n (sè®Ò¸n, ...)
Thamgia(m·ks, m·s¸ch, sè®Ò¸n)

- Theo m« h×nh 2 ta cã :
Nh©nviªn (m·nv, ...)
VÞtrÝ (m·pb, ...)
§Ò¸n (sè®Ò¸n, ...)
Thamgia (m·nv, m·pb, sè®Ò¸n)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu Trang 46

- Theo m« h×nh sè 3
TËpsù (m·ts, ...)
H−íngdÉn (m·nv....)
§Ò¸n (sè®Ò¸n, ...)
Thamgia (m·nv, m·ts , sè®Ò¸n)
- Theo m« h×nh sè 4

⇒ Thamgia (m·ks, m·kn, sè®Ò¸n)


2.2.4.3 ChuÈn hãa c¸c quan hÖ :
ChuÈn hãa quan hÖ lµ tiÕn hµnh kiÓm tra vµ xö lý sao cho c¸c l−îc ®å quan
hÖ ®Òu ®¹t tèi thiÓu ë d¹ng chuÈn 3. PhÇn nµy sÏ ®−îc nghiªn cøu ë ch−¬ng 5.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 47

Ch−¬ng 3 Ng«n Ng÷ SQL

3.1 Giíi thiÖu


Ng«n ng÷ SQL (Structured Query Language) ®−îc ph¸t triÓn tõ ng«n ng÷
SEQUEL (Structured English Query Language) lµ s¶n phÈm cña nhãm nghiªn
cøu t¹i trung t©m nghiªn cøu cña IBM t¹i San Jose, California, USA. Ngay sau
khi ra ®êi vµo nh÷ng n¨m ®Çu cña thËp niªn 70, ng«n ng÷ nµy ®−îc øng dông
réng r·i vµ nhanh chãng trë thµnh ng«n ng÷ chuÈn trong l·nh vùc khai th¸c c¬ së
d÷ liÖu quan hÖ trªn m¸y lín còng nh− trªn m¸y vi tÝnh sau nµy. HiÖn nay, hÇu
hÕt c¸c hÖ qu¶n trÞ c¬ së d÷ liÖu ®Òu cã ng«n ng÷ SQL.
Ng«n ng÷ SQL lµ mét ng«n ng÷ truy vÊn dùa trªn ®¹i sè quan hÖ vµ lµ ng«n
ng÷ phi thñ tôc. Ng«n ng÷ SQL ®−îc chia thµnh c¸c phÇn sau:
• Ng«n ng÷ ®Þnh nghÜa d÷ liÖu (Data Definition Language DDL):
Cung cÊp c¸c lÖnh ®Þnh nghÜa l−îc ®å quan hÖ, xãa quan hÖ, t¹o chØ môc
thay ®æi l−îc ®å quan hÖ, t¹o khung nh×n (view)
• Ng«n ng÷ thao t¸c d÷ liÖu (Data Manipulation Language DML):
gåm ng«n ng÷ truy vÊn dùa trªn ®¹i sè quan hÖ vµ c¸c lÖnh thªm, xo¸, söa
c¸c bé trong c¬ së d÷ liÖu.
• Ng«n ng÷ thao t¸c d÷ liÖu ®−îc nhóng (Embedded Data
Manipulation Language): D¹ng nhóng cña ng«n ng÷ SQL trong c¸c ng«n
ng÷ lËp tr×nh nh− Pascal, C, Cobol, Fortran ...
• Ng«n ng÷ ®iÒu khiÓn d÷ liÖu (Data Control Language DCL) chøa
c¸c lÖnh b¾t ®Çu, kÕt thóc, phôc håi giao t¸c vµ kho¸ d÷ liÖu cho viÖc truy
xuÊt ®ång thêi.
• Rµng buéc toµn vÑn (Integrity Constrainst) vµ ph©n quyÒn
(Authorization) chøa c¸c lÖnh ®Æc t¶ c¸c rµng buéc toµn vÑn vµ c¸c lÖnh
ph©n quyÒn truy xuÊt c¸c quan hÖ vµ c¸c khung nh×n.
3.2 Ng«n ng÷ ®Þnh nghÜa d÷ liÖu (Data Definition Language DDL)
3.2.1 T¹o cÊu tróc b¶ng
Có ph¸p: CREATE TABLE < tªn_b¶ng>
( <Thuéc tÝnh > <KiÓu> [<KÝch th−íc>][NOT NULL], ...
PRIMARY KEY (<kho¸ chÝnh>)
[UNIQUE (<kho¸>), ...]
[FOREIGN KEY (<kho¸ ngo¹i>) REFERENCE
REFERENCE <tªn_b¶ng> ,...]
[ CHECK <®iÒu kiÖn rµng buéc>, ...]
)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 48

C¸c kiÓu d÷ liÖu:


char(n) : KiÓu chuçi ký tù gåm n ký tù
smallint : KiÓu sè nguyªn 1 byte
integer: KiÓu sè nguyªn 2 bytes
decimal(n,t): KiÓu sè thùc cã n ch÷ sè víi t ch÷ sè thËp ph©n.
real: KiÓu thùc dÊu chÊm ®éng
date: kiÓu ngµy d−¬ng lÞch
boolean: KiÓu luËn lý (§óng, Sai)
C¸c tõ kho¸:
NOT NULL: thuéc tÝnh kh«ng lÊy gi¸ trÞ rçng
PRIMARY KEY (<kho¸ chÝnh>): Khai b¸o kho¸ chÝnh cña b¶ng
UNIQUE KEY (<kho¸>) : Khai b¸o c¸c kho¸ chØ ®Þnh kh¸c.
FOREIGN KEY (<kho¸ ngo¹i>) : Khai b¸o c¸c kho¸ ngo¹i cña b¶ng
CHECK <®iÒu kiÖn rµng buéc> : M« t¶ c¸c rµng buéc kh¸c.
VÝ dô : T¹o lËp quan hÖ cung cÊp(Tªncc,Mamh,gia)
Create Table cungcÊp
(Tencc char (30) FOREIGN KEY REFERENCE NguoiCC,
Mamh char (5) FOREIGN KEY REFERENCE mathang,
Gia Num (7) NOT NULL,
PRIMARY KEY (tencc,mamh),
CHECK gia >0
)
3.2.2 Thay ®æi cÊu tróc b¶ng
Có ph¸p: ALTER TABLE <tªn_b¶ng>
ADD <thuéc tÝnh > <kiÓu> [(<kÝch th−íc>)][NOT NULL],...
DROP
DROP <thuéc tÝnh>, ...

VÝ dô : Thªm thuéc tÝnh NGAYGH , SOCMND vµo b¶ng cungcÊp


ALTER TABLE cungcÊp
ADD ngaggh date not null, socmnd char(9) not null
VÝ dô: Lo¹i bá thuéc tÝnh SOCMND
ALTER TABLE cungcÊp
DROP socmnd
Chó ý: Thao t¸c hñy lµ kh«ng hîp lÖ nÕu thuéc tÝnh bÞ hñy lµ thuéc tÝnh
kho¸.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 49

3.2.3 Hñy bá mét b¶ng


Có ph¸p: DROP TABLE <b¶ng>
VÝ dô DROP TABLE cungcÊp
3.2.4. T¹o khung nh×n (view)
Có ph¸p: CREATE VIEW <tªn_khung_nh×n> [<thuéc tÝnh>,...}
AS [<tªn_b¶ng>] | [<c©u truy vÊn Select ...>]
VÝ dô Danh s¸ch tªn nhµ cung cÊp c¸c mÆt hµng
CREATE VIEW danhsachcc
AS SELECT tencc, tªnmh
FROM cungcap , mathang
WHERE cungcap.mamh = mathang.mamh
3.2.5 Xo¸ khung nh×n
Có ph¸p: DROP VIEW <tªn_khung_nh×n>
VÝ dô: Xo¸ khung nh×n danhsachcc
DROP VIEW danhsachcc

3.3 Ng«n ng÷ thao t¸c d÷ liÖu (Data Manupilation Language DML)
3.3.1 Thªm bé míi vµo quan hÖ
Có ph¸p: INSERT INTO <tªn_b¶ng>
VALUES (V1, V2, ..., Vn)
V1, V2 ,... Vn : lµ c¸c gi¸ trÞ cña c¸c thuéc tÝnh t−¬ng øng ®−îc ®−a vµo
b¶ng.
VÝ dô : Thªm 1 bé míi vµo quan hÖ cung cÊp cã tªn ng−êi cung cÊp =
'NguyÔn Mai Chi’
INSERT into cungcÊp
VALUES ('NguyÔn mai chi', '007',10)
3.3.2 CËp nhËt:
Có ph¸p: UPDATE <tªn_b¶ng>
SET A1 = V1, A2 = V2, ..., An = Vn
[WHERE §K]
Thuéc tÝnh Ai cã gi¸ trÞ Vi

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 50

VÝ dô : T¨ng gi¸ cña c¸c mÆt hµng lªn 10%


UPDATE cungcÊp
SET gi¸ = gi¸ + gi¸.10%
VÝ dô : Gi¸ b¸n c¸c mÆt hµng cña «ng NguyÔn Minh TuÊn gi¶m 5%
UPDATE cungcÊp
SET gi¸ = gi¸ - gi¸.5%
Where tªncc = 'NguyÔn Minh TuÊn'
3.3.3 Hñy bá c¸c bé:
Có ph¸p: DELETE From <tªn_b¶ng>
[WHERE §K]
VÝ dô : Hñy bá tÊt c¶ c¸c bé mµ «ng NguyÔn Minh TuÊn cung cÊp
DELETE From cungcÊp
WHERE tªncc = 'NguyÔn Minh TuÊn'
Chó ý: NÕu kh«ng cã ®iÒu kiÖn th× sÏ xo¸ toµn bé c¸c bé
3.3.4 Ph¸t biÓu truy vÊn SELECT
• Có ph¸p:
SELECT Ri1.A1 [, Ri2 .A2, ..., Rik.An]
FROM R1[, R2, ..., Rn]
[WHERE §K]
[ORDER BY <thuéc tÝnh >,...]
[INTO TABLE <tªn_b¶ng míi]
[GROUP BY <thuéc tÝnh>,... [HAVING <§K>]]
⇔ π Ri1. A1, Ri2. A2 , ..., Rik .An(σ§k (R1 x R2 x ... x Rn ))
VÝ dô 1 : H·y cho biÕt tªn kh¸ch hµng cã sè d− ©m.
Select tªnkh
From kh¸chhµng
Where sèd− < 0
⇔ πtªnkh (σ
σ sèd− < 0 (kh¸chhµng))
VÝ dô 2 : H·y cho biÕt tÊt c¶ th«ng tin cña nh÷ng kh¸ch hµng cßn sè d−.
Select tªnkh, ®ÞachØ, sèd− // or *
From kh¸chhµng
Where sèd− < 0
⇔ πtªnkh, ®ÞachØ, sèd− (σ
σ sèd− < 0 (kh¸chhµng))
VÝ dô 3 : H·y cho biÕt tªn ng−êi cung cÊp b¸n mÆt hµng coca-cola

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 51

Select tªnNCC
From cungcÊp, bµymÆthµng
Where bµymÆthµng.tªnmh = 'coca-cola' and
BµymÆthµng. m·mh = cungcÊp. m·mh
⇔ πtªnNCC (σ
σbµymÆthµng, tªnmh = 'coca-cola' .and (cungcÊp x bµymÆthµng))
bµymÆthµng, m¶mh = cungcÊp, m·m

VÝ dô 4 : H·y cho biÕt tªn vµ ®Þa chØ cña ng−êi cung cÊp mÆt hµng coca-
cola.
Select nguoi.CCtªnNCC, ®ÞachØ
From cungcÊp, bµymÆthµng, ng−êiCC
Where bµymÆthµng.m·mh = cungcÊp.m·mh and
CungcÊp.tªnNCC = ng−êiCC.tªnCC and
Tenmh= ‘Coca-cola’
⇔ π tªnNCC, ®ÞachØ(σbµymÆthµng, m·mh =cungcÊp, m·mh, and cungcÊp, tªnNCC = ng−êiCC, tªnNCC.
(cungcÊp x bµymÆthµng x ng−êiCC))
VÝ dô 5 : H·y cho biÕt tªn cña ng−êi cung cÊp mÆt hµng ®−îc ®Æt mua bëi
kh¸ch hµng NguyÔn Minh TuÊn.
Select DISTINCT TªnNCC
From cungcÊp, ®¬n®Æthµng, chøa
Where tªnKH = 'NguyÔn Minh TuÊn' .and.
§¬n®Æthµng.sèhiÖu = chøa. sèhiÖu and
cunggcap.mamh =chua.mamh
⇔ πtªnNCC, ®ÞachØ (σ
σ tªnKH = 'NguyÔn Minh TuÊn' .and ®¬n®Æthµng, sèhiÖu = chøa, sèhiÖu ,and chøa,
n·mh = cungcÊp, m·mh (cungcÊp x ®¬n®Æthµng x chøa))

Chó ý : §Ó chØ xuÊt 1 bé trong c¸c bé gièng nhau ta dïng tõ khãa


'DISTINCT'

• BiÕn kiÓu bé :
BiÕn kiÓu bé lµ 1 biÕn mµ gi¸ trÞ cña nã lµ 1 bé cña quan hÖ, vËy biÕn cña
bé thùc chÊt lµ 1 biÕn Record.
C¸ch ®Æt biÕn kiÓu bé cho 1 quan hÖ.
From QhÖ 1 Q1 , QhÖ 2 Q2
C¸ch sö dông gièng nh− 1 biÕn cña Record
VÝ dô : QhÖ ( hä, tªn, ®ÞachØ, ngµysinh) Q1
Truy xuÊt Q1.Hä ; Q1.Tªn; Q1.Ngµysinh

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 52

øng dông:
- §Ó thay thÕ tªn quan hÖ
- So s¸nh c¸c bé trong cïng 1 quan hÖ.
VÝ dô : H·y cho biÕt tªn vµ ®Þa chØ cña kh¸ch hµng cã sè d− nhá h¬n sè d−
cña kh¸ch hµng NguyÔn Minh TuÊn.
Select K2.tªnKH, K2.®ÞachØ, K2.sèd−
From kh¸chhµng K1, kh¸chhµng K2
Where K1.tªnKH = 'NguyÔn Minh TuÊn'
And K1.sèd− > K2.sèd−
• So trïng mÉu :
Mét sè ký tù ®Æc biÖt dïng ®Ó so trïng mÉu.
% : bÊt ký chuçi ký tù nµo còng ®−îc
_ : bÊt kú ký tù nµo còng ®−îc.
- C¸ch sö dông :

Where biÕn ký tù 'chuçi so trïng'


LIKE 'chuçi trïng'
VÝ dô : H·y cho biÕt tªn c¸c mÆt hµng ®−îc b¸n cã tªn b¾t ®Çu b»ng ch÷ E
Select tªnmh
From mÆthµng
Where tªnmh like 'E%'
VÝ dô : H·y cho biÕt toµn bé c¸c th«ng tin vÒ ®¬n ®Æt hµng cã sè hiÖu tõ
1000 ->1999
Select *
From ®¬n®Æthµng
Where sèhiÖu like '1_ _ _'
• C¸c phÐp to¸n trong mÖnh ®Ò WHERE:
Trong mÖnh ®Ò WHERE th× cã c¸c phÐp so s¸nh
Trong mÖnh ®Ò WHERE cã thÓ chøa c¶ ph¸t biÓu SELECT, FROM,
WHERE.
KÕt qu¶ cña lÖnh SELECT lµ 1 quan hÖ do ®ã mÖnh ®Ò WHERE
chøa lÖnh Select, From, Where ph¶i cã c¸c phÐp to¸n trªn quan hÖ
IN ⊆
NOT IN ∉
ANY ∃
ALL ∀
[NOT] EXIST ∃phÇn tö trong tËp

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 53

VÝ dô : H·y cho biÕt tªn ng−êi cung cÊp c¸c mÆt hµng ®−îc ®Æt mua bëi
«ng NguyÔn Minh TuÊn.
CungcÊp (tªncc, m·mh, gi¸)
§¬n®Æthµng (sèhiÖu, tªnkh, ngµy)
Chøa (m·mh, sèhiÖu, sèl−îng)
Select tªncc
From cungcÊp
Where m·mh in ( select m·mh
From chøa
Where sèhiÖu in (Select sèhiÖu
From ®¬n®Æthµng
Where tªnkh = 'NguyÔn Minh TuÊn'))
VÝ dô : H·y cho biÕt tªn vµ ®Þa chØ cña kh¸ch hµng cã sè d− lín h¬n sè d−
cña kh¸ch hµng ' NguyÔn Minh TuÊn'
Select tªnkh, ®ÞachØ
From kh¸chhµng
Where sèd− > ALL (Select sèd−
From kh¸chhµng
Where tªnkh = 'NguyÔn Minh TuÊn'
VÝ dô : H·y cho biÕt tªn mÆt hµng ®−îc b¸n víi gi¸ cao nhÊt
Select tªnmh
From mÆthµng MH, cungcÊp CC
Where gi¸ > = ALL ( Select gi¸
From cungcÊp)
And CC.m·mh = MH.m·mh
VÝ dô: H·y cho biÕt c¸c mÆt hµng cã gi¸ do «ng NguyÔn Minh TuÊn cung
cÊp.
Select mamh, tenmh
From mathang
Where Exist( Select mamh
From cungcap
Where tencc= ‘NguyÔn Minh TuÊn’)
• C¸c hµm dïng trong SELECT
AVG ( ) Gi¸ trÞ trung b×nh
COUNT ( ) §Õm sè bé
MAX ( ) Gi¸ trÞ lín nhÊt
MIN ( ) Gi¸ trÞ nhá nhÊt

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 54

SUM ( ) Tæng gi¸ trÞ


VÝ dô : H·y cho biÕt sè d− trung b×nh cña kh¸ch hµng
Select AVG (sèd−)
From kh¸chhµng

VÝ dô : Cho biÕt cã bao mhiªu ng−êi cung cÊp mÆt hµng.


Select COUNT (DISTINCT (TENCC))
From cungcÊp
VÝ dô : H·y cho biÕt cã bao nhiªu ng−êi cung cÊp mÆt hµng coca-cola.
Select COUNT (tªncc)
From cungcÊp, mÆthµng
Where tªnmh = 'coca-cola'
And cungcÊp.m·mh = mÆthµng.m·mh
• Ph©n nhãm cña SELECT
Group by A1, A2, ..., Ak
Having §K
Ghi sau lÖnh WHERE dïng ®Ó gåm nhãm theo c¸c thuéc tÝnh A1, A2,..., Ak
VÝ dô : H·y cho biÕt tªn c¸c mÆt hµng vµ ®¬n gi¸ b¸n trung b×nh
Select tªnmh, AVG (gi¸)
From mÆthµng MH, cungcÊp CC
Where CC.m·mh = MH. m·mh
Group by tªnmh
VÝ dô : H·y cho biÕt tªn c¸c mÆt hµng, ®¬n gi¸ b¸n trung b×nh vµ ®iÒu kiÖn
nh÷ng mÆt hµng nµy cã nhiÒu h¬n 1 ng−êi cung cÊp
Select tªnmh, AVG (gi¸)
From mÆthµng MH, cungcÊp CC
Where CC.m·mh = MH.m·mh
Group by tªnmh Having Count (*) > 1
VÝ dô : H·y cho biÕt tªn c¸c mÆt hµng, ®¬n gi¸ b¸n trung b×nh vµ ®iÒu kiÖn
mÆt hµng cã 2 ®¬n gi¸ kh¸c nhau trë lªn:
Select tªnmh, AVG (gi¸)
From mÆthµng MH, cungcÊp CC
Where CC.m·mh = MH.m·mh
Group by tªnmh Having Count (DISTINCT gi¸) > 1

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 55

• ChuyÓn kÕt qu¶ vµo mét b¶ng :


INTO TABLE <tªn_b¶ng>
VÝ dô: L−u l¹i danh s¸ch c¸c mÆt hµng víi ®¬n gi¸ trung b×nh vµo b¶ng
MH_TRUNGBINH
Select tªnmh, AVG (gi¸)
From mÆthµng MH, cungcÊp CC
Where CC.m·mh = MH. m·mh
Group by tªnmh
Into Table MH_TRUNGBINH
• S¾p xÕp d÷ liÖu xuÊt
ORDER BY <thuéc tÝnh>[, ...]
VÝ dô: H·y cho biÕt tªn c¸c mÆt hµng vµ ®¬n gi¸ b¸n trung b×nh theo thø tù
tªn mÆt hµng.
Select tªnmh, AVG (gi¸)
From mÆthµng MH, cungcÊp CC
Where CC.m·mh = MH.m·mh
Group by tªnmh Order by tªnmh
• C¸c phÐp to¸n trªn tËp hîp
C¸c phÐp to¸n trªn tËp hîp gåm cã phÐp héi UNION, phÐp giao
INTERSECT, phÐp hiÖu MINUS
Có ph¸p :
Ph¸t biÓu SELECT 1 <phÐp to¸n trªn tËp hîp> Ph¸t biÓu SELECT 2
víi ®iÒu kiÖn c¸c ph¸t biÓu select ph¶i cïng d¹ng kÕt xuÊt.
VÝ dô Select Tenmh
From Mathang mh, cungcap cc
Where mh.mamh=cc.mamh and gia=10.000
Intersect Select Tenmh
From Mathang mh, cungcap cc
Where mh.mamh=cc.mamh and gia=20.000

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 56

3.4 Nhóng ng«n ng÷ SQL trong ng«n ng÷ chñ


§Ó nhËn d¹ng ng«n ng÷ SQL ®−îc nhóng trong ng«n ng÷ chñ ng−êi ta dïng
ph¸t biÓu tiÒn xö lý sau:
EXEC SQL < khèi lÖnh SQL ®−îc nhóng> END EXEC
Khèi lÖnh SQL ®−îc nhóng cã d¹ng nh− sau:
EXEC SQL
[DECLARE <tªn_cursor> CURSOR FOR
<ng«n ng÷ thao t¸c d÷ liÖu>]
[OPEN <tªn_cursor>]
<tªn_cursor>]
[FETCH <tªn_cursor> INTO :<tªn_biªn cña ng«n ng÷ chñ>[,...] ]
[CLOSE <tªn_cursor> ]
END EXEC
Ph¸t biÓu DECLARE CURSOR dïng ®Ó khai b¸o mét c©u lÖnh DML, nã
ch−a ®−îc thùc thi ngay. KÕt qu¶ cña c©u lÖnh sÏ ®¹t ®−îc khi dïng lÖnh OPEN
hay FETCH.
BiÕn cursor cña truy vÊn ®−îc dïng ®Ó nhËn d¹ng c©u truy vÊn nµo khi
dïng ph¸t biÓu OPEN ®Ó thùc thi c©u truy vÊn.
VÝ dô EXEC SQL
DECLARE c CURSOR FOR
SELECT tencc,tenmh
FROM cungcap cc, mathang mh
WHERE cc.mamh=mh.mamh and gia > :giamh
END EXEC
§Ó thùc thi ph¸t biÓu trªn, ta dïng lÖnh OPEN
EXEC SQL OPEN c ENDEXEC
§Ó chuyÓn kÕt qu¶ mét bé vµo biÕn ng«n ng÷ chñ ncc, nmh:
EXEC SQL FETCH c INTO :ncc, :nmh END EXEC
§Ó ®ãng c©u truy vÊn: EXEC SQL CLOSE c END EXEC

3.5 Ng«n ng÷ ®iÒu khiÓn d÷ liÖu (Data


(Data Control Language)
Ng«n ng÷ ®iÒu khiÓn d÷ liÖu chøa c¸c lÖnh ®Ó ®iÒu khiÓn giao t¸c vµ kho¸
d÷ liÖu.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 3 Ng«n Ng÷ SQL Trang 57

C¸c lÖnh ®iÒu khiÓn giao t¸c :


COMMIT [work]
SAVE POINT <tªn_®iÓm>
ROLLBACK [work] TO <tªn ®iÓm>

• COMMIT [work]
Cã chøc n¨ng:
- T¹o c¸c thay ®æi cña giao t¸c hiÖn hµnh
- Xo¸ tÊt c¶ c¸c ®iÓm dõng kiÓm tra
- KÕt thóc giao t¸c
• SAVE POINT <tªn ®iÓm>
- Dïng ®Ó ®¸nh dÊu c¸c ®iÓm kiÓm tra trong giao t¸c
- C¸c ®iÓm nµy cho phÐp phôc håi l¹i tr¹ng th¸i tr−íc ®ã
• ROLLBACK [work] [TO <tªn ®iÓm>]
- Phôc håi l¹i tr¹ng th¸i tíi ®iÓm dõng <tªn ®iÓm>
- NÕu kh«ng cã <tªn ®iÓm> th× nã sÏ:
- KÕt thóc giao t¸c
- Phôc håi l¹i tÊt c¶ c¸c thay ®æi cña giao t¸c hiÖn hµnh
- Xo¸ mäi ®iÓm dõng

Kho¸ d÷ liÖu: LOCK TABLE <tªn_b¶ng>,...


In <locking_mode> [NOWAIT>
Locking_mode lµ c¸c chÕ ®é kho¸:
EXCLUSIVE (X): ChØ cho phÐp truy vÊn trªn b¶ng.
SHARE (S): Cho phÐp truy vÊn nh−ng kh«ng ®−îc cËp nhËt.
ROW SHARE (RS): Cho phÐp truy xuÊt ®ång thêi trªn b¶ng
nh−ng cÊm ng−êi sö dông kh¸c kho¸ toµn bé b¶ng kiÓu EXCLUSIVE.
ROW EXCLUSIVE (RX): T−¬ng tù nh− ROW SHARE
nh−ng cÊm kho¸ kiÓu SHARE MODE. Kho¸ nµy ®−îc dïng khi cËp nhËt,
thªm vµ xo¸ d÷ liÖu.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 58

Ch−¬ng 4 Phô Thuéc Hµm

4.1 Phô Thuéc hµm (Functional Dependency)


4.1.1§Þnh nghÜa phô thuéc hµm (FD)
Cho R (U) lµ mét l−îc ®å quan hÖ víi U = {A1 , A2 , . . . ,An} lµ tËp thuéc
tÝnh. X vµY lµ tËp hîp con cña U.
Ta nãi X ->Y (®äc lµ X x¸c ®Þnh hµm Y hoÆc Y phô thuéc hµm X), nÕu r lµ
mét thÓ hiÖn cña quan hÖ x¸c ®Þnh trªn R(U) sao cho bÊt kú 2 bé t1, t2 ∈ r mµ
t1[X] = t2[X] th× t1[Y] = t2[Y].
4.1.2 §Þnh nghÜa phô thuéc hµm ®Çy ®ñ (Full Functional Dependency "FFD")
Cho thÓ hiÖn r tho¶ phô thuéc hµm X ->Y vµ nÕu kh«ng tån t¹i X' ⊂ X sao
cho X' ->Y ta nãi X x¸c ®Þnh ®Çy ®ñ Y trong r hay Y phô thuéc hµm ®Çy ®ñ X
trong r .
4.1.3 MÖnh ®Ò
Cho thÓ hiÖn quan hÖ r cña l−îc ®å R.
a) X ->Y lµ phô thuéc hµm trªn r nÕu vµ chØ nÕu X lµ siªu kho¸ cña r [XY].
b) X ->Y lµ phô thuéc hµm ®Çy ®ñ trªn r nÕu vµ chØ nÕu X lµ kho¸ cña
r[XY].
4.1.4 Gi¶i thuËt kiÓm tra phô thuéc hµm
a) Gi¶i thuËt kiÓm tra phô thuéc hµm:
SATISFY (r , f).
Vµo: ThÓ hiÖn quan hÖ r vµ f : X ->Y.
Ra: § , S.
Ph−¬ng ph¸p: 1. r' = r [ XY ].
2. Return (card(r’[x]) = card(r’))
b) Gi¶i thuËt kiÓm tra phô thuéc hµm ®Çy ®ñ:
SATISFYFULL (r , f)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 59

Vµo: ThÓ hiÖn quan hÖ r vµ f : X ->Y.


Ra : § , S.

Ph−¬ng ph¸p: 1. For ∀ A ∈ X DO.


If SATISFY (r, X - A ->Y) Then return (FALSE)
2. Return (true).
VÝ dô: Cho quan hÖ r (ABCD).
r ( A B C D ) víi f : AC ->B
a1 b1 c1 d1 xem xÐt r cã tho¶ f ?
a1 b1 c1 d2
a2 b1 c3 d2
a3 b2 c1 d1
TÝnh r' = r [ ABC ]
r' ( A B C )
a1 b1 c1
a2 b1 c3
a3 b2 c1
- r' tho¶ m·n kho¸ AC nªn r tho¶ f = AC ->B.
- Tuy nhiªn AC lµ siªu kho¸ v× A lµ kho¸ nªn f kh«ng ®Çy ®ñ trong r .
4.1.5 TËp phô thuéc hµm
Cho thÓ hiÖn quan hÖ r ( R) , F lµ tËp c¸c phô thuéc hµm. Quan hÖ r ®−îc
gäi lµ tho¶ F nÕu r tho¶ f víi ∀f ∈ F.
VÝ dô cho quan hÖ r ( ABCDE ).
r ( A B C D E )
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1
F = {A ->D , AB ->D , C ->BDE , E ->A , A ->E }.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 60

r kh«ng tho¶ A ->D nªn r kh«ng tho¶ F.


4.1.6 BiÓu diÔn tËp phô thuéc hµm b»ng ®å thÞ cã h−íng.
♦ C¸c nót trong ®å thÞ chia thµnh 2 lo¹i :

• Nót thuéc tÝnh: biÓu diÔn b»ng dÊu 'x' vµ tªn thuéc tÝnh.

• Nót phô thuéc hµm: biÓu diÔn b»ng h×nh trßn cã sè thø tù cña phô thuéc
hµm.

♦ C¸c cung gåm 2 lo¹i :

• Cung ®Õn phô thuéc hµm xuÊt ph¸t tõ c¸c thuéc tÝnh ë vÕ tr¸i cña c¸c phô
thuéc hµm.

• Cung ra phô thuéc hµm h−íng ®Õn c¸c thuéc tÝnh ë vÕ ph¶i cña c¸c phô
thuéc hµm.
VÝ dô: r (ABCDEG) víi F = {f1 : A ->B , f2 : CD ->E , f3 : E ->G}.

A 1 B

C E
2 3

D G

H×nh 4.1 §å thÞ phô thuéc


hµm

4.2 HÖ luËt dÉn ARMSTRONG


R (U) lµ 1 l−îc ®å quan hÖ víi U = {A1, A2, .. ., An } lµ tËp thuéc tÝnh.

XÐt X, Y, Z, W ⊂ U, hÖ luËt dÉn Armstrong.


1/ LuËt ph¶n x¹.

Y ⊆ X ⇒ X ->Y.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 61

2/ LuËt thªm vµo.


X ->Y vµ Z ⊆W ⇒ XW ->YZ.
X ->Y th× XZ ->YZ (t¨ng tr−ëng).
3/ LuËt b¾c cÇu :

X ->Y vµ Y ->Z ⇒ X ->Z.


4/ LuËt tùa b¾c cÇu.

X ->Y vµ WY ->Z ⇒ XW ->Z.


5/ LuËt ph©n r·.

X ->Y vµ Z ⊆ Y ⇒ X ->Z.
6/ LuËt hîp.

X ->Y vµ X ->Z ⇒ X ->YZ.


VÝ dô: AB ->C , C ->A
Chøng minh: BC ->ABC
a) C ->A gt.
b) B ∈U , C ->A ⇒ BC -> AB (t¨ng tr−ëng)
c) C ∈ U , BC -> AB ⇒ BC -> ABC (t¨ng tr−ëng).
4.3 Bao §ãng.
4.3.1 §Þnh nghÜa phô thuéc hµm suy dÉn
Cho tËp c¸c phô thuéc hµm, F, X, Y lµ 2 tËp thuéc tÝnh cña R. Ta nãi:
f : X ->Y lµ phô thuéc hµm suy dÉn tõ F nÕu nã ®−îc suy tõ F b»ng c¸c luËt
dÉn cña hÖ tiÒn ®Ò Armstrong. Ký hiÖu F | = f.

TËp F+ = {f / F | = f } ®−îc gäi lµ bao ®ãng cña F.


4.3. 2 MÖnh ®Ò.
Cho tËp F c¸c phô thuéc hµm ta cã :
a) F ⊆ F+
b) Víi f lµ phô thuéc hµm tïy ý, f lµ hÖ qña cña F ⇔ F |= f ⇔ f ∈ F+.
VÝ dô: Cho l−îc ®å quan hÖ Q(A B C D E G) víi :

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 62

F = {f1 : AE ->C , f2 : CG ->A


f3 : BD ->G , f4 : GA ->E }
Chøng minh BDC ->Q+ ∈ F+
1) BD ->G
2) BDC ->GC (t¨ng tr−ëng) (a)
3) GC -> A ⇒ GC -> AG (t¨ng tr−ëng)
4) Tõ 3 vµ 2 ⇒ BDC -> AG (b¾c cÇu)
5) AG -> E vµ 4 ⇒ BDC -> E (b¾c cÇu)
6) Tõ 2,4,5, BDC -> BDC ⇒ BDC -> Q+
4.3.3 Bao ®ãng cña tËp thuéc tÝnh.
• §Þnh nghÜa
Cho l−îc ®å quan hÖ Q víi tËp FD F= {f1, f2,.. ., fn}. Gi¶ sö X ⊆ Q+
Bao ®ãng cña X dùa trªn F ký hiÖu XF+ = { Y ∈ Q+ / X -> Y ∈ F+}
NhËn xÐt :
• X ⊆ X+
• f: X -> Y ∈ F+ ⇔ Y ⊆ XF+
• Gi¶i thuËt tÝnh XF+

Vµo : F vµ X⊆ Q+
Ra : XF+
Ph−¬ng ph¸p :
1. Temp = 0
2. While temp < > X DO
{ Temp = X

for ∀f = W ->Z ∈ F Do

if W⊂X then X = XUZ


}
3. Return (X)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 63

VÝ dô: F = {A ->D, AB ->E, BI ->E, CD ->I, E ->C }


X= AE th× X+ = A C D E I.
VÝ dô: F = { B ->A, DA ->CF, D ->H, GH ->C, AC ->D }
BDF+= B D A C E H ; ACF+ = A C D E H
4.3.4 Bµi to¸n thµnh viªn :
_ Cho tËp FD F , f : X ->Y tïy ý , f ∈ F+ ⇔ Y ⊂ X+.
_ Gi¶i thuËt Thµnh viªn (f , F)

Vµo: F , f : X ->Y ∈ F+
Ra : § , S

Ph−¬ng ph¸p : Return (Y ⊂ XF+ )


VÝ dô: F = {A ->D , AB ->E , BI ->E , CD ->I , E ->C}
XÐt F : AE ->DI ∈ F+
AEF+ = A E D C I , DI ⊆ AEF+ nªn f ∈ F+
4.4 Kho¸ cña quan hÖ
4.4.1 X¸c ®Þnh kho¸
b1. T×m c¸c nót gèc
b2. TÝnh bao ®ãng cña c¸c nót gèc X
NÕu XF+ = U th× X lµ kho¸
Ng−îc l¹i X = X U Y víi Y ∈ U
Quay l¹i b−íc 2.
VÝ dô: Cho R (A B C D E H)
F = { AB ->C , CD ->E , EC ->A , CD ->H , H ->B }
T×m 1 kho¸ cña R
B1. Nót gèc = {vÕ tr¸i} - {vÕ ph¶i}
= {A B C D E H} - {C E A H B}
X = {D}
B2. X= {D}
X = DC ; DC+F = {C D E A H B}
Nªn CD lµ kho¸.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 64

4.4.2 X¸c ®Þnh tÊt c¶ kho¸.


NhËn xÐt : NÕu K lµ kho¸ cña Q th× K chøa tÊt c¶ c¸c thuéc tÝnh nguån
vµ kh«ng chøa bÊt kú thuéc tÝnh ®Ých nµo.
B1. TËp gèc N = {vÕ tr¸i} - {vÕ ph¶i}
TËp trung gian L = U - N
X©y dùng 2 K tËp con cña L : L1, L2,.. .,Lk b»ng Ph−¬ng ph¸p
®−êng ch¹y nhÞ ph©n.
B2. X©y dùng tËp K chøa siªu kho¸.
K := Ø
For i = 1 to 2 K do.
Begin
Xi : = N U Li .
TÝnh bao ®ãng (Xi )+F
if (Xi )+F = Q+ theo K = K U Xi
End
B3. Lo¹i bá dÇn c¸c siªu kho¸ lín trong tËp hîp
C¸c siªu kho¸ K = { K1, K2, .. . , K3}
VÝ dô. Q (A B C D E G)
F = { f1 : AE -> C,
f2 : CG -> A,
f3 : BD -> G,
f4 : GA -> E }
X¸c ®Þnh tÊt c¶ kho¸ cña Q
B1. N = {A E C G B D} - {A C G E}
= { BD }
L = {A C E G}
A C E G LI X = N U LI XIF
+

0000 BD BDG
1000 A BDA Q+
0100 C BDC Q+
1100 AC BDAC /
0010 E BDE BDE
1010 AE BDAE /
0110 CE BDCE /
1110 ACE BDACE /
0001 G BDG BDG
1001 AG BDAG /
0101 CG BDCG /
1101 ACG BDACG /

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 65

0011 EG BDEG BDEG


0111 CEG BDCEG /
1111 ACEG BDACEG /
1011 AEG BDAEG /

4.5 Phñ tèi thiÓu cña tËp phô thuéc hµm.


4.5.1 §Þnh nghÜa: Hai tËp phô thuéc hµm F vµ G.
a) Ta nãi F suy ra G ký hiÖu lµ F |= G nÕu G+ ⊆ F+
b) Ta nãi F t−¬ng d−¬ng G ký hiÖu lµ F ≡ G nÕu F |= G vµ G |= F
Cho tËp phô thuéc hµm F. XÐt tËp phô thuéc hµm G nÕu G |= F ta nãi G lµ
mét phñ cña F (vµ ng−îc l¹i).
VÝ dô: F = {A ->B , B ->C , A ->C , AB ->C , B ->BC}
G = {A ->B , B ->C}
Ta thÊy F ≡ G tuy nhiªn ta cÇn nãi G lµ 1 phñ cña F theo nghÜa lµ G tèt
h¬n F v× Ýt phô thuéc hµm h¬n.
Chó ý : Ta cã c¸c mÖnh ®Ò sau
1. F ⊂ F+
2. F ⊂ G -> F+ ⊂ G+
3. (F+)+ = F+
4. C¸ch CM F+ ⊂ G+
Ta chøng minh F ⊂ G+ nghÜa lµ víi ∀FD X ->Y ∈ F ta chøng minh Y ⊆
XG+
4.5.2 §Þnh NghÜa: Phñ tèi thiÓu.
Mét tËp phô thuéc hµm F ®−îc gäi lµ phñ tèi thiÓu nÕu tho¶ :
a) ∀f , f ∈ F , f cã d¹ng X ->A, A chØ cã 1 thuéc tÝnh.
b) Kh«ng tån t¹i phô thuéc hµm f: X -> A vµ Z ⊂ X sao cho
F ≡ F-{X ->A}U{Z->A}
c) Kh«ng tån t¹i phô thuéc hµm f: X -> A ®Ó F - {X ->A} cßn t−¬ng
®−¬ng víi F.
TÝnh chÊt (c) b¶o ®¶m kh«ng d− thõa.
TÝnh chÊt (b) b¶o ®¶m kh«ng cã phô thuéc hµm kh«ng ®Çy ®ñ.
TÝnh chÊt (a) b¶o ®¶m kh«ng cã thuéc tÝnh nµo cña vÕ ph¶i lµ tæ hîp.
4.5.3 Gi¶i thuËt t×m phñ tèi thiÓu.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 66

Vµo : TËp phô thuéc hµm F.


Ra: Phñ tèi thiÓu cña F.
Ph−¬ng ph¸p :

a) G := Ø

b) For ∀f ∈ F , f : X ->Y Do G = G U {X ->A , A ∈Y}.

c) For ∀f : X ->A ∈ G Do.

While ∃ Z ⊂ X , Z ≠ X , G ≡ G \ {f} U {Z ->A} Do


G = G – {f} U {Z ->A}

d) For ∀f : X -> A∈ G Do

If G \ {f} ≡ G then G = G - {f}


VÝ dô : Cho tËp phô thuéc hµm F:
F = { AB -> C, C -> A, BC -> D, ACD -> B, D ->EG,
BE -> C, CG -> BD, CE -> AG}
T×m phñ tèi thiÓu cña F ?
Thùc hiÖn gi¶i thuËt trªn ta cã:
Sau b−íc 1,2: G = { AB ->C, C -> A, BC -> D, ACD -> B,
D -> E, D -> G, BE -> C, CG -> B,
CG ->D,CE -> A,CE -> G }
Sau b−íc 3: G = { AB ->C, C -> A, BC -> D, CD -> B,
D -> E, D -> G, BE -> C, CG -> B,
CG ->D,CE -> G }
Sau b−íc 4: G = { AB ->C, C -> A, BC -> D,
D -> E, D -> G, BE -> C, CG -> B, CE -> G }
4.6. PhÐp t¸ch c¸c l−îc ®å quan hÖ
4.6.1 §Þnh nghÜa
Ph©n r· (decomposition) 1 l−îc ®å quan hÖ R = {A1, A2,..., An} lµ thay ®æi
R b»ng 1 tËp hîp ρ = {R1, R2,..., RK} víi Ri lµ c¸c l−îc ®å con cña R sao cho R1+
U R2+ U...U RK+ = R+ trong ®ã R kh«ng nhÊt thiÕt ph¶i rêi nhau. Môc tiªu cña

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 67

phÐp t¸ch chñ yÕu lµ ®Ó n©ng cao chÊt l−îng quan hÖ sao cho ®¹t d¹ng chuÈn cao
h¬n.
VÝ dô: Cho l−îc ®å quan hÖ ng−êi cung cÊp:
S = (SNAME , ADD , PRO , PRICE)
SNAME -> ADD
SNAME , PRO ->PRICE
S ®−îc thay thÕ b»ng 2 l−îc ®å con kh¸c.
S1 ( SNAME , ADD)
S2 ( SNAME , PRO , PRICE)
C¸c tÝnh chÊt cña mét ph©n r· mµ ta cÇn quan t©m ®Õn lµ:
• Ph©n r· b¶o toµn th«ng tin
• Ph©n r· b¶o toµn phô thuéc
• TÝnh c¸c phô thuéc hµm ®−îc bao trong mét l−îc ®å con cña ρ.
4.6.2 Ph©n r· b¶o toµn th«ng tin
• NÕu R lµ 1 l−îc ®å quan hÖ ®−îc t¸ch thµnh c¸c l−îc ®å con R1,
R2,..., RK vµ D lµ tËp c¸c phô thuéc hµm. Ta nãi r»ng phÐp t¸ch lµ t¸ch kÕt nèi
kh«ng mÊt m¸t th«ng tin ®èi víi D, nÕu víi mçi quan hÖ r trªn R tho¶ D:

r =  (r) ><  (r) >< …... ><  (r)


• R1 R2 RK

• KiÓm tra phÐp kÕt nèi kh«ng mÊt m¸t th«ng tin.
Vµo: L−îc ®å quan hÖ R , tËp FD F vµ phÐp t¸ch P = (R1,..., RK).
Ra: KÕt luËn phÐp t¸ch P cã mÊt m¸t th«ng tin ?
Ph−¬ng ph¸p:
a) ThiÕt lËp 1 b¶ng víi n cét vµ K hµng.
Cét thø j øng víi thuéc tÝnh Aj .
Hµng thø i øng víi l−îc ®å Ri .

T¹i hµng i vµ cét j ®iÒn ký hiÖu aj nÕu Aj ∈ Ri+ , nÕu kh«ng th× ®iÒn bij.
b) XÐt c¸c phô thuéc hµm tõ F ¸p dông cho b¶ng trªn.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 68

XÐt X ->Y ∈ F, xÐt c¸c hµng nÕu cã gi¸ trÞ b»ng nhau trªn thuéc tÝnh X th×
lµm b»ng nhau trªn thuéc tÝnh Y.
Chó ý: Khi lµm b»ng gi¸ trÞ trªn Y, nÕu 1 trong 2 gi¸ trÞ lµ aj th× −u tiªn lµm
b»ng ký hiÖu aj . Ngoµi ra lµm chóng b»ng 1 trong c¸c ký hiÖu bij .
TiÕp tôc ¸p dông phô thuéc hµm cho b¶ng (kÓ c¶ viÖc lËp l¹i c¸c phô thuéc
hµm ®· ®−îc ¸p dông) cho tíi khi kh«ng cßn ¸p dông ®−îc n÷a.
NÕu xuÊt hiÖn 1 hµng gåm ký hiÖu (a1, a2,...,an) th× phÐp kÕt nèi kh«ng mÊt
m¸t th«ng tin.
VÝ dô: S ( SNAME , ADD , PRO , PRICE).
S1 ( SNAME , ADD)
S2 ( SNAME , PRO , PRICE)
SNAME ->ADD
SNAME , PRO ->PRICE
SNAME ADD PRO PRICE
S1 a1 a2 b13 b14
S2 a1 b22 a3 a4
¸p dông SNAME ->ADD ë hµng 2 (S2)
Ta cã hµng 2: a1 a2 a3 a4

do ®ã phÐp kÕt nèi kh«ng mÊt m¸t th«ng tin.

• §Þnh lý Delobel

NÕu ρ ( R1 , R2 ) lµ 1 phÐp t¸ch cña R vµ F, th× ρ lµ t¸ch kh«ng mÊt


m¸t th«ng tin ®èi víi F khi vµ chØ khi.

R1 ∩ R2 ->R1 - R2 hoÆc R1 ∩ R2 ->R2 - R1 .


Chó ý: C¸c phô thuéc hµm nªu trªn kh«ng nhÊt thiÕt ph¶i thuéc tËp F
ban ®Çu nh−ng ph¶i thuéc F + .
4.6.3 Ph©n r· b¶o toµn phô thuéc
4.6.3.1 §Þnh nghÜa phô thuéc hµm ®−îc bao trong mét l−îc ®å quan hÖ
• Mét phô thuéc hµm f: X->Y d−îc gäi lµ phô thuéc hµm ®−îc bao
trong l−îc ®å quan hÖ R nÕu XY ⊂ R+

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 69

• Mét phô thuéc hµm f: X->Y d−îc gäi lµ phô thuéc hµm ®−îc bao
trong l−îc ®å c¬ së d÷ liÖu D = { R1, R2,..., Rp} nÕu f ®−îc bao trong Rj, i∈
[1..p].
4.6.3.2 §Þnh nghÜa phô thuéc hµm bÞ Ðp tho¶ trong l−îc ®å c¬ së d÷ liÖu

• Gäi G lµ tËp tÊt c¶ c¸c phô thuéc hµm ®−îc bao trong D th×
∀f ∈ G+, f ®−îc gäi lµ bÞ Ðp tho¶ trong l−îc ®å c¬ së d÷ liÖu
D.
∀f ∈ (F+ - G+), f ®−îc gäi lµ kh«ng bÞ Ðp tho¶ trong l−îc ®å
c¬ së d÷ liÖu D.
• Gäi G lµ tËp tÊt c¶ c¸c phô thuéc hµm ®−îc bao trong D ta nãi tËp
phô thuéc hµm F ®−îc gäi lµ bÞ Ðp tho¶ trong D nÕu F≡G.
VÝ dô: Cho D= { R1, R2, R3 } víi R1(A,B,C), R2(B,C,D), R3(D,E)
XÐt F ={ A -> BC, C -> A, A -> D, D -> E, A -> E}
Ta nhËn thÊy phô thuéc hµm A->D vµ A->E kh«ng ®−îc bao trong D nh−ng
F bÞ Ðp tho¶ trong D v× ta t×m ®−îc tËp G={ A-> BC, C ->A, D->E, C -> D} gåm
c¸c phô thuéc hµm ®−îc bao trong D vµ G ≡ F.
4.6.3.3 §iÒu kiÖn ph©n r· b¶o toµn phô thuéc

Mét ph©n r· ρ lµ b¶o toµn phô thuéc F nÕu F bÞ Ðp tho¶ trong ρ víi t− c¸ch
lµ mét l−îc ®å c¬ së d÷ liÖu.

4.6.3.4 Gi¶i thuËt kiÓm tra ph©n r· ρ cã b¶o toµn phô thuéc
Cho l−îc ®å quan hÖ R, tËp phô thuéc hµm F ®Þnh nghÜa trªn R vµ ph©n r·
ρ= {Rj} j =1.. n.

Gi¶i thuËt Eclosure(X,F, ρ)

Vµo: tËp thuéc tÝnh X, TËp phô thuéc hµm F, ph©n r· ρ


Ra : X+F
Ph−¬ng ph¸p:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 70

1. Y := Ø

2. While Y <> X do
Begin Y:=X;

for ∀Rj ∈ ρ do

X := X U ((X ∩ Ri)+F ∩ Ri);


End;
3. Return X;

Gi¶i thuËt Enforce(F, ρ)

Vµo : T©p phô thuéc hµm F, ph©n r· ρ

Ra : ®óng, Sai
Ph−¬ng ph¸p:

1. For ∀f∈F, f kh«ng ®−îc bao trong ρ, f: X->Y do

if Not Y ⊂ Eclosure(X,F, ρ) then return False;


2. Return true;

VÝ dô Cho F = { A->B, B ->C, C -> D, D -> A } vµ ph©n r· ρ


={(AB),(BC),(CD)}. KiÓm tra ph©n r· ρ cã b¶o toµn phô thuéc F kh«ng?

Ta nhËn thÊy chØ cã phô thuéc hµm D -> A kh«ng ®−îc bao trong ρ. ¸p
dông gi¶i thuËt Enforce(F, ρ) ta kiÓm tra Y cã chøa trong Eclosure(D)?

TÝnh to¸n ta ®−îc Eclosure(D)=ABCD tøc A ⊂ Eclosure (D). Suy ra ph©n r·


ρ b¶o toµn phô thuéc trong F.

4.6.4 TÝnh c¸c phô thuéc hµm ®−îc bao trong mét l−îc ®å con cña ρ
• §Þnh nghÜa chiÕu cña tËp phô thuéc hµm trªn l−îc ®å con

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 4 Phô Thuéc Hµm Trang 71

Cho l−îc ®å quan hÖ R, tËp phô thuéc hµm F vµ ph©n r· ρ. XÐt mét l−îc ®å
con Ri ∈ ρ, ta ®Þnh nghÜa chiÕu cña tËp phô thuéc hµm trªn l−îc ®å con πRi(F) =
{ f ∈ F+ | f ®−îc bao trong Ri}

• NhËn xÐt:

XÐt X ⊂ R, nÕu:
1. Kh«ng tån t¹i f ∈ F, vÕ tr¸i(f) ⊂ X th× X+F = X
2. Tån t¹i f ∈ F, vÕ tr¸i (f) ⊂ F th× X -> vÕ ph¶i (f) lµ mét phô
thuéc hµm kh«ng ®Çy ®ñ.
• Gi¶i thuËt tÝnh πRi(F)

Vµo: TËp phô thuéc hµm F, ph©n r· ρ, Ri ⊂ ρ

Ra: Fi = πRi(F)
Ph−¬ng ph¸p:

1. Fi := ∅;

2. For ∀f:X ->Y ∈ F, X ⊂ Ri do

Fi := Fi U { X -> (X+F – X)∩Ri };


3. Return (Fi);
VÝ dô Cho tËp phô thuéc hµm F = { A->C, B -> C} vµ ph©n r· ρ={AC,AB}.
TÝnh F1 = πAC(F)
F1 := ∅;
A+ = AC suy ra F1 = { A->C}
TÝnh F2 = πAC(F)
F2 := ∅;
A+ = AC mµ (AC - A) ∩ AB = ∅ nªn kh«ng bæ sung A-> C vµo F2
B+ = BC mµ (BC - B) ∩ AB = ∅ nªn kh«ng bæ sung B-> C vµo F2
Suy ra F2 = ∅

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 72

Ch−¬ng 5 ChuÈn Hãa C¬ Së D÷ LIÖU

5.1 C¸c d¹ng chuÈn


Môc ®Ých cña d¹ng chuÈn lµ lo¹i bá d− thõa d÷ liÖu mµ c¸c phô thuéc hµm
cã thÓ g©y ra trong l−îc ®å c¬ së d÷ liÖu vµ nh÷ng bÊt th−êng x¶y ra khi thao t¸c
d÷ liÖu (thªm, xãa d÷ liÖu).
C¸c d¹ng chuÈn ®−îc ®−a ra cã tÝnh thõa kÕ nh− sau:

D÷ liÖu th« ch−a chuÈn hãa (ban ®Çu)

D¹ng chuÈn 1

D¹ng chuÈn 2

D¹ng chuÈn 3

D¹ng chuÈn 4

5.2 D¹ng chuÈn 1 : 1NF (Normal Form)


• §Þnh nghÜa: Mét quan hÖ R ®−îc xem ë d¹ng chuÈn 1 nÕu vµ chØ
nÕu tÊt c¶ thuéc tÝnh trong R ®Òu chøa c¸c gi¸ trÞ nguyªn tè (gi¸ trÞ kh«ng t¸ch
ra ®−îc n÷a)
VÝ dô : Ta xÐt quan hÖ ng−êi cung cÊp b¸n c¸c mÆt hµng.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 73

S# PO
P# OTY
S1 P1 300
P2 200
P3 400
P4 200
P5 100
P6 100
S2 P1 300
P2 400
S3 P2 200
S4 P2 200
P4 300
P5 400
S5 ⊥ (Null) ⊥

- R (S#, PO) kh«ng ph¶i lµ 1NF


- NÕu lµ 1NF ph¶i t¸ch PQ → P#, QTY
• Nh−îc ®iÓm cña d¹ng 1NF
- Söa 1 m· ph¶i söa tÊt c¶ c¸c m· nªn tèn thêi gian. Cßn nÕu kh«ng söa hÕt
th× m©u thuÉn d÷ liÖu. T−¬ng tù khi xãa th× ta ph¶i xãa tÊt c¶.
VÝ dô : Ng−êi cung cÊp mÆt hµng víi 1 sè l−îng, ng−êi cung cÊp ë 1 thµnh
phè nµo ®ã vµ mçi thµnh phè chØ cã 1 chØ sè thµnh phè.
S# Status City P# Qty
S1 20 London P1 300
S1 20 London P2 200
S1 20 London P3 400
S1 20 London P4 200
S1 20 London P5 100
S2 10 Paris P1 300
S2 10 Paris P2 400
S3 10 Paris P3 200
S4 20 London P2 200
• Nguyªn nh©n : Cã c¸c thuéc tÝnh kh«ng khãa kh«ng phô thuéc hµm ®Çy
®ñ vµo khãa chÝnh.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 74

5.3 D¹ng chuÈn 2NF


Nh¾c l¹i kh¸i niÖm phô thuéc hµm ®Çy ®ñ :
NÕu 1 thuéc tÝnh Y phô thuéc hµm ®Çy ®ñ vµo thuéc tÝnh X th× Y phô thuéc
hµm vµo X vµ kh«ng phô thuéc hµm vµo tËp con bÊt kú nµo cña X.

QTY S# CITY

P#

Khãa
Status

• §Þnh nghÜa: Mét quan hÖ R ë 2NF nÕu R ë 1NF vµ c¸c thuéc tÝnh kh«ng
khãa, phô thuéc hµm ®Çy ®ñ vµo khãa chÝnh.
R1 R2
S# P# Qty S# Status City
S1 P1 300 S1 20 London
S1 P2 200 S2 10 Paris
S1 P3 400 S3 10 Paris
S1 P4 200 S4 20 London
S1 P5 100
S2 P1 300
S2 P2 400
S3 P3 200
S4 P2 200
• Nh−îc ®iÓm :
- Kh«ng thÓ thªm 1 thµnh phè míi nÕu ch−a cã ng−êi cung cÊp.
- Kh«ng thÓ thªm NewYork, m· sè 15 nÕu ch−a cã S#
VÝ dô : Khi söa Status cña London thµnh 25 sÏ tèn thêi gian

• Nguyªn nh©n :
Cã sù phô thuéc hµm b¾c cÇu vµo khãa chÝnh.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 75

5.4. D¹ng chuÈn 3NF


5.4.1 §Þnh nghÜa
Mét quan hÖ R ë d¹ng 3NF nÕu R ®· ë d¹ng chuÈn 2NF vµ mçi thuéc tÝnh
kh«ng khãa kh«ng phô thuéc hµm b¾c cÇu vµo khãa chÝnh.
VÝ dô
S# CITY

Status

R21 R22
S# City City Status
S1 London London 20
S2 Paris Paris 10
S3 Paris
S4 London

Trong 3NF cã thÓ cã nhiÒu khãa chÝnh chø kh«ng ph¶i 1 khãa chÝnh.
VÝ dô : R (S#, P#, Sname, Qty)

S#
QTY
P#

Sname

• Nh−îc ®iÓm: Quan hÖ nµy bÞ d− thõa do S# vµ Sname lËp l¹i nhiÒu lÇn.
• Nguyªn nh©n : cã sù phô thuéc hµm lÉn nhau.
5.4.2 Gi¶i thuËt ph©n r· b¶o toµn phô thuéc hµm thµnh d¹ng chuÈn 3
Vµo : L−îc ®å quan hÖ R, tËp phô thuéc hµm F, chóng ta gi¶ sö F lµ phñ tèi
thiÓu.

Ra : Mét ph©n r· ρ b¶o toµn phô thuéc cña R sao cho mçi l−îc ®å quan hÖ
con ®Òu cã d¹ng chuÈn 3 øng víi chiÕu cña F trªn l−îc ®å ®ã.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 76

Ph−¬ng ph¸p:
1. NÕu cã c¸c thuéc tÝnh cña R kh«ng liªn quan tíi mét phô
thuéc hµm nµo trong F, c¶ ë vÕ tr¸i lÉn vÕ ph¶i, th× vÒ nguyªn t¾c c¸c
thuéc tÝnh nµy cã thÓ nhãm l¹i thµnh mét quan hÖ vµ ta cã thÓ t¸ch ra
khái R.
2. NÕu cã mét phô thuéc hµm nµo liªn quan ®Õn toµn bé c¸c
thuéc tÝnh trong R th× R kh«ng ph©n chia n÷a vµ kÕt qu¶ lµ chÝnh R.
3. Ng−îc l¹i, chóng ta ph©n r· R thµnh c¸c l−îc ®å quan hÖ XA
øng víi mçi phô thuéc hµm X->A trong F. Tuy nhiªn nÕu X->A1,
X->A2,,..., X -> An lµ c¸c phô thuéc hµm trong F th× ta sö dông l−îc ®å
XA1A2...An thay cho n l−îc ®å XA1, XA2, ... , XAn
VÝ dô: XÐt l−îc ®å R = CTHRSG víi tËp phô thuéc hµm F nh− sau:
F = {C -> T, CS ->G, HR -> C, HS -> R, HT -> R}
Gi¶i thuËt trªn sinh ra tËp c¸c l−îc ®å quan hÖ CT, CGS, HRC, HSR, HTR
b¶o toµn phô thuéc hµm .
5.4.3 Ph©n r· thµnh d¹ng chuÈn 3 b¶o toµn phô thuéc hµm vµ b¶o toµn th«ng tin
VÊn ®Ò ®Æt ra lµ ta cã thÓ ph©n r· mét l−îc ®å quan hÖ vÒ d¹ng chuÈn 3
trong ®ã võa b¶o toµn phô thuéc hµm võa b¶o toµn th«ng tin kh«ng? C©u tr¶ lêi
lµ lu«n lu«n lµm ®−îc ®iÒu nµy b»ng c¸ch ghÐp ρ víi mét l−îc ®å quan hÖ X lµ
kho¸ cña R theo ®Þnh lý sau:

§Þnh lý : Gäi ρ lµ mét ph©n r· d¹ng chuÈn 3 cña R b»ng gi¶i thuËt ph©n r·
b¶o toµn phô thuéc hµm thµnh d¹ng chuÈn 3 vµ X lµ kho¸ cña R ThÕ th× τ = ρ U
{X} lµ mét ph©n r· cña R mµ tÊt c¶ c¸c l−îc ®å quan hÖ ®Òu cã d¹ng chuÈn 3;
ph©n r· nµy cã ®Æc tÝnh b¶o toµn phô thuéc hµm vµ b¶o toµn th«ng tin.
VÝ dô: Sö dông l¹i vÝ dô ë phÇn 5.4.2 víi SH lµ kho¸ cña R th× ph©n r· thµnh
c¸c l−îc ®å quan hÖ (CT, CGS, HRC, HSR, HTR) võa b¶o toµn phô thuéc hµm
vµ b¶o toµn th«ng tin v× t×nh cê HS n»m trong l−îc ®å quan hÖ HSR.

5.5. D¹ng chuÈn 3 : BCNF (Boyce Codd Normal Form)


5.5.1 §Þnh nghÜa
Mét quan hÖ R ë d¹ng chuÈn BCNF nÕu mäi ®Þnh thuéc ®Òu lµ khãa.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 77

Thuéc tÝnh X ®−îc gäi lµ ®Þnh thuéc nÕu X ®Þnh trÞ hµm 1 thuéc tÝnh kh¸c
nghÜa lµ X cã phô thuéc hµm víi thuéc tÝnh kh¸c.
VÝ dô : R (S#, P# , SNAME, QTY)
S#, P# ⇒ QTY
SNAME, P# ⇒ QTY
S# ⇒ SNAME
SNAME ⇒ S#
⇒ R kh«ng ph¶i d¹ng chuÈn BCNF
NÕu muèn ®¹t d¹ng chuÈn BCNF ta ph¶i t¸ch R thµnh 2 quan hÖ R1 vµ R2:
R1 (S#, P# , Qty)
R2 (S# , Sname)

5.5.2 Gi¶i thuËt ph©n r· b¶o toµn th«ng tin thµnh d¹ng chuÈn BCNF
• Bæ ®Ò 1
Gi¶ sö R lµ mét l−îc ®å quan hÖ víi tËp phô thuéc hµm F. Gäi ρ =(R1,R2,
..., Rn) lµ mét ph©n r· cña R b¶o toµn th«ng tin t−¬ng øng víi F vµ gi¶ sö σ =(S1,
S2) lµ mét ph©n r· cña R1 b¶o toµn th«ng tin t−¬ng øng víi πR1(F). Khi ®ã ph©n
r· cña R thµnh tËp (S1, S2, R2, ... ,Rn) lµ b¶o toµn th«ng tin t−¬ng øng víi F.

• Bæ ®Ò 2
Mäi quan hÖ cÊp 2 ( ChØ cã hai thuéc tÝnh) ®Òu ë d¹ng chuÈn BCNF
NÕu R kh«ng ë d¹ng chuÈn BCNF, ta sÏ t×m ®−îc 2 thuéc tÝnh A,B
trong R sao cho (R-AB) -> A hay (R -AB) ->B

• Gi¶i thuËt ph©n r· b¶o toµn th«ng tin thµnh d¹ng chuÈn BCNF
Vµo: L−îc ®å quan hÖ R vµ tËp phô thuéc hµm F
Ra: Mét ph©n r· b¶o toµn th«ng tin sao cho c¸c l−îc ®å quan hÖ con nhËn
®−îc ë d¹ng chuÈn BCNF øng víi h×nh chiÕu cña F trªn l−îc ®å nµy.
Ph−¬ng ph¸p: Träng t©m cña gi¶i thuËt lµ ph©n r· l−îc ®å quan hÖ R thµnh
hai l−îc ®å quan hÖ. Mét l−îc ®å quan hÖ cã tËp thuéc tÝnh XA, nã cã d¹ng
BCNF vµ phô thuéc hµm X -> A lµ ®óng. L−îc ®å quan hÖ thø hai R-A, do ®ã
ph©n r· R-A, XA lµ b¶o toµn th«ng tin. Thùc hiÖn ®Ö qui thñ tôc ph©n r· víi R-A
cho ®Õn khi ®¹t ®−îc l−îc ®å quan hÖ ®¸p øng víi ®iÒu kiÖn bæ ®Ò 2b ®Ó l−îc ®å

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 78

quan hÖ nµy ë d¹ng BCNF. ThÕ th× bæ ®Ò 1 b¶o ®¶m r»ng l−îc ®å quan hÖ nµy
céng víi c¸c l−îc ®å quan hÖ BCNF ®−îc t¹o ra tõ mçi ®Ö qui lµ b¶o toµn th«ng
tin.
Ch−¬ng tr×nh chÝnh
Z := R; // T lµ phÇn cßn l¹i cña R sau mçi ®ît ph©n r·
Repeat
decompose((T,R1,R2); //T ®−îc ph©n r· thµnh R1=XA vµ R2=T-A (X->A)

if R1 ≠ ∅ then Bæ sung R1 vµo ph©n r· ;


T := R2;

until R1 = ∅;
Bæ sung T vµo ph©n r· .
Ch−¬ng tr×nh con Decompose(T,R1,R2)

if T kh«ng chøa cÆp thuéc tÝnh{A,B}sao cho A ∈ (T -AB)+F Then

Tr¶ l¹i R1 := ∅; R2 := T; // T §· ë d¹ng BCNF


else Begin

Chän ra cÆp {A,B} nh− vËy; // A ∈ (T -AB)+F


R1 := T -B; // R1 = XA vµ tho¶ X ->A nh−ng ch−a ch¾c ë BCNF

While R1 cßn chøa cÆp thuéc tÝnh{A,B}sao cho A ∈ (T -AB)+F Do


R1 := R1 - B;
Return R1, R2 := T-A;
end;
VÝ dô: XÐt l−îc ®å quan hÖ R(CTHRSG) vµ tËp phô thuéc hµm F
F = {C -> T, CS ->G, HR -> C, HS -> R, HT -> R}

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 79

5.6 D¹ng chuÈn 4NF :


5.6.1 Phô thuéc ®a trÞ
Mét thuéc tÝnh X x¸c ®Þnh ®a trÞ thuéc tÝnh Y ký hiÖu lµ X —» Y ë trong R
nÕu víi mäi r cña R (r lµ 1 minh häa) vµ 2 bé µ vµ ν ë trong r víi µ[x] = ν[x] th×
trong R còng cã 2 bé lµ φ, ψ sao cho tho¶ m·n ®ång thêi 3 ®iÒu kiÖn sau :
1 φ [x] = ψ [x] = µ [x]

2 φ [x] = µ [x] vµ φ [R-X-Y] = γ [R-X-Y]

3 ψ [Y] = ν [Y] vµ ψ [R-X-Y] = µ [R-X-Y]

R (MH , GV , GT)
µ Physics Green Basic mechanics
ν Physics Brown Principle of optics
φ Physics Brown Basic mechanics
ψ Physics Green Principle of optics
* Mét ®Þnh nghÜa kh¸c
Mét thuéc tÝnh Y phô thuéc ®a trÞ vµo c¸c thuéc tÝnh X nÕu víi mäi quan hÖ

r cña R cã 2 bé cã cïng thµnh
 phÇn khi ta ho¸n ®æi 2 bé víi nhau vµ c¸c thµnh
phÇn cßn l¹i vÉn gi÷ nguyªnth× ta sÏ ®−îc 2 bé míi cïng ë trong r.
MH —» GT MH phô thuéc ®a trÞ vµo GT
GV —» GT GV phô thuéc ®a trÞ vµo GT

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 5 ChuÈn Ho¸ C¬ Së D÷ LiÖu Trang 80

5.6.2 D¹ng chuÈn 4NF


Qui t¾c: Mét quan hÖ R ë d¹ng chuÈn 4NF nÕu vµ chØ nÕu thuéc tÝnh B phô
thuéc ®a trÞ vµo thuéc tÝnh A th× c¸c thuéc tÝnh cßn l¹i cña R phô thuéc hµm vµo
A.

R (MH , GV , GT)

R1 (MH , GV) R2 (MH , GT)


MH GV MH GT
Physics Green Physics Basic mechanic
Physics Brown Physics Principle of optics

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 81

ch−¬ng 6 TÝnh toµn vÑn d÷ liÖu

§Ó b¶o ®¶m cho d÷ liÖu trong c¬ së d÷ liÖu ®−îc toµn vÑn ta ph¶i thùc hiÖn:
- Rµng buéc toµn vÑn d÷ liÖu
- Ph©n quyÒn truy xuÊt
6.1 Rµng buéc toµn vÑn (Integrity Constraints)
6.1.1 §Þnh nghÜa :
• Rµng buéc toµn vÑn lµ c¸c quy t¾c bÊt biÕn ®èi víi c¸c quan hÖ
trong c¬ së d÷ liÖu nh»m lµm cho c¸c d÷ liÖu ®−îc nhÊt qu¸n, hîp lý.
• Quy t¾c ë ®©y lµ 1 vÞ tõ ∀x, p(x) ®óng trong ®ã x cã thÓ lµ 1 quan
hÖ, 1 bé.
6.1.2 C¸c yÕu tè cña rµng buéc toµn vÑn :
• §iÒu kiÖn.
Ng−êi ta biÓu diÔn ®iÒu kiÖn cña rµng buéc toµn vÑn
R1 :"Mçi sv cã 1 m· sè riªng , kh«ng trïng víi 1 sv nµo kh¸c".

∀sv ∈ Tsinhvien , ∀sv2 ∈ Tsinhvien


sv1 < > sv2 -> sv1. MASV < > sv2. MASV

Cuèi ∀
R2 :"Mçi sv ph¶i ®¨ng ký vµo 1 khoa cña tr−êng".

π MAKHOA (sinhvien ) ⊆ π MAKHOA(khoa)


R3 : "Mçi sv chØ cã thÓ thi tèi ®a 2 lÇn cho mçi m«n häc".

∀sv ∈ Tsinhvien

Card (σMASV = SV.MASV ∧ MAMH=’X’ (KETQUA)) ≤ 2.

Cuèi ∀

• Bèi c¶nh

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 82

Bèi c¶nh cña 1 rµng buéc trän vÑn R lµ nh÷ng quan hÖ mµ rµng buéc ®ã
cã hiÖu lùc.
VÝ dô: Bèi c¶nh rµng buéc R1 chØ lµ 1 quan hÖ Tsinhvien.
Bèi c¶nh rµng buéc R2 chØ lµ 2 quan hÖ Tsinhvien vµ Tkhoa.

• B¶ng tÇm ¶nh h−ëng


Nh»m x¸c ®Þnh thêi ®iÓm cÇn kiÓm tra c¸c rµng buéc trän vÑn ®ã ®/v ba
thao t¸c thªm , söa , xo¸.
Quy −íc : DÊu + cÇn kiÓm tra rµng buéc toµn vÑn R.
DÊu - kh«ng cÇn kiÓm tra rµng buéc toµn vÑn R.
VÝ dô: C¸c b¶ng tÇm ¶nh h−ëng t−¬ng øng víi c¸c rµng buéc toµn vÑn
trªn.

R1 Thªm Xo¸ Söa


Tsinhvien + - *

DÊu (*) Quy −íc kh«ng ®−îc söa m· khoa.

R2 Thªm Xo¸ Söa


Tkhoa - + *
Tsinhvien + - +

R3 Thªm Xo¸ Söa


Tketqua + - *

(*) Quy −íc kh«ng ®−îc söa MASV, MAMH.


B¶ng tÇm ¶nh h−ëng tæng hîp cña 3 rµng buéc toµn vÑn trªn nh− sau:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 83

Rµng buéc Tsinhvien Tkhoa Tketqua


toµn vÑn T S X T S X T S X
R1 + * -
R2 + + - - * +
R3 + * -

• C¸c hµnh ®éng cÇn chän lùa khi rµng buéc toµn vÑn bÞ vi ph¹m:
Ng¨n c¶n vµ th«ng b¸o lý do kh«ng cho phÐp hµnh ®éng ®−îc
thùc thi.
C¶nh b¸o hËu qu¶ g©y ra nÕu cè t×nh thùc hiÖn hµnh ®éng ®ã.
VÝ dô: Khi xo¸ bá mét bé trong quan hÖ KHOA th× c¸c hËu qu¶ cã thÓ x¶y
ra trong quan hÖ SINHVIEN ®èi víi rµng buéc toµn vÑn R2 lµ:
- Xo¸ toµn bé c¸c sinh viÖn cã m· kho¸ ®ã.
- Thuéc tÝnh kho¸ trong c¸c bé sinh viªn cã m· kho¸ ®ã trë thµnh NULL
tøc sinh viªn ch−a thuéc khoa nµo c¶.
6.1.3 Ph©n lo¹i rµng buéc toµn vÑn :
6.1.3.1 Rµng buéc toµn vÑn cã bèi c¶nh lµ 1 quan hÖ.

• Rµng buéc vÒ miÒn gi¸ trÞ :


VÝ dô: Trong l−îc ®å quan hÖ Ketqua, ta cã MGT (DIEM) = [0, 10]
§iÓm cã ®é chÝnh x¸c = 0.25
∀ kq ∈ Tketqua
(kq DIEM *4) mod 2 = 1
Cuèi ∀
NHANVIEN(MANV, MUCLUONG, NG_XEP_LG)
Gäi f lµ phÐp söa ®æi l−¬ng (ngµy xÕp l−¬ng vµ møc l−¬ng).
f : Tnhanvien -> Tnhanvien.
Ta cã :
∀nv ∈ Tnhanvien
nv. NGXEP_LG < f (nv). NG_XEP_LG.
Cuèi ∀
• Rµng buéc toµn vÑn liªn thuéc tÝnh

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 84

Rµng buéc toµn vÑn liªn thuéc tÝnh lµ mèi liªn hÖ gi÷a c¸c thuéc tÝnh
trong 1 quan hÖ.
VÝ dô : Hoa_don (SOHD, NGAYHD, SODH, TRIGIA_HD,
NGAYXUAT)
Rµng buéc "Hµng ho¸ chØ ®−îc xuÊt kho khi ®· lËp ho¸ ®¬n"
∀hd ∈ T hoadon
hd.NGAYHD <= hd.NGAYXUAT.
Cuèi ∀
VÝ dô: Ctiet_hd (SOHD, MAHH, GIABAN, SL_BAN, THANHTIEN)
Rµng buéc THANHTIEN = SLBAN*GIABAN
∀cthd ∈ Tctiet_hd
cthd.THANHTIEN = cthd.SLBAN * cthd.GIABAN
cuèi ∀
• Rµng buéc toµn vÑn liªn bé
Lµ sù rµng buéc gi÷a c¸c bé trong quan hÖ nã th−êng ®−îc biÓu diÔn b»ng
phô thuéc hµm, ®Æc biÖt lµ rµng buéc toµn vÑn vÒ kho¸ néi.
VÝ dô: Rµng buéc toµn vÑn vÒ kho¸ chÝnh trong quan hÖ Sinhvien

card (πmasv(Sinhvien)) = card (Sinhvien)


VÝ dô: Rµng buéc toµn vÑn trªn quan hÖ MUONSACH cña mét ®éc gi¶ lµ
kh«ng ®−îc m−în qu¸ 5 quyÓn s¸ch
MUONSACH(Madg,Masach,ngmuon,ngtra)
∀m ∈T Muonsach
card(σmadg=m.madg(Muonsach))<= 5
Cuèi ∀
6.1.3.2 Rµng buéc cã bèi c¶nh gåm nhiÒu quan hÖ

• Rµng buéc toµn vÑn vÒ phô thuéc tån t¹i.


Rµng buéc toµn vÑn vÒ phô thuéc tån t¹i cßn ®−îc gäi lµ rµng buéc vÒ kho¸
ngo¹i
VÝ dô: Tketqua , sù tån t¹i cña 1 bé.

Kq = (masv1 , mamh1 , lanthi1 , diem ) ∈ Tketqua

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 85

Hoµn toµn phô thuéc vµo sù tæn h¹i cña 1 bé sv ∈ Tsinhvien sao cho
sv.MASV = kq.Masv = masv1 , nÕu kh«ng tån t¹i bé sv nh− thÕ th× bé kq kh«ng
®−îc phÐp tån t¹i trong Tketqua.
VÝ dô: Trong quan hÖ Tsinhvien, sù tån t¹i cña bé sv =(' 91023',...,
C'NTT',...) ∈ Tsinhvien hoµn toµn phô thuéc vµo sù tån t¹i bé k ∈ Tkhoa sao cho
K.MAKHOA = ‘CNTT.’
Tæng qu¸t :
Gi¶ sö cã 2 l−îc ®å quan hÖ Q vµ R. Hai tËp hîp KQ , KR lÇn l−ît lµ c¸c
kho¸ cña Q vµ R . Ta cã 2 dÊu hiÖu cña phô thuéc tån t¹i nh− sau :
NÕu KQ ⊆ KR th× cã 1 phô thuéc tån t¹i cña R vµo Q ký hiÖu : R[KQ]⊆
Q[KQ]

NÕu KQ ⊆ R+ th× cã 1 phô thuéc tån t¹i cña R vµo Q ký hiÖu : R[KQ] ⊆
Q[KQ].

TËp hîp KQ gäi lµ kho¸ ngo¹i cña R.

• Rµng buéc toµn vÑn liªn bé liªn quan hÖ


Rµng buéc toµn vÑn liªn bé liªn quan hÖ cã t¸c dông ®èi víi tõng nhãm c¸c
bé cña nhiÒu quan hÖ kh¸c nhau mµ th«ng th−êng lµ 2 quan hÖ.
VÝ dô: XÐt 2 l−îc ®å quan hÖ sau:
DOCGIA(madg,tendg,diachi,sosachmuon,ngaydk)
MUONSACH(madg,mash,ngmuon,ngtra)
Ta cã rµng buéc sè s¸ch m−în cña mét ®éc gi¶ ph¶i b»ng sè bé trong
MUONSACH cã cïng m· ®éc gi¶ ®ã mµ ngµy tr¶ lµ NULL
∀d ∈ Tdocgia
d.sosachmuon = card(σmadg=d.madg(MUONSACH))
cuèi ∀
• Rµng buéc toµn vÑn liªn thuéc tÝnh liªn quan hÖ
Rµng buéc toµn vÑn liªn thuéc tÝnh liªn quan hÖ lµ rµng buéc toµn vÑn
gi÷a c¸c thuéc tÝnh trong nhiÒu quan hÖ.
VÝ dô: Ta xÐt rµng buéc toµn vÑn ngµy m−în s¸ch ph¶i lín h¬n hoÆc b»ng
ngµy ®¨ng ký.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 86

∀d ∈ Tdocgia
∀m ∈ Tmuonsach : d.madg =m.madg th× d.ngaydk<=m.ngmuon
cuèi ∀m
Cuèi ∀d
• Rµng buéc toµn vÑn vÒ thuéc tÝnh tæng hîp (thèng kª)
Rµng buéc toµn vÑn vÒ thuéc tÝnh tæng hîp ®−îc x¸c ®Þnh trong tr−êng
hîp mét thuéc tÝnh A trong l−îc ®å quan hÖ Q ®−îc tÝnh to¸n gi¸ trÞ tõ c¸c
thuéc tÝnh cña c¸c l−îc ®å quan hÖ kh¸c.
6.1.4 LÖnh SQL ®èi víi rµng buéc toµn vÑn
Trong lÖnh CREATE TABLE ta cã thÓ t¹o ra c¸c rµng buéc toµn vÑn (xem
ch−¬ng 3)
Ngoµi ra ta cã thÓ t¹o ra c¸c rµng buéc toµn vÑn b»ng lÖnh CREATE
ASSERTION
Có ph¸p:
CREATE ASSERTION <tªn rµng buéc toµn vÑn > CHECK ( <®iÒu kiÖn >)
VÝ dô : XÐt 2 l−îc ®å quan hÖ sau:
DOCGIA(madg,tendg,diachi,sosachmuon,ngaydk)
Rµng buéc toµn vÑn sè s¹ch m−în ch−a tr¶ lµ kh«ng qu¸ 5
CREATE ASSERTION rb_so_sach_muon CHECK
(NOT EXISTS (SELECT * FROM DOCGIA
WHERE SOSACHMUON > 5)
)
Ta cã thÓ bá mét rµng buéc toµn vÑn b»ng lÖnh DROP ASSERTION
Có ph¸p: DROP ASSERTION < tªn rµng buéc toµn vÑn>
VÝ dô: Bá rµng buéc toµn vÑn rb_so_sach_muon
DROP ASSERTION rb_so_sach_muon

• C¸c hµnh ®éng tham kh¶o khi rµng buéc toµn vÑn vÒ kho¸ ngo¹i bÞ
vi ph¹m.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 87

Gi¶ sö cã hai quan hÖ T1 vµ T2, trong ®ã T2 chøa kho¸ ngo¹i lµ kho¸ chØ
®Þnh trong T1
Tr−êng hîp xo¸ d÷ liÖu
MÖnh ®Ò ON DELETE ®Þnh nghÜa luËt xo¸ cho b¶ng “cha” T1 nÕu cè g¾ng
xo¸ mét bé trong T1 mµ cã mét sè bé trong T2 chøa kho¸ ngo¹i nµy. C¸c hµnh
®éng cã thÓ chän lùa lµ:
1. NO ACTION: bá qua hoµn toµn mÖnh ®Ò ON DELETE
2. CASCADE: ViÖc xo¸ mét bé trong T1 sÏ xo¸ tÊt c¶ c¸c bé
trong T2 cã kho¸ ngo¹i t−¬ng øng.
3. SET DEFAULT: ViÖc xo¸ mét bé trong T1 sÏ cµi ®Æt l¹i
mét gi¸ trÞ mÆc nhiªn trong kho¸ ngo¹i t−¬ng øng c¸c bé trongT2.
Trong tr−êng hîp nµy trong T1 ph¶i chøa mét dßng mµ kho¸ chØ
®Þnh cña nã chøa gi¸ trÞ mÆc nhiªn.
4. SET NULL: khi mét bé trong T1 bÞ xo¸ th× kho¸ ngo¹i
t−¬ng øng cña c¸c bé trong T2 sÏ cã gi¸ trÞ NULL
Tr−êng hîp cËp nhËt
MÖnh ®Ò ON UPDATE ®Þnh nghÜa luËt cËp nhËt cho kho¸ chØ ®Þnh
trong T1 t−¬ng øng víi kho¸ ngo¹i nµy. Nã x¸c ®Þnh ®iÒu g× sÏ x¶y ra khi
cËp nhËt l¹i kho¸ chØ ®Þnh nµy mµ cã mét sè bé trong T2 cã kho¸ ngo¹i
t−¬ng øng. C¸c hµnh ®éng cã thÓ chän lùa lµ:
1. NO ACTION : bá qua hµnh ®éng cËp nhËt
2. CASCADE: CËp nhËt l¹i kho¸ ngo¹i cho tÊt c¶ c¸c bé t−¬ng
øng trong T2
3. SET DEFAULT: ViÖc cËp nhËt l¹i kho¸ chØ ®Þnh trong T1 sÏ
cµi ®Æt l¹i mét gi¸ trÞ mÆc nhiÖn trong kho¸ ngo¹i t−¬ng øng c¸c bé
trongT2. Trong tr−êng hîp nµy trong T1 ph¶i chøa mét dßng mµ
kho¸ chØ ®Þnh cña nã chøa gi¸ trÞ mÆc nhiªn.
4. SET NULL: khi cËp nhËt l¹i kho¸ chØ ®Þnh trong T1 th× kho¸
ngo¹i t−¬ng øng cña c¸c bé trong T2 sÏ cã gi¸ trÞ NULL.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 88

6.2 Ph©n quyÒn truy xuÊt


ViÖc ph©n quyÒn truy xuÊt lµ do ng−êi qu¶n trÞ c¬ së d÷ liÖu quyÕt ®Þnh. Nã
bao gåm viÖc t¹o ra quyÒn account cho mét ng−êi sö dông (user name vµ
password) vµ c¸c quyÒn truy xuÊt cho ng−êi ®ã:
- QuyÒn truy vÊn trªn mét b¶ng.

- QuyÒn t¹o mét b¶ng míi , xo¸ b¶ng, thay ®æi b¶ng.

- QuyÒn chÌn, cËp nhËt vµ xo¸.


Trong SQL ph¸t biÓu GRANT vµ REVOKE ®−îc dïng ®Ó cÊp quyÒn vµ
t−íc quyÒn truy xuÊt cña mét user.
Có ph¸p:
GRANT <quyÒn> ON <®èi t−îng> TO <users> [WITH GRANT OPTION]
§èi t−îng th−êng lµ b¶ng.
MÖnh ®Ò WITH GRANT OPTION ®Ó cho phÐp users cã quyÒn cÊp quyÒn
truy xuÊt cho user kh¸c.
REVOKE [GRANT OPTION FOR] <quyÒn> ON <®èi t−îng> FROM
<users> { RESTRICT | CASCADE}
MÖnh ®Ò GRANT OPTION FOR chØ t−íc bá quyÒn cÊp quyÒn truy xuÊt
cho user kh¸c.
Tõ kho¸ CASCADE dïng ®Ó xo¸ quyÒn cña user ®ã vµ c¸c users kh¸c mµ
user ®ã ®· cÊp quyÒn.
Tõ kho¸ RESTRICT dïng ®Ó chØ xo¸ quyÒn cña user ®ã mµ th«i.
VÝ dô: User U1:
GRANT SELECT ON TABLE S TO U2 WITH GRANT OPTION
User U2:
GRANT SELECT ON TABLE S TO U3 WITH GRANT OPTION
User U3:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 6 TÝnh Toµn VÑn D÷ LiÖu Trang 89

GRANT SELECT ON TABLE S TO U4 WITH GRANT OPTION


User U1
REVOKE SELECT ON TABLE TO U2 CASCADE
Lóc ®ã U2, U3, U4 sÏ bÞ mÊt quyÒn SELECT trªn b¶ng S
User U1
REVOKE SELECT ON TABLE TO U2 RESTRICT
Lóc ®ã chØ cã U2 mÊt quyÒn SELECT

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 90

Ch−¬ng 7 Phôc håi d÷ liÖu vµ tÝnh nguyªn tè

7.1 Ph©n lo¹i háng hãc


7.1.1 C¸c lo¹i l−u tr÷
C¸c lo¹i l−u tr÷ truyÒn thèng ®−îc ph©n biÖt bëi tèc ®é, dung l−îng vµ kh¶
n¨ng phôc håi háng hãc. Chóng ®−îc ph©n lo¹i nh− sau:

• L−u tr÷ biÕn ®éng:


_ L−u tr÷ vµo bé nhí chÝnh
_ Kh¶ n¨ng truy xuÊt nhanh
_ Kh«ng thÓ cøu l¹i th«ng tin nÕu hÖ thèng cã sù cè
• L−u tr÷ bÊt biÕn:
_ L−u tr÷ trªn ®Üa hoÆc b¨ng tõ
_ §Üa cã ®é tin cËy h¬n bé nhí chÝnh nh−ng kÐm h¬n b¨ng tõ.
_ Th«ng tin vÉn tån t¹i vµ cã thÓ cøu ®−îc khi hÖ thèng cã sù cè.
_ Nã lµ ®èi t−îng háng hãc g©y nªn sù mÊt m¸t th«ng tin
_ Tèc ®é truy xuÊt chËm h¬n bé nhí chÝnh.
• L−u tr÷ v÷ng ch¾c:
_ Th«ng tin chøa trªn kiÓu l−u tr÷ æn ®Þnh kh«ng bao giê (æn ®Þnh) bÞ
mÊt.
_ Nh©n b¶n (d÷ liÖu) th«ng tin vµo nhiÒu ®Üa l−u tr÷.
7.1.2 C¸c kiÓu háng hãc .
_ Lçi luËn lý : Giao t¸c kh«ng thÓ tiÕp tôc do 1 sè ®iÒu kiÖn nh− d÷ liÖu
nhËp sai, d÷ liÖu kh«ng t×m thÊy, trµn, giíi h¹n tµi nguyªn ...
_ Lçi hÖ thèng : HÖ thèng ®i vµo 1 tr¹ng th¸i kh«ng mong muèn nh−
deadlock (kho¸ chÕt). KÕt qu¶ lµ giao t¸c kh«ng thÓ tiÕp tôc. Tuy nhiªn hÖ thèng
cã thÓ ®−îc thùc thi l¹i sau 1 thêi gian.
_ HÖ thèng háng : MÊt th«ng tin trong bé nhí chÝnh nh−ng trong ®Üa cßn
nguyªn.
_ Háng ®Üa : MÊt th«ng tin trªn ®Üa.
7.2 Sù ph©n cÊp l−u tr÷.
- HÖ CSDL th−êng tró trªn ®Üa. CSDL ®−îc ph©n chia vµo c¸c ®¬n vÞ
l−u tr÷ kÝch th−íc cè ®Þnh ®−îc gäi lµ blocks.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 91

- C¸c thao t¸c (phÐp to¸n) xuÊt nhËp ®−îc thùc hiÖn trªn c¸c ®¬n vÞ
blocks.
- C¸c blocks th−êng tró trªn ®Üa ®−îc gäi lµ blocks vËt lý trong khi
c¸c blocks th−êng tró t¹m trªn bé nhí chÝnh ®−îc gäi lµ buffer blocks.

- Mét block cã thÓ chøa nhiÒu mÉu d÷ liÖu. Ta gi¶ sö kh«ng cã mÉu
d÷ liÖu d−îc l−u tr÷ trªn 2 hay nhiÒu blocks.
- Sù di chuyÓn block gi÷a ®Üa vµ bé nhí chÝnh ®−îc thùc hiÖn qua 2
phÐp to¸n sau (h×nh 7.1):
Input (x) : chuyÓn block vËt lý chøa mÉu d÷ liÖu X vµo bé nhí chÝnh.
Output (x) : ng−îc l¹i.

Input A
A
A

B B
Input B

Main memory Disk

H×nh 7.1C¸c phÐp to¸n l−u tr÷ khèi

- C¸c giao t¸c t−¬ng t¸c víi hÖ c¬ së d÷ liÖu bëi sù chuyÓn d÷ liÖu tõ
c¸c biÕn ch−¬ng tr×nh vµo c¬ së d÷ liÖu vµ ng−îc l¹i. Sù chuyÓn d÷ liÖu nµy
®−îc thùc hiÖn bëi 2 phÐp to¸n sau :

• Read (X, xI) : g¸n gi¸ trÞ cña mÉu d÷ liÖu X vµo biÕn côc bé xi .
PhÐp to¸n ®−îc thùc hiÖn nh− sau:
1/ If block chøa X kh«ng th−êng tró trªn bé nhí chÝnh then input (x).
2/ xi : = X tõ buffer block

• Write (X, xi): g¸n gi¸ trÞ biÕn côc bé xi vµo mÉu d÷ liÖu X trªn
buffer block. PhÐp to¸n ®−îc thùc hiÖn nh− sau:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 92

1/ If block chøa X kh«ng th−êng tró trªn bé nhí chÝnh then input (x).
2/ X : = xi trong buffer block.
- Cuèi cïng buffer block còng ®−îc ghi vµo ®Üa v× cÇn kh«ng gian bé
nhí hoÆc do hÖ thèng c¬ së d÷ liÖu quyÕt ®Þnh b»ng thao t¸c output (x).
- Khi 1 thao t¸c cÇn truy xuÊt mÉu d÷ liÖu X lÇn ®Çu tiªn , nã ph¶i thùc
hiÖn read (X, xi). ∀ cËp nhËt X ®Òu ®−îc thÓ hiÖn trªn xi . Cuèi cïng giao
t¸c ph¶i thùc hiÖn write (X, xi) ®Ó ph¶n ¶nh sù thay ®æi trong CSDL.
- Thao t¸c Output (x) kh«ng cÇn thùc hiÖn ngay sau lÖnh Write (X, xi),
v× X vÉn cßn ®−îc truy xuÊt do ®ã thao t¸c Output ®−îc thùc hiÖn sau.
NÕu hÖ thèng háng sau khi Write (X, xi) ®−îc thùc hiÖn nh−ng tr−íc
Output (X) th× gi¸ trÞ míi cña X kh«ng bao giê ®−îc ghi lªn ®Üa.
7.3 M« h×nh giao t¸c.
Mét giao t¸c lµ 1 ®¬n vÞ ch−¬ng tr×nh mµ truy xuÊt vµ cã thÓ cËp nhËt
lªn c¸c mÉu d÷ liÖu.
Mçi mÉu d÷ liÖu ®−îc ®äc chÝnh x¸c 1 lÇn bëi 1 giao t¸c vµ ®−îc ghi 1
lÇn nÕu nã cËp nhËt d÷ liÖu ®ã.
C¸c giao t¸c kh«ng ®−îc vi ph¹m c¸c rµng buéc toµn vÑn . NÕu c¬ së
d÷ liÖu nhÊt qu¸n khi giao t¸c b¾t ®Çu th× c¬ së d÷ liÖu ph¶i nhÊt qu¸n sau khi
giao t¸c kÕt thóc thµnh c«ng. Tuy nhiªn trong qu¸ tr×nh thùc thi giao t¸c th× cho
phÐp d÷ liÖu kh«ng nhÊt qu¸n. Sù nhÊt qu¸n t¹m thêi cã thÓ dÉn ®Õn khã kh¨n
khi 1 háng hãc x¶y ra.
7.3.1 VÝ dô
Mét giao t¸c T chuyÓn $50 tõ account A → account B.
T : read (A, a1 )
a1 : = a1 - 50
write (A, a1 )
read (B, b1 )
b1 : = b1 + 50
write (B, b1 )
Ta cã rµng buéc toµn vÑn : A + B = const
Gi¶ sö: _ Ban ®Çu A = $1000
B = $2000

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 93

_ Bé nhí chÝnh chøa buffer block cña A nh−ng kh«ng cã B.


_ Sù cè x¶y ra sau khi output (A) ®· thùc hiÖn nh−ng output(B)
ch−a thùc hiÖn.
7.3.2 TÝnh ®óng ®¾n vµ tÝnh nguyªn tè.
TÝnh ®óng ®¾n : Mçi 1 giao t¸c ph¶i lµ 1 ch−¬ng tr×nh b¶o vÖ tÝnh
nhÊt qu¸n d÷ liÖu.

TÝnh nguyªn tè : ∀ phÐp to¸n trong 1 giao t¸c ph¶i ®−îc thùc thi
®Çy ®ñ hoÆc kh«ng cã c¸i nµo ®−îc thùc thi.
- B¶o ®¶m tÝnh ®óng ®¾n lµ nhiÖm vô cña lËp tr×nh viªn
- B¶o ®¶m tÝnh nguyªn tè lµ tr¸ch nhiÖm cña hÖ thèng qu¶n trÞ c¬ së d÷
liÖu ®Æc biÖt lµ thµnh phÇn qu¶n lý giao t¸c.
NÕu kh«ng cã sù cè th× tÝnh nguyªn tè ®−îc thùc hiÖn dÔ dµng, nh−ng
kh«ng ph¶i giao t¸c nµo còng hoµn tÊt. Giao t¸c kh«ng hoµn tÊt ®−îc gäi lµ giao
t¸c bÞ bá dë (aborted). §Ó ®¶m b¶o tÝnh nguyªn tè, 1 giao t¸c bÞ bá dë kh«ng
®−îc g©y ¶nh h−ëng lªn tr¹ng th¸i cña c¬ së d÷ liÖu. V× thÕ, tr¹ng th¸i cña c¬ së
d÷ liÖu ph¶i ®−îc phôc håi trë l¹i (restored) ®Õn tr¹ng th¸i ban ®Çu tøc phôc håi
nguyªn tr¹ng ngay tr−íc khi giao t¸c trong c©u hái ®−îc b¾t ®Çu thùc hiÖn.
Chóng ta gäi giao t¸c nh− thÕ ®−îc lµ giao t¸c ®−îc quay lïi l¹i (rolled back).
Thao t¸c quay lui lµ chøc n¨ng cña qu¸ tr×nh phôc håi d÷ liÖu ®Ó qu¶n lý c¸c giao
t¸c bÞ bá dë.
_ Mét giao t¸c hoµn thµnh tèt ®−îc gäi lµ giao t¸c ®−îc x¸c nhËn
(committed). Mét giao t¸c ®−îc x¸c nhËn mµ thÓ hiÖn c¸c cËp nhËt sÏ chuyÓn
tr¹ng th¸i cña c¬ së d÷ liÖu ®Õn 1 tr¹ng th¸i nhÊt qu¸n míi.

_ ¶nh h−ëng cña 1 giao t¸c ®−îc x¸c nhËn kh«ng thÓ lµm l¹i (undo)
bëi 1 giao t¸c bÞ bá dë. Nã chØ ®−îc hñy bëi 1 giao t¸c ®Òn bï. Sù b¾t ®Çu cña 1
giao t¸c nh− thÕ th−êng lµ tr¸ch nhiÖm cña ng−êi sö dông chø kh«ng ph¶i cña hÖ
thèng c¬ së d÷ liÖu.
7.3.3 C¸c tr¹ng th¸i cña giao t¸c.
_ §Ó lµm râ ý nghÜa cña 1 giao t¸c hoµn thµnh tèt, chóng ta thiÕt lËp 1
m« h×nh giao t¸c trõu t−îng (abstract). Mét giao t¸c ph¶i n»m trong c¸c tr¹ng
th¸i sau.

• Active : tr¹ng th¸i khëi ®éng.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 94

• Partially committed : tr¹ng th¸i sau khi ph¸t biÓu cuèi cïng ®−îc
thùc hiÖn.

• Failed : Sau khi ph¸t hiÖn 1 thùc thi th«ng th−êng kh«ng thÓ
®−îc thùc thi l©u h¬n.

• Aborted : Sau khi giao t¸c ®−îc quay lui (rolled back) vµ c¬ së
d÷ liÖu ®−îc phôc håi tr¹ng th¸i ban ®Çu.

• Committed : sau khi giao t¸c hoµn thµnh tèt


Sù chuyÓn ®æi gi÷a c¸c tr¹ng th¸i ®−îc minh häa bëi h×nh 7.5
Partially committed
committed

active
killed
ransaction
failed aborted
restart transaction

H×nh 7.2 S¬ ®å tr¹ng th¸i cña mét giao t¸c


7.4 Phôc håi dùa vµo nhËt ký (Log
(Log - based recovery)
_ Trë l¹i vÝ dô 7.3.1. Khi ®ã néi dung trong bé nhí bÞ mÊt, cã 2 kh¶ n¨ng
phôc håi c¸c thñ tôc:
* Thùc thi l¹i T : §iÒu nµy sÏ cã kÕt qu¶ gi¸ trÞ A lµ 900 h¬n 950. V×
thÕ hÖ thèng chuyÓn vµo tr¹ng th¸i kh«ng nhÊt qu¸n.
* Kh«ng thùc thi l¹i T: Tr¹ng th¸i hiÖn t¹i cña hÖ thèng A = $950 , B
= $2000. V× thÕ hÖ thèng chuyÓn vµo tr¹ng th¸i kh«ng nhÊt qu¸n.
_ §Ó thùc thi tÝnh nguyªn tè cña giao t¸c nh−ng còng ph¶i ghi nhËn l¹i
c¸c thay ®æi trong bé l−u tr÷ æn ®Þnh chø kh«ng vµo c¬ së d÷ liÖu tøc lµ vµo nhËt
ký.
7.4.1 NhËt ký c¬ së d÷ liÖu .
_ Mçi thay ®æi trong c¬ së d÷ liÖu ®−îc ghi nhËn trong nhËt ký. Mçi bé
(mÉu tin) nhËt ký m« t¶ 1 thao t¸c ghi vµo c¬ së d÷ liÖu vµ cã c¸c tr−êng sau :

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 95

• Tªn giao t¸c.


• Tªn mÉu d÷ liÖu.
• Gi¸ trÞ cò.
• Gi¸ trÞ míi.
_ Mét mÉu tin ®Æc biÖt kh¸c ghi nhËn c¸c sù kiÖn trong suèt qu¸ tr×nh xö
lý giao t¸c tõ khi b¾t ®Çu giao t¸c ®Õn khi giao t¸c ®−îc commit hoÆc abort. Cã
nhiÒu lo¹i mÉu tin nhËt ký nh− sau:
* < Ti start >.
* < Ti , X1 ,V1 ,V2 > Xj mÉu d÷ liÖu , V1 gi¸ trÞ cò , V2 gi¸ trÞ míi
* < Ti commit >
7.4.2 Kü thuËt thay ®æi CSDL ®−îc ho·n l¹i (Deferred database modification)
Kü thuËt ho·n thay ®æi d÷ liÖu b¶o ®¶m tÝnh nguyªn tè giao t¸c b»ng
c¸ch ghi nhËn sù thay ®æi CSDL trong 1 nhËt ký, Sù ho·n l¹i thùc thi cña ∀ phÐp
to¸n ghi (write) cña giao t¸c cho ®Õn khi giao t¸c x¸c nhËn tõng phÇn partially
commit.
Khi 1 giao t¸c ®−îc partially commit , th«ng tin trªn nhËt ký g¾n liÒn
víi giao t¸c ®−îc sö dông ®Ó thùc thi c¸c lÖnh write bÞ ho·n l¹i. NÕu hÖ thèng bÞ
háng tr−íc khi giao t¸c hoµn tÊt c¸c lÖnh thùc thi cña nã hoÆc giao t¸c bÞ aborts
th× th«ng tin trªn nhËt ký ®−îc bá qua.
Sù thùc thi 1 thao t¸c diÔn ra nh− sau:
_ Tr−íc khi Ti b¾t ®Çu thùc thi c¸c lÖnh cña nã, 1 mÉu tin < Ti start
> ®−îc ghi vµo nhËt ký.

_ PhÐp to¸n write (X, xj ) thùc hiÖn trong Ti ↔ 1 mÉu tin míi trong
nhËt ký.
_ Ti partially commits, 1 mÉu tin <Ti commit> ®−îc ghi vµo nhËt
ký.

VÝ dô : To : Account A $
50
→ Account B, T1 : TrÝch $100 khái account C

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 96

To : T1 :
read (A, a1 ) read (C , c1 )
A1 : = a1 - 50 c1 : = c1 - 100
Write (A, a1 ) write (C , c1 )
Read(B, b1)
B1 : = b1 + 50
Write (B , b1 )
Gi¶ sö: . To thùc thi xong tíi T1 .
. A = $100 ; B = $2000 ; C = $700
. Trong nhËt ký :
< To starts >
< To , A , 950 >
< To , B , 2050 >
< To commits >
output A = 950
← →
B = 2050

< T1 starts >


< T1 , C , 600 >
< T1 commits >
output
← → C = 600

B»ng c¸ch sö dông nhËt ký, hÖ thèng cã thÓ ®iÒu chØnh bÊt kú háng hãc nµo
mµ kÕt qu¶ lµm mÊt th«ng tin trªn bé l−u tr÷ bÊt biÕn. L−îc ®å phôc håi sö dông
thñ tôc phôc håi sau :

_ redo (Ti ) ph¶i lµ Idempotent nghÜa lµ, thùc thi nã 1 vµi lÇn ⇔ thùc thi
nã mét lÇn. Giao t¸c Ti cÇn thùc hiÖn l¹i nÕu vµ chØ nÕu trong nhËt ký chøa c¶
hai mÉu tin <Ti starts > vµ <Ti commits > . V× thÕ nÕu hÖ thèng háng sau khi
giao t¸c hoµn thµnh c¸c lÖnh cña nã, th«ng tin trong nhËt ký ®−îc sö dông ®Ó
phôc håi hÖ thèng ®Õn tr¹ng th¸I nhÊt qu¸n tr−íc ®ã.
VÝ dô : Gi¶ sö hÖ thèng háng sau mÉu tin nhËt ký cho lÖnh write (B , b1 )

< Tostarts>
NhËt ký: < To , A,950> kh«ng cã commit → kh«ng phôc håi
< To , B,2050>

Gi¶ sö hÖ thèng háng sau mÉu tin nhËt ký write (C , C1 )

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 97

< To , starts > 


< To , A,950 > 
 phÐp to¸n redo (To) → < To commits >
< To , B,2050 > 
< To commits >

< T1 starts >


Kh«ng thùc hiÖn redo
< T1 , C, 600 >
7.4.3 Kü thuËt thay ®æi c¬ së d÷ liÖu tøc kh¾c
Kü thuËt thay ®æi c¬ së d÷ liÖu tøc kh¾c cho phÐp c¸c thay ®æi trong c¬ së
d÷ liÖu ®−îc ghi vµo c¬ së d÷ liÖu ngay khi giao t¸c cßn trong tr¹ng th¸i active.
C¸c thay ®æi c¬ së d÷ liÖu ®−îc ghi bëi c¸c giao t¸c active ®−îc gäi lµ c¸c thay
®æi ch−a ®−îc x¸c nhËn. Khi cã sù cè x¶y ra hoÆc khi giao t¸c bÞ thÊt b¹i, tr−êng
chøa gi¸ trÞ cò trong c¸c mÉu tin c¬ së d÷ liÖu ®−îc m« t¶ ë phÇn 7.4.1 ®−îc sö
dông ®Ó phôc håi c¸c mÉu d÷ liÖu bÞ thay ®æi trë vÒ gi¸ trÞ ban ®Çu. §iÒu nµy
®−îc th−c hiÖn bëi phÐp to¸n UNDO .
Tr−íc khi mét giao t¸c Ti b¾t ®Çu thùc thi, mét mÉu tin <Ti start> ®−îc ghi
vµo nhËt ký. Trong qu¸ tr×nh thùc thi, bÊt kú phÐp to¸n write(X,xj) trong Ti th×
mét mÉu tin míi t−¬ng øng ®−îc ghi vµo nhËt ký. Khi Ti partially commit, th×
mét mÉu tin <Ti commit> ®−îc ghi vµo nhËt ký.
Bëi th«ng tin trong nhËt ký ®−îc sö dông ®Ó phôc håi l¹i tr¹ng th¸i cña c¬
së d÷ liÖu, nªn kh«ng cho phÐp mét cËp nhËt vµo c¬ së d÷ liÖu ®−îc thùc hiÖn
tr−íc khi mét mÉu tin nhËt ký t−¬ng øng ®· ®−îc ghi vµo bé l−u tr÷ æn ®Þnh. V×
thÕ chóng ta ph¶i −u tiªn ghi mÉu tin lªn nhËt ký tr−íc khi thùc hiÖn phÐp to¸n
output(X) t−¬ng øng.
VÝ dô: Sö dông l¹i vÝ dô ë phÇn 7.4.3 ta cã c¸c mÉu tin nhËt ký sau:
< To starts >
< To , A , 1000,950 >
A = 950
< To , B ,2000, 2050 > ←
output
→
B = 2050
< To commits >
< T1 starts >
output
< To , C , 700, 600 > ← → C = 600
< T1 commits >
Nhê vµo nhËt ký, hÖ thèng cã thÓ kh¾c phôc bÊt kú háng hãc nµo dÉn ®Õn
sù mÊt m¸t th«ng tin trªn ®Üa. ViÖc phôc håi d÷ liÖu sö dông hai thñ tôc asu:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 98

• Undo(Ti): Phôc håi l¹i c¸c gi¸ trÞ ®· thay ®æi bëi giao t¸c Ti trong c¸c
mÉu d÷ liÖu b»ng c¸c gi¸ trÞ cò.

• Redo(Ti): ghi c¸c gi¸ trÞ míi vµo c¸c mÉu d÷ liÖu ®· thay ®æi b»ng bëi
giao t¸c Ti
C¸c phÐp to¸n trªn còng ph¶i cã tÝnh chÊt idempotent ®Ó b¶o ®¶m tÝnh ®óng
®¾n khi cã sù cè x¶y ra trong qu¸ tr×nh phôc håi d÷ liÖu.
Sau khi cã mét háng hãc x¶y ra, qui tr×nh phôc håi tham kh¶o vµo nhËt ký
®Ó x¸c ®Þnh gi¸o t¸c nµo cÇn redo hoÆc cÇn undo.
§iÒu kiÖn ®Ó thùc thi c¸c phÐp to¸n ®ã nh− sau:

• Giao t¸c Ti cÇn undo nÕu trong nhËt ký chøa mÉu tin <Ti start> nh−ng
kh«ng cã mÉu tin <Ti commit>

• Giao t¸c Ti cÇn redo nÕu trong nhËt ký chøa mÉu tin <Ti start> vµ
<Ti commit>
VÝ dô : Gi¶ sö hÖ thèng háng sau mÉu tin nhËt ký cho lÖnh write (B , b1 )
< Tostarts >
NhËt ký: < To , A,1000,950 > kh«ng cã commit → phôc håi b»ng undo
< To , B,2000,2050 >

Gi¶ sö hÖ thèng háng sau mÉu tin nhËt ký write (C , C1 )

< To starts > 


< To , A,1000,950 >  Cã c¶ starts, commit -> thùc hiÖn redo T0

< To , B,2000,2050 >
< To commits > 

< T1 starts > Kh«ng cã commit -> undo T1


< T1 , C , 700, 600 >
7.4.4 §iÓm kiÓm tra (check point)
Khi mét háng hãc hÖ thèng x¶y ra th× cÇn ph¶i tham kh¶o nhËt ký ®Ó x¸c
®Þnh c¸c giao t¸c nµo cÇn ph¶i redo hoÆc undo. VÒ nguyªn t¾c, toµn bé nhËt ký
®−îc dïng ®Ó x¸c ®Þnh c¸c giao t¸c nµy. §iÒu nµy cã hai khã kh¨n:

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Ch−¬ng 7 Phôc Håi D÷ LiÖu vµ TÝnh Nguyªn Tè Trang 99

• Qu¸ tr×nh t×m kiÕm sÏ tèn thêi gian

• HÇu hÕt c¸c giao t¸c trong gi¶i thuËt cña chóng ta cÇn ®−îc redo mÆc
dÇu viÖc redo kh«ng g©y thiÖt h¹i nµo nh−ng nã sÏ kÐo dµi thêi gian cña qu¸
tr×nh phôc håi.
§Ó gi¶m c¸c khã kh¨n trªn, chóng ta ®−a ra kh¸i niÖm ®iÓm kiÓm tra. Trong
qu¸ tr×nh thùc thi, hÖ thèng duy tr× nhËt ký b»ng mét trong hai kü thuËt m« t¶ ë
phÇn 7.4.2 vµ 7.4.3. H¬n n÷a, hÖ thèng sÏ ®Þnh kú ghi c¸c ®iÓm kiÓm tra vµo nhËt
ký víi ®iÒu kiÖn mét d·y thao t¸c sau ®−îc x¶y ra:

• XuÊt tÊt c¶ c¸c mÉu tin nhËt ký hiÖn hµnh th−êng tró trong bé nhí
chÝnh vµo bé l−u tr÷ æn ®Þnh.

• XuÊt tÊt c¶ c¸c buffer blocks bÞ thay ®æi vµo ®Üa.

• XuÊt mét mÉu tin nhËt ký <check point> vµo bé l−u tr÷ æn ®Þnh.
Sù hiÖn diÖn cña mÉu tin <checkpoint> trong nhËt ký cho phÐp hÖ thèng
tæ chøc tèt h¬n thñ tôc phôc håi. Trong mét giao t¸c, mÉu tin < Ti commit>
ph¶i xuÊt hiÖn trong nhËt ký tr−íc mÉu tin <checkpoint>. BÊt kú sù thay ®æi c¬
së d÷ liÖu nµo còng ph¶i ®−îc ghi tr−íc mÉu tin <checkpoint>.
Sau khi cã mét háng hãc x¶y ra, quy tr×nh phôc håi xem xÐt trong nhËt ký
®Ó x¸c ®Þnh giao t¸c Ti cuèi cïng ®−îc b¾t ®Çu thùc hiÖn tr−íc khi cã ®iÓm
kiÓm tra. Giao t¸c nh− thÕ ®−îc t×m ra b»ng c¸ch dß ng−îc nhËt ký ®Ó t×m
®iÓm kiÓm tra ®Çu tiªn sau ®ã t×m mÉu tin <Ti start>.
Mçi mét giao t¸c t×m thÊy sÏ ®−îc phôc håi b»ng phÐp to¸n redo hoÆc
undo, ®iÒu nµy phôc thuéc vµo kü thuËt phôc håi d÷ liÖu. Gi¶ sö ta xÐt kü thuËt
thay ®æi c¬ së d÷ liÖu tøc kh¾c th× c¸c phÐp to¸n ®−îc thùc hiÖn nh− sau:

• Víi mäi giao t¸cTk trong T khi cã mÉu tin <Tk commit> th× thùc hiÖn
phÐp to¸n redo(Tk)

• Víi mäi giao t¸cTk trong T khi kh«ng cã mÉu tin <Tk commit> th×
thùc hiÖn phÐp to¸n undo(Tk)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 100

Bµi tËp tæng hîp - ®Ò thi mÉu

Bµi 1 ThiÕt kÕ m« h×nh d÷ liÖu quan niÖm qu¶n lý cë së d÷ liÖu cho mét c«ng
ty hµng kh«ng d©n dông quèc tÕ
a/ ThiÕt kÕ s¬ ®å thùc thÓ mèi liªn kÕt cho c¬ së d÷ liÖu cho mét c«ng ty hµng
kh«ng d©n dông quèc tÕ :
- C«ng ty cã nhiÒu m¸y bay. Th«ng tin vÒ m¸y bay gåm cã m· sè m¸y bay
®−îc dïng ®Ó ph©n biÖt c¸c m¸y bay trong c«ng ty, tªn lo¹i m¸y bay, c«ng dông,
søc chøa.
- Hµng kh¸ch ®i c¸c chuyÕn bay cña c«ng ty ph¶i ®¨ng ký mua vÐ. Mçi vÐ
chØ dïng cho mét kh¸ch hµng.
-Th«ng tin vÒ hµnh kh¸ch gåm cã sè giÊy th«ng hµnh, hä tªn hµnh kh¸ch.
- Th«ng tin cña vÐ gåm cã sè vÐ dïng ®Ó ph©n biÖt víi c¸c vÐ kh¸c, vÞ trÝ chç
trong m¸y bay, n−íc ®i, n−íc ®Õn. Mçi vÐ chØ sö dông cho mét chuyÕn bay.
- Th«ng tin vÒ chuyÕn bay cã m· chuyÕn bay dïng ®Ó ph©n biÖt c¸c chuyÕn
bay kh¸c nhau, ngµy giê cÊt c¸nh. Mét chuyÕn bay ph¶i khëi hµnh t¹i mét s©n bay
x¸c ®Þnh vµ kÕt thóc còng ë mét s©n bay x¸c ®Þnh.
- Th«ng tin vÒ s©n bay gåm cã tªn s©n bay, tªn n−íc, vÞ trÝ.
- Mçi hµnh kh¸ch cã thÓ cã hµng hãa. Th«ng tin vÒ hµng hãa gåm cã m· sè
hµng hãa, träng l−îng, kÝch th−íc, ®Æc tÝnh cña hµng hãa. Hµng hãa cã thÓ ®i theo
chuyÕn bay cña kh¸ch hµng hoÆc trªn mét chuyÕn bay kh¸c.
- Lé tr×nh cña mét chuyÕn bay cã thÓ qu¸ c¶nh nhiÒu s©n bay ®Ó tiÕp nhiªn
liÖu nh−ng ph¶i ®¸p xuèng s©n bay ®ã trong kho¶ng thêi gian x¸c ®Þnh.
b/ Tõ s¬ ®å thùc thÓ mèi liªn kÕt ®· thiÕt kÕ ë c©u a/ h·y x©y dùng m« h×nh
logic sao cho ®¹t d¹ng chuÈn 3.
c/ Dùa vµo c¬ së d÷ liÖu ë c©u b/ h·y tr¶ lêi c¸c c©u hái sau b»ng ng«n ng÷
SQL.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 101

1. H·y cho biÕt danh s¸ch (sè giÊy th«ng hµnh, hä tªn) c¸c hµnh kh¸ch ®i
chuyÕn bay cã m· ‘A01’ xuÊt ph¸t ë ‘ViÖt Nam’ xuèng ë s©n bay qu¸ c¶nh t¹i
‘Th¸i Lan’.
2. H·y cho biÕt s©n bay nµo ®−îc qu¸ c¶nh nhiÒu nhÊt.
3. H·y cho biÕt chuyÕn bay nµo cã lé tr×nh dµi nhÊt.
Bµi 2 Cho m« h×nh thùc thÓ mèi liªn kÕt ®Ó qu¶n lý viÖc b¸n hµng ë siªu thÞ
sau:
Lo¹i mÆt hµng
Nh©n viªn
Bµy b¸n
Phôc vô
Gåm
QuÇy hµng Isa

MÆt hµng
Phô tr¸ch
§−îc mua

Baùn
Tr−ëng QuÇy

Gi¸ù Sè l−îng Ngµy

X©y dùng c¸c quan hÖ d÷ liÖu (m« h×nh logic) tõ m« h×nh ER trªn, biÕt:
- Th«ng tin vÒ mÆt hµng gåm cã m· mÆt hµng,tªn hµng, tªn nhµ s¶n xuÊt
- Th«ng tin vÒ lo¹i mÆt hµng gåm cã m· lo¹i mÆt hµng, tªn mÆt hµng
- Th«ng tin vÒ quÇy hµng th× cã sè quÇy
- Th«ng tin vÒ nh©n viªn cã hä tªn, ®i¹ chØ, m· nh©n viªn
- Th«ng tin vÒ ngµy gåm cã ngµy, th¸ng, n¨m.
Cho biÕt c¸c c©u hái sau ®©y ®óng sai, gi¶i thÝch.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 102

- Mçi quÇy hµng b¸n mét mÆt hµng víi gi¸ kh¸c nhau.
- Mét mÆt hµng chØ ®−îc b¸n ë mét quÇy hµng duy nhÊt.
Tr¶ lêi c¸c c©u hái sau b»ng ng«n ng÷ SQL vµ cÊt kÕt qu¶ vµo mét b¶ng t¹m.
- Cho biÕt quÇy hµng vµ tªn tr−êng quÇy nµo cã doanh thu cao nhÊt trong th¸ng
8/1999.
- Cho biÕt lo¹i mÆt hµng nµo ®−îc tiªu thô Ýt nhÊt trong th¸ng 8/1999.
Bµi 3 ThiÕt kÕ m« h×nh d÷ liÖu quan niÖm ®Ó qu¶n lý bÖnh nh©n cña mét bÖnh
viÖn sau
1/ ThiÕt kÕ s¬ ®å thùc thÓ mèi liªn kÕt cho c¬ së d÷ liÖu ®Ó qu¶n lý bÖnh nh©n
cña mét bÖnh viÖn sau :
- BÖnh viÖn cã nhiÒu khoa. Th«ng tin vÒ khoa cã m· khoa, tªn khoa, sè phone, sè
bÖnh nh©n tèi ®a cã thÓ phôc vô.
- Trong bÖnh viÖn cã nhiÒu phßng bÖnh. Th«ng tin vÒ phßng bÖnh cã sè phßng,
vÞ trÝ, lo¹i phßng, gi¸ phßng.
- Mçi phßng cã nhiÒu gi−êng bÖnh. C¸c gi−êng bÖnh ®−îc ®¸nh sè riªng biÖt
vµ theo thø tù t¨ng dÇn.
- Mçi khoa phô tr¸ch nhiÒu phßng bÖnh nh−ng mét phßng bÖnh chØ do mét
khoa ®¶m nhiÖm.
- Mçi khoa cã nhiÒu nh©n viªn nh−ng mét nh©n viªn chØ thuéc mét khoa.
Th«ng tin vÒ nh©n viªn cã m· nh©n viªn, hä tªn nh©n viªn, chøc danh (b¸c sÜ, y t¸,
hé lý). Mçi khoa cã mét tr−ëng khoa lµ b¸c sÜ cña khoa ®ã.
- Mçi bÖnh nh©n n»m ë mét gi−êng cè ®Þnh. Th«ng tin vÒ bÖnh nh©n gåm cã
hä tªn bÖnh nh©n (gi¶ sö cã thªm th«ng tin phô ®Ó ph©n biÖt c¸c bÖnh nh©n cïng hä
tªn), ®Þa chØ, b¶o hiÓm y tÕ (cã hoÆc kh«ng), ngµy nhËp viÖn, ngµy xuÊt viÖn. Mçi
bÖnh nh©n cã mét hå s¬ bÖnh ¸n riªng do mét b¸c sÜ theo dâi. Th«ng tin vÒ hå s¬
bÖnh ¸n gåm cã m· hå s¬, lo¹i bÖnh, träng l−îng, kÕt qu¶ xÐt nghiÖm, c¸ch ch÷a trÞ,
thuèc sö dông, chi phÝ.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 103

- ViÖc kh¸m/ ch÷a bÖnh ®−îc tæ chøc theo buæi, trong mét buæi kh¸m/ ch÷a
bÖnh mét bÖnh nh©n ®−îc mét b¸c sÜ – y t¸ kh¸m/ch÷a. Ngoµi ra trong mét buæi
cã mét b¸c sÜ trùc ®Ó gi¶i quyÕt c¸c sù cè cã thÓ x¶y ra.
2/ Tõ s¬ ®å thùc thÓ mèi liªn kÕt ë trªn h·y x©y dùng m« h×nh logic sao cho
®¹t d¹ng chuÈn 3.
3/ Tr¶ lêi mét sè c©u hái sau b»ng SQL
a/ Cho biÕt bÖnh nh©n cã tªn X ®ang n»m ë khoa, phßng, gi−êng nµo? §ang bÞ
bÖnh g×? Vµ do b¸c sÜ nµo trùc tiÕp theo dâi bÖnh ¸n?
b/ Cho biÕt lo¹i bÖnh nµo ®ang ®−îc ch÷a ch¹y nhiÒu nhÊt ?
c/ Cho biÕt b¸c sÜ cña khoa nµo kh¸m bÖnh cho nhiÒu bÖnh nh©n nhÊt ?
Bµi 4 ThiÕt kÕ m« h×nh d÷ liÖu quan niÖm qu¶n lý sinh viªn cña mét tr−êng
®¹i häc
Cho c¸c th«ng tin qu¶n lý sinh viªn cña mét tr−êng ®¹i häc sau:
Th«ng tin vÒ sinh viªn gåm cã m· sinh viªn dïng ®Ó ph©n biÖt c¸c sinh viªn,
hä tªn sinh viªn , ®i¹ chØ, ngµy sinh, n¨m b¾t ®Çu vµo häc.
Th«ng tin vÒ líp gåm cã m· líp dïng ®Ó ph©n biÖt c¸c líp vµ tªn líp. Mét
sinh viªn th× ë mét líp, mét líp th× cã tèi ®a lµ 50 sinh viªn.
Mét líp cã mét gi¸o viªn chñ nhiÖm.
Th«ng tin vÒ gi¶ng viªn gåm m· gi¶ng viªn dïng ®Ó ph©n biÖt c¸c gi¶ng viªn,
tªn gi¶ngviªn, häc vÞ, chuyªn m«n.
Th«ng tin vÒ m«n häc gåm m· m«n häc dïng ®Ó ph©n biÖt c¸c m«n häc, tªn
m«n, sè tiÕt.
Líp ®−îc häc m«n häc do mét gi¶ng viªn d¹y.
Líp ®−îc häc m«n häc b¾t ®Çu ë mét thêi ®iÓm (ngµy, th¸ng, n¨m) nhÊt ®Þnh.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 104

Sinh viªn khi theo häc m«n nµo còng sÏ bÞ ®iÓm danh theo tõng buæi häc. NÕu
sinh viªn v¾ng qu¸ 1/3 buæi häc sÏ bÞ cÊm thi. Mét buæi häc ®−¬c tÝnh 4 tiÕt.
Líp ®−îc tæ chøc cho thi m«n häc vµo mét thêi ®iÓm x¸c ®Þnh.
Sinh viªn thi m«n häc nµo th× cã mét kÕt qu¶. KÕt qu¶ cho biÕt lÇn thi ®ã sinh
viªn ®−îc bao nhiªu ®iÓm. Sè lÇn thi cho mét m«n tèi ®a lµ 2 lÇn.
C©u hái
1. ThiÕt kÕ s¬ ®å ER
2. X©y dùng c¸c quan hÖ d÷ liÖu (m« h×nh logic)tõ s¬ ®å ER trªn.
3. Cho biÕt c¸ch t¹o ra c¸c quan hÖ t¹m (b¶ng t¹m) sau b»ng ng«n ng÷ SQL:
- Danh s¸ch sinh viªn ®ñ ®iÒu kiÖn dù thi m«n häc X lÇn 1.
- Danh s¸ch sinh viªn thi lÇn 2 m«n häc X .
Bµi 5 ThiÕt kÕ m« h×nh d÷ liÖu quan niÖm qu¶n lý th− viªn
Cho th«ng tin ®Ó qu¶n lý th− viªn sau:
- Th«ng tin vÒ s¸ch gåm m· s¸ch dïng ®Ó ph©n biÖt c¸c s¸ch, tªn s¸ch, khæ
s¸ch, sè trang, t×nh tr¹ng s¸ch, gi¸,sè b¶n s¸ch (lµ sè s¸ch gièng nh− nhau).
- Th«ng tin vÒ t¸c gi¶ gåm tªn t¸c gi¶, ®Þa chØ.
- Th«ng tin vÒ nhµ xuÊt b¶n gåm tªn nhµ xuÊt b¶n, ®Þa chØ.
- Th«ng tin vÒ thÓ lo¹i s¸ch gåm m· thÓ lo¹i dïng ®Ó ph©n biÖt c¸c thÓ lo¹i, tªn
thÓ lo¹i.
- Th«ng tin vÒ ®äc gi¶ gåm m· ®éc gi¶ dïng ®Ó ph©n biÖt c¸c ®éc gi¶, tªn ®éc
gi¶, ®Þa chØ.
- Th«ng tin vÒ ng¨n tñ gåm vÞ trÝ, sè luîng s¸ch cã thÓ chøa vµo ng¨n ®ã.
- C¸c quyÓn s¸ch cïng b¶n ®−îc cÊt vµo mét ng¨n tñ.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 105

- Mét quyÓn s¸ch th× cã thÓ cã nhiÒu t¸c gi¶ vµ mét t¸c gi¶ cã thÓ viÕt nhiÒu
s¸ch.
- Mét s¸ch th× do mét nhµ xuÊt b¶n in Ên.
- Mét s¸ch thuéc mét lo¹i thÓ lo¹i.
- Mét ®éc gi¶ chØ cã thÓ m−în vÒ nhµ hai s¸ch ë mét thêi ®iÓm. Mét s¸ch chØ
cho m−în tèi ®a 30 ngµy vµ kh«ng ®−îc m−în qu¸ 5 quyÓn. Mét s¸ch chØ cã thÓ
cho m−în nÕu sè b¶n cña nã lín h¬n 1.
C©u hái
- ThiÕt kÕ s¬ ®å ER
- X©y dùng c¸c quan hÖ d÷ liÖu (m« h×nh logic)tõ s¬ ®å ER trªn.
- Cho biÕt c¸ch t¹o ra c¸c quan hÖ t¹m (b¶ng t¹m) sau b»ng ng«n ng÷ SQL:
- Danh s¸ch ®éc gi¶ kh«ng ®ñ ®iÒu kiÖn m−în s¸ch.
- Danh s¸ch tªn nhµ xuÊt b¶n cã sè l−îng s¸ch ®−îc m−în theo thø tù gi¶m
dÇn.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 106

®Ò thi m«n c¬ së d÷ liÖu


Líp C98 A1 + C98 A4
Thêi gian 120 phót
C©u 1: Cho mét thÓ hiÖn cña l−îc ®å quan hÖ sau:
R(A B C D E)
a1 b1 c1 d1 e1
a1 b2 c1 d2 e1
a2 b1 c2 d3 e1
a2 b1 c2 d1 e1
a3 b2 c2 d2 e2
1. Cho biÕt c¸c phô thuéc hµm nµo sau ®©y tho¶ r? Gi¶i thÝch b»ng thuËt to¸n.
A -> B, AB -> C, BC -> D
2. Tr×nh bµy gi¶i thuËt ph¸t hiÖn khãa dùa trªn thÓ hiÖn cña r. Cho biÕt c¸c khãa cã
thÓ cã cña r.
C©u 2: Cho mét c¬ së d÷ liÖu qu¶n lý ®¬n ®Æt hµng cña mét ®¬n vÞ kinh doanh
sau:
1. KHACH_HANG(MKH,DC,DT,TEN_KH)
Mét kh¸ch hµng cã m· sè (MKH) dïng ®Ó ph©n biÖt víi nh÷ng kh¸ch hµng
kh¸c, cã ®Þa chØ (DC), sè ®iÖn tho¹i (DT), tªn kh¸ch hµng (TEN_KH).
2. MAT_HANG(MHG,TEN_HG,DONGIA, NGAY)
Mçi mÆt hµng cã m· sè (MHG) dïng ®Ó ph©n biÖt víi nh÷ng mÆt hµng kh¸c vµ
cã mét tªn gäi (TEN_HG) cã ®¬n gi¸ (DONGIA) ®−îc thiÕt lËp tõ ngµy (NGAY).
3. DDH(MDDH,MKH,SO_HG,NGAYDH)
Mçi ®¬n ®Æt hµng cña mét kh¸ch hµng cã mét m· ®¬n dïng ®Ó ph©n biÖt víi
nh÷ng ®¬n ®Æt hµng kh¸c nhau. ]ng víi mçi ®¬n ®Æt hµng ta biÕt sè lo¹i c¸c mÆt
hµng (SO_HG) ®−îc ®Æt vµo ngµy ®Æt hµng(NGAYDH).
4. CHI_TIET_DDH(MDDH,MKH,MHG,LG_DAT)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 107

Mçi mét chi tiÕt cña ®¬n ®Æt hµng cña mét kh¸ch hµng liªn quan ®Õn mét mÆt
hµng. T−¬ng øng víi mçi chi tiÕt ta biÕt ®−îc l−îng ®Æt (LG_DAT).

5. GIAO_GH(MDDH,MKH,MGH,NGAY)
Mçi ®ît giao hµng liªn quan ®Õn mét ®¬n ®Æt hµng cña mét kh¸ch hµng. §¬n
giao hµng cã mét m· sè (MGH) dïng ®Ó ph©n biÖt víi nh÷ng ®ît giao kh¸c nhau.Ta
biÕt ngµy giao (NGAY) cña ®ît ®ã.
6. CHI_TIET_GH(MDDH,MKH,MGH,MHG,LG_GIAO)
Mçi chi tiÕt cña mét ®ît giao hµng (MGH) liªn quan ®Õn c¸c mÆt hµng (MHG)
vµ sè l−îng giao mÆt hµng ®−îc cho ®¬n ®Æt hµng (MDDH) cña kh¸ch hµng
(MKH).
C©u hái
1/ X¸c ®Þnh kho¸ vµ c¸c phô thuéc hµm cña c¸c quan hÖ.
2/ ChuÈn ho¸ l−îc ®å c¬ së d÷ liÖu trªn ®Õn tèi thiÓu d¹ng chuÈn 3.
3/ Cho biÕt c¸c rµng buéc toµn vÑn cña c¬ së d÷ liÖu trªn (kh«ng xÐt rµng
buéc vÒ khãa vµ miÒn gi¸ trÞ).
4/ Tr¶ lêi c©u hái d−íi ®©y b»ng SQL hoÆc ®¹i sè quan hÖ
- Danh s¸ch nh÷ng m· hµng cña ®¬n ®Æt hµng sè 26 cña kh¸ch hµng sè 12 ®·
®−îc giao lµm ba ®ît.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 108

®Ò thi m«n c¬ së d÷ liÖu


Líp C98 A2 + C98 A3
Thêi gian 120 phót
C©u 1: Cho F = { AB -> C, B -> D, CD -> E, CE -> GH, G -> A, D -> C }
1. Chøng minh BG -> H b»ng hÖ tiªn ®Ò Armstrong
2. Cho biÕt gi¶i thuËt REPUGNANT(G) víi G lµ tËp phô thuéc hµm sau cã
cho ra ®−îc phñ tèi thiÓu kh«ng? Gi¶i thÝch?
REPUGNANT(G)
begin

F := ∅;
For mçi X -> Y trong G do
if MEMBER(G- {X-> Y}, X->Y) then F := F U {X -> Y}
return (G- F)
end.
Cho vÝ dô minh häa víi F theo gi¶i thuËt REPUGNANT vµ so s¸nh víi phñ tèi
thiÓu thËt sù.
C©u 2: Cho mét c¬ së d÷ liÖu qu¶n lý ®¬n ®Æt hµng cña mét ®¬n vÞ kinh doanh
sau:
1. KHACH_HANG(MKH,DC,DT,TEN_KH)
Mét kh¸ch hµnh cã m· sè (MKH) dïng ®Ó ph©n biÖt víi nh÷ng kh¸ch hµng
kh¸c, cã ®Þa chØ (DC), sè ®iÖn tho¹i (DT), tªn kh¸ch hµng (TEN_KH).
2. MAT_HANG(MHG,TEN_HG,DONGIA, NGAY)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 109

Mçi mÆt hµng cã m· sè (MHG) dïng ®Ó ph©n biÖt víi nh÷ng mÆt hµng kh¸c vµ
cã mét tªn gäi (TEN_HG) cã ®¬n gi¸ (DONGIA) ®−îc thiÕt lËp tõ ngµy (NGAY).
3. DDH(MDDH,MKH,SO_HG,NGAYDH)
Mçi ®¬n ®Æt hµng cña mét kh¸ch hµng cã mét m· ®¬n dïng ®Ó ph©n biÖt víi
nh÷ng ®¬n ®Æt hµng kh¸c cña cïng mét kh¸ch hµng. øng víi mçi ®¬n ®Æt hµng ta
biÕt sè lo¹i c¸c mÆt hµng (SO_HG) ®−îc ®Æt vµo ngµy ®Æt hµng(NGAYDH).
4. CHI_TIET_DDH(MDDH,MKH,MHG,LG_DAT)
Mçi mét chi tiÕt cña ®¬n ®Æt hµng cña mét kh¸ch hµng liªn quan ®Õn mét mÆt
hµng. T−¬ng øng víi mçi chi tiÕt ta biÕt ®−îc l−îng ®Æt (LG_DAT).
5. GIAO_GH(MDDH,MKH,MGH,NGAY)
Mçi ®ît giao hµng liªn quan ®Õn mét ®¬n ®Æt hµng cña mét kh¸ch hµng. §¬n
giao hµng cã mét m· sè (MGH) dïng ®Ó ph©n biÖt víi nh÷ng ®ît giao kh¸c nhau.Ta
biÕt ngµy giao (NGAY) cña ®ît ®ã.
6. CHI_TIET_GH(MDDH,MKH,MGH,MHG,LG_GIAO)
Mçi chi tiÕt cña mét ®ît giao hµng (MGH) liªn quan ®Õn c¸c mÆt hµng (MHG)
vµ sè l−îng giao mÆt hµng ®−îc cho ®¬n ®Æt hµng (MDDH) cña kh¸ch hµng
(MKH).
C©u hái
1/ X¸c ®Þnh kho¸ vµ c¸c phô thuéc hµm cña c¸c quan hÖ.
2/ ChuÈn ho¸ l−îc ®å c¬ së d÷ liÖu trªn ®Õn tèi thiÓu d¹ng chuÈn 3.
3/ Cho biÕt c¸c rµng buéc toµn vÑn cña c¬ së d÷ liÖu trªn (kh«ng xÐt rµng
buéc vÒ khãa vµ miÒn gi¸ trÞ).
4/ Tr¶ lêi c©u hái d−íi ®©y b»ng SQL hoÆc ®¹i sè quan hÖ
- Danh s¸ch nh÷ng m· hµng cña ®¬n ®Æt hµng sè 26 cña kh¸ch hµng sè 12 ®·
®−îc giao lµm ba ®ît.

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 110

§Ò sè 1

®Ò thi tèt nghiÖp m«n c¬ së d÷ liÖu


Líp Trung CÊp Tin Häc Kho¸
Kho¸ 1

C©u 1 ChuÈn hãa vµ rµng buéc toµn vÑn c¬ së d÷ liÖu


Cho c¬ së d÷ liÖu qu¶n lý s¶n xuÊt cña c¸c c«ng nh©n trong nhµ m¸y :
1. CONGNHAN(MACN,HOTENCN,DIACHI,SOTO,MAMAY)
MACN ®−îc dïng ®Ó ph©n biÖt c¸c c«ng nh©n. Mçi c«ng nh©n cã hä tªn
(HOTEN), ®Þa chØ x¸c ®Þnh (DIACHI) vµ thuéc mét tæ (SOTO). Mçi c«ng
nh©n ®−îc giao phô tr¸ch lu«n mét m¸y nh−ng mét m¸y ®−îc nhiÒu c«ng nh©n phô
tr¸ch tïy theo ca lµm viÖc cña hä.
2. LUONG(MACN,HOTENCN,LUONG,THANG)
L−¬ng c«ng nh©n (MACN) cã hä tªn (HOTENCN) ®−îc tÝnh theo kho¸n s¶n
phÈm vµ ®−îc tr¶ vµo cuèi th¸ng (THANG).
3. TO(SOTO,TOTRUONG,SOTOVIEN).
SOTO cho biÕt sè cña tæ ®−îc dïng ®Ó ph©n biÖt c¸c tæ. Mçi tæ cã mét tæ
tr−ëng (TOTRUONG) còng lµ c«ng nh©n trong tæ. SOTOVIEN cho biÕt sè tæ viªn
trong tæ.
4. SANXUAT(MACN,MAMAY,MASP,NGAY,CA,SOLUONGSP)
Quan hÖ SANXUAT cho biÕt c«ng nh©n (MACN) ®øng ë m¸y (MAMAY)
trong ca (CA) lµm viÖc cña ngµy (NGAY) ®· thùc hiÖn s¶n phÈm (masp) víi sè
l−îng s¶n phÈm lµ (SOLUONGSP).
5. DINHMUC(MAMAY,MASP,TENSANPHAM,CHITIEU)

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Bµi TËp Tæng Hîp Trang 111

Quan hÖ DINHMUC cho biÕt chØ tiªu (CHITIEU) vÒ sè s¶n phÈm cña s¶n
phÈm cã m· (MASP), tªn s¶n phÈm (TENSANPHAM) vµ cña mét m¸y (MAMAY)
x¸c ®Þnh trong mét ngµy.
6. SANPHAM(MASP, TENSANPHAM, GIACONGDONVI)
MASP cho biÕt m· cña s¶n phÈm vµ cã mét tªn (TENSANPHAM) víi gi¸
c«ng cña mét s¶n phÈm (GIACONGDONVI)
C©u hái
1/X¸c ®Þnh khãa cña c¸c quan hÖ trªn.
2/ Cho biÕt c¸c quan hÖ cña c¬ së d÷ liÖu trªn ë d¹ng chuÈn mÊy ? NÕu ch−a
®¹t d¹ng chuÈn 3 th× chuÈn hãa tiÕp ®Ó ®¹t ®−îc.
3/ Cho biÕt c¸c c©u hái sau ®©y ®óng hay sai , t¹i sao?
- Mét c«ng nh©n chØ chuyªn lµm ra mét lo¹i s¶n phÈm.
- Mçi m¸y cã chØ tiªu riªng cho tõng lo¹i s¶n phÈm.
4/ Cho biÕt c¸c rµng buéc toµn vÑn cña c¬ së d÷ liÖu trªn.
5/ Tr¶ lêi c©u hái b»ng ng«n ng÷ SQL hoÆc b»ng ®¹i sè quan hÖ
- Cho biÕt tiÒn l−¬ng cña c«ng nh©n cã tªn “NguyÔn V¨n Hïng” vµo th¸ng
10/1998.
- Cho biÕt tiÒn l−¬ng trung b×nh cña tæ cã SOTO =2 vµo th¸ng 10/1998.
- Cho biÕt tæ nµo (SOTO) vµ tªn tæ tr−ëng cña tæ ®ã mµ lµm ra nhiÒu s¶n phÈm
nhÊt trong n¨m võa råi?
- Cho biÕt m¸y nµo cã thÓ lµm ra ®ñ c¸c s¶n phÈm?

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Tµi LiÖu Tham Kh¶o Trang 112

tµi liÖu tham kh¶o

1. Database System Concepts Henry F.Korth 1991


Sö dông trong c¸c ch−¬ng 1, 2, 3, 4, 7
2. Gi¸o tr×nh nhËp m«n c¬ së d÷ liÖu NguyÔn An TÕ (§H KHTN)1996
Sö dông trong c¸c ch−¬ng 2, 4, 5,6
3. Guide to The SQL Standard C. J. Date 1993
Sö dông trong c¸c ch−¬ng 3, 6
4. Nguyªn lý c¸c hÖ c¬ së d÷ liÖu TËp 2 J. D. Ullman 1999
Sö dông trong ch−¬ng 4
5. The Theory of relational databases David Maier 1983
Sö dông trong ch−¬ng 4

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Môc Lôc Trang 113

môc lôc

Ch−¬ng 1 : §¹i c−¬ng vÒ c¸c hÖ c¬ së d÷ liÖu 1


1.1 Kh¸i niÖm vÒ c¬ së d÷ liÖu (Database)..............................................................1
1.1.1Kh¸i niÖm vÒ c¬ së d÷ liÖu ..........................................................................1
1.1.2 Môc ®Ých cña c¸c hÖ c¬ së d÷ liÖu..............................................................1
1.2 KiÕn tróc cña mét hÖ thèng c¬ së d÷ liÖu..........................................................4
1.3 HÖ qu¶n trÞ c¬ së d÷ liÖu (Database Management System : DBMS).................6
1.3.1 Kh¸i niÖm....................................................................................................6
1.3.2 C¸c chøc n¨ng cña hÖ qu¶n trÞ c¬ së d÷ liÖu...............................................6
1.3.3 Kh¸i niÖm vÒ sù ®éc lËp d÷ liÖu vµ ch−¬ng tr×nh .......................................9
1.3.4 Bé qu¶n lý c¬ së d÷ liÖu..............................................................................9
1.3.5 Ng−êi qu¶n trÞ c¬ së d÷ liÖu......................................................................10
1.3.6 Nh÷ng ng−êi sö dông c¬ së d÷ liÖu ..........................................................10
1.3.7 CÊu tróc tæng qu¸t cña hÖ thèng qu¶n trÞ c¬ së d÷ liÖu ............................10
Ch−¬ng 2 C¸c M« H×nh D÷ LiÖu 13
2.1 M« h×nh d÷ liÖu (data model)..........................................................................13
2.1.1 C¸c m« h×nh d÷ liÖu (Data models) ..........................................................13
2.1.2 C¸c m« h×nh logic dùa trªn ®èi t−îng (Object-Based logical models).....13
2.1.3 C¸c m« h×nh dùa trªn mÉu tin (Record-Based Logical Models) ..............15
2.2 M« h×nh thùc thÓ mèi liªn kÕt (Entity Relationship Model)..........................18
2.2.1 Thùc thÓ (Entity).......................................................................................18
2.2.2 TËp thùc thÓ (Entity set) : .........................................................................19
2.2.3 C¸c thuéc tÝnh vµ c¸c kho¸ : .....................................................................19
2.2.4 HÖ ph©n cÊp isa hay sù tæng qu¸t ho¸ - chuyªn biÖt hãa..........................19
2.2.5 Mèi liªn kÕt...............................................................................................20

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Môc Lôc Trang 114

2.2.6 S¬ ®å thùc thÓ mèi liªn kÕt ......................................................................21


2.2.7 TÝnh hµm cña mèi liªn kÕt ........................................................................24
2.2.8 VÝ dô vÒ s¬ ®å thùc thÓ mèi liªn kÕt (ERD) .............................................26
2.3 M« h×nh d÷ liÖu quan hÖ. ................................................................................28
2.3.1 C¸c kh¸i niÖm c¬ b¶n................................................................................28
2.3.2 Sù chuyÓn hãa tõ s¬ ®å ER sang m« h×nh d÷ liÖu quan hÖ......................30
2.3.3 C¸c phÐp to¸n ®¹i sè trong m« h×nh d÷ liÖu quan hÖ................................34
2.2.4 ThiÕt kÕ c¬ së d÷ liÖu quan hÖ .................................................................41
Ch−¬ng 3 Ng«n Ng÷ SQL 47
3.1 Giíi thiÖu :.......................................................................................................47
3.2 Ng«n ng÷ ®Þnh nghÜa d÷ liÖu (Data Definition Language DLL).....................47
3.2.1 T¹o cÊu tróc b¶ng......................................................................................47
3.2.2 Thay ®æi cÊu tróc b¶ng .............................................................................48
3.2.3 Hñy bá mét b¶ng ......................................................................................49
3.2.4. T¹o khung nh×n (view).............................................................................49
3.2.5 Xo¸ khung nh×n.........................................................................................49
3.3 Ng«n ng÷ thao t¸c d÷ liÖu (Data Manupilation Language DML)...................49
3.3.1 Thªm bé míi vµo quan hÖ.........................................................................49
3.3.2 CËp nhËt: ...................................................................................................49
3.3.3 Hñy bá c¸c bé:..........................................................................................50
3.4 Nhóng ng«n ng÷ SQL trong ng«n ng÷ chñ .....................................................56
3.5 Ng«n ng÷ ®iÒu khiÓn d÷ liÖu (Data Control Language)..................................56
Ch−¬ng 4 Phô Thuéc Hµm 58
4.1 Phô Thuéc hµm (Functional Dependency)......................................................58
4.1.1§Þnh nghÜa phô thuéc hµm (FD)................................................................58
4.1.2 §Þnh nghÜa phô thuéc hµm ®Çy ®ñ (Full Functional Dependency "FFD")
...........................................................................................................................58

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Môc Lôc Trang 115

4.1.3 MÖnh ®Ò ....................................................................................................58


4.1.4 Gi¶i thuËt kiÓm tra phô thuéc hµm ..........................................................58
4.1.5 TËp phô thuéc hµm ...................................................................................59
4.1.6 BiÓu diÔn tËp phô thuéc hµm b»ng ®å thÞ cã h−íng. ................................60
4.2 HÖ luËt dÉn ARMSTRONG ............................................................................60
4.3 Bao §ãng.........................................................................................................61
4.3.1 §Þnh nghÜa phô thuéc hµm suy dÉn .........................................................61
4.3. 2 MÖnh ®Ò. ..................................................................................................61
4.3.3 Bao ®ãng cña tËp thuéc tÝnh.....................................................................62
4.3.4 Bµi to¸n thµnh viªn : .................................................................................63
4.4 Kho¸ cña quan hÖ ...........................................................................................63
4.4.1 X¸c ®Þnh kho¸ ...........................................................................................63
4.4.2 X¸c ®Þnh tÊt c¶ kho¸. ................................................................................64
4.5 Phñ tèi thiÓu cña tËp phô thuéc hµm. ..............................................................65
4.5.1 §Þnh nghÜa: Hai tËp phô thuéc hµm F vµ G. ............................................65
4.5.2 §Þnh NghÜa: Phñ tèi thiÓu. ........................................................................65
4.5.3 Gi¶i thuËt t×m phñ tèi thiÓu......................................................................65
4.6. PhÐp t¸ch c¸c l−îc ®å quan hÖ ......................................................................66
4.6.1 §Þnh nghÜa ...............................................................................................66
4.6.2 Ph©n r· b¶o toµn th«ng tin ........................................................................67
4.6.3 Ph©n r· b¶o toµn phô thuéc.......................................................................68
4.6.4 TÝnh c¸c phô thuéc hµm ®−îc bao trong mét l−îc ®å con cña ρ..............70
Ch−¬ng 5 ChuÈn Hãa C¬ Së D÷ LIÖU 72
5.1 C¸c d¹ng chuÈn ...............................................................................................72
5.2 D¹ng chuÈn 1 : 1NF (Normal Form)...............................................................72
5.3 D¹ng chuÈn 2NF..............................................................................................74
5.4. D¹ng chuÈn 3NF ...........................................................................................75

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Môc Lôc Trang 116

5.4.1 §Þnh nghÜa ................................................................................................75


5.4.2 Gi¶i thuËt ph©n r· b¶o toµn phô thuéc hµm thµnh d¹ng chuÈn 3.............75
5.4.3 Ph©n r· thµnh d¹ng chuÈn 3 b¶o toµn phô thuéc hµm vµ b¶o toµn th«ng tin
...........................................................................................................................76
5.5. D¹ng chuÈn 3 : BCNF (Boyce Codd Normal Form) .....................................76
5.5.1 §Þnh nghÜa ................................................................................................76
5.5.2 Gi¶i thuËt ph©n r· b¶o toµn th«ng tin thµnh d¹ng chuÈn BCNF ..............77
5.6 D¹ng chuÈn 4NF : ...........................................................................................79
5.6.1 Phô thuéc ®a trÞ.........................................................................................79
5.6.2 D¹ng chuÈn 4NF .......................................................................................80
ch−¬ng 6 TÝnh toµn vÑn d÷ liÖu 81
6.1 Rµng buéc toµn vÑn (Integrity Constraints) ....................................................81
6.1.1 §Þnh nghÜa : ..............................................................................................81
6.1.2 C¸c yÕu tè cña rµng buéc toµn vÑn : .........................................................81
6.1.3 Ph©n lo¹i rµng buéc toµn vÑn :..................................................................83
6.1.4 LÖnh SQL ®èi víi rµng buéc toµn vÑn ......................................................86
6.2 Ph©n quyÒn truy xuÊt.......................................................................................88
Ch−¬ng 7 Phôc håi d÷ liÖu vµ tÝnh nguyªn tè 90
7.1 Ph©n lo¹i háng hãc ..........................................................................................90
7.1.1 C¸c lo¹i l−u tr÷ .........................................................................................90
7.1.2 C¸c kiÓu háng hãc . ..................................................................................90
7.2 Sù ph©n cÊp l−u tr÷. .........................................................................................90
7.3 M« h×nh giao t¸c..............................................................................................92
7.3.1 VÝ dô .........................................................................................................92
7.3.2 TÝnh ®óng ®¾n vµ tÝnh nguyªn tè. .............................................................93
7.3.3 C¸c tr¹ng th¸i cña giao t¸c........................................................................93
7.4 Phôc håi dùa vµo nhËt ký (Log - based recovery)...........................................94

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu


Môc Lôc Trang 117

7.4.1 NhËt ký c¬ së d÷ liÖu . ..............................................................................94


7.4.2 Kü thuËt thay ®æi CSDL ®−îc ho·n l¹i (Deferred database modification)
...........................................................................................................................95
7.4.3 Kü thuËt thay ®æi c¬ së d÷ liÖu tøc kh¾c ..................................................97
7.4.4 §iÓm kiÓm tra (check point) .....................................................................98
Bµi tËp tæng hîp - ®Ò thi mÉu 100

Tµi liÖu tham kh¶o 112

Môc lôc 113

Khoa CNTT 2 N¨m 2000 Bµi Gi¶ng C¬ Së D÷ LiÖu

Vous aimerez peut-être aussi