You are on page 1of 281

N G U Y Ễ N TUỆ

Giáo trình

Ỉ Ệ C Ơ S O D Ử L I Ệ l l

í7\í/ Ihỉỉi l()n ílìử /ìlìã ỉ}

N H À X U Ấ T BẢN G IÁ O D Ụ C
i'h ịu tních nhiộin Muìt bcin :
C h u t ị cli ! H ) Q I k i ê i n T o n g G i a m đ õ c N C X ) 1 R Á N A I
Phó Tong Giam đôc kiêm Tổng biên tập NGUYÈN QL Y '1HA(0

T ô í /ìưv hcỉn thíỉo ! '<? chịu trdch n h iệ m nộ i i h i n í ' :


C hủ tịc ii H Ĩ)Q 1 kiêm G iám đôc CVtng tv C'P Sách O H - D N
TRẦN N H Â T TÂN

B iâ iì t ậ p vả sửcì / vừi / / ! :
D ỏ Ỉ IỬL’ Pỉ lú

T rìn h hà V hìd :
LƯU C ỉ l í DÓNG

c 'hê hán :
Q U A N G CHÍ Ni H

Công ty Cô phần sách Đại học - Dạy nghế - Nhà xuất ban Giáo dục glữ quy'ẽn
còng bò tác phãm.
Moi tổ chức, cá nhàn muốn sử ơụng rác phẩm dườ mọi hình thCrc phải ơi/ạ; sự ơóng y auH
chù sò hCru quyền tàc già.

04 - 200VCX1V2 1 2 - 2 1 1 7/(}lJ) M;1 số : 7B662>9 - DA I


H ời nói đ a u

( ác hộ C(r sư dữ liệu dónu vai Irò quan trọnu troim v iệc ửne ciụna
còn<j nưhệ thônu tin v à o c u ộ c so im hànu nuày của xã hội hiện dại. Cù im
\ ới sự liên bộ của kỳ thuật, nhiều írnu dụnii mới cùa c ơ scr dừ liệu cũni:
tlant’ đư ợc pliát trièn mạnh. i ) c c o thè thiết ke. cài dặt và ứnu dụiiL’. tot
các hẹ 'ca S(V dừ liệu, trước híi't cân hiẻu rõ c á c khái niệni c ơ ban cần
llìicl. (iiáo n in h IShập tuôn h ệ c ơ s ớ d ữ liệu nhàm tranu hị cho sinh
\ ièii cúl' k v t h u ậ t CO' h a n c u a c ơ s ư d ữ l i ệ u I r u y è n t h ố n u . V ứ i n h ữ n g k i è n
thưc do. siiih \ itMi c ỏ ỉliè x à \ tiụnụ dư ợc các cư sư dữ liệu tru sền tlióiìu
dò dua \ à o írtm dụn<’ tronu cuộc sônu hàne níià\ \ à cũnu là ca so dê
niỉliièii c ử u s â u hcrn. t ạ o ra c á c c ơ S(y d ừ li ẹu d á p ử i m \ ói c á c \ ê u c â u
ứnu dụ n e inới. ( ì i á d iriniì hao ựỏiii 7 clnayim :

( /iirtrnự I. C ác k h á i Iiiộm CO’ bàn về hộ CO’ sò’ d ữ liệ ii

c l ì i a n m n àv t r in lì Iiax c a c k h á i Iiiệ m C(T ban \ è hộ c a S()T dù liệ u như


c<r S(Y dừ liệ u , hệ q u a n trị C(r sơ dữ liệ u , m ô liin h c ơ sơ dCr licLi, n g o n n u ừ
\ à íiiiìo diện, c o n imirời sư dụnti hệ c ơ s ở dừ liệu. I h ò im qua chu(rn <4
Iià\. Iiuuời d ọ c năni cluợc (.lịnh imliĩa và ý imliĩa của c á c tluiậl imữ (.iùnụ
troim liè c o s a dữ iiệu.

( 'iiinmíị II. Mô liinh ĩ hực flic - Liên kcl


MỘI t r o n u c á c p h i r ơ n u ịiliáp t hi ê t kô c ơ s o d ữ ỉ i ộu ( q u a n hộ) la híìt
dàu lii \ iộc (hict kê luợc (!ỏ t!iực ihè - liên kCM, Chươnu nà\ Innh bà\ các
k h á i n i ệ m C(T b a n c u a I11Ò hì nl i t l i ụ c t h ê - l i ê n k e l v à c á c h l l i i êt k è n ó .

( 'lìinmí; / / / M ô h ìn h quan hệ

c hirơnii này uiúp c h o imuời d ọ c làm CỊuen với c á c khtii niộni c o ban
\ è niò hinh c ơ s ơ dữ liệu quan hệ. các rànu b u ộ c trên m ỏ liìnii C(í SII' (iữ
l i ệu tỊiiaii h ệ \ à c á c l i tliiỏt k ế C(y s ớ d ữ l i ệu q u a n h ộ b ằ n u v i ệ c c h u v c ỉ i t!ôi
t ừ m ò liinli t h ự c i hô - l i ên kốt.

3
( 'hiioriỊ^ Ị l i ác |)hép toán tr c ii mô [lìn h CO' Síi' (lũ liệ u (ịu a n hệ và
ngôn nịĩũ SQl.
D ê c ó thò là y d ư ợ c t h ỏ n u tin ra từ n i ộ l C(T S(y d ử i i ệ u q u a n h ệ . nm rởi
diiim phái liicu rõ Ý Iiuhĩa, m ụ c đích cua các tliao tác trên c a s a d ữ liộu.
C á c p h é p Uián tròn c ư S(T d ừ l i ệ u q u a n liệ s c d ư ợ c Irìiih bà\- \ à i!Ìái thicli
rõ Ironu clunnm nà\'. C iinti với các phcp toán dó. chưcrna nà\ con trinh
bày một iiíỊÔn nuữ dược sư dụiiỉi cliiì yeu tronu các liệ cỊiian trị 0(T sơ dữ
liệu quan liệ (nuòii nuiì SQL). Nhừnt 2 kicn tliức ca ban vè im ôn imử
SQL giúp neirời dọc có thè diỗn dạl dược các truy v ắn doi \ ới c a sơ dữ
liệu quan hệv Nựoài ra. troim ch ưan u nay còn de cập dciì inột pl iưaim
pháp toi ưu truy van ; loi ưu hầim cách hiến dôi các hièii thức đại sô
quan hệ thành các bièu thức tưmm diUTiie \ ới hy \ ọnu la sẽ d ư ợ c thục
hiện nh an h h<Tii.
ClìUĩrníỊ ì ’, l.ý t h i i y t t xâv tlựng cơ sổ' (lữ liệii q u a n hệ
Một phươim pháp khác de xâ> dựnL: một c a sơ dữ liệu quan hệ là
xày dựnu dựa tixMi phân lích. Kỹ thuật chu veii là dựa trên 1} th u y è t phụ
thuộc hàm. pliàn tích các pliụ thuộc hàm Lĩiữa các thuộc tiiih c u a một
quan hệ. x á c dịnh dạiiu ch uân cùa quan lìệ và tácli cá c quan hệ d e Ció niộl
cơ sơ dữ liộu bao uồm các quan hệ (Vdạnu chuấii tliícli hợp. tối thiô:u hoá
sự dư thừa [hônii tin. Nhừnu vấn đề dưực trìĩihi bày tronu chưansì n à v là
dịnh nuliĩa và linh cliất của các phụ thuộc iiáni. các (lạnu chiiân cua quan
hệ. các phưaniỉ pháp tách (uhuân hoá) quan hệ.
( 'ìvroníỉ 17 K h á i niệm ve co’ sỏ' (lữ liệu phân tán
'ỉ ronu diều kiỌn c o sở kỹ ihuật dã dược phát tricn \ :i >èu cầiu m(v
rộim v i ệ c q u a n ly hiện na y, v i ệ c p h àn tán n i ộ l C(r scr clữ liẹii t iè i) iriột hộ
thông mạnu m;'i\ tính là một hưmm phát triC'n mạnh mẽ cua c á c ửiie
dụng cơ sơ dữ liộii. Chinmo nàv trinh bà\ kliái niệm \ ỏ c o sơ dĩữ liệu
phàn tán : định imliìa C(T sơ (.lữ liệu phàn lán, các d;jc irirnu cua C(r sở dù
liộii. cá cl i xà> ciựim C(y s ơ d ừ liệu, c á c p l i i n n m p h á p pliàn đ o ạ n , dịịnli vị
c a sơ dữ liệu. Ihực hiện các truv van trên cơ sờ dữ liệu. Nhũrna, khái
niệm này uiúp cho nmròi dọc làni quen với C(T sơ dừ liệu phân tán \ à làm
c ơ s ơ d ê di sàii nnhicMi c ử u v ê c a s ứ d ữ li ệu ph àn íán v è sau.
( 'ìnarnịỊ 17/ Luii trĩr CO’ sỗ' (lữ liệu ỏ’ bộ nhó' n«>oài
Một tronu các hước thiêt kè một cơ sỏ' dữ liệu !à tliièt k ẽ \'ậ t !y.
neiiĩa là thièt kê \ iộc lưu trữ cơ sơ dữ ỉiệu trên bộ nhó nuoài \ à phiium '2
pliap IriiN cập dẽn !1 Ó. Cluroiiii nà\ tniili bà\ một sô phu'crniz pliap liru Irũ
các lĩlc c a s a (lử licii írC-n bô n h ó imoai \ a mội so kỹ thuật làm lăne lốc
dộ liiii kicin dừ liệu
( liiio triiìli co icli cho eac sinh \ iêii nuành Cônu lìuhộ tliòim tiii cũnu
như làl ca Iihửnu ai I11UÒI1 liin hièu \ e (J() sư clữ liệu. ỉ)ê dọc lỗl uiao Irmh
nà\. Iiuiròi dọc cân co mộl sò it kiên thức vỏ Toán cao cáp. l oàn rời rạc
và ỉ 111 học CI) so.

Mặc dù dã cò iiănu iriiili bà> các van dc một cách chinh xác \ á dễ
hiêu. iLiy nliièn do lliời man \'à kinh imhiệm còn hạn chê. chăc chăn giáo
trỉiih \ ầ n còn nhicLi thieii SÓI. Mặt kliác. đây là một tíiáo trinh nhập mòn
nên kliônu cỏ dièii kiện dô trình hà\ nhieu khía cạnh khác cua co sư dữ
liệu nliir quan trị c a sơ dữ liệu, an ninh cơ sờ dừ liệu... Tác uia mong
nhận được sự uỏp ý cua bạn dọc dê cuốn sách dirợc hoàn thiện han iroim
lần xuất ban saii.
I hư uỏp ý xin uưi \ ề ; Cònti ly Cò pliần Sách ỉ)ại luK' - Dạv nghê,
25 llàn 1h u \è n . 1iủ Nội.
7;i( ’ (j/À
CHUONC; 1

CÁC KHÁI NIỆM C ơ BẢN

C ũnií như các Píiành chuvèn môn khác, cơ sư dữ liệu cũim các
thuậi nụừ riêim của nó. 'ĩroim cỉurơiig này cliúrm la làm quen \ ớ Cik'
kliai niệm cơ ban trong hệ cư sớ dữ l i ệ u như cơ s a dừ liệu, hệ quan t'Ị C(T
sơ dữ liệu, inô hình cơ sờ dữ liệu và các thuật ngừ c a ban khác.

1.1. HỆ C ơ S ở D ữ LIỆU

1.1.1. Cơ sờ dữ íiệu
Cơ sờ dữ liệu và kv thuật cơ sớ dữ liệu đã có ãnh hưởng rất lứn dếi.
việc sứ dụim máy tính. Có thè nói rầng, c a sư dữ liệu dóng vai trò quan
trọnụ trong mọi lĩnh vực có sir dụng máy tính như uiáo dục, thươiiíí mại,
kỹ nuhệ, khoa học, thư viện,... riiuật nmì c a sứ dữ liệu trờ ihàiih một
thuặl ngừ phô dỊing.
MỘI cơ sư J ữ liệu là một tập hợp các dữ liệu cỏ lièn quan với nhau.
Iiìỏ hinh hoá các dối tiụyng của một phần the ụiói thực (một cônụ ly, mội
irườim học....). D ữ liệii là nhừnu sụ kiện có thè uhi lại dược và có ý nuhĩa.
Vi dụ, de quan lý việc học tập troim mộl mỏi truờnt’ đại học. các dừ
liCu ià các tiiỏiig tin về sinh viên, về các mòn iiọc, (liếm thi,... Cliiinạ ta
lò chức các dừ liệu dó thành các bantĩ và lưu trữ chúng vào sô sách, hoặc
sư dụim một phan mềm máv tính dể Iiru trừ chúim trên máy tính. 'l'a có
một lập các dữ liệu có liên quan đến nhau \'à niarm nhiều ý nehTa. đỏ là
một cư sở dữ liệu.

1.1.2. Các tính chất của một cơ sở dữ liệu


Một cơ sớ dữ liệu có các tính chất sau ;
1. Một cơ sở dừ liệu biểu thị một khía cạnh nào đó cùa thế giứi thực.
Những thay đồi cùa thế giới ihực phài dược phản ánh một cácli Irunu
thực vào trong cơ sở dữ liệu.
2. Mội co sờ ilữ liệu !à niộl tập hợ|) dữ liệu iiên kếí \ớ i nliau một
cacli lỏuic \;ì inaiii.’ một ý nuhĩa c ô hữu nào đỏ. M ột Lơ S(í dữ liệu khôiiL’
Ị>hai la niộl tập hợp tùy tiện.
3. MỘI C(r S(f tlừ liệu duợc tliiêl kê va duạc piiõ bièn oho IIIỘI mục
ctícii riòiiu,. No co niột nhóm nẹuời sư (.lụng có chu dịiih va có niộl số
inìg cỉụnụ d ư ợ c \ á c (lịnh phù h ạ p với môi quan tâm cua nmrm s ứ dụiií’.

Nói cách khác, mộl c a sơ dừ liệu cỏ một neuôn cunu câp dữ ỉiệu.
niội niức dộ liiXTim tác với các sự kiện tronu tlic tiiứi thực và mội nhóm
nmnvi cỊuan tàni tích cực dếii các nội dinm của nó.
Một cư sở dừ liệu có thê có cờ tùy ý và có độ phức lạp thay dôi. Có
nhìnm cơ sở dừ liệu chi gồm vài trăm bàn ehi (như cơ sơ dừ liệu phục vụ
việc quản lý lưcmtí ớ một cơ quan nhó), và cỏ những cơ sở dừ liệu có
dune lirợnụ rấl lán (như các c a sờ dừ liệu phục vụ cho việc tinli cirớc
diện thoại, quan lý nhân sự trên mội phạm vi kVn). Các cư sờ dữ liệu
Ịiliai d ư ợ c tô c h ứ c qu án lÝ s a o c h o nliữniỉ nmrời sir d ụ i m c ó thè lì m k i ê m
dữ liệu, cập nhật dừ liệu và lay dữ !iệu ra khi cần tliiêl. MỘI co sờ dữ liệu
có thê dược tạo ra \ à du> trì một cách thu công và cunu có í!ic (iuọc tin
học hỏa. Một cơ sơ dữ liệu lin học hóa được tạo ra và duy tri banẹ một
nlióni chưcTim trình ứim dụnu hoặc băng một hệ quan írị co sà' d ữ liệu.

1.1,3. Hệ quản trị co* sờ dữ liệu

Một hệ íỊiiun irị ccr sớ d ữ tiệỉi là niột tập hợp chiuynti trình giúp cho
aiĩiròi sứ d ụ n c tạo ra, bào iri và khai thác niột cơ sở dĩr liệu. Nó là một
hệ thốnụ phân mềm phổ dụim. thuận tiện cho quá trình dịnh ngliĩa, xây
ciựnti và thao tác cơ sở dữ liệu với các ímg dụng khác nhau.
- ỉ ^ ị n h n íỉh ĩa một cơ sở dừ liệu bao gồm việc đặc tà các kiếu dữ
liệu, các cấu trúc và các ràng buộc cho các dữ liệu sẽ dược liru trữ trong
c a sơ dừ liệu.
- X ú v íỉựnịi một cơ sờ dừ liệu là quá trinh lưu trữ các dừ liệu trên
các phưorng tiện kru Irừ được hệ quàn trị cơ sờ dừ liệu kiêm soát,
- Thao tác một cơ sớ dừ liệu bao gồm các chức năng như truy vẩn
cư sơ dừ liệu dê lấy ra các dữ liệu cụ thê, cập nhật cơ sở dữ liệu để phán
ánh các thav đôi trong thế giới nhò và tạo ra các báo cáo từ các dữ liệu.

7
Các liệ quàn Irị cư SO' dữ liệu diini> ciè thô hiộn một cơ sờ dừ liệu tin
học hóa cỏ thê là pliỏ ciụnu (là một phân mcm dónụ uói). lioặc cỏ tliè
ía cliuvèn dụntí (là niột lập các plian mềm dược tạo ra với một n ụ c
dich riênt>).
Nmròi ta íiọi cơ s a dừ liệu và hộ cỊiian trị cơ sở dừ liệu bàng n ộ t
thuật ntỉữ chung là /ĩệ cư SO' íỉữ ìicii (I)atabase system). llình 1.1 mc ta
một m ỏi triKTim dưn uian cua hệ c ơ sở dữ liệu :

Hình 1.1. Môi trường đơn giản của hệ co> sở dữ liệu

1.1.4. Các đặc trưng cùa giải pháp cơ sờ dữ liệu


ĩrướ c khi khái niệm cơ sở dữ liệu ra dời. hệ thống tệp (tìle) là một
phương pháp được áp dụníì trong việc quán lý. Một tệp có thê dược xcm
là inột cặp hồ sơ lưu trừ các thông tin liên quan đến tìmg công việc riêng
biệt. Ví dụ, trong một cơ quan, bộ phận tài VỊI sẽ có một cặp hồ sơ liên
quan đến lương của các nhàn viên ; hộ phận tổ chức có cặp hồ sơ liên
quan đến vấn đề nhân sự,... Việc xừ lý để lấy ra các thông tin như các
thống kê về lương, về quá trinh công tác,... lúc đầu được thirc hiện một
cách thù công. Dần dần, khối lượng thông tin ngày càng lớn, việc x ứ !ý

8
t h ỏ im tin nL’à \ càiiLí Ịihử c tạp. Iiụ irừ i ta sir (iụ n u m á)' tính \à () v iệ c q u a n
iý. C'ác cập hò S(T d u ợ c c li u \ ê ii thành các tệp Ucn niáy lính và v i ệ c x ư lý
lliònu tin dirợc llụrc liiệii hăiie cách lập trinli (ironu một imòn Iiụữ lập
Iriiili tlic liẹ 3).
Viẹc CỊIUIII lý tlic(> ưiai pháp liệ ihônu, tệp có nhiêu nliược diêni. riiứ
nliiil. do la sự tiir tlúra thỏim tin ; ciinu một tliòim tiii duực lưu Irữ nhiòu
làn (chănu iiạii. chinh sacli nhãn \ ÌL'11 cỏ mặt irorm lộp liRTnu \ à cũnu cỏ
mặt cà troiiu tệp nliàn sự). Dicu dó eày ra việc lãnu phí bộ nhớ \ à dễ gây
sai sot tronii khi cập nliật dữ ỉiệu. dề sinh ra các dữ liệu khôrni dúnu dãn.
i liử hai, dó ia viỌc ptụi tiniộc uiừa chirơnu trinh ửim dụng \ à dữ liệu.
Mồi khi có sự tha> dòi cấii Iríic tệp và các dừ liệu tronu tệp, chương
trinh írim ciụrm khai thác thôtm tin trên tệp đó cũng thay dồi theo. Diều
dó uây ra khỏ khăn kVii cho \ iệc bao trì. Giài pháp c o sở dữ liệu ra đời
dã giãi qu> ét dược nliừng nhưực điêm đó. Cụ thế. giai pháp cơ sơ dừ liệu
có nhữnu dặc trưim sau :

1. Ban chất tụ'


• inỗ tả cúa hệ• CO’ sỏ' d ữ liệu

Một dặc trirnu c a bàn cua uiai pháp c a sở dừ liệu là hệ thong cơ sờ


dữ liệu khỏim chi gồm có bán thân cơ sở dừ liệu Iiià còn có cà định
nuhĩa. hoặc mô tà dầy du vè cấu trúc cơ sở dữ liệu và các ràng buộc.
Dịnh nuhĩa nà\ tlirợc lưu trừ trontí từ điển hệ thống, nó chứa các ihònu
tin nlìir cầu trúc cúa mỗi tệp, kiêu và dạiiL> liru trừ của từng mục dừ liệu.
C’ác thônu tin dược liru trữ tronụ lừ dièn uọi là siêu d ữ ỉiệư (meta - data)
và chủng mò ta cấu trúc cua dữ liệu im u\èn tliiìy. Phần mồm hệ quán trị
cơ sờ dữ liẹu và nhữnu nmrài sử dụng cơ sớ dữ liệu sứ dụiii; tir diC'n đè
lay lliònu, tin \ e cấu trúc cua c a sở dữ !iệu.

2. S ự (lộc lập f>iiTa chuoTiỊỉ trình và d ữ liệu


I ronti liộ tlìốnu tộp, cấu trúc cua các tẹp cơ sở dừ liệu được nhúng
vào trong các chưưnu trình truy cập. Vì vộv, bất kỳ một thay dối nào về
cấu trúc cua một lộp cũim đòi hoi phai thay dổi tất cà các chương trình
truy cập dến tệp dỏ. Nmrợc lại. các chưcmg trình truv cập của hệ quàn trị
cơ sở dữ liệu khônu dỏi !ioi \ iệc ihay dôi như thế. c ấ u trúc cùa các tệp
dừ liệu dược lưu trữ trong (ir diến tách rời với các chiumg trình «niv cập.
Tính cliấl này tzọi là sự dộc lập dừ liệu chươnịi trĩnh.
Hô trọ các khiiti” nlùn ilử liệu nhiều íhànlì [iliần
M ộ l c ơ s ơ d ữ l i ệ u c ó n h i è u n g ư ừ i SII’ ciụniỉ,. n i ồ i m ộ l n u ư ớ i c o tlic d u :
lioi iiìột phôi caiih lioặc môí khuiiu ìihiii (\ic\v) khac Iihaii, Mộl khuiiL;
n l i i n c ỏ I h ê l à I i i ộl l ậ p c o n c u a c ư s ớ d ữ l i ẹ u , l ì o ặ c n ỏ c ó t h è c l i ử a c a c di r
l i ệu ao. d ó là c á c đ ừ i í ệu d ư ợ c i ri oh ra tù' c á c t ệ p VJƠ Sif tiir l i ệu k!iác n h a u
nhtnii!: khùng dirợc lini trữ mọi cácii iT) ráiiu. ỈVIỘI hẹ cỊuan trị cơ sơ dử
ỉịệu nỉiièu nmrởi su clịUig pliíii cune càp niiicii CÔIIL! cụ dò (lịiiii Híihìa cac
kíiunu nhin nhiêu llianli pliần.

4. C hia sẻ d ừ ỉiệu và nhiều nịiuòi sir tlụnị»


Một hệ quan irị c a sư dừ liệu nhiều người sứ dụnu phái cho phép
nhiều nuười sử dụnu iruv cập dôna thời dcn cư sò dũ' liệu. 1 lệ quan trị c<r
sớ dữ liệu phái cỏ phàii mèni kièin tra cạnh Iranh đc dam bao ràng, mọi
nuiròi sứ dụnu cập nhại dên cune mộl cư sơ dữ liệu pliai dược thụrc hiện
tliL-o c ách đ ư ợ c kicm ira dè cho kel qua cua các cập nhật la dú iig đàii.

1.1.5. Các khá năng của một hệ quản trị cơ sờ dữ liệu

Ntioài các chức nán” ớ trên, một hệ quán trị C(í sở dừ liệu còn co
nhiC'u khả năng uiúp CÌK) nụưòi quán trị hộ thoim thực hiện việc thiêl ké.
quaii irị \ à sìr dụnịi các hệ cơ sở dữ liệu nhièu Iiạirừị đunu. Các chức
Iiãniỉ d o là :

1. K icm t r a s ự (íir t h ừ a
Dư thừa dữ liệu lìỉihĩa !à cùng inột dừ liệu dược ỉưu irũ’ iihicLi lằn
tronu C(if sớ dữ liệu. Sự dir liùra duii (tên nhièu \ an dc ;
- I'hứ nhấl. phai thục hiện cập nhạt ciiiii’ một dừ !iộu nhiều lẩn, việc
i!o íun nhièii CÔIU’ ph'i va ha\ tian dcn sai sót,

-- Thứ hai, ciir llìừa iliôim lin làm lâng plii bộ như iuii trừ.
- Hiứ ba, các llic lưu trừ cùiiiỊ mộl dìr liỌu cỏ thè trơ nC'11 mâu thuẫn
khi viộc cập nhật kỉiôim dược thực hiện trèn tất cà các filc đó.
Kicni tra dư thừa cùa ỉiẹ quan trị cơ sở dừ liệii la ụiain các vấn đề trèn.

2. H ạn chế các tr u y cộị) kh ô n g đuự c phóp


Khi có nhiều imirư! sư dựim dùiiii chuim một [lệ cơ sư dữ liệu, sẽ có
một số người sử liụnu khônẹ dược phép truv cập íẮi ca thòng lin cua hệ

10
tliõiU!. i ' o n m r ờ i c h i đ i r ự c C|U\ỎÌ1 Irti)- c ạ p đ c l à \ ' i h ỏ n u t i n íìr Cii Mí dìV
l i ệ u r a l ì hi Hì í ^ k l ì ò n u t í ư ạ c c Ị u y c n c ạ p n h ạ t . i ) i c u ỏ o ( ! ầ n ( t cỉ ì \ Ỉ C C p h í ì ỉ

k i ò i n í n i c ; í c t h a o í á c t r u y c ạ p c u a n m í ờ i sir cĨỊUiíi. i l ộ q u a ỉ ì ĩrị c ư s ơ d ử


l i c u c i i ĩ ì i i ca|'» ĩ ì ì ột h ộ i h ỏ n u c o i i c á p p h é p \ ' à a n n i n l i . N e u ừ i q u u ĩ ì ỈIỊ h ệ

t i i ỏ n u c o l l i ê sii' d ụ n u b c í h ỏ H i : c o n n ã y đ c l ạt) r a c á c t ài k h o a ỉ i c l u i n u i r ơ i
SIỈ' dụiìi> va haii chC- lru\ cập Irỏn các lài khoan dó.

3. cap viẹc luu t r ừ lâu dài cho các đối íu ọ n ịí chuoMí* iru ih
và các câu trúc d ừ liệu
«

( ac dõi tuợnLi dĩr liệu phai d ư ợ c lưu trừ láu dài dê pluic \ ụ cli(!
nliiÔLi chiroim trinh khác nhau. Các hệ quàn trị cơ sư dừ liẹu cuiiii càp
các pliưtmu tiện dè lưu trữ cư sở dừ liệu dirtVi dạiiii các (ĩle cùng Iihir viỌc
hiên dòi dừ liệii từ khuôn dạnii nie sanu cấu trúc biến cua chiKíim trình.

4. í ho piiéf> th a m chiếu và hành d ộng bằii}Ị cách sừ ilụníi eác


quy tăc
{ íic ỉiè tnian trị CIÌ thè ciing câp các quy tăc suy dicn dô su\ ciien ra
các thỏnu ÍÌ!Ì niiĩi từ cac dừ liệu dược lưu trừ.

5. C uiiK cấp Iiliiềii ịĩiao diện n g u ò i sử dụiiịi


Do co sa dừ iiệu có nhiêu nmrời dìmíỉ có (rình dộ hiêii biẻ( sữ clụnụ
(.ơ sơ cỉừ ỉiộii khác n.ỉiau, niộl hệ quán trị cơ sứ dữ ỉiẹu phai cuiiu cầp
nliicu iíiao diẹn nưuàị sư dụnụ. Các uiao diện dỏ la các nuôn !ìgữ íruv
\'àn c h o imiròi sứ d ự n g hinli ihườim , uiao diẹn nụ ỏn nuữ lập trình cluì
các niiiiòi ỉập irinh ừnụ dụiisỊ, ưiao diện b àn ” chọn ỈKìặc ỉnẫu biêu (HỌÌ là
iỊÌLio diựn ììi^icời íỉiiní’ đó hoạ) cho những nụưừi sử dụiio dộc lập,...

6. JỊii‘ii diễn các moi lièn hệ phú c tạp giữa các d ừ liệu
Một cơ sơ clũ liệu cu Ihê íỊồm nhiều (Jữ liẹu liêii két \Ỏ 1 nhau Ihco
Iihièu cácli, Một hệ qiiaii Irị cơ sờ dừ liệu phai có khà nãiig hiổu diễn củc
niõi liên hệ ỊtluVc tỌỊ') uiũa các dữ liệu cũne như việc lây ra. hoậc cập nliàl
các dữ liệu cỏ liên quan vói nhau một cách dễ dàniỉ và có hiệu qua.

7. Á p dặt các ràn g buôc toàn vẹn


Nhieu ứnu dụnc cơ sở dừ ỉiệu có inột số rànạ buộc loàn vẹpi phái
thoà inãn dôi \ ới các dữ liệu, ỉỉệ quàn trị cơ sở dừ liệu cuim cáp cãc kha
nănii dịnh imhĩa va áp đặt các rànii buộc đó.
8. C iinị; cấp việc sao luii và phục hồi
Viẹc khai tiiác và sir dụnti hộ ihôiit’ cơ sa dữ liệu kliònẹ tiiè Ir.uili
khoi các honti hóc ve phân cứim \ à phan nieni. Sau mồi lần lioim lìỏc.
dữ liệu cân phai dược phục hôi. llệ thỏim con sao lưu vá phục lỉỏi của hệ
quan Irị cư sư tiữ liệu có nhiệm VỊI dó. Ví dụ. nêu một iiệ ihỏne may tính
bị hone một chiRrní> trinh cập nhặl phức tạp. thi nó cỏ nhiệm \ ụ dani h;u)
răim. cư so dữ liệu dược pliục hòi dC'ii Irạne thái cùa nó trước khi chư rnu
trình bất dầu thực hiện.

1.1.6. Ví dụ về một cơ sở dữ liệu


Chúnu la hãy xetn xét một cơ sở dữ liệu mà nhiêu nuirời đã quen
biết, đó là cư sờ dừ liệu 'I RUỜNG. Cơ sở dừ liệu này liru trữ các thòng
tin liên quan dến sinh viên, các môn học, diem... trona một trường dại
học. Cơ sờ dữ liệu dược tô chức thành 5 bàng, mỗi bủnu lưu trừ các ban
lỉhi dừ liệu cùiiíí một kiêu. Bảng SINH_V1ÊN lưu trữ dữ liệu ve các sinh
viên ; báng MÔN_I1ỌC lưu Irừ các dữ liệu về các môn học ; bang
B lÉ 'r _ T R l/Ở C lưu trữ thônu tin về các môn học cần biết trước cùa các
môn học ; bang HOC PỈỈÀN lưu trừ các dừ liộu về các học phần của
các môn học ; bàníỊ DI ÉM kru trữ diểm cùa lìrniỉ học phần cùa các sinh
viên. Cấu trúc của co sở dừ liệu và một vài mẫu dữ liệu ví dự dược trình
bày ờ hình 1.2.
Dẻ định Hịỉhĩa cơ sở dữ liệu này. chúim ta phái chí ra càu trúc cùa
các bán tihi của mồi tệp (baim) bằng cách dặc tà các kicu khác nhau cua
các phần tử dừ liệu sẽ được lưu trữ trong mỗi bản ghi. rh eo hình 1.2.
mỗi bán ghi S1NH_V1ÊN bao gồm các dừ liệu để biếu diễn Mã S ố _ sv ,
l ỉọ tên SV, IxVp, Cluiyên ntỊành. Mồi bản ghi MÔN_I lỌC bao gồm
các dữ liệu để biểu diễn Mã số MỈỈ, Tên MU, s ố f)V lỉ'r. Khoa,...
Chúng ta phải chi ra một kiều dữ liệu cho mồi phần tir bên trong các bàn
lihi. Ví dụ, có thề dặc là Họ tèn s v là một dãv ký tự có dộ dài nhò hơn
hoặc bànu, 30, M ã_số_SV là một so nguyên,...
ỉ)ể xây cìựng cơ sở dừ liệu TRU Ờ N G , chúnu ta lưu giữ các dữ liệu
để biểu diễn mồi sinh vicMi, mồi môn học,.., vào các tệp thích hợp. Đê ý
rằng, các bàn ghi trong các tệp khác nhau có thể có mối quan hệ với
nhau. Ví dụ, bán ghi dối với Nmiyễn Nam tronc tệp có IìCmi quan dèn hai
bàn ghi troỉiíi tệp DĨẺM. Các bàn ghi này chi ra đièm cùa Nguyền Nam
trong hai học phần. Tưưnu tự như vậy, các bàn uhi trong tệp SINIỈ VIÊN

12
co mòi quan !iệ vái các ban uhi tronu tệp M()N_11()C... 1hỏim tliườim
một c a S(V (lữ iiệu cỉiửa nliiẻu kiêu ban uhi \ à chứa nhiêu môi quan hệ
ui lìa các tệp.

SINH_VÍÊN Mã_số_SV Họ_tên_sv Lởp Chuyén_nqành

17 Nguyễn Nam K45T Tin học

8 Lè Bắc K45C Còng nghệ TT

MÔN_HỌC M ã_sô_M H Tên_MH SỐ_ĐVHT Khoa

101 Tin học cơ sờ 8 Cõng nghệ

102 Cáu trúc DL và GT 5 Công nghệ

103 Toán rời rạc 5 Công nghệ

104 Cơ sớ dũ’ liệu 3 Còng nghệ

BIÊT_TRƯ Ó ’C M ă_sỏ_MH M à_số_ MH_ biết_ trước

104 102

104 103

102 101

Mâ_số_HP Mã_số__MH Học_kỷ Năm Tèn_gịảo_vìên

1011 101 1 2001 Vản

1012 101 2 2002 Vân

1031 103 1 2001 Hoàng

1032 103 2 2002 Hoàng

1020 102 3 2002 Làn

1040 104 4 2002 Huy

ĐIẾM M ã_số_SV M ã_số_HP Điểm

17 1031 8

17 1020 6

8 1031 9

8 1011 10

8 1020 7

8 1040 9

Hình 1.2. Cơ sờ dữ liệu TRƯỜNG

13
riìLUf ỉ a c s a d ừ l i ệ u h a o UỎI11 \ i ẹ c l n i \ \ âĩ ì \ a c â p n ỉ i ậ l sa Jừ
liọu. i ruv \ a n cct scr d ữ liệu là dirn ra c áe > 011 c a u cloi \ (Vị c(v s(t cìữ ỈIỌII
Í.ỈC IA\ ra cac ĩ!)ònu lin cân thiêl. Ví dụ. clìúnir ta có thc có các trin \ân
nlur ; ”1 iọt kò các môn liọc và đicin llìi cua sinh \icii N u u \c n Naiìi",
'Dưíi ra daiìlì s á c h c á c sinlì \ icn llìi i r ưạ l lììon C a S(V íiừ liộu". ('Ạ|> nhậí
Cí> so dù Ịịcu bao aỏiii \iẹc tlìcnì vào cơ stY liữ licu han uhi, xoa 1m> cac
ÍXỈU ulìi. ỉìoậc sưa ílỏi các iZÌá trị iroỉìii cát; han ulìi. C ác Iriiv \à n \ a cac
cặp nhại phai ciirạc dặc ta Íroiiíi nụòn nuữ hẹ ccy S(r dừ liệu niộl caclì
chiỉilì \ a c irirtVc khi eỉìúnu dược xư ly.

1.2. NGƯỜI S ư DỤNG HẸ c ơ s ớ DỮ LIẸU

\ ' ( n n i ỏ t c o s à d ữ l i ệ u !(Vn. r ã t n l i i ô u n ụ i r ờ i t h i i m u i a \ a o \ i ẹ c t h i ê t
kè. Mi’ dụỉìg và iìn\ tri cơ sơ dữ liệu. NMiữnii neười V\cn quan đèn hẹ C(r str
d ù liệu ùi rợc chi:i t h à n h hai nl i óm cliính. N h ó m llur íihàt <jom Iihiìỉìg
HLỉirơỊ mã còng vicc cùa họ liên quan lìàna nnáy dcn c a SCT dữ liọu ; dó la
những nuirảị quan trị co sở dữ liẹu. thiêí kê cơ sư dữ liẹu, sư ciụnL' ca sơ
dữ ìiệii phàn ticii hệ !honi» và lập trinh írne dụnu. Nhỏm lỉiứ hai uôm
n ỉ i ữ n u nei r ời l à m \ iệc d é d u y tri m ô i tnrờiiíi hệ C(T SO' d ữ liộu n h i r n u
klìỏim quan lâm ácn ban ihân co so dù liẹii ; dỏ là nhùnu imuời tliict kc
\ à cai dặt hẹ q u a n irị c ơ s ở d ữ liệu, phá t iricỉì c ô i m cụ, t h a o tác \ \ â ì \ à
bào ĩ ri.

1.2.1. Ngiròi quan trị hệ cơ sờ dữ liệu (Database Administrator -


DBA)
TronL’ inộl tỏ chức có nhiỏu nuiròi cùnu sử dụnu, các tcũ lìuuyên càỉì
phai i nộl n^irời u i á m sát \ à q u a n lý. I r o n ẹ m õ i t r ư ò n u !iệ C(7 s ờ (ỈCr
liệu, cac lài nizu\cn là cư sờ dữ liẹu. liẹ quan irị co scr (iừ ỉiộu \ à các
p l ì a n n ỉ c n i liòn qiiaiì. N m r ờ i q u a n trị h ệ c ơ s ứ d ữ líộu la i m i r a i cl i ị u t r á c h
nhiỌìiì quan lý các lài nmivỏiì dó. Neười nàv chịu trách lìlúẹni \ c \'iệ'c
c h o p h é p t r u \ c ạ p c a s a d ữ liẹu, tô clìirc và h i r m m dầĩì v i ệ c su d ụ n u c a
sa íiữ liệu. c:ìp các phầĩì nicm và plìần ciriìíi llieo ycu cau.

1.2.2. Người thiết kế cơ sờ dữ liệu (Database Designer)


Nciroi ỉiav chịu trach nhiệm xác (lịnh các (lfr liệu sè tlirạc liru trừ
ĩronL’ c a S<T, c h ọ n cac c â u trú c ihicli h ạ p (ỉc b i c u ciicn v a lini ír ừ c á c (iTr

ỉiệu do. N hữ ne nhiẹm vụ nàv được ihực hiện írưởc khi c a sơ clừ liệu

14
(ỉuọv cài ù(u \ a Ị)ho biòn. N ein n íỉiièí ko co írúch nỉiiệrn LÚao tliiỘỊ' \<Vi
nliùnu n iíu à i sir dụnụ lironu ỉai dè liìOu cỉirực eác dòi !i()ị cua lìọ va ítira
ra niội t hiẻí k c tlìoa inaỉì c ác yctí c â u dô. A n h la c ủ n y c ó nhiệĩìì ^■ụ ui a o
í h i c p \ ( n c ív c l ì l ì ó ỉ ì ì l ì u i r ừ i SU' ( l ụ i v a \ à c ỏ k l ỉ a !iăn<j í i ỗ í r ợ c á c y c u c a i i c u a

c ac n h o n ì .

1.2.3. Người sù’ dụng (End User)


N l i ữ i u i i m i r à i s ư d ụ i ì u l à l ì i ì ù n g n i : ư ờ i n i a c ô n g v i ộ c c u a h ọ đ o i ỈK)i

i r u\ c ậ p clcn Ctr str (iữ ỉiọu d ê t r uy \ âiì. c ạ p nlíât \ à sinlì ra c á c t hôỉ ì g tin.
r ó ihc cỉìia nhữnu iìmrưi sir dụiìi^. thànỉì hai ỉihíìin chíỉilì ; nhữììi! nỊ:io-rị
Sĩr (Íụỉ ỉ ì : t h u d n ỉiỊỉ { t ư c l ã n í i ữ n e i m i r ờ i s ư d ụ n g k h ỏ i ì u c o n h i ê u k i c n i h i r c
\c h ệ c ơ S(T ciiT l i ệ u ) \ ' à n h r r n g Ị ìỊiim i s ư dụỉìỉ^ c h ìi iỉộ n ịỊ ( l à n h ừ ĩ ì i : ì ì Lì Uoi
có hièiỉ biet tòt vẻ hc C(T Sí'í dữ !iệu).
Chức năiìg cỏnự \ iộc -.ua nhiTim neiroi su dụnn thụ dộnụ íchiùni
pỉiầĩi iáỉì n h ữ n u Iigirời s ư ciụnu) Uiìn iiền voi vị ộc tru> v a n và c ậ p niìạt
l l ì ư ỡ n u \ u > ê n c a s ơ (lữ liệu b ã n u cáclì su dụíiL! c á c c ủ u hỏi \ à cao c ậ p
nhật chiiàii í e ọ i ỉà c á c ^ i a o ỉ a c d ị ì ỉ ỉ i s ú n ) dà dỉ rợe lậi) t r ì nh \ a kì cni tra
càn ìhàn. Nhữníj, nmròi nà\' chỉ cân bỉct niộl chúi \ c các phiranu liện (.io
liê qiiaiì Irị c a sơ ilữ liệu cviim càp \ à hicu cac kieu iiiao tác chuan dà
(ỉirợc tlìỉcl kc va cai tlạl ỉà du.
Nhì r ni ỉ n ụ ư ờ i s ơ d ụ n i 2 c h u d ộ n ẹ c ó lìiêu bict lõt v c hộ ccy SiT (íứ liệiK
!iọ có íhc lự cài dạl các ửnư dụn <4 riènự của minh dê ỉàiìi thoà màiì cac
\ êii cầu phức lap cua liợ.

1.2.4. Người phân tich hệ thống và lập trinh ứng dụng


Nmroi phàn úclì hệ ihỏnu xác dịnl) các vcu cau cua nlìừnu ỉìeuòi sư
(lụnu (clui vcu là nlìữim nmrừi sư dụnụ thụ clộnc) dc đặc la các cỊìươniỉ
t r i n h p h ù ỉ i ợ p \ ớ i NCU c ã u C(UI h ọ .

Nmrời \ ict clurtrna tnnlì ứnu dụne tỉic hiộỉì các vỉặc ía của íiiiừnu
ngi rời pỉ i ân t i c h i h à n h chuxTnu Irinli. s a u dó k i c n i tra, c h ạ y llìir, s u a !oi.
lùin tài liộu v à háo tri các uiao tác dịnh san,

1.2.5. Người thiết kế và cài đặt hệ quản trị CQ' sò' dữ iiệu

Đ ỏ là n h ừ i m n m r ò i thict kè, cài (ỉặi c á c m ỏ d u n . a i a o di ệ n CÌUÌ ỈIỘ


quán Irị c a sa dữ ỉiẹu tlìànìi các phân niciTì ỏỏmi ụỏị. Mộí liộ quản Irị ca

15
sở dừ liệ u là một hẹ tliô n u p hàn iiKMn p liứ c tạp. h a o u ồ m Iih ic ii tlià n li
plian (môdun). Dó là các niòdun củi dặt tù’ diC’ii ilĩr ÌÌCLI. niỉòn nm'r truy
vân, bộ \ ứ lý íiiao diện, truy cập dừ liệu, kiôin tra cạnh tianli. phục hồi
và aii toàn. 1lệ quan uỊ c a sa dữ liệu phai eiao tiêp voi c:ic hệ thổiiL’
Ịiliàn niêin khác nlur hệ clièu hànli \ à các cliưcrnu Irìnli dịch cho nhicu
n uô n n u ữ kliac Iiliau,

1.2.6. Người phát triển công cụ

l.à nhừnu nuirài thiêt kè và cài dặt cúc cônu cụ (tool) ; dỏ là các
phàn m è m ckSnu uỏi làm thuận tiện cho \ iệc thièt kê \ a SU’ dụim c a S(T
d ừ liệu.

1.2.7. Các thao tác viên và người bảo trì

Là nliừni’ nmrời cliịu trách nliiệm vc \ iệc chạv và bao tri pliần cứnu
và phàn Iiiêni cùa hệ tliôim.

1.3. MÔ HỈNH DỮ LIỆU, L ư ợ c Đ ỏ VÀ THẾ HIẸN

Các loại cau trúc cư sở dữ liệu \ à moi liên hệ uiữa chúim dỏim vai
Irò rất !cVn tronLí v i ệ c x á c địnli tính hiệu quá của hệ quan Irị c a s ờ dừ liệu,
Vi vậy. thiêt kố cơ sư dừ liệu trờ thảnh hoạt dộnu chinỉi tronu môi trirờna
cơ sớ dữ liệu.
Việc thiet kc ca sơ dừ liộu được thực iiiẹn đơn uiíin hơn nhiêu klii tn
sử dụiií’ các mò liình. C'ác mô liình là sự trừu tưcmu dơn uian cùa các SỊI'
kiện troim thế uiởi Ihực. Các trừu tirợim nhu' vậy cho phép kh;ui sát các
dặc dicMii cua các thực thê và các mỏi licMi hộ đưạc tạo ra ụiữa các thực
thè dỏ. Việc thict kc các mò hình lốt sè dira ra các c a sở dữ liệu lôl, và
ircMi c a sở dỏ sõ cỏ các ứng dụim lốt. Nmrợc lại. I11 Ô hình kliônu tổi sẽ
dưa don lliiêl kc cơ so dữ liệu toi và dần đen các ứim dụim kliỏim dủnụ.
M ộ t m ô h ì n h CO' .SY/ c / ữ l i ệ u là m ộ t t ậ p iK.r]") c á c k h á i n i ộ m c i ù n i i đ ê

bièu diễn các cau trúc cua cơ sơ dữ liệu. C ầLi Irúc cua một C(T sớ dữ liệu
là các kiêu dữ liệu, các mỏi IìCmi kct \ à các ràim buộc phài luàn theo trên
các dừ liệu. Nhicu mò hìnli còn cỏ thêm một tập liợp các phép t(KÍn C(r
bàn dè dăc la các thao lác trôn co sờ dữ liêu.

16
1.3.1. Các loại mỏ hình ccy sò’ dữ liệu

C ó râl nliièu I1U) liinii d ừ liệu dã d u ự c dè Iiuhị. C h ú i m ta c ỏ tlỉè phà n


loại c á c i n õ i i ì nh d ừ iiộii ciụa t r ẽ n c á c k h a i I i i ẹm cluìiii! sir dụiT.' óc
! 11Ỏ ta c á c c à u trúc C(y S(T clìi liộ ii.

( ' á c nió Ỉìiiìlỉ lỉữ liứu hũc cao h o ặ c IIÌÔ lìinh i/ữ liệii Dìửc tỊiiun nli-ni
c u n ụ c á p c á c kliái Iiiệm uãn liền với c á c h c a m nliận clừ liệu c u a nlìieu
niỉirài SU’ d ụ im . C á c m ỏ hinli nà> tập Iruní.! x à o baii cliầt l ô e i c c u a biôu
d iễ n d ữ liệ u , nó cỊuan t à m d cii cá i đư ọc biôu (iiễìi tr o n ụ C(T sơ dừ liệu cliử
k h ò n ụ p h ai c á c h hiòu ciicii cliì liệu.

C á c DIÔ h ì n h cỉừ l i ệ u h à c i h a p h o ặ c c á c lìỉô Ì ù ì i h ( ỉ ữ l i ệ u Vcìí ỉ ý c u n u


cap các khái niẹm mô t;i cliị lict ve \ iệc eác clừ liệu dược lưu trữ troiiL’
má\ lính nliư tlic nào. í ’ác iTiô hình dữ iiẹii vặt l\' inò ta cách iini trữ dù
l i ệu t r o i m i n á y tiỉih, ei(Vi I h i ệ u c á c thôn!>, tin nỉ)U' k l u i ỏ n d ạ n u b á n ulii. s ã p
\ ê p bán Líhi. đir(Viií> truv cập.... ( ’ác khái niệm do mô hinh dữ liệu vật Iv
ciinu c à p n ó i c h u n g c ó \' i m l i ĩ a d ô i v ớ i c á e c l n i y C' n u i a m á v l i n h v:hứ
không có ý nuhĩa niấ\ dôi \ (Vi nmrưi sư dụiiLĩ ihònu thuònu,
C) u i ữ a h a i l o ạ i n i ò h i n h nà>' là m ộ t ỉ ứp c a c mô hình íìừ liậit llìữ hiện.
c h ú n u c u n u cap nliữiiii kliãi n iệ m m à niỊirài sir dụnti c ó thc hiêii dirọc \ à
khôiiỉỊ khác nhiòu V(Vi cácỉi tô clnrc dữ liệu bên tronu máy tính. Nuuữi ta
c ò n L!,ọi loại n i ỏ hin h d ừ liẹu nàv là loại inô h ình J ữ ỉiệii m ứ c ( 'á c
m ô h ì i i h d ữ l i ệ u I hô h i ệ n c h c d a u m ộ t s ò clii licl \ c \ i ệc l ư u t r ừ d ữ liệu,
n h ư i m c ỏ the d ư ợ c Cíii dật tnrc tiêp trên hệ íliònti n i á \ tính.

I r o n u Cluicrne 1!. c l iú im la s ẽ n u h i è n c ử u m ộ l IVIỎ liình ciừ liệu m ứ c


t ị u a t i l ì i ệ i i i . i n ô l i i nl i t h ự c l l i ô - IìCmi k ò l . ụ ọ i l ãt l á iHfì h ì n h !'.R (Ì J i l i l v -

R elationship M odcl). M ỏ liinh Iià\ sư d ụ im cá c khái n iệ m i h ự c lliè.


thuộc tinli, moi 1ÌC'I1 kèl tiè (licn dạt các doi UrợiiL’ cùa tlic uiái thực.
M ộ t m ỏ h i n h d ữ l i ệu b ạ c c a o k h á c là ìiìn lììnìì (lữ Hữu ìnrirnịi iỉãi
lirợiiiỊ. Nó sư cluim các kh;'ii niệm như lớp. lliùa kế, phuxTim tliửc, íliôni!
cliệp,... liạn dọc cỏ tliè lìm liièii vc mô hinh nà\ ironu, các tủi liệu 11 Ị. |2|.
C á c m ò hi nl i d ữ l i ệ u t h è h i ọ n lá c á c m ò b i n h d i r ọ c s ư ( l ụ n u t l n n n m
xuyên nliat troiii: các hệ cơ scr dữ liệu thiayn” mại. íĩa mò ỉiinh nôi tiên”
t lu iộ c loại n a y ỉà m ó h ìn h lỊìtdn hệ, m ô hììì/ỉ mạníỊ \ ;ì I}IÕ lììnii p h â n cáp.
( ' á c i n ò hìn h m ạ i i u \ à pliàii c ấ p ra đừi t r u ớ c và d ư ợ c s u cÌỊinu rộim rãi

o . 4/ n0 4/ n0 3o 17
t r o i i e q u a kt ur (trníVc Iiăni 197 0) . V à o đ ẩ u Iihr r nu n ă m 7 0 c u a t h ế k v X X ,
nió hìnii lỊuaii hệ ra clừi. I)o tínli iru việt cua nó, mô hinh quan hộ dần
dàỉi !ha> thè các 111 Ò hình mạnu và phân cấp. Chủng ta sẽ imhiên cửu vồ
m ô h i i i h q u a n li ệ I r o i m C h i r ơ n i í l ỉ í ,

1.3.2. Lược đồ và trạng thái cơ sờ dữ liệu

I ronu I11ỘI mò liinh (lừ liệu can phái phân biệt rõ tiiĩra mõ tả cua cơ
s ơ d ữ liệ u \ à ỉ \ i n íh à n CO' SO' d ữ liệu. M ô tá của một c ơ s ờ dữ liệu đư ợc
uoị là ỉ ư ụ c íỉô CO' .Ví/ cỉữ liệu, n ó d ư ợ c x á c d ị n h r õ t r o n g q u á t r in h thiế t kố
. ư s ơ dữ liệu \ a k h ô n u bị th;i\ đòi thirờnii x u y ê n . Đa s ố cá c m ô hinh dữ
liệu có cac qu\ irỏc liiC'11 thị các lược do. 1liôii thị cùa một lược dồ được
!íoi !à hiún lĩồ cua krợc đồ đó. Một biêu đồ luợc đo chi thế hiện một vài
khía cạtiỉi cua luọv tio như các kiểu bàn t>hi, các mục dừ liệu và một so
kièu ránu buộc, C'ác khía cạnh khác khônu được the hiện troníí biểu đồ
ỉược dỏ.
Các dù liệu troim một ccy sở dừ liẹu có the thay đổi một cách lliư(Vng
\ u \ ẻn ( 'ác tlũ liộu tionư m ộ l c a s ờ dữ liệu tại một thời d iêm cụ thê đư ợc
i.’oi ia niột irạ iiỊ' íh á i c ơ s ư iiừ liệìi hoặc là a n h (sn a p s h o t ) cúa c ơ s ớ dữ
ỉiệu. Nhiổu trạnu ihái quan liộ cỏ ihe dược xây dựng đê làm tương ứng
vói inộl lu ạ c dò c a S(y dtì liệu cụ thé. M ỗi khi c h ú n g ta c h è n v à o hoặc
ỉoại bo một haii ahi, sưa dôi niá trị cùa một mục dừ liệu tronu, một bàn
iihi, cỉiúnsi ỉa dã làm thay dối trạnu thái cua cơ sở dữ liệu sang một trạng
iháị kliac.
Việc pỉiãn biệt iiiũa Iirợc dồ ccr sờ dữ liệu và trạng thái cơ sở dữ liệu
ia rất quan irọiìu. Khi cliúnu ta dịnh niiliTa một cơ sở dừ liệu mới, ta chì
(Lu’ la luxK dỏ CO' S(T tiũ liẹu clici !iộ quàn Irị ca sở dữ liệu. 1'ại thời diểm
i\ày, trạiiL’ ihai CIUI ca sa dữ liệu !à một trạng thái rỗng, không có dữ liệu.
Cluìnt> ta Iiỉiận duợc trạng ihái ban đầu của cơ sở dữ liệu khi nhập dữ
iịệu lan dầu lièii. rìr dỏ trớ di, mỗi khi một phép toán cập nhật dược thực
'ìiệii doi \(íi co sà (lữ liệu, chúim ta nhận được một trạnụ thái cơ sờ dừ
!iệu khác. 1ại mọi iliời dièm. cơ sở dữ liệu cỏ một trạng thái hiện tại. Hệ
q i i a n IIỊ c ơ s a (iừ Itệu c ó Iracli n h i ệ m d â m b á o r ă n u , m ỗ i I r ạní í t h á i c ơ s ờ
dù liệu là niột irạnu tliái \ ừnu chắc, nuliTa là một trạnu thái thoà niãn cấu
íruc và cac ranu hiiộc dirợc dặc la trone liroc dò. Vì vậv, việc đặc tà một

8
lược ciồ dúnu dần cho lìỌ quan trị cơ sơ dữ liệu là một viẹc làm cực k>
quan Irọim, và lirạc dỗ phai clirợc tlìict kc một cáciì can thận, llệ quan írị
ca sa ciìr liệu liru irữ các mỏ ta cua các càu trúc lược đỏ và các rane
buộc, c ò n ÍZỌÌ là s ỉ Cỉ t d ừ l i èỉ t \ ' à o t r o n u l ừ diên ( c a l a l o u ) c u a h ộ q u á n trị.
SÍU) cho pháiì Iiìcni hẹ quan trị C(T S(y dừ liệu có ihỏ tham khao dcn hrợc
dồ khi cần. D ỏ i khi nuưừi ta còn uọi lược do là mục íicii ( i n l c n s i o n ) \ à
trạng thái cơ sa dữ liệu là m ư rỘNíỉ (cxtcnsion) cứa lược đỏ.
Vi íJụ : ỉ lình 1.3 írìiìh bàv lược dồ cúa c<y sở dừ liệu "'I'Rl )()N( i".
SiNH_VIÊN

M ã_sồ_SV H ọ jê n _ s v Lớp Chuyên_ngành

MÔN__HỌC

Mâ số MH Tên MH Số ĐVHT Khoa


! ..........L ... -
BIẾT_TRƯỚ C

Mâ_số_!VIH Mã_số_MH_biết_trước

HỌC^PHAN

M ã_số_HP Mã_số_MH Học_kỳ Năm Tên_giáo_viẽn

ĐIẾM

M ã_số_SV Mã__số_HP Điểm

Hỉnh 1.3. Lược đồ cơ sở dừ liệu 'TRƯỜNG'*

1.4. KIẾN TRÚC HỆ C ơ sờ D Ữ LIẸU VÀ ĐỘC L Ạ P D Ữ LIỆU

Troim phần này chiìnu ta làm quen inộl kiến trúc cho hộ cơ sờ dữ
liệu, gọi là kién Irúc hci lư ợc đỏ (1 lì ICC - Schcma Arcliitccturc). và kliai
niệm đ ộ c lậ p cỉữ ìiệii.

1.4.1. Kiến trúc ba lược đồ

Mục dích của kien trúc ba lược dồ là tách rời các ứng dụnu cua
imười dùnti \'à cơ sò dữ liệu vậl lý. 1ronu kicMi irúc nay, cac !irực dò có
the dược xác định ờ ba mức sau dây :

19
1. iVlửc tr o n s (Intcriial level) - Lm/C (lồ trong (Internai scheina)
Múc tioim niò ta câu trúc lưu irữ vật iỷ của cơ sở ciữ liệu. Lược clồ
tronL! sư (lụiiu một mô hình dừ liệu vật lý và mô la các chi tiết dầy du
cua \ iòc Imi trữ dữ iiệu và các dườni’ dẫn iniy cập dối với co sở d ừ liệu.

2. Mức quan niệm (C oiiceptual lcvel) - 1-uọ'c d ồ quan n iệm


Mức cỊiiaii niệm mỏ ta càu trúc của toàn bộ cơ sờ (.iữ liệu cho một
cộim doniĩ nuưííi sư dimu. Lưọc đo quan niệm che dấu các clii tièt của
cấu iriìc lưu trử \ ậ t lý \ à tập trunu v à o m ô tả các thực thế. c á c kièii dữ
liệu, các Iiiôi liên kết. cac thao lác của nt>ưòi sử dụrií’ và các rànu buộc.
Một inô hinh dừ liệu hậc cao. hoặc một mỏ hinh dữ liệu thế hiện có thê
dược sir clụne ớ mức nàv.

3. Mức ngoài hoặc mức k h u n g nhìn


Mức naoài hoặc mức khium nhìn gồm một số các lược dồ ngoài
hoặc các khuim nhiii cùa neười dùim. Mỗi lược dồ ntìoài m ô tả niột phần
cua ccr sa <lữ liệu mà niột nhóm nuười sứ dụng quan tâm, và nó chc dấu
dối \ á i nhom này pliần còn lại của cơ sở dữ liệu. Một mô hình dữ liệu
bậc ca-i. hoặc inột inò hinh dừ liệu thế hiện c ó ihể đư ợ c s ừ cÌLinu ờ m ức
nà\ . I !inh 1.4 niò tá kiốn trúc ba lược đồ.
Kiến trúc ba lược do là một công cụ thuận tiện cho người sử dụng
iiinh ciuim ra các mức krợc dồ trong niột hệ cơ sở dữ liệu. Da số các hệ
quán tiị c ơ S(Y d ỡ liệu kh ò im phân tách ba m ứ c m ộ t cách da y dủ. nhirim
hỗ trợ kicn trúc ba lược dồ ỡ một mức nhất dịnh.
Kién trúc ba lược dồ chi là mò tá của dữ liệu, bản thân dữ liệu chi
ĨÒI1 lạị o m ứ c \ ậ l lý. ỉ r o n g m ộ t h ệ c ơ s ở d ữ liệ u d ự a t r ê n k i ế n trúc b a
krợi.- d ò , m ỗ i n h o i n n m r ò i s ư d ụ i m c h i t h a m c h i ế u d e n l i rợc d ồ I i g oà i c ú a
họ. Nltư \ậ v , hệ quán trị cơ sờ dữ liệu phái chuven đôi một yêu cầu được
chi ra trẽn lirạc d ồ imciái tỉiànli m ột y è u cầu trên lược dồ qu an n iệ m và
sau do ihánli Iiìột >CII c a u trên l ư ợ c d o tron g d ê xir !ý trên c ơ s ớ d ữ liệu
dirợc liru trừ. Nếu một _\ òu cầu là lấv clừ liệu ra. các dữ liệu được lây ra
phai dirợc dịiih dạnií lại cho phù hạp với khung nhin bên ngoài của
nuưừi sư dụnu. C’ác tiến trình chuvển đồi các yôu cẩu và các ket quà
uiữa các mức clirợc ụọi là cúc ánh xạ. Các ánh xạ này có thổ liêu tốn thời
gịíin, \ I \ ậy mộl số hệ quán Irị cơ sở dừ liệu, nhất là các hệ hỗ trự các cơ

20
S(y dữ liệu nhỏ không hỗ írợ các khunu nhin Iiuoài. 1 Li\ nlìicn. ĩmav
tronu các hộ như vạy cùng phái có một so ánh xạ (!ỏ clìUN êìì tlỏi các ycu
câu giữa mức quan niẹni và niức Iroim.

Người dùng cuối

Anh xạ quan niệm/trong

MỨC TRONG

C ơ Sớ Dữ LIỆU ĐƯỢC LƯU TRỮ

Hình 1.4. Minh hoạ kiến trúc ba iược đồ

1.4.2. Sự độc lập dữ liệu

Kiến trúc ba lược đồ có thể được sử dụng dể giái thích khái niệm
độc lập dừ liệu. Dộc lập dữ liệu có thể định nghĩa nhir là khả năng thay
đổi lược đồ tại một inức của một hệ cơ sở dữ liệu mà khôníi làm ihay đổi
lược đồ ở ‘rnức cao hơn tiếp theo. Có hai loại dộc lập dừ liệu :

ỉ. Đ ộc lập d ữ liệu lôgic


ỉ)ộc lập dữ liệu lỏgic là khả năng làm thay đồi lược đồ quan niệm
mà không làm thay đổi các lirợc đồ nuoài hoặc các chươnụ Irình ứng
dụng. Chúng ta có thể thay đổi lược đồ quan niệm đe niở rộnu cơ sờ dữ
liệu (bàng cách thêm vào một kiêu bán ghi hoặc mộí mục dữ liệu), hoặc
làm íìiảm cơ sở dữ !iệu (bàng cách loại bỏ một kiểu ban ụhi hoặc một

21
Iiụic dữ liệu). 1roiiu (rườim hợp làin eiani, các lirực dô niioài clii tliam
chicii dèn các dừ liệii, còn lại sõ kliỏnu bị anh liLRTim. Chi có dịnh imliìa
khune nhìn \ à các ánh \ ạ can dược tliay dôi tronu một hệ cơ so dừ liệu
hồ trự dộc lập dữ liệu, ('ác chircrnu trình ứng dụní; tham chieu các câu
triic lược dò ntioài phai làin \ iệc như trưóc dó, sau khi lược dỏ quan
Iiiộni chịu niột s ự (ò c h ứ c k.ii lôuic. Các thav doi doi với các ràne buộc
cCiim có ihò dirọc áp dụim clic) lược do quan niệm !iià khỏnu iàiii thay dỏi
các lược đô imoài hoặc các chiKriiu trình ứim clụnu.
2. Đ ộ c lậ|) d ử liệu vật lý
Dộc lập dữ liệu \ ậ l lý là kha nănu thay dôi lược đồ tronu mà không
làm thay đôi các lược dô quan niệm hoặc các lược dồ ngoài. Các thay
dôi dối với lược dồ Irong có thè cần thiết, bơi vi một số ílle vật lý phai
dược tỏ chức lại. Ví dụ, bànu cách tạo ra các câu Irúc truy cập phụ đê cài
thiện tiiao lác lẩy ra hoặc cập nhật. Nếu các dừ liệu như trước dò còn lại
tronụ cơ sớ dữ liệu, chúnu ta sẽ không làm thay dôi lược dồ quan niệm.
Khi chúim ta có mộl hệ quàn trị cư sở dữ liệu nhiều mức. từ điển
(catalog) cua nỏ phai dược mở rộnu đế chứa ihông tin vê việc ánh xạ các
vôu cầu và các dừ liệu iíiữa các mức khác nhau như thê nào. Hộ quán trị
cơ sơ dữ liệu sư dụnii một phần mềm phụ đê thực hiện các ánh xạ này,
bànu cách tliam chiếu đến thông tin ánh xạ tronti catalog. Sir độc lập dừ
liệu sẽ dirợc thực hiện, bới vi khi một lược đ ồ bị thay đồi tại m ộ t m ứ c
nào đó thi krợc dồ ơ mức cao ỈKTII tiếp dó sẽ không bị thay đôi, chi có
ánh xạ íiiữa liai mức là thay dồi.

1.5. NGÒN NGỮ C ơ S ở DỮ LIỆU VÀ GIAO DIỆN

1.5.1. Các ngòn ngữ hệ quàn trị cơ sờ dữ liệu


Một khi \ iệc thiet ke cơ sờ dừ liệu dã hoàn thành, cần phải chọn một
hệ quán trị cơ sở dữ liệu đè cài dặt cư sờ dừ liệu. Trong các hệ quán trị
cơ sư dừ liệu íiìCmi nay thirờnụ có các ntiỏn imừ : ntíòn ngừ định nghĩa dừ
liệu (l)aUi Dcrinition Langiiagc - DDL) và ngôn ngữ thao lác dữ liệu
(Data Manipiilation l.anmiage - DMI.).
Ngôn ngừ dịnh nghĩa dừ liệu dược sử dụng để định ntihĩa các lược
đồ. Hệ quán trị cơ sở dữ liệu có một chương trinh dịch ngôn ngữ DDL,
nhiệm vụ của nó là xừ ỉý các càu lệnh DDỈ. đê xác định mô ta của câu
trúc lược đồ và lưu trữ mô lá lược đồ vào từ điền cùa hộ quản trị cơ sờ
dừ liệu.

22
Ntiỏn imữ ihao tác dữ liệu được sử dụim dc ihat) tác CO' sa diì liệii.
Các thao tác ciiính ^om có lây ra. chèn \ ào. loại bo \ à sua (lũi các dù
liệu. C'ó hai kiêu neôn nuừ Ihao tác dữ liệu chinh : nuôn nuữ iliao tác diì
liệu inírc cao hoặc ngôn nuừ phi thú tục và imỏn Iiinì lluto lác dừ liệu
imrc thấp.
Neôn imữ thao tác dữ liệu tnức cao có thê dược sir dụim t!c diễn cta!
cac phép toán co sò dừ liẹu một cách nẹãn tiọii, Phần lỏii các hệ tỊiuui lr|
cơ sơ dừ liệu cho phép nhập các lệnh cũa neôn nuữ !hao tác dữ iiẹu miK
cao theo cách tziao liêp (nuhĩa là sau khi nliập một lệnh, hệ thòim sẽ thực
hiện lỌnli dó rôi mới nhập lệnh tiổp theo), hoặc dược nlúiiiu \à() một
ntĩỏn ngữ lập trinh vạn năiií’. 'I rorm tnàm g hợp nhuim vào nuõii imù k!iac.
các iệnh cùa ngôn tiíỉữ thao tác dừ liệu phai được xác dịnli hên tronu
chưcmg trinh, sao c h o m ột chircnig trình ticn dịcli c ó ihè nhạn ra cliíing \ à
được hệ quản trị cơ sở dừ liệu xử lý.
Níĩôn nuữ thao tác c o sở dữ liệu mức thâp hoặc ĩiuỏn nuử thu lụe
phái được nhủníi vào troníi một nuôn nuìr lập trinli \ ạ n nãim Ngỏn ngừ
thao tác cơ sớ dừ liệu kiêu nà\ thirờnu lâ) ra các han uhi hoặc các dùi
tirợng riêng rẽ và xử lý chúng một cách riênu rẽ. Vi vậy. chúiiụ câii ptìa:
sư dụntí các cấu trúc ngôn nm'r lập trình như vònụ lặp. dicu kiện.... dê là>
ra từng bàn t;hi một từ một tập các bản t>hi. Ngôn ni>ừ th.ao lác dừ liỌu
mức thàp dirợc tiọi là ntĩôn ngừ mộl lan mội him ựhi. Các nuíìii nuữ thao
lá c d ữ liệu m ứ c c a o c ó thể d ù n g m ộ t lện h d ê lấy ra m ộ l iúc iihicLi ban
tihi, nên chúng được uọi là níiôn nuừ mộl làn một lập hợp.

1.5.2. Các loại giao diện hệ quản trị cơ sờ dữ liệu


Các hệ quán trị cơ sờ dừ liệu cung cấp rất nhiều loại uiao diệĩi Iiuười
dùiiíí thân thiện. Các loại eiao diện chính gồm có ;

1. G ia o diện d ự a trên b ảng chọn


C'ác giao diện này cung cấp cho níiirừi sư dụng danli sách các lựa
chọn, gọi là hang chọn (mcnu) và hircVng dẫn nmrcyi sứ ilụim diễn dạl
một yêu cầu lừ dầu đến cuối. Các bảnu chọn làm CÌK) người sir dụiiiĩ
khônu cần nhớ các lệnh và củ pháp của ntiôn ngừ truy van, C'ác hatm
chọn thà xuống đã trở thành kỳ thuật phồ biến trong các ưiao diện dựa
trên cứa sồ. C h ú n g th ường được sư dụng trong các giao diện quét, cho
phép người sừ dụng nhìn thay nội dung của một cơ sò dữ liệu theo cách
không có cấu trúc.

23
2. (t^iao diộn (lựa trên ÌÌIỈÌII bicii
Cac uiao diện Iiày ìúCmi lliỊ một mầu hicu cho nuuời sư clụnu. Nlìữn<j
n u u o i SU' dụiiL’ c ó lliè d i c n \ à ( ) tal c a c á c ô c ú a m ẫ u b i c u d c n h ậ p c á c d ừ
!iẹu n io i. lio ặ c họ CÍII d iê n \ ;iO m ộ t so ò, cò n hệ q u a n I r ị C(í S(V d ừ liệ u sè
ducỉ ra các dữ iiệu |)liù liợp clio các ô khác. Cac Iiiẫu hiêu ihirừnu đirợc
lỉiict kc v;i dưực lạp tnnh clio cac imirừi dùng dcni uian. Một so iiệ tliônu
c ỏ cac iiện ích uiúp Iiuirới sir dụnu lìrnu hư ớ c x à y dựníi một m ẫu biêu
trèn inan hinh.
3. C ia o diện đổ hoạ
Mọt uiao diện đồ hoạ (Ciraphical User Interface - GUI) thường hiên
ihị riiột lược dồ cho neirơi sử dụng dưới dạnu biêu đô. Nuirời dùng có
lliê thực hiện một Iruv vẩn bằng cách thao tíic trên biêu đồ. Trong nhiều
lrư(mn hợp, GUI sư dụnu ca các bảnụ chọn và các mẫu biêu. Da sò các
( ìl '1 sư dụne các cônu cụ Iro !ihư chuộl, phim đè kích các pliân cua sơ dô.

4 . ( ỉ i a o d iệ n c h o I i ị í i i ò i q u ả ii t r ị h ệ th ố n í*

Da số các hộ quàn tri C(r sơ dừ liệu cỏ các lệnh ưu tiên, chi có nhũ’ng
niiưưi quan irị liộ thỏna mới dược sử dụnii các lệnh dó. Dó lá các lệnh
tạo ra các tài klioan (account), dặt các thain số cho hệ thống, cấp các tài
khoan, thay đỏi lược đồ hoặc tố chức lại các cấu trúc lưu trừ của cơ sơ
đ ừ liệu.

1.6 MÔÍ TRƯỜNG HỆ c ơ s ờ DỮ Liẹu

I ronu phần này, chúnc, ta thào luận \’ề các kiéu thành phần phần
nicp.i tạu nt'i) các hộ quán trị cơ sớ dữ liệu và các kieu phân mèm hệ
ihổim irià hệ quán Irị cơ sớ dữ liệu uiao liếp vứi chúng.

1.6.1. Các môđun thành phần của hệ quản trị ccy sờ dữ liệu
MỘI hệ quán trị cư sơ dữ liệu là một hệ thống phần mềm dầy dii,
iịOVã cac niôđun thành phần sau dây :
1. M ô đ u n quản trị dũ liệu được liru trữ m ú c ca o (H ig h e r - level
stored data m a n a g e r)
C a sơ (iừ liệu và từ điốn cùa hệ quan trị dữ liệu thiròaiu được Uru trữ
trên đĩa. Việc truy cập dên đĩa trước hét do hộ diều hành (Opcrating
system,) kiêm soát, nó lập lịch ra/vào (input/output) đTa. Mòđiin quàn trị
dừ liệu mức cao kiếm tra lru\ cập đến thònụ tin của hệ quan trị cơ sớ dữ

24
liệu cluợc lưu trữ trèn dĩa là mộl phân cua ca sớ dữ liệu hoặc CÚÍI lừ dicii.
lỉộ cỊuáii ti'Ị dữ liệu dư ự c lưu trữ c ó thê sứ dụ ng các phục \ ụ c o ban cua
hẹ diồn hanh đé thực íiìCmi việc chuyen dừ liệu mức thấp ííiữa dĩa vủ hộ
nhớ Ironu cua !ná\ tinh, nhưiig no kiêm soát các khía cạiih khác cua việc
clHi>C'n dừ liệu như diêu khiên các phòim dựi (buíTcr) tri)im bộ nhứ
chính. Mồi klii dã ơ irong phònụ dợi cúa bộ nhớ chính, nỏ có the đirực
các niôdun khác cua hộ quân trị cơ sớ dừ liệu hoặc các chirưnu trình ứng
dụim \ ir lý.

2. C hu(mịí trình dịch các lệnh định nghĩa dũ' liệu (DDL compiỉer)
Mỏđun nàv xứ lý các định nghĩa lược đồ chi ra trong các lệnh định
nuhĩa dữ liệu và lưu trữ các mô tả cùa các lược dồ (siêu dừ liệu) và từ
(liền cua hệ quan trị c ơ sờ dữ liệu. Từ điển chứa các thông tin như tên
các tìlc. các mục dữ liệu, lưu trữ các chi tiết của mỗi nie, ánh xạ thông
tin uiữa các krợc đồ, các ràntỉ buộc và nhiều kiểu thông tin khác cân cho
các niôdun cứa hẹ quan trị cơ sở dữ liệu. Sau đó các môđun phần mềm
cua hệ quan trị cư sờ dữ liệu sẽ tim kiếm thôn^ tin từ đÌLMi nêu cân.

3. Bộ xủ' lý CO' sỏ' d ữ liệu tluVi gian chạy (Run-time database ịirocessor)
Môdun này điều khiển việc truy cập cơ sờ dữ liệu lại thời gian chạy.
Nó nhận các ihao tác !ấy ihông tin ra hoặc cập nhật và thực hiện chúnu
trên c a sớ dừ liệu. Việc truv cập dến đĩa thực hiện thòng qua bộ xử lý dữ
liệu dược liru trữ.
4. C h u o n g trình dịch truy vấn (Qucr>' coinpiỉcr)
Cliưaim trình dịch truv vấn xử lý các truy van bậc cao duực đưa vàci
theo kiểu tíiao tiếp. Nó kiém tra, phân tích và thông dịch hoặc biên dịch
một truy vấn bàng cách lạo ra chưmig trình Iruy cập c a sở dữ liệu và sau
cló sinh ra các lời uọi đến bộ xử iý thời gian chạy để thực hiện chươiig
(rinh đó.

5. ChiroTig trình tiền dịch (Pre - compiler)


Chươim trinh tiền dịch lấy ra các ỉệnh xử lý thao tác cơ sớ dừ liệu từ
mộl chương trinh ứng dụng được viết trong một ngôn ngữ lập irinh chu.
Các lệnh này sẽ được chuyến đến bộ dịch ngôn ngừ thao tác cơ sở dữ
liệu (D M L compiler) đế dịch thành clìirOTig trình đích nhàm truy cập cơ
sở dừ !iệu. Pliầii còn lại của chirang trình sẽ dược gửi dến chương trinh
dịch ngòn ngữ chủ. Các chương trinh dích cùa các lệnh thao tác dữ liệu
và pliần còn lại cùa chương trình được liên kết lại tạo nên một giai) tác

25
hoàn chinh mà chưưni’ trình thực hiện của nó chửa các lừi uọi dcn bộ xư lý
C(if sớ dừ liệu thừi uian chạy.
I linh 1.5 minh hoạ các môđun thành phần của một hệ quàn trị cơ sa
dữ liệu vá mối liên hệ giữa chúiiíĩ.
Các chương
Quản tri hệ thống trinh ứng dụng
Người dùng
thông thưởng
Người dùng
tham số

X
Các lệnh Các lệnh Truy vận
DDL ưu tièn giao tiếp
V }
Chương trinh
dịch ngôn
ngữ chủ

Chương trình
dịch truy vấn CÁC
GÌAO
TÁC ĐÂ
Từ đién ĐƯỢC
hệ DỊCH
thống/
từ điển
dử liệu

Bộ xử lý
cơ sờ dử
liệu thời
gian chạy

Bộ quản trị Kiểm tra cạnh tranh/các hệ


dữ liệu được thống con sao lưu/phục hồ!
lưu trữ

Cơ sở dữ liệu được lưu trử

Hình 1.5. Các môđun thành phần của hệ quản trị cơ sở dữ liệu

26
1.6.2. Các tiện ích cùa hệ CO’ sớ dữ liệu
Ngoài các mòíliin [■>hàn niC'm ciirực mô là ơ trC'M. da sồ cát hộ quan trị
C(r Str d ữ liệu c ó c ; i c ticMi ÍCỈ1 C(V s ử d ữ l i ộ u u i u p c h o nuirời q u a n ii'Ị
hệ tliôim tioiig \ iệe cỊuan irị hộ cơ sư dữ liệu. Các tiện ícli có cac cliức
năim sau :

1. !\ạ p (L o a d in íi)
riệii ích Iiạ[' ctirạc sir dụiiụ dê nạp các íìlc dữ liệu đà có. cìiăiiii hạn
các tìlc vàii lian iioạc các nic tuần tự vào cơ sớ dữ liệu. Nó con thục liiẹn
\ iệc dịnh dạnu lại c á c dữ liệu tìr cá c íìlc nuiioii c h o phù hạp vcri khuôn
dạim cua các dữ liệu troim cư sơ dữ liệu.

2. Sao hru ( B a c k u p )
Vlộl liộii ích sao lưu tạo ra một bàn sao lưii ciia cơ sớ dữ liệu,
lliưánu là băni! cách uum toàn bộ cơ sớ dừ liệu vào mộl bănu lừ. lian sao
lưu c ỏ thè d ư ọ c s ư d ụ n u d ô k h ỏ i p h ụ c C(y s ò d ừ l i ệ u t r o i i L ; i r i r ờ n u hợỊ - ) c ó

các hỏnii lióc l(Vn.

3. Tổ chiic lại n ie
riện ích nàv có tliè dược sư dụiiỉi dê tô chức lại niộl lìlc cư sơ dữ
liệu thành inột tô cliức íllc khác đè cái thiện việc thao tác.

4. Iluóiifí dẫn thao tác (P c rlor in an c e rnoniíorinịí)


riộii ícli này hướníi dần việc sư dụnu co S(í dữ liệu \ à cimu câp các
thốntỉ kê cho nuirời quan Irị cư sở dừ liệu.
Các dưừim chi các truv cập dưới sụr kiêm soát cua hộ cỊLiaii li ị dừ
liệu dược lưu tnì.

1.6.3. Các còng cụ, môi trường ứng dụng, các phương tiện
truyền tin

1. C á c CÔIIỊÌ cụ

liệ quán trị C(t sớ ciữ liệu tlnnVntĩ cỏ sẫn các cônu cụ cho nhrmụ
nuirời thict kế cơ sơ dừ liệu, sử dụnu cơ sở dừ liệu hoặc quan trị cơ sớ
dừ liệu. Còim cụ ('A S Í' thirờnu dược sử dụnu troniĩ giai doạn Ihiêt ke hệ
cư sớ dữ liộu. l ỉẹ ihonii từ diên mớ rộng rất có ích troim các tổ chức lớn.
lỉên cạnh việc lưu trữ thôtm tin từ điền về các lược đồ và các ràim buộc.

27
tù diòn dừ liệu c ò n lưu trữ các lliôim tin khác n h ư cá c qu y ết định thièt
kố. các chuàn s ư dụnu. m ỏ la của cá c chưcnig trinh ửn <4 dụntì và thô n e
tiii rmirới sứ dụim. M ộ t hộ thôim như vậv được uọi là m ột k h o i h â n ^ íin.
N h ữ n u nu i r ừ i q u a i i trị hộ t h ò i m \ à n e ư ờ i s ử d ụ i m c ó t h è t r u \ c ậ p t r ự c
tiep den cá c thônti lin này khi cần. Một tiện ích lừ điên d ừ liộii ih ư ờ n u
ciiửa nhiều thônii tin và chu y ế u đư ợc các nuirời d ù n g truy cập.

2. C ác môi truòTig phát triển ứng d ụn g


Các hộ thốniỉ này cunu cấp một môi trường đê phát triên các ứng
dụntì cơ sờ dừ ỉiệii ; bao gồm các phương tiện ciúp đỡ troim nhiều khía
cạnli của các hệ co sờ dữ liệu, bao gồm việc thiết kế cơ sở dừ liệu, phát
trien íĩiao diện đồ hoạ nmrời sừ diing, phát triển các truy vấn, các cập
nhật và chưcTng trinh ímg dụng.

3. C ác phần m ềm truyền thông


Các phần mềm truyền thône cho phép các người sư dụng truy cập
dến cơ sở dữ liệu từ xa thônạ qua các dầu - cuối máy tính (terminal).
irạm làm \iệ c , hoặc các máy tinh cá nhân địa phưaiiii cúa liọ. Nhữỉig
máy nà>' đirợc kết noi với trạm cơ sờ dừ liệu các phần cứng truyền dừ
liệu như các đườnu diện thoại, mạng máy tính, các còng cụ truyền thông
vệ tinh.

1.6.4. Phân loại các hệ quản trị cơ sờ dữ liệu

Có nhiều tiêu chuấn dể phân loại các hộ quán trị cơ sờ dừ liệu. Tiêu
chuàn thứ nhàt là dựa trên niô hình dữ liệư. Có hai kiêu mô hình dữ liệu
đ ư ợ c s ử dụníí trong nh iều hệ quàn trị hiện nay là m ô hình d ữ liệu quan
hệ và mô hình dữ liộii đối lượng. Trước đó còn có m ô hinh dữ liệu phàn
cấp và niô hình dừ liệu mạng, nhưng hai mô hìnli này không phát triển
được. Các hệ quàn trị cơ sở dữ liệu quan hệ phát triền liên tục và đặc
biệt là đã tích hợp nhiều khái niệm đã dược phát triển trong c ơ sở dữ liệu
đối tượntỉ. Điều dó dẫn đến một lớp hệ quản trị cơ sở dừ liệu inới gọi là
các hộ íỊuún trị cơ s ớ d ữ liệu quan hệ - đổi tượng. N h ư vậy, chúng ta cỏ
các hệ quàn trị cơ sở dừ liệu dựa trên mô hình dừ liệu là : quan hệ, dối
tirợna, quan hệ - đổi tư ợng, phân cấp và mạng.
Tiêu clmẩn thứ hai để phân loại các hệ quản trị cơ sở d ữ liệu là số
nmrời dùnu được hộ thống hỗ trợ. Các hệ thốníĩ một người dùny

28
(Siimle - Iiser svstcm) chi hồ trợ một nmrài dùng tại mỗi thời diêm và
lliưcVntỉ dược sir ciụnu \'(Vi các niáy tính cá nhíln. ('ác hộ ihỏn u nhièii nụirai
tiùim ( M u lt i u s c r s v s t e n i ) c h u a c á c hẹ quan trị C(r s a d ừ liệu h ồ trợ n h ic u
niiirai d ù n g clồnụ th ài.

1'iêii chuàn tliứ ba dùng dè phàn loại các hệ quan trị ccy sa dũ’ liệu !à
số các trạm m à c ơ s o d ừ liệu dược phân tán trtMi dó. M ộ t hệ quan trị C(T
so dừ liệu là tập trunẹ (ccntrali/.ed) nếu các dữ liệu chi dược lưu irũ tại
một trạm máy tính. Một hệ quán trị cư sử dữ liệu lập irune có thé hỗ trự
nhiêu nmrời clùim, nliirne hệ cỊuán trị cơ sờ dừ liệu và híin ihàn C(r sa dừ
liệii nằm hoàn toàn tại một trạm máy tính. Một hệ quan trị co sa dữ liệu
phân tán (ỉ)istributcd D B M S) có thế có cơ sớ dữ liệu và các phần mềm
quàn trị cơ sơ dữ liệu dược pliân tán trèn nhiều trạm nối với nhau ban<z
niột mạníỉ Iiìáv tính. Một hệ quan trị phân tán là thuần nhat nếu các phần
Iiiềni quán trị cơ sơ dữ liệu tại các trạm là nliư nhaii. nuược lại nó dưực íiọi
là klỉôniỊ t h u â n n lìãf.

Ntĩoài ra, có thể phàn loại các hệ quan irị cơ so dừ liệu dini trên một
so tiêu chuẩn khác.

CÂU HỎI ÔN TẠP

1, Định nghĩa c á c thuật ngữ : c ơ s ở d ữ liệu, hệ quản trị c ơ s ờ d ữ liệu,


hệ c ơ s ở d ũ ’ liệ u , từ đ iể n CO' s ở d ữ liệu, m ô h in h c ơ sỏ' d ữ liệu.
2 Nêu c á c tính chất c ủ a một c ơ s ỡ d ữ liệu.
3. Nêu c á c c h ứ c năng cùa một hệ quản trị c ơ s ờ d ữ liệu.
4. Giải thích c á c đ ặ c trưng của giải pháp cơ s ở d ữ liệu.
5. Định nghĩa mô hinh c ơ s ở dũ’ liệu và phân loại.
6. Nêu c á c thành phần của một hệ quản trị c ơ s ờ d ữ liệu
7. Liệt kê và p h ân loại c á c hệ quản trị c ơ s ờ d ữ liệu.
8. Liệt kê c á c loại người s ử dụng hệ c ơ s ờ d ữ liệu.
9 Liệt kê c á c loại giao diện người s ử dụng

29
c H I Ỉ O N C ; II

MÔ HỈNH THỰC THẾ - LIÊN KẾT

I r o n e dnr c Ti m n à v , c h ú n u ta sẽ i m h i ê n c ử u m ỏ liiiih i h ự c i h ê - l i ên
kct. iiọi tă! là mõ hình ER (Í Jitit> - Rclalionsliip Modcl). Do là một mỏ
hình dữ liệu imrc quan niệm, nó tập trunu \ ào việc niô ta cac càu irúc dữ
liệu \ à các rànu buộc. M ô hinh n à \ ihườnu dư ợ c sư dụiiLĩ dc thiet ke các
irnu dụiiu cơ sa dữ liệu và nhiều cônti cụ thiôl kè cư s a dCr ỉiệii sư dụim
các khrii niệm cúa nó.

2.1. S ử D Ụ N G MÔ HÌNH Q U A N NIẸM B Ạ C C A O C H O VIẸC


THIÉT KÈ C ơ S ờ D Ử LIẸU

Ọuá trình ihiet ke một cơ sờ dữ liệu quan hệ hảne việc sư dụnu niò
hitih qua n niệm bậc cao dược minh hoạ như hình 2.1.
ÍÌICỚC dầu tiên lủ tập họp các vêii câu và phân lích. lYonu bước này,
nưirời thict kỏ cơ S(y dữ liệu phong vấn nhừnu imười sir dụim cơ sở dừ
liệu dê hicu \ á làm tài liệu ve các vêu câu vc dữ liệu cúa họ. Kèt quá cua
bước nàv là một lập li(ỉf|') uhi chép súc tích vê các vêu câu cua những
nuưới sir dụnu. Nhữntí yêu cầu dược đặc lá càim dầv du và chi tièt cànu
lôl. Soim sonu vói việc dặc tá các yêu cầu dữ liệu, can phai dặc lá các
yêu câu ve chức năng của ửni’ dụng, dó là các thao tác cid nmiời sừ dụng
dịnli nuiiĩa sẽ dirợc áp dụim đoi với cư sơ dữ liệu.
Sau klii tất cà các yêu cầu đã dược thu thập và phân tich. bước ticp
tlico là tạo ra lược đô quan niệm,cho cư sử dừ liệu bần e cách sir clụim
niô liinh dữ liệu quan niệm m ứ c cao. l ỉư ớ c này uọi là t h iẻ t k ỏ c/iKin n iệ m .
I.irạc (lõ quan niệm là một mò tà súc tích vê các vèii câu dừ liệu của
nhừnu Iiuuời s ử dụnu. N ó bao g ồ m các m ô ta chi tièt cua các kicu thực
llic, kièii iiên kèt, các lànu buộc và cluìtm được biẻu dicn bănu các khái
niệm do các mò hình dữ liệu bậc cao ciinạ càp. Vi nhĩnií: khái niệm này
kliỏim chửa các chi liêt cài dặt. chúim thưừnu dc liièii và cỏ t!iô sừ dụnu
chúní.’ dô t2 Ìao lưu \ớ i nhừim nuuời sử dụnu, l,ược (lô quan niệm inức
cao cùiií: cỏ llie dược sư dụim như một clần chửim dè dam háo rằni;, lất

30
ca các (lòi hói cua nuirới sư d ụ n g dều đư ợc llioá m ãn va c á c dòi li()i Iià\
kliòng chứa các màu thuẫn. Giái pháp này cho phép nliừrm nụưòi tliict
kê cư so dữ liệu tập trunii vào việc dặc tả các tính chất của dữ liệu nià
khônỉ> can quan làm dcn các chi tiết lưu trữ. Một thiet ke co só tiữ liệu
quan niệm lốt sẽ ihuận tiện cho công việc cua nhữnu nmrời thiết kế cơ sở
dữ liệu.

TAP HỢP VÂ PHÂN TÍCH


CÁC YÊU CAU

Các yẽu cầu chức năng Các yêu cầu cơ sở dữ tiệu

THIỂT KÉ QUAN NIỆM


PHÂN TỈCH CHỨC NĂNG
--

Đặc tả giao tác bậc cao Lược đồ quan niệm

'
T H IÉ T K Ể LỔGIC

'
^ Lượ c đồ iôgic
THIÉT KÉ CHƯ ƠNG TRỈNH
''
ỨNG DỤNG
THIÉT KÉ VAT LÝ

CẢỈ DAT GIAO TÁC Lược đồ bẽn trong

Các chương trinh ứng dụng

Hinh 2.1, Lược đồ minh hoạ các bước thiết kế cơ sở dữ liệu

31
I roim quá trình (Iioạc sau khi) ihièt kế lirực dồ quaii niệm, chúng ta
c ó th ê s ư d ụ n u c á c p l i c p t o á n CCT b à n c ù a 111Ô liinh d ừ li ệ u đ ò d ặ c ta c á c
thao tác cua ngưòi sử dụnu dược xác dịnh troim khi phân tích chức năiiiỊ.
ỉ)icu do ciìim ụiúp kliãnu định rang, lược đo quan niệm tho;'i niãn mọi
yèu câu cliírc nănu dược xác định. Neii có inột số \ èu câu chức nănu
khòim thc nêu ra dược Ironu lược đo ban đầu, thi ò' bLixVc n à \ có thê cỏ
sự sưa đồi ium' dồ quan niệm cho phù hợp.
Fkrớc tiếp theo tronụ việc thiết kế cơ sở dữ liệu là việc cai dột một
cơ s ơ dũ’ liệu hanii c á c h s ứ d ụ n u m ộ t hệ quán trị ccr s ớ d ừ liộu c ụ tliè.
ỉ lầu het c á c hộ q u a n trị c ơ s ở d ữ liệu -Sư dụntí inột i n ô h ì n h d ừ liẹu cái
dặl (thè hiện), chăng hạn như m ô hình quan hệ hoặc dôi tưạne. Vi vậy.
lược đo quan niệm dưực chuyên từ mô hinh dữ liệu bậc cao tliành mô
hình dữ liệu cài dặt. Bưóc này gọi là thiẻí kẻ lÔỊỊÌc hoặc là ủnh xạ mò
ìììiìlỉ (ỉữ liệu. Ket qiiá cua bư ớc này là m ột krợc dồ c ơ s ơ d ữ liệu (lư<TÌ
dạtm một inô hinh dừ liệu cài đặt của hệ quán trị co sơ dữ liệu.
Bước cuối cùng ironií ihiết kế cơ sớ dừ liệu là thiêt kê vật Ịý. 1'rong
hước Iiày phải chi ra các cấu trúc bên trong, các đườim dẫn truv cập, tố
chưc tệp cho các tệp cơ sở dữ liệu. Sonii song vứi các hoạt clộnt; đó, các
chưanu Irinh Íniíỉ ciụnu cũnu được ihiet ke và cài đặt nhu các uiao tác
(transaction) ca sớ dữ liệu tươniĩ ứng với các dặc tá ” iao tác mức cao.

2.2. CÁC THÀNH PHÀN cơ BẢN CỦA MÔ HÌNH LIÊN KẾT -


THỰC THẺ

Mỏ hìnli phố biến nhất để biếu diễn trừu tượng cấu trúc của mộl cơ
sớ dừ liệu là mô hình liên kếl - thực thê. Troim, mô hinh ÍÍR, cau trúc
cua dữ liệu dược bieii diễn dưái dạni> dồ tliị như là một "lược do liC‘n
kết - ihực the" sừ dụnii các thành phan co bàn sau ;
1. Các kieu thực llic ;
2. Các tlniộc tính ;
3. Các kiổu liên kết.

2.2.1. Thực thể và thuộc tính


Í3ối iưcnm cơ ban dược trinh bày troníỊ mô hinh liR là thực thè
(entity). I h ự c ih è là m ột đố i Urợng.trong thế giới thực, c ó s ự tồn tại độc

32
làp Mot iliỊn ihê có tliè la IIIỘI (ỈỎI urựng cụ ihc (nụhìa là chúng ta có thê
Cíini nhậiì (liriA' han e cá c ạiác cỊuaii). Iioặc C(S ihô là một dôi t ư ợ n g trừu
tirạnu (nuliĩa i.'í la khônu cám Iili.ìn dược băna các uiác quan, n h i m g c ó
iỉ\c nh.iH hịèt thrọc tifinu nhạn ihửc). MỘI cái ỏ tỏ, inột nhân viên,... là
ntiừni.' thục iỉiẽ cụ thè, Một d(yn v ị cònu lac, một trườniỉ học... ià nhĩmu
llurc thẽ inrii Iiuniu.

M ‘)I m ộ t tlnrc t h ê c ó c á c í h i i ộ c / i n h . t!ó lá c á c d ặ c trirnti c ụ t h ê m ò ta


Uụrc thó lió. V'i (!ụ, một tliực ihô NHẢN_VIIuN được niô tá bàng ỉ iọ tcMi.
1uôi. í)ịa CỈII. 1 invnii... cua Iiliàn \ iOii dó. MỘI tíiực ihè cụ thể sẽ có một
i’iá trị rlìó mồi tluiộc iínli cua nó. Vi dụ, Iiliàn \’ièn Nvi có các ỉiiá trị cho
^■ac tiuiọc tinli 1lọ tcMi, I uôi. r)ịa_clii. l.irơng cua nó là "1,0 Vân". 32.
'1 ỉa Nôi''. 5l)()()()(). Các ụiá Irị thuộc tinh mô ta mỗi thực thề sẽ trở thành
mõi Ịih;'i;i c h i i i l i c u a c a c d ữ l i ệ u s ẽ d ư ợ c l ư u t r ữ t r o n u c ơ s ờ d ừ liộu.
I ronu lỉìi) hinii có niỊÌl nhièu kicu thuộc tính ; thu()c tính đtm, thuộc
linh pliưc hợp. tỉiuộc tính đơn trị. thuộc tinh da Irị, ihuộc tính dược lưu
n ữ . IỈ1UỘC t i nh MI\ tiicii d ư ợ c , l i ni ộc t i n h c ó u i á trị k h ô n g x á c đ ị n h , t h u ộ c
imh phu'.: tạp.
'!Ì!ì>òc linlì du'n !à thuộc tínli khônu thê phân chia ra được thành các
ihàiiỉi piiãn IIỈIO lurn. Vi dụ. thuộc tinh 'I'uôi cua một nhân viên là một
lliUÔc tinh dơn.
Tìììtòc linh p h ứ c hợp là liiuộc tính cỏ thè phân chia đuợc thành các
íhàiiỉi piiâiì iihỏ him, các thuộc tính cơ bàn hơn vói các ý nghĩa độc lập...
Vi lỉụ. ihuộc nnh llọ tên cua tliực ihề nhàn viên có thê phàn chia thành
các tliuộc tính !ỉọ (iệm và ỉ'èn. Cìiá trị cua nu)t tlniộc tính là sự kết hợp
c;ic yj-ả irị ciia các thuộc lính lliànli phân lạo nèii nó. Việc phân chia một
t!uiộf !mh pliuc liựp ihaiih các ihuộc tíiili (lan tù}' thuộc vào hoàn cảnh
cu íỉiê.
NỊiừnu tỉiiiộc linh cỏ giá trị duy nhấl cho một thực thể cụ thể gọi là
các íhuoi.’ tin h LÍirn ìrị. Vi dụ. [Iọ_tèii là một thuộc tính đcĩTi trị cùa thực
ihê tih:ìn \ iên. mỗi nhàn viên cỏ một họ tên duy nhất.
1rong 111 Ộ1 sò trườnu hợp. niộl thuộc linh có tliè có một tập giá trị
yhii cunt’, một thực the. Nhĩrnu tlniộc tính nliư \ ậ y i;ọi là (huộc lính đa
irị. \ ' | clụ, thuộc tính Bần<>_cấp cua một nmrời. Một người có thể không
0(1 băìiii cãp nào. imười khác cỏ thê cỏ một bàng, người khác nữa có thể

33
có nhieu bànii. Nlur vặy, co thể có một số ciá trị khác nhau cho thuộc
tính Bãníĩ câp. rhuộc tính Bằng_cấp là thuộc tinh đa trị.
Tỉniục tính đưực lưu trữ là các thuộc tinh mà giá trị cùa nó được
n hập \ ào khi cài dặt c ơ s ở d ừ liệu.

1roim mộl số trirơnu hợỊ). hai hav nhiều thuộc tính có giá trị liên
quan dến nhau. Ví dụ. thuộc lính Tuồi và thuộc tinh Ngày sinh cùa một
nmrời. V'ói một nairời cụ thê, ta có thổ lính tuổi cùa anh ta bằng cách lấy
năm hiện tại trừ di năm của Ngày_sinh. rhuộc tính m à giá trị của nó cỏ
Ihè tinli đư ợ c th ò n u qua uiá trị của cá c thuộc tính kh á c g ọ i là t h u ộ c tín h
sm' diễn ãưực.
( 'ác.ỵ,ui trị khôníỊ xác dinh (null values) ; Trong một số trườrm hợp.
ị một thực thố cụ thê có thế khôĩiíỉ có các uiá trị áp d ụng được cho một
thuộc tính. Ví dụ, thuộc tính Số_điện_thoại của thực thể N H Â N _ V IÊ N
' sỗ khônc có uiá trị dối với các nhân viên không có diện thoại. Trong
trường hợp như vậy, ta phải tạo ra một giá trị đặc biệt uợi là giá trị
khôníỉ, xác định (null). Giá trị khônc xác định được tạo ra khi một thuộc
tính co uiá trị không áp dụng được, hoặc khi không biết giá trị cùa nó.
( 'úc lìniộc lính p h ứ c tạp : Là sự kết hợp của các thuộc tính phức hợp
và da trị.

2.2.2. Kiểu thực thể, tập thực thể, khóa và tập giá trị
Các kiẻìt thực thê và các tập thực thế : Một cơ sở dữ liệu thường
chứa nhừnạ nhóm thực thê như nhau. Ví dụ, một công ty Ihiiê hàng trăm
nhàn viên và liru trữ nhừnu t h ô n g tin t ư ơ n g tự liên quan den m ồ i nhân
\iên. Các thực ihể NMÂN_V1ÊN này chia sẻ các thuộc tính giống nhau,
Iihirnu mỗi tliực thê có các giá trị riêng cho các thuộc tính dó.
Một kiữìi íhực ihc xác dịnh một tập hợp các thực thể có các thuộc
tinh như nhau. Một kiẻu thực thề trong cơ sở dừ liệu được m ô tả bằntì
lôn kiếu và các thuộc tính. Các ihuộc tính cúa một kiêu thực thể là các
I h u ộ c tínli c u a c á c t li ự c t h ê c ủ a n ó .

Ví dụ : N HẢN V1I*N(1 ỉọ_tèn, Tuổi, Lưomạ) ;


C Ô N G _ r Y ( T ê n , Dịa điếm, Giám_đốc).
Một lập hcTp các thực thể của một kiểu thực thể cụ thể trong cơ sở
dừ liệu tại một thời điếm được gọi là một tập thực thẻ. Nó thường được

34
tham chiếu đển bằng cách sử dụnu tèn của kicu thực thề. Ví dụ,
NI!ẢN_VIHN vừa dùiii: dế chi một kiêu thực thố. vừa dể chi tập hợp
hiện tại của tất cá các thực the NHẢN_V1Ĩ;N trotm ca sớ dừ liệu. lỉinh
2.2 iniiìh hoạ các kiêu thực thè NIIẢN VII',N, C O N G _'l’Y và các tập
thực Ihể tircTng írnu. Kiêu thực thê NHẢN VỈHN có các thuộc tính là
Ilọ lèn, ruối. I.inynu. Kiêu thực thê CONCi TY có các thuộc tính là
'1'èn. Ĩ^Ịa_cliềin, Cìiám doc. ỉ)è liộn theo dõi. la quv ước tên kiểu thực thể
được uhi bảng chữ hoa, còn tC‘ 11 cùa các thuộc tính được tỉhi bằng chữ
thirmig với chừ cái dầu \ iet hoa.

NHÂN_VIỂN CÔNG_TY
(Họ_tèn. Tuổi. Lương) (Tên, Địa_điém . Giám_đốc)

Nv1 ctl
(Lê Lan, 30. 800000) (CT Phần mềm, Hà Nội, Vũ An)
Nv2 1 Ct2
(Trần Bả, 45. 1000000) 1 (CT Hoa quả, Hải Phòng, Lè Hà)
Nv3 1 Ct3
(Hoàng Vân. 25, 600000) (CT Máy tinh, Hà Nội. Phan Anh)

Hình 2.2. Kiều thực thể và tập thực thé

Một kiều thực ihê dược bièu diễn Ironu lược dồ ER như là một hộp
hình chừ nhật có chứa tên kiéii thực thê. Các ihuộc tính được đặt trong
các hinh ôvan và dược nỗi vói các kicu thực thế bằiiíi các dường thăng.
Các tliiiộc tinh phức hợp cũne dirợc nối với các thuộc tính ihành phân
cua nó bănu dircTnu thăniỊ. Các thuộc tính da trị dược hiền thị trong các
hinh ôvan đúp (hình 2.3 )■

35
V1òt k ic u tlụrc Iliè i n ỏ ta m ộ t hrơc dồ ( h o ặ c m ộ t m ụ c d i c h ) c h o m ò i
UÌỊ'> cac thục tiic chia sc cìiim một câu trúc. 1ập hợp các thực ihè cùa mòt
kici: thục Ihò CII thê dirợc nhom \ ào một tập thực thê và dược líọi là 111 Ộ!

ìlìL /;/('/' c u a m ộ t k i c u t h ự c the.


íhiinc iuih klìóci cua niộ/ kicìi ÍÌỈIỈC ílỉâ : Một rànu huộc quaìi IrọiiL’
!rc! íliirc itìê c u a (nộ! k i ế u i h ự c t h e là khóa. M ộ t k i ê u thi.rc tlu'
*!ri'Vrn>' co niộl thuộc íinh nia các ụiá trị của nó là khác nhau dôi \(ri mỗi
Ị'iỊt\' ỊỈIC riêiiL- biẹl I n m g m ộl tạp thực thể. T h u ộ c tính nhir vậ y uọi la
lhui'n í inh khóít \ à các íiiá Irị cùa nỏ có the dúnií đè xác định túnt: iliirc
thê lìiộí cach duv Iilìàt. Ví dụ, thuộc tính Tèn cua kieii thực thc
( ( ) \ ( ỉ 1Y la kiióa cua kièu thực ihê đó, vi mồi thực thể còim ty có niộ!
iCm' (ỉu> nhất Dôi khi, nhiều thuộc tiuh kết hợp vứi nliau tạo thành niội
khúa, n:!Ỉìĩa ia tò hạp các ciá irỊ cua các ihuộc tính này phải khac nhan
dồ' \ í’>ị niỗi thực (hỏ. Tronu tnrứim hợp như vậy, fa co một thuộc linỉì
hiiị'. CỈIÚ ý ràne. khóa pliức hợp phải tối thiếu, n u h ĩa là tất ca
. ,!C •nui}c línli ihànỉi Ịihan pliái có mặt tronií thuộc tinh phức hí.TỊ-> dê tlioii
nKM) ! iịỊi cliàl d ii \ :ihâl. I r o n u hièu đ ồ d ồ h o ạ củ a n i ô h i n h F,R, tliuọc
Ịị'i'i a'' u;i đư ợc b i c u - x l i ỉ a b ã x i g c á c h g ạ c h n gaiig dưới ten ciia nó.

K'ii ohi ra !T1ỘI thuộc tính là khóa cùa một kiểu thực ihê, nghĩa lá
tinh cÍỊàí diis Iihât n ê u irèn phai dirực th oà m ã n đối v ớ i m ồ i n i ớ r ộ n g CIUÌ
!:> ■!•■ ; , i r ; ílì;'\ N h ư \ ậ>, r à n g b u ộ c k h ó a c ấ m h a i t h ự c t h e b ấ l k ỳ c ỏ u i á t!'Ị
c!v.' lính khóa như nhau tại cùnt> một thời điéni. i^ó là inộl rànii
Ihì Ộv ịi .}n lai ca các thè hiện cùa ihực lliê. Ràng buộc khóa cũníỊ nhir cac
rÌTL', biỉội: sẽ dược giới tìiiộu về sau, dược lấy ra từ các ràng buộc cúa
''lỉu- "iíVi niio” của CO' sở dữ liệu.
kiôii ilnri' tliè có thè co nhiều hơn một thuộc tinli khỏa. Vi dụ,
n.'< ' 'M ^ôim t\ co t)iộí mã số duy nliat và một têii duy nhất thi các
Mà sô cònu t>' và rcn_côim_ty đều là các ihuộc tính klioa
V!ò K ,"u (!:ụv tlìc cũim có thê kliỏim có khóa. Một thực thè khònu eỏ
k ' i ' ' ' . í uực g ọ i là kicu íhực !hẽ vèii.

Síièn í^ia (rị cua các thuộc lính : Mồi thuộc tính đcrn cúa inộl kiêu
thực llic clưọc kèĩ hợp \'ứi một miền tiiá trị. Dó là niột tập các uiá Irị C('
thê uán cho tỉiuộc tinh này doi với mồi thực thể riêng biệt. Các miền gia
IrỊ kiiònii hicn lliị ironi’ các sơ dồ ER.
»
36
M ộ t cí ich l(.)aii lìọc. m ộ t t h u ộ c t í n h A c u a k i c u tlụii. tlic I C'i ' >.;i 1
trị V c<') thè dirợc (lịnh neliĩa ntiư là một liàni lù' 1' \ áo lạp ỉiọ;i iụ. i;: .1 ■
l’( V ) c u a V :

A : Í-. P(V)

l'a ký h i ệ u u i á trị c u a t l i u ộc t i n h A dòi \(Vi lí i ực i hò c !a A ( c ; ị ì ị nl


i mli ì a ơ t r ê n ciúi m c h o c á c t h u ộ c t í n h d(ĩii Irị. d a tiỊ \ à t h u ộ c tiìiỉi
v á c tlịiih. M ộ t e i á trị k h ỏ n u x á c dị i i h d i r ợ c b i ê u d i e n b ă n ụ m ộ t fậ;'. rồHL'.
V ó i c á c t h u ộ c ! í n h d ơ n trị, A { c ) là m ộ t lỉia trị đtrii CỈH) l í i ực t h è r, C a c
t h u ộ c tínli d a trị k h ô i m c ỏ c á c h ạ n c h ê t r ê n A ( c ) . V('íi !)iõt lluiiK' íin!.

phức ỉiợp A, tạp uiá trị V là tích Dồ-các cua !’{ \'i) X.. > l’íV ;)
íronL' d ó V ] , V 2,.... V |1 là t ậ p c á c g i á Irị c u a c á c t h à n h pliầ!) d(yii c u a A

2.2.3. Kiểu liên kết, tập liên kết và các thể hiện

K h i n i ộ í l l i u ộ c t í n h c u a m ộ t k i ê u t h ự c i h ê tliiun c h i c u d c n m ọ t isiòi!
t h ự c líiê khấic, ta n ó i c ỏ l ô n tại m ộ t l i ên kct ( r c l a í i o n s l i i p ) . M ộ í Ấ7í'í/ ịiâi
kê! ( r e l a l i o n s h i p t y p e ) R tỉi ừa n k i ê u t h ự c tỉiê IÌị. 1:7...... ỉ n \ii': d ụ i h IIIỘÍ
lập Hèn kèl í>iữa c á c t h ự c t h ê c ù a c á c k i ê u d o. CŨMg n l i ư C.K' ku:M lÍỊụ ,
ihè và lập thực thể, mội kiêu liên kết và tập liên kèt lươnu ư;iLí \tíi lu;
cũni/, c ó t è n c l i u i m l à R. M ộ t c á c h lt)án h ọ c . l ậ p l i en k è t R là m ó t u'.Ị' ỉìívị'
c á c llie h i ệ n l i ên k ế t r,, i = 1. 2,... ; troiiỉi d ỏ Iiìồi r, ỉ i cn k c i \ ới n I h ự c tỈK

ricníi b i ệ t Ci, Ci,..., e„ v à m ỗ i i n ộ l t h ự c t h ô C| t r o i i e Tị ỉà m ộ ĩ t h á n h p h ầ n

. 11:1 k i è u i h ự c i h e n ị , 1 < j < n . N h ư v ậ y . nK}t k i ê u l i ên kêl R tà Iiiột q u a n

lìệ ( o á n l iọc I r è n ỉ í ị , lỈT,..., H,, h o ặ c c ỏ Ihê dịiili nghTa n i i ư ỉa m ộ t tậ[) CI )11

c u a lí c h D e - c á c l ’ i X f-,T X... X M ỗ i kiêu th ực tliế l ' | , 1'2, . ... i'-n dirợc


lỉọi là llìcim ịỊÌa vào kiẻii licn ke! R. và UníniỊ t!i', mồi lliực ilìc riêiií’ hiệl
o ị . Ct...., c„ d ư ợ c uọi là th a m ^ i a vào llìê hiựn liên kêí r, (r Ị, r '.....

M ộ t c á c h k h ô n g h i n h t h ứ c , m ồ i lliè h i ệ n ỉ i ên keí Vị t r o ì i u R !à n i ọ l s ự
kct liựp của cá c tliực thế, m ồi thực thc thuộc v ề mộl kiéii tliựí,- thè Ihain
uia vao liên kct. Mồi liên kết ĩị như vậy cỉici) dại niộí sự kiện răiìg, các
thực ihê tham gia troniỊ rj c ó m ối quan liộ với nhau ih e o m ộ t cácỈỊ nào dỏ
ơ troim thế uiới thực. Ví dụ, troim Ihực te. các nhân \ ièn lain x iệc clìo
các dcrn vị khác nhau. Như vậv. có một kiêu liẽii kei <là!ii việc c!io>.
liêii kết t>iừa kièii thực thề NI lẢ N_Vir,N và kiêu thực thề ỉ)( iN VỊ

37
Trong sơ dồ FR, kiêu iièn kết được biêu diễn bàng tnột liinh thoi
nôi trực tiếp với các hinh cliĩr nhật biếu diễn các kieu thực thê iham gia
\ à o liên kết. llinh 2.4 minh hoạ kiểu liên kết và thể hiện liên kél.
a) Kiểu liẻn kết

NHÂN_VIÊN lám_việc_cho ĐƠ N_V|

Hình 2.4. Kiểu liên kết và thể hiện liên kết


2.2.4. Cấp liên kết, tên vai trò và kỉểu liên kết đệ quy

Cấp cùa một kiêu liùn két là số cãc kiếu thực t h ê tham gia vào kiêu
liên két đó. Một kiểu liên kết có ihế có cấp 1, cap 2, cấp 3,... Ví dụ. kiều
liên kết <làin_việc_cho> uiữa kiểu thực thể NMÂN_V1ÊN và kiếu thực
the DƠN_VỊ là một kiêu liên kết cấp 2. Kicu licMi kết <biêl lrước> giữa
kiểu thực Ihể MÔN_Í1ỌC với chính ncS là một kiếii lièn kết cấp 1,...
Dôi khi chúng ta có thế coi một kièii liên két như một thuộc tínli
cùa một kiểu thực thể. Ví dụ, nếu kiéu thực thể N ỈỈÂ N VIÊN có thuộc
tính Đơn_vỊ để chi ra tèn dan vị mà nhân viên làm việc cho, ihi thuộc
tính Đofn_vị biểu thị iriột kiCni liên kết. Nói cách khác, một thuộc tínli
cua một kiểu thực thể. hoặc có chức năng bièu thị một đặc trưng của
kiểu thực thể, ho ặ c c ó c h ứ c nã n g biếu thị m ột kiếu liên kết g i ữ a kiểu
thực thê đó với các kiều thực thể khác. Các thuộc tính biều thị một kiểu
lièn kêt có thể đcrn trị lioặc đa trị tùy theo bản chất của mối liên kết.

38
Các tên vai trò và các kiểu liên két độ quy ; Mỗi một kiếu thực tliê
tham gia vào mộl kiổu liên kết có một vai trò cụ thề tronu lièn kết. l'Oti
v u i tr ò d ù n g dê chỉ rõ vai trò cùa các thực the cúa kiêu thực thè tham L>ia
liên kct ; nó giúp dỡ việc giái lliích ý imhĩa cua liên kết. Vi dụ, trong
kiêu liên kếl : N H Â N _ V IÊ N <làm_việc cho> DƠN VỊ. vai trò cua các
thực thê cua kiểu thực thể NHẢN_V1ẺN là nhân \ iêii hoặc công nhân,
còn vai trò •cùa các thực
* thể của kiêu thực
• the ĐƠN - VỊ• la dan vị íioặc
noi thuê công nhân. Nếu các kiéu thực thể tham gia vào kicu licii kêt là
khác nhau thi tên vai trò là hoàn toàn khônti cần thiêt. bơi \ i co thô sư
dụng tên các kiếu thực thể làm tên vai trò. riiy nhiên, troni> một sô
trưừtm hcrp, một kiêu thực thể có thể tham ííia vào một kicLi lièn kết với
các vai trò khác nhau. Trong những triròng hcrp như vậy. tèn \a i trò trở
nên cần thiết đé phân biệt ý nghĩa cùa mồi sự tham uia. Các kiêu liên kêl
như vậy gọi là kiêu liên két đệ quy. Ví dụ, trong số các nhân viên lam
việc cho một đ(7n vị, có các nhân viên được phàn công uiáni sál các nhàn
viên khác. Như vậy. sẽ có một kiểu liên kêt ịỊÌám sát giữa các thực thè
của kièu thực thể N H Â N _ V IÊ N ;
N H Â N _ V IÊ N <giám_sát> NHÂN_ VIÊN.
Kiểu thực thé N H Â N _ V IÊ N tham gia hai lần vào kiéu HCmi kết
<giám_sát>, một lần với vai trò người giám sát, inột lần với vai trò
người bị giám sát.

2.2.5. Các ràng buộc trên các kiểu liên kết

Các kiểu liên kết thường có một số ràng buộc đố hạn che sô các tô
hợp có thể của các thực thể có thể tham gia tronií tập hợp Hèn kết tưcmu
ứng. Các ràng buộc này được xác định từ tình trạng của thế t>iái thực mà
kiểu liên kết biểu diễn. V í dụ. nếu c ô n g ty c ó quy c h ế là một Iihâii \ ièn
ch i làm v i ệ c c h o m ột (ÌOTI vị Ihì c h ú n g ta phải m ô tá ràng bu ộ c này trong
lược đồ. Có hai loại ràng buộc chính ; ràng buộc t>' sổ lực lượng và ràng
buộc tham íĩia.
Rùng huộc lỳ số lực lirợníỊ : 'ĩỳ số lực lưọync cho một kiểu liên két
chỉ ra số các thế hiện liên kết mà một thực thể có thể tham tĩia. Có the cỏ
các tỳ số lực lượnẹ 1 ; 1,1 : N và M ; N (với M. N > 1). Dồ tiện giải
thích về tỳ số lực lirạng, chúng la sứ dụng các kiều liên kết cấp 2.

39
Một kiêu lièn kct có l\' .s<> lỉic litựnụ ỉ : I eiữa hai kicit tliục liic A
và íi có imhTa là tronu kiêu lici) kcl dó. niộl thục tliè cua kicii A chi iioii
kêt với m ộ t th ự c tliò c u a k iê u í i. \ a n u ư ọ c lại n iộ l tliụv thè c u a kièu iỉ
chi liên két với niột lliực thè cua kièii A.
Một kiều liên két có íy sd lực linrniỊ ì ; S'. cỏ nuhĩa lii m ộ ỉ tliục lịiẽ
cua kiêu A cỏ thè liêiì kct vái nliièu ihực ihc cua kiòu iĩ. ninrn<j 111 ÔI íliục
the cua kiêu B chi liên kết \(ri mộl tlnrc tliè cua kiêu A.
1'rong kiêu liên kél có ly so lực lượnsỊ M : ;V. inồi lliục thò cua kiôii
A c ó thề liên kel với nhicu tlụrc tliô cua kiêu [i, \ à n m i ọ c lại mỗi tliux
thè cùa kiêu B có thê liên kèl với nhièu tliực thc cua kièu A
I rong biểu diễn cứa lược dò lìR. các ly số h.rc lưvTiiií d u ợ c biêu liicn
bàng cách uhi !. N. M trC*n các hình thoi biôu diễn kiêu liên kcl (hinỉ) 2 >).

NHÂN_VIỂN DƯ„ÁN

Hình 2.5. Tỷ số lực lượng cúa các kiểu lièn kết

Các ràníỊ hiỉộc íhciin ịỊÌct và sự phụ ìlìiiộc tồn tại : Ràne. buộc tham
gia chi ra rằng, có phai sự tồn tại cua một kiếu thực the pliỊi Iliuộc và(i
một kiểu thực thể khác thôim qua một kiếu lièn kết liav kliùnii. (, o hai
kiêu ràng buộc ihani gia ; ràng buộc tham uia toàn bộ và làng buộc Iham
gia bộ phận.
R àng huộc tham lỊÌa toàn hộ imhĩa là lâl ca các thực (hò cua kièii
thực the phải tham íiia vào kicn licn kct, còn ràiiỊi hiinc íhiHiì í:ici ho
p h ậ n nghĩa là chi m ột bộ phận các thực liiê cua kiêu thục llic iỉiani L’i;i
vào kiểu liên kết. Ví dụ, xét kieu liên kct : NHẢN VII,N • ụiuiii 1> '
ĐƠN_Vị. Trong thực tế, mồi d(Tii vị phái có một nmrời tịuan lý (la mội

40
lìỈKiii \ K'1M. ì:ỉ"ì'ỉ;' 'kỉui!il?, plìiii nhàn \'lcn nài; CLÌn,i: quan \\ mội í.ỉ:*'!ì \i
Nhu' \ J\ -.í/' Íií ỉ r. -Jỉ.ỉ ciia các tlìỊĩe Ihc i)()N VỊ \'ã(> kiòu licn kcl ỉa ĩojn
ho. eoii Sír iíu! r. rua C.K íluỉX' lỉìè NỈIAN Víl.N \ n o kicu liCỉỉ kêl iis
iìọ ph;Ì!i Síi ití.ỉi'' !_m:í ỊO viii hn côn dược gụi la Mf /)/iụ íhỉiOL iuỉỉ í<u.
Ìioiìv i i : - i í^. s i r l i i a n ì eia toan b ộ t h r ợ c ỈMÒỉi í t ìỊ bãi ì í . ' d u u i i u

l ì ò i d o i ỈM i u e ; : !ÌIU^ 1Ỉ'!C d ò n k i c u l i è n k ò t .

- .... rjl'íA;'j Vir ỉ- -■ ^ q u à n ỉý Đ0N__V1 '

i'o iìlucti ịìltiíí-ik' Ị^^ỉiáp kíìác dô chỉ ra các ràni; buộc càu ỉrúc lrc!ì
cac kícii ị'.!i kví. Mỏí tron:J các Ị>lur(ynu |)há[) (ỉỏ ià ụãn ỉnộl cạp sò
!ÌUU>CỈÌ inìni.. ỉiiax) M/iiVìồ! sụ' ihanì ụia cua nìộí kiôu ỉhụx' íhẽ Ỉ-. \ãí> mộ!
kiêu licn kỏỉ K. ![ 0 Ĩ1 'J ciíí 0 'i, ỉnin < nvả\ \ a íìiax > ]. Các ,sỏ dô t;i> ỉỉ^ỉìĩa
la. với nìv'M liiiK íiìc o (ĩonLi !L c pliai ĩliani i!Ìa \àí> íi nỉiai h'ỉ fỉũn \ii
ỉìliiòu iìỉìỏi *:'t n; ỈÀ íỉu': ỉiicn liỏĩì kcí íTíỉỉm R tại ìno! íiíoị dicnì. 'ìrop.L!
t>lỉií'(VỊUĩ ị-ìì;ỉị'^ ÌMV. nũn 0 noi ìùn sụ' íham gia hộ phạn, íron^’ khị iịo
ỉiini - n«.: ĩvMi .M Uì.un Lĩia ỉuàn bụ.
i I tìií :

I lO 1) (^,^)\
N H / ‘N V' l N ..........q u á n i y ------- ĐON!_Vị
L„

C’('ì n^’ ln \ i Li !ìu»t iỊ u r i. l l ì c N IỈẢ N V ! Ỉ - ’N liên kct \ (>! iĩ nhải \ả 0

íklìònu) lììụỉ !ỈÌỤ\; íỉu'‘ Ỉ)()N VỊ \ a nhỉcu nììảì ỉà niộl ỉhỉ.ic Ihc !)ÕN VỊ.
Iiunu klỉi cKi lỉioỉ ÚUK- ílìc ỉ)(5N VM ỉỉciì kct \'o'i ít !iiì<'lĩ !n ĩiìòl ỉìlìan \ÌCÍÌ
\ à nhieti nhai :ùiir. í:? nioi nliàn \'iciì tỉX)!ig kiỏu licn kcl ■ cỊiian ỉ% . Sii
lỉìíỉin L>i.i ctuì NI lAN V!i'N \ ào kicu ỉiẽn kct là bọ phạn, sụ* íhaỉiỉ L^ia cua
!)ÒN \ Ị \tỉr? kỉỏM \\cvi kèl là ĩoàn bộ.

2.2.6. T h u ộ c t i n h c ủ a c á c k i ể u liẻn k ế t

C.K' kiJ'u iirn kôĩ '.'ủỉìu Oi) ll)c cỏ các ĩhuộc tính. iMỏnii nlỉir cac ílìiíộc
linlì cua cao ki.H. (iurc ihẽ. Vi dụ. kiêu liên kêt lain \ lệc \<yi lỉiửa cnc

41
kièii thực thé NMẢN_V1ÊN và DỤ'_ẢN có thể có ihuộc tính số_giờ đè
ghi lại số giờ làm việc cúa một nhân viên Irèn một dự án. Các thuộc lính
của kieu liên kết cũng được biểu diễn bằng một hình ô van và được nối
với kiều liên ket.
Vi du :

2 .2 . 7 . Các kiểu thực thể yếu

C'ác kiếu thực thê không có các thuộc lính khóa cho chinh minh
được gọi là các kiêu íhực thê yểu. Ngược lại, các kiêu thực thế thông
thườim (ntihĩa là có thuộc tính khóa) được gọi là kiêu ihực thê mạnh.
Các thực thê của một kiểu thực the yếu được xác định bang cách liên kết
với các thực thể cụ thê cùa một kiều thực thổ khác phối hợp vói một số
giá trị thuộc tính của nó. Ta gọi kiểu thực thể khác đó là kiểu thực thê
xúc định hoặc kiêu thực thê chù và gợi kiêu liên kết giữa kiểu thực thể
y ế u và kiểu thirc thể cliủ cùa nó là liên k é t x á c đ ị n h c ù a thực thể yếu.
Một kiểu thực thế yếu luôn luôn có một ràng buộc tham gia toàn bộ (tồn
tại phụ thuộc) vào liên kết xác dịnh của nó, bời vì một kiểu thực thể yếu
không ihê được xác định nià không có kiểu thực thê chù. Ví dụ, trong
một công ty, con của nhân viên và nhân viên có thể hướng chế độ bào
hiểm theo nhàn viên. Nliir vậy, sỗ có một kiêu lièn kết :
NHẢN VIÊN <có> <CON>
Dây là một kiều licn kết có tỷ số lực lưcyníí 1 : N. Các thuộc tính cùa
kiểu thực thể CO N là Họ tên, Níỉày sinh, Giới tính. lỉai người con của
hai nhân viên khác nhau có the có cùng giá trị cho các thuộc tính, nhưng
nó là hai thực thể khác nhau. Chúnụ chỉ được xác định như hai thực thế
khác nhau sau khi xác định niộl thực thể NHÂ N VIÊN cụ thể có liên
quan đến từng người con một. Mỗi thirc thề của kiểu thực thể

42
N IiẢ N VIHN dược gọi là chù cùa các thực thể cùa kiẻu ihực thề CX])N
liên kết với nó.
I hônu thirờnu, các kiêu thực thể vếu có inột khỏa hộ phận, đỏ là
inột tập hc.TỊ') các ihuộc tính có thế xác định một cách duy nliat các thực
tliò \ ếu liên kết với cùng một thực íhê chù. Ví dụ, nếu hai ngiròi con cùa
mộl nhân \ iỏn khônu bao giờ có tên giống nhau thi thuộc tính Họ tên
cua kièii Ihực thc CX)N là một khóa bộ phận. Trong trưởng hợp xấu nhất,
thuộc tính phức hợp eồm tất cả các thuộc tính cùa thực thế yếu sẽ là một
khỏa hộ phận.
ĩriMiu sơ dồ I-í-l. kiêu tlụrc thê vếu và kiếu liên kết xác định của nó
dược biêu diễn bàim một hình chừ nhật và một hình thoi nét đôi.
Ví du :

2.3. TH IÉT KẾ M ỏ HÌNH ER

'1'rong phần này, chúnu ta xét việc xây dựng mô hình ER thông qua
ví dụ vồ một cơ sở d ữ liệu, gọi là cơ sở dữ liệu C Ò N G TY. N hư ờ trong
mục 2.1 dã irìnlì bày, bước đầu tiên trong việc thiết kế một cơ sờ dữ liệu
là tập hợp và phân tích các yêu cầu. Kết quá của bước này là một tập
hợp các ííhi chép súc lích về các yêu cầu người sử dụng cũnu như tình
trạng cua nơi ta cẩn xây dimg cơ sờ dừ liệu.
( ì i à s ư ràng, sau khi tập ỈK7P các y ê u cầu và phân tích các hoạt đ ộ n g
cùa côntỉ, ty ùuọc ghi chép lại như sau :
1. Cônu ■> diiợc tồ chứ c thành các đơn vị. Mỗi đơn vị cỏ một tên
duy nliấl. Miộ; nìã • í> duy nhắt, niột nhân viên cụ thể quàn lý đ(m vị. Việc
nliân \ icn q u a n lý d(tn vị được ghi lại bằn g n g à y n h â n viên đó băt dàu
quan ìv'. Vlõi 'ỉ(vn vị có thể có nhiều địa điểm.
2. Mỏi đơn vị kiôin soát một số dự án. Một dự án có một tồn duy
nhắt, niột mù sô duy nhất và một địa điểm.

43
Viri mòi nhan \ 1011 chmiiỉ ta lini Irữ • họ tên. mà sò. clỊa vhi, lưoiu'.
LÍKVI t i i i l i . I i t ỉ av s i i i i i . M Ộ I I i l i â n v i ê n c l i i l à m \ i ệ c c h d m ó t dcri i v ị , nl i i ni ! . '

c o íl iè ỉ à n i \ i ê c \ ơ i n l i i c u clti a n d o n l i ị c u clívn \ ị k i ò i n scìal. ( ' h ủ i i ” t a li ru

I r ữ iại s õ l a m \ ụ x : c u a Di oi n h a t i \ i ê n t i c i ì n i ộ l t l ự a n . M ỗ i n l i à n v i è n

ỉ l i ò c o m ộ i n e t t ( í i L’ i a n i s a l ! r ụ ’c tiò ]'!. i m i r ò i t l ó c ù n a l a n i ộ ! n h ã n \ ' ICI 1.

4. Moi Iihàn \ ' i ci i cỏ iihừiiii nLM.r(ri c o n , N ỉiừne runrài Tiáy c ỉ u ạ c

ỉuriTim bao hiôin theo nhân \'icn. V(Vi inồi iiLíưài C(.n cua nlìàn \iên
chniii: la iiru trù’ : họ len. uiưi t i nh, i m à \ sÌ!ih.

\'ớ ( clịnli c á c k i ê u t h ụ c thừ, c á c t h u ộ c ỉ í n h rà các k i ê u ì iè n k ế t

I !ìco c a c e h i CỈICỊ) o Irèn. Lliunti Ui Ci) lliè \ a c cỉịiili c á c k i é u t l i ực lliẽ


\ à các kiêu licn kèí niur sau :

1. ( ' ( ) N ( | 1 kiiõtig pluii lá m ột kiêu íliực ihê \1 a đâ\ chi c ỏ một


CDHíi l> i luv nlull,

2. Ỉ)()N VỊ là niộl kieii tliực thò \iVi các thuộc íiiih ỉ êii, Mã_so.
N g ư a i m ia i i Iv, Nuàv ba! (lâu và ỉ)ịa diòm. ('ác lluiộc linli 'ĩên.
Mà só. DỊa ctiêin ià cac ỉhuộc tính niô là J(y!i vi ; các thuộc lính
Nmrời cỊuan lý. N<ià\' b ă t t l àu là c á c tỉiuỘL' l i n h b i è u iliị m ộ t k i ê u litMi
kCM (\ói kiêu llụrc thê NHẢN Y ỉl'N ). c \ k ihuộc tính dèu là dơn \'à doỉ)
Irị. Inr i hu ộ c t ính Dị a clicni ỉà ni ộl t h u ộ c líiili d a trị ( m ộ t d ơ n \ ị c ó Iiliiêu
dia diC‘rn). ( ’ác tỉuiộc imh l óii. Mã so ià các thuộc tinh khỏa (vi mồi dơn
vị co một têiì \ à một Iiiã sò (luy nhai).

3. Kỉèii tliuv lliê ỉ ì ự AN có c;ic llniộc liiili I cn, Mã_số, Dịa đièni.
l)(fii vị kièii) .soát, ( ác tluiộc tinh [ ên, Mã sỏ, DỊa tliêm là các ihuộc
tinii tiiô l;i 1) 1 ' Á N ; ih iiộ c tíiih OíTii \ ị k i è i n S('ál h i ê u thị k iòu liên kêl
\ (V) kiòii t h ự c IỈ1C l ) ( Ỉ N VỊ ( n ì ộ l d a n \ i k i ê m s o á i i n ộ l s o d ự á n ) . C ác
ihiiội' tiiili !'cn, Mã sô là các thuộc liiih klióa,

4. KiC-u thụv !liê N ilA N VII-N vái các thuộc tiiìli llọ têii. Mã_số,
(lun linh. N u ;ỉ > >inỉi. Imyiig. ỉ)(.Tn vị , Nmiời_íiiam sát. 'Huiộc linh
! ỉ ọ t cn là m ộ t i l u i ộ c t ml i p ỉ i u c h ọ p (gvHii H ọ _ d ộ n i , I cii). C á c t h u ộ c t í n h

44
Dítii \ ị . N u ư ò i ưiâiiì Sitl m ỏ la c á c kici! l icn kct u i ữ a kiẻii t l ì ưc ihc
NIÍẤN Vlí-N vui các kiếu tiiực thẻ 1)()N VỊ va NIIẤN Vli N lưoTiụ
ửn‘j . 1linộc tíiili Mã sô la ihuộc íinÌ! klióa.

5. Kiêu thục ihè CnN \ái các tlìuộc l i nh Nhàn \ i cn. 1 io ÌC! 1.
(iiói tiìih. Nuà> sinh. 1huoc tính Nhân \ ièn IIIÒ UI k i ê u licn kẽ! \ <yi

k i è u tỉ i ực l!ìê N Ỉ I Ả N V’!1:N.

6 . K i ê u lièii kv.H :

IX Í N VỊ 'kiêni^soál ■D ư Á N

l à k i ê u l i ê n k ế l c ó t v s ố u.rc h r ợ n ụ 1 : N { m ộ t d ơ n \ ị k i c m s o á t m ộ t s ố tỉụ’

án. i n ộ l d ự a n ilo n i ộ t d<rn \ ị q u a n Iv ). S ụ ’ l ỉ i ani ụi a c u a 1)1,1 A N v à o k i ê u

lièn ket la t o à n b ộ ( hi n \ i dụ' áii ìVằo cũn>z c ó m ộ t đoTi \ ị k i ê m soat). Nèii


d o n \ Ị n à o c ũ i m c o d ụ ’ á n thì \ i ẹc t h a m u i a ci i a D Ơ N VỊ \ àc) k i ẽ u ỉ i èn

ivêl l à t o à n b ộ . i m ư ự c l ại s ự i l ui i i i ụ i a l a b ộ pl i ặi ! .

7. K i ê u l i ê n k ê t ;

NiỉÂN V ! F N < ! à n i _ \ i ê c clìo> D O N VỊ

c o t y s ố i ự c !u'ợn<ĩ N : I ( m ỗ i n h à n v i è i i l á n i \ iệc clif) ni ô! (ỉơn \ Ị. nhiriìí>

mỗi dan vị có nỉiicu nliàn \ièĩi hiiii \'ịệc). Sự iham líia cua liai kiêu thực
lliế v ảo lièn keí là toàn bộ.

8. Kiêu liên kẽt :


NllẤN VIỄN '-:quản_l\i)()N VỊ

cú t\ số lực iượnu 1 : ] (iiiộl nhân \'iên quán 1\' niột ilưn \ Ị \ à mội dơn \ Ị
có mộl nhàn \ iêii quàn Iv ), Sự tỉiani gia của kièii thiic tliê N ỉiẢ N V11'N
\ à o kièa liên kêl là bộ |ihận (hai \ i khônti phải nliàii \'icn Iiào crmi' CỊU.ÌII
lý đ m i vị). N g i r ợ c lại, s ự i h a n ì g i a c ũ a k i ể u t l ụrc lliê Ì3(1N VỊ v à o k i ề u

l iên k ế t là t o à n b ộ ( b a i %i d^yn \ Ị n à o c ì i n c p h à i c o n u ư ờ i q i í à n iỷ).

9. Kiêu liên kèl ;


NI ! Ả N V íT n <giáin_sat> N l ! Ả N _ Vir,N

có tỳ số lực lượng I ; N í một Iiliân viên cỏ ihc uiáin sal nhieu nhan
v i ê n k h á c ) . S ự t h a m -,ia c ù a ki ci i t h ụ c i h ê N l l Ả N Vll-.N ( ớ c á h a i p h í a )

45
là b ộ phận ( b ờ i vi k h ô n g phải nh â n v iê n nào c ũ n g giá m sái nh ân viên
khác, và k h ông phải nhân viên nào cũng bị giám sát). Kicu thực thê
N H Ả N V IÊ N ớ đày đóng hai vai trò khác nhau : vai trò ntiirời uiáni sál
và vai trò người bị giám sát.
10, Kiểu liên kết :
N H Â N VIÊN < l à m _ v i ệ c j r ê n > D Ụ _Á N
có lý số lực lượng là M : N (một nhân viên có thể làm việc với nliiều dự
án khác nhau và mồi d ự án có nhiều nhân viẻn làm việc), Sir tham gia
cua kiêu thực thể N Ỉ Ỉ Â N _ V I Ê N là bộ phận (bời vi klìônu pliái lất cá
nhàn viên đều làm việc với dự án). N gược lại, sự tham gia cua kiều thực
the DỤ’_ Á N lả loàn bộ (bởi vì dự án nào cũng phài có nhàn viên lum việc).
Kiểu liên kết này có niột thuộc tính s ố giờ đế ghi lại số aiở làm \ iệc cúa
một nhàn viên trên một dự án.
11, Kiểu liên kết ;
N H Â N VIÊN <có> CON
biểu thị niối liên hệ giữa kiểu thực thể NHÂ N VIÊN và kiểu thực tlìé
C O N (một nhân viên có thể có nhiều người con). Kiểu liên kết nàv có ly
số lực lượng 1 : N (một nhân viên có thể có nhiều người con. nhưng mồi
người chi là con cùa một nhân viên). Sự tham gia của kiểii thực thê
NMÂN VIỂN là bộ phận (không phải nhân viên nào cùng cỏ con).
Nmrợc lại, sự tham gia của kiểu thực thề C O N là loàn bộ (nẹưừi con nào
cũng phải là con của một nhân viên). Ngoài ra, kiểu thực thê CX)N là
mộl kicu thực the veu.
Sau khi phân tích như trên, để vẽ lược đồ ER ta loại bỏ các thuộc
tính dược xem như các kiểu liên kết ra khỏi các kiểu thực thế. ỉ)ó là các
thuộc tính Ntĩirời quán lý và Ngày bẳt đầu của kiểu thực thẻ DON VỊ ;
thuộc tính Dơn vị kiểm soát của kiểu thực thè D ự _ Ả N ; thuộc tinh
Dmi vị và thuộc tính N gườ i_giám _sát của kiểu thực ihể NI iÀN VIÊN ;
thuộc tính N h ân _ v iên cùa kiểu thực thể PHỤ TI ĨUỘC.
Kct quà, c h ú n u ta có lược đồ ER như hinh 2.7.

46
47
2,4. K H A Í N IẸ M V E M Ò H IN H T H Ự C T H E

Vlõ( C.ICỈI ỉruNÒn íỊìôĩìu. khi xa\ (lựỉìu Mìòí r o \í) (h: Ịịt i: . hun-
-V ’
íỉìUtiiìi' Ịì:U đàn í>ă!ĩi.* \1ỘC \ à \ d ụ n u niỏ ỉìin h 1ÌC!Ì kJ‘l úiu.; :'*c nnt' ! ' n i ỉ‘:
í 1\)., r o ’ ‘.:!U kÌ o c!ui'vcn dõi lUì íharỉỉì !HÔ ịìinỉ) tỊiKi!! ho i. .i./ kii/u íw^‘ỉn ^ i’
lìKì hỉuh \ \< r o ttiè dir<íC OOI là k!iá dfi> (lii úc \r\nh ỉì.!' vit' Lơ S-'
Jù !iv.a ÌMUÌL' v;.'k: irnu dụní-' Cir SO' dừ liệu iruN^n :ía>!ìí’ \i.'ỉi \ii
U!’ii íiíinL’ \11 ỉv í i ù liẹu íroiiL* k in i i tlOíinli \ a íi o n i'
IKÌV. CU' tni',’ i h n \ v !1Ì<VÌ ỉi ư n c ỉ ì í ì CÒIÌU ĩìg h ộ c a ^í! (ỉù 'iv';. J.'ị :iv’ iỉ phi>
ỉ-ĩiòn. C';k c ư so‘ v!ù !iọ u liìạ i nà> d o ỉ h o i n l i ừ i ì i i >i:u v.àĩi ịV''.íC Uìịí hơi) s^-
\(Vị cáe ĩnvj dụnii iruxOĩì ĩỉìòim. Dè iniilì híì\ ả\iiK- c;k- \J-'j 0.1(1 nav inọỉ
each. c h u i h \ a c \à rò rảnụ. n u u ừ i tliicl k ê SO’ d u ' i ì ộ u p h ả i sìi' (ỈỊHìe
íhcpì i.iU‘ kiìái niC-nì nuVi. Viộc ihêiiì \ a o !Ì1 Ỏ ỉiiỉìỉì ỉ *\ nỉìrr'>L: Lỉiai niỌiìì
!ÌU>'Í itniì ÌUO iộhl' Iiìò hnih nà> \ à íạt) hCmi !ìiò hiìih ! R ĩ;)!';:/ 1fíi l.’ỉ
Iiìô hiiiiì * ỉ 1 \ ! ‘, !i!ìance(ỉ ỉ Rc laíiíM is hip M o c i c ! )

M ò Ịỉ inh i,'l ỈẢ híìo uỏrn làt cá cac klìa i n iệ i ĩì cvii um'ì iiiiìit l R. niHKr
ĩa cỏ n Cv'» íh ỏ n i c á c k h á ỉ ii iẹ n i k h á c , Iiìột ưoìMi ca c kli.ỉi niù ìỉỉ dtì Icì ki.'u
ỉicn kci !(Vị-> c!ìa'^!<Vn COĨÌ. lịnh thừa kè.
N h i r la ÚC\ b i c L k i ỏ u t h ụ c i l ì ẽ ( l ư ợ c SU' d ụ n u í ỉ c i'>ỉv:iỉ ; ỉ i c n c a k i ê u
íhirc tiiỏ \ a lẬ p h ợ p c á c l ỉu/ c t hê c u n u ỉììộl ki òu íroĩì'^ C(ì ''(T ciữ iícu.
! roĩìu niiỉèu í!'iỉX>nu ỉiựp. nìột kỉẻu ihực ilìC' có ihc Cí'- r.ỉc ĩìh(Miì con c;u'
ih ự c llìc cu a nó \ à n l n ì ỉ i u n ỉió ỉn co n nàv cà iì dư ọv truih. bii> rỏ rap.17 dc- \
n r l i ĩ a cu a ỈK) cỉỏi \ ứ i L-cr Mr dữ liệu.

\' I (ỉụ. cac liụrc ihè ihaiìli \iè n cua kièii thục llic N Ị I A N V !!'.N Ci!
ihê citrọv fh ia ihanii các !!h(Sni !iho : K Ỹ s u , N í H U Í i (,)[;A N I V.
K^' r iỉr .Ạ ! rậ|-) các thục íiic lrontJí các nỉníỊiì (.lo i i một lậị'
CV>11 CÌUÌ cac ÌỈIỊR,- thò ỉroni.’ lập llu.rc liiô N I l Ả N V ! ! 'N, imliia lá nu'i liiực
l ỉ i ẽ ỉa l ỉ i a n h \ i c n c u a IIIỘ! I r o n e n h ì n i u l ì h o m Iìà> eÙHLí 1<! n i ọ l n h a n V ị c n
( tiuiỉu la uọi niổi IIỈIOÌH nà\ là một lr'rp C(^/1 cua kiôti íhục ilìc

N liẢ N V i l ' N , K iê u tlụrc ihê N I I Ả N V l l i N dirov i'oi là /<<7> ih<! cu;i các
lưp coì’ do. I a ẹọi quan liệ uiữa lóp cha và niòl iroĩiu nỉìùn.: I<yịi c on cu;i
no là kièii !icii kcl </(//> cỈKi.lírpcon -. Kièu liẽn kcl h')ịi cha l(Vp con
thiratiíí thrực Liọi là kiC'u liên kẽt mội (ỈS Ai- C’hui)í.; ta í!iUTíiv:>, n(Sị rãHL'.
nìi)! k \ Mi’ !<ì mòt niiàii \ iòn. mòt k\' líiuàl viÒM la ỈHÒ! )iíi;iM \ lèn.
( 'luì y ránii. mộl lliụr thè Ihànỉì viêd troii” iơp con cùng bièu diễn
Iiiọl lliục thế ihực tại níui niỏt ihành \ ièn Ironu lớp cha. Vi vậy, các thực
ỉIk- ihaiih v i ê n tron ụ lúp c o n \ a c á c tlnic thỏ tỉiành v i ê n t r o n g !(Vp c h a lả
liiòng nhau, nhmm vai tro ciia cliLinu hoàn (oàn khác Iihau. Khi chúng ta
tạo n iộ i k iê u liên k c t lớ p cha'l(TỊi COII ' tiCiim hộ i h o n í i C(T s ò d ữ liệ u , ta
co thè uình hà> inộl ihànl) viên cua ItVp C0 11 như là một dối tưọDg riêng
biệt, m ộ t hàii ghi rièng biệt kct liợp v á i các thực thể cua IcVp cha c ủ a nó
qua ihuộc lính khóa. KìCmì liên kêt <l(rp cha liVp c o n ' ' là k i ê u liên kết c ó
tv sỏ lực hrợiii’ 1 : 1 .

Một khái niệm quaii liọnu uán V(yi các lcrp con !à s ự thừa ké kiểĩi.
Kiêu cua một thực Ihê dược xác dịiih bane cac ihuộc lính và các kiểu
liên kCn mà IIÓ tham i.úa. V’ị mỗi thực thê thành viên trong Icýp con cùng
biêu diễn một thực tliê thực tại như thực thế tronu lớp cha, nôn các giá trị
cua thuộc tính cửa nó ironíỊ ỉớp c o n c ũ n g pliai tiiốiiíỉ n h ư là g iá trị c ù a
các lliuộc tinh cùa nó khi nó đóng vai trò là một tỉiành viên trong lớp
ch;j. 1 hực íhc Iiáy CŨIISÌ d u ợ c ihừa ke cá c liên kết tronu lớp cha. M ộ t lớp
ccn với các thuộc linh riôim cua nó cìin '4 '. ai tất cà các thuộc tính và kiểu
lièn kèt kc thừa đirực (u lóp cha có quyên dược coi như là một kiểu
ihụx’ ihc.

I ronti lược do F.FÍR. kiẻu liên kct 'lớp cha/lớp con> được biêu diễn
banụ m ột d ư ờ n u noi là một m ũi tèn tir c o n de n lớp cha.

í 7 dụ .

KỸ_SƯ N G Ư Ờ I_ Q U Ã N J.Ý

2 .5 . T Ò N G KẾT

I rong clnrtmu này c h ủ i m ta clã trình b à y vồ vai trò c ủ a m ô hình dừ


liệu bậc c a o Ironi;, quá irình lliict ke c ơ s ơ dữ liệu. D ồ n g thời đã làm

-- ''iMr-CSC:. 49
quen với các kliái niệin C(T bíin cua niò hình thực thể - licn ket : kiêu thực
thê, kicu liên kct \ à các thuộc lính cùa chủng. Các kièii thuộc tính khác
nhau cũng dã dược xcin \ é l : thuộc tinh ckm, thuộc tính phức hợp, thuộc
tính dan trị. thuộc línli da irị. thuộc tinh lưu Irữ. thuộc tính su y dien d ư ợ c
\ à các ihuộc tinh có uiá trị null. riiòng qua một ví dụ cụ thè, dà tiòn
liành \â y dựnu mò liinli I CONCì l Y. Ngoài ra. chúnu ta cũng dã nói
don niô hinli }'ì;R ỉà nuT rộne cùa mô hình FR.

C À U HỎI ÔN TẠ P

I Hày trình bày vai trò của mô hình dữ liệu bậc cao trong quá trinh
thiết kế cơ só' d ữ liệu
2^ Hãv Itệt kê các trường hợp cần phải sử dụng giá trị null.
3, Định nghia các thuật ngữ sau : thực thể, thuộc tinh, giá trị thuộc
tin h , th ể h iệ n liê n kết, th u ộ c tín h p h ứ c hợ p , th u ộ c tín h đ a trị.
thuộc tính suy diễn được, thuộc tính phức tạp, thuộc tính khóa,
miền giá trị,
4 Kiểu th u c thể là gi ? Tập thực thể là gì ? Giải thích sự khác nhau
giũa một thực thế, một kiểu thực thẻ và một tập thực thể.
5, Giải thích sự khác nhau giữa một thuộc tính và một tập giá tn.
6 Kiểu iiên kết là gì Giải thích sự khác nhau giữa m ột thể hiện liên
kết, một tâp liên kết và một kiểu liên kết.
7 Vai trò tham gla là gi Khi nào cần phải sử dụng các tên vai trò
trong mô tá cá c kiểu liên kết.
8 Mô tả cách chí ra các ràng buộc cấu trúc trên các kiểu liên kết
9 Kiểu liên kết đệ quy là gi ? Cho một số ví dụ về các kiểu liên kết
đệ quy.
10. Khi nào khái niệm kiéu thực thể yếu đ ư ợ c dùng trong mô hình cơ
sỏ' dữ’ liệu 'ĩ Định nghĩa các thuật ngữ : kiéu thự c thể chủ, kiểu thực
thể yếu, khoa bộ phận, kiểu liên kết xác định.
II Trinh bày các khái niệm lớp, iớp con Trong hoàn cảnh nào ta cần
tach một lơp thành cá c lớp con.
12, Trinh bày cách biểu diễn đồ hoạ của các mô hình ER.
BÀI TẠP

1. Hày xây dựng lược đồ ER cho cơ sờ dữ liệu "TR Ư Ờ NG ", dựa trên
c á c ghi c h é p s a u :
1) Trường được chia thành các trường con : Trường KHTN,
Trường KHXH, Trường Công nghệ,... Mỗi trưÒTig có một hiệu
trưởng quản lý. Mỗi hiệu trường quản lý một trường.
2) Mỗỉ trường có nhiều khoa. Chẳng hạn, trường KHTN có các
khoa Toán, Lý, Hóa, .. Mỗi một khoa chỉ thuộc về một trường
ĩh ô n g tin về Khoa gồm : Mã_khoa, Tên_khoa, Địa_chỉ,
S ố_điện_thoại, Tẻn_trường.
3) Mỗi khoa cung cấp nhiều môn học, Mỗi môn học gồm có thòng
tin về : Tên_m ôn_học. Mã_số, số_đơ n_vị_học_trình, Trình_độ,
Tên_khoa.
4) Mỗi môn học có thể có nhiều học phần. Mỗi học phần được iưu trữ
các thông tin ; Mã_học_phần Tên_môn_học, Tên_giáo_viên_dạy,
Học_kỳ.
5) Mỗi khoa có nhiều giáo viên tàm việc, nhưng mỗi giáo viên chỉ
làm việc cho m ột khoa Mỗi m ột khoa có một chủ nhiệm khoa, đó
là m ộ t giáo viên. Thông tin về giáo viên g ồm có ; M ã _ s ố _ g iá o _ v iê n ,
Họ_tên, Giới_tính, C huyên_m ôn, Học_vị, Học_hàm.
6) Mỗi giáo viên có thể dạy nhiều nhất ià 4 học phần và cũng có thể
không dạy học phần nào.
7) Mỗi sinh viên phải học nhiều học phần. Việc tham gia học các
học phần của sinh viên được ghi lại bằng điểm thi học phần đó
gồm ; Đ iểm _bằng_số vá Đ iểm _bẳng_chữ.
8) Mỗi m ột khoa có nhiều sinh viên, mỗi sinh viên chỉ thuộc về một
khoa, Thông tin về mỗi sinh viên gồm : Mã_sinh_víên, Họ_tên,
ĐỊa_chỉ, Ngày_sinh, Giới_tính, Lớp, Tên_khoa và Chế_độ_đào_tạo.
9) Mỗi sinh viên có một người giám sát (là giáo viên chủ nhiệm),
người đỏ là m ột giáo viên.
2. Hây xây dựng lư ọc đồ ER cho cơ sỏ’ dữ liệu "TH Ư _VIỆN ", dựa
trê n c á c g h i c h é p sa u :
1) Thư viện đư ợc chia ra thành các nhánh. Thông tm về mỗi nhánh
gồm có : Mã__nhánh, Tên_nhánh và Địa_ chỉ.

51
2) Mỗi ctiốn sách trong thii' viện có các thông tin về : M ã_sách,
Tên sách, Nhà__xuất_bản và Tác^giả- ,
3) Mot tác giá có thề viêt nhiều cuốn sách. Một cuốn sá c h co thể có
nhiều tác giả viết
4) Mót nhà xuất bản xuất bàn nhiều cuốn sách. Một cuốn sách do
một nhà xuát bán xuất bản Thông tin về nhà xuất bản gồm có :
Tên, Đ ia_chi và Số_điện_thoại.
5) Mòt cuốn sách có thể có nhiều bàn sao được iưu trũ’ tại các nhánh.
Thông tin về bản sao sách gồm : Mâ_sậch, S ố_các_bản_sao
6) Thư viện có nhũĩig người mượn sách Thông tin về nhũ'ng người
m uợ n sách gồm có . số_thẻ, Ho_tên, Đ ịa_chỉ và Số_điện_thoại
7) Sách đư ơ c cho các người mượn mượn tại các nhánh. Thông tin
về môt lân tnuợn gồm có ; Ngày__mượn và Ngày_trả
M ô t CO' s ớ d ữ ìiệu đ ư ợ c x â y d ự n g để lưu trữ d ấ u v ế t củ a c á c đ ộ i vả
các trân đấu trong liên đoàn bóng đá. Một đội có m ột số cầu thủ,
nhung trong mỗi trận đấu không phải tất cả các cầu thủ đều tham
aia N guơi ta mong muốn lưu trữ dấu vết của các cầu thù tham gia
tro n g m ỗ i trậ n đ ấ u c ủ a m ỗi đội, vị trí m à c á c cầ u thủ c h ơ i tro n g m ỗi
trận va kêt quà của trận đáu. Hây íhiết kế một lược đồ ER cho ứng
dụng này.
Xet luọ’C đồ ER nhu hình dưới đây :

Giả sử rằng, m ột môn học có thẻ sử dụ n g hoặc không sử dụng một


tài liêu. Một bài giáng được định nghĩa là m ột tài liệu đư ợ c sử dụng
trong một môn học nào đó. Một môn học không thể sử dụng nhiều
hơn 5 tài liệu Một giáo viên dạy từ hai đến bốn môn học. Hãy thêm
vào lược đồ trên các ràng buộc (min, max).

52
5 Môt trung tâm giới thiệu việc làm hoạt đóng như sau
Trung tâm có một file chứa danh sách các người xin việc.
Nếu người xin việc trước đó đã làm việc thi người đó có một lịch
sử iàm việc cụ thế Tất nhiên, ngưòi nào khõng có lỊch sứ lam
việc thi chưa làm việc bao giờ.
Mỗi người xin việc có thể có nhiều nghề
Trung tâm có m ột danh sách các công ty có yẻu cầu người iàm
Mỗi khi m ột công ty có một yêu cầu nguới làm, trung tâm sẽ ghi
mộf. bản ghi vàc file "C ơ H ộ i". File này chứa các thông tin mã
s ố CO' hội, tên c ô n g ty, c á c n g h è y ê u cầu, n g à y băt đầ u va l ư ơ n g
Mỗi cơ hội chỉ đòi hỏi một nghề cụ thể.
Khí m ột người xin việc cỏ nghề nghtệp phù hợp, người đó sẽ
được giới thiệu việc và m ột bản ghi sẽ đưọ'C đưa vào fịle
"BỐ _TR |" File này chứa mã số cơ hội, mã số người xin việc,...
Đồng thời m ột bản ghi sẽ được đưa vao iịch sử làm việc của
người xm việc đó.
Trung tâm muốn lưu trữ dấu vết của cá c kiếu thực thế sa u đây :
C Ô N G _TY, CƠ_HỘI, NGHỀ, LỊC H _SỬ _LÀM _VIẸC , BỐ_TR|.
Vói các thông tin có được, hãy ;
- Vẽ lược đồ ER cho trung tâm.
- Xác định tất cả các kiểu liên kết có thể.
- Xác định các ràng buộc trên các kiểu liên kết.
6. Bằng cách sử dụng các thuộc tính và các quy tắc quản lý sau, hãy
xá c đ ịn h c á c k iể u th ụ ’C thể, c á c kiể u liên ké t và tạ o ra m ô h ìn h ER :
Các th u ộ c tính : Mã số gian hàng, tên gian hàng, số điện thoại của
gian hàng, địa chì gian hàng, mã số nhân viên, tên nhân viên, giói
tính nhân viên, số điện thoại nhân viên, ngày sinh của nhân viên,
địa chỉ*nhân viên, mã số quầy hàng, tên quầy háng, rnâ số khách
hàng, tên khách hàng, số điện thoại khách hàng, địa chỉ khách
hàng, mă hàng, tên hàng, số lượng hàng trong kho, số lượng yêu
cầu, ngày yêu cầu.
Các q u y tắc
- Vlột gian hàng thuê một hoặc nhiều nhân viên
- Vlột gian hàng có một người quản lý (là một nhân viên).
- Vlột nh ân v iên phải !àm v i ệ c c h o (thu ộc v ề ) một gi an hàng.

53
- M ột nhân viên có thề làm việc hoặc không làm việc cho một
quầy hàng.
- M ột quầy hàng thuê một hoặc nhiều nhân viên.
- M ộ t n h â n v iê n có th ể p h ụ c vụ h o ặ c kh ô n g p h ụ c v ụ ch o m ộ t h o ặ c
nhiều khách hàng.
- M ột khách hàng được một hoặc nhiều nhân viên phục vụ.
- Một khách hàng có thể đặt hàng một số hàng (Tất cá khách
hàng đặt hàng một hoặc nhiều hàng).
- M ột hàng đư ợc một số khách hàng đặt hàng (mọi hàng đẻu
đư ợc ít nhất là một khách hàng đặt hàng),
- Một đơn đặt hàng gồm một hàng

54
C I I Ư Ơ N C III

MÔ HÌNH QUAN HẸ

Mô hình quan hệ dược Ted c 'odd đua ra đâu tiên vào năm 1970 và
gâ v d ư ợ c c h ú V ng ay tức khắc vì tinh đ(Yn uiíin va các C(T s a loan h ọ c cúa
nó. Mô hinh quan hệ sứ dụng khái niệm quan hộ toán học nlur khôi xây
dựng cơ sờ và có cơ sở lý thuyết cua nó tronu ỉý thuyet tập hợp \ à lỏ u ic
vị từ bậc nhất. ĩ r o n g chưcmg nàv chúnu ta sẽ nuhiên cưu các khái niệm
C(r bàn và c á c loại rà n g buộc trC‘ii m ô hinh đó.

3 .1 . C Á C KHÁI NIỆM C Ủ A MÔ HỈNH Q U A N HẸ

Mô hinh quan hệ biéu thị cơ sơ dữ liộu như một tập các quan hệ.
Mỗi quan hệ có thể được biếu diễn như một bunu uiá trị. mỗi một clònu
trong b a n g biểu thị m ộ t tập hcyỊi các giá trị dữ liệu liêii qiiaii v ó i nhau.
Tront’ Chương II, chúng la đã dưa ra các khái niệm vê kiêu thực thê và
kiểu liên kết như là các khái niệm đổ niỏ hình !ioá dừ liệu của thố uiới
thực. '1'rong mỏ hinh quan hệ, mỗi một dÒMU tronu hanc hicLi thị một sự
kiện tương ứntỉ với một thực thể hoặc một lièn kỏt của ihế yiới thực, Tồn
báiiíỉ và lên các cột dùng đê giái thích ý nụhĩa cua các uiá trị trong niỗi
hàng. Mọi giá trị irong một cột đều ciinạ một kieu dù’ liệu.
riieo thuật ngữ mô hình quan hộ hình thức, mỗi hàim dược uọi là
một h‘ộ \ rnồi dầu cột được gợi là một thuộc tính, \'à bánu dược Rọi là mộí
quan hệ. Kiểu dữ liệu niỗ lá các kiêu cua dữ iiệu xuat hiện troníĩ mồi cội
gọi là niộl mièiì.

3.1.1. Miền, thuộc tính, bộ và quan hệ

MỘI m ièn D là một tập hợp các giá tri nguyên tử. dièu d ó có Iiiihĩa
là m ỗ i giá trị trong m iền là khỏní> !hể phàn chia dư ợc trong phạm vi m ô

55
h ì n h q u a n hệ. D ê d ặ c ta m ộ t m i ề n , niỊ.irài ta chi ru n i ộ l lC‘ii, m ộ i k i ê u d ừ
liệu và khuôn dạim dừ liệu.
Một sô vi dụ vè dịnli nahĩa niicn ;
- I lọ tèn : l ập hựp các dãy chữ cji co dộ dài < 30.
- Tuòi : rập các so ntiu\ êii nầiii troim khoaiiu lừ 1 dêiì 81).
- ( i i ứ i tính : Tập hợp uôm liai íìiá trị "N am ” \'à "N ừ”.
N í i o à i ra. t r o i m C(T s ơ (iữ l i ệu n u ư ờ i la c ò n uhi r a cck' t h ô n g tin pliii
đè thè hiện các íiiá trị cua mien. ('liãim hạii. cac dtm vị tính như ticti,
trọng lượng....
Một ìược cỉo cỊiiiin /ìệ R, ký hiệu là RíAị, A-«..... A„), dược tạo nen
từ một tên quan hệ R cua một danh sách các tìiuộc tíiih A), A i, ... A;,.
Mỗi một thuộc tinh Aị là lC'11 vai trò CLia một micn D nào dó trona hrạc
đồ quan hệ f<. I) dưực gọi là /niẻn ịỉiá Irị c u a Aị và d ư ợ c ký liiệu la

Dom(Aj). Một lược đồ quan hệ dược sư diing dè mô lá một quan hệ ; R


được uọi là tên của quan hệ cló. ( 'ấp của Iiìộl quan hệ là số các thuộc tiiih
cùa lược đồ quan hệ cua nỏ. Ví dụ, la có lược dồ cho quan hệ cấp 5 :
SINH_VIÊN(Mã_số. Họ tôn, N aả\_sinh, Giới_tính. I^Ịa_chi). Với lược
đồ quan hệ này, SlNl [_VIAn là tôn cua quan hệ.
Một qiian hự (hoặc írạnỊỉ thúi quưn hệ) r cua lược dỏ quan hộ
R(Ai, At,..., A„) dược ký hiệu là r(R), là lập hợp các n-bộ r(R)
{t|, t„i. Mỗi n-bộ t là một daiih sácli cỏ thứ tự cua n giá trị
t = <V|, vt,..., Vp >, trong dó mồi V’i,l < i < n, là một phần từ cua
Dom(Ai) hoặc là một giá trị kliỏnu xác dịiili (null value). Giá trị thứ i ciiii
bộ t tiumg ứtm với tliuộc lính Aị dược kỷ liiộu là l[A||. Hình 3.1 chi ni
một ví dụ của quan liệ SINII Vll-N tircrim ửniĩ với lược dồ quan liệ
SINH_VIẺN ớ Irêii. Mồi bộ trona quan hộ bicu diễn một thực thổ sinh
viên cụ thể. Quan liộ được hiêu diễn như inộl baim, tronu đó mỗi hộ
được hiển thị nlur một lìànu và mỗi tluiộc lính tưưng írnti với một dâu
cột chỉ ra tên vai tro cua các uiá Irị trong cột dó. Các tỉiá trị không xác
định biểu thị các thuộc linh mà uiá irị cùa nó khôiiu biết dược, hoậc
không tồn tại đối vcVi lừnti bộ SINl I _V11'N cụ thê.

56
S IN H V IÉ N ; H n jê n 1 Mã_số Ngày_sinh Giới_tinh Đia_chi

I i ê Ván 1 4515202 12/09/84 Nữ Hả NỘI

ị 4516802 21/03/84 Nam Bắc Nmh

! 4620503 15/05/85 Nam t^â Nam

Pham An 4612203 16/04/85 Nam Nam Đỉnh


f --- ------------------- ...... ....................... Ị........ ............
Đồ Cung i 4521402 20/01/84 Nam

Hình 3.1. Quan hệ S!NH_V!ẾN

D ịiiìì n u h ĩa qiian hộ ứ trcn c ó thê pliát b ic u lại n h ư s a u : Mọt quan fiệ

r{R) là n i ộ t quan hệ toán học câp n trẽn c á c m iên uia Iri d o n ì i A ị ) .

tỉom(A->)__ dom(A,i). cỉó la tập con của lích l)c-cãc cua các niicn ụiá trị
xá c đ ị n h R ;

r ( K ) c: ( d o m ( A i ) X d o n i í A ^ ) X ... X d o m ( A „ ) )

T it h ! )c-các cỉìi ra mọi tò hợp có thè cỏ của các giá trị tir các miôn
đã c1h». Như \ặ v . néu la ký liiệu lực ỉưcTiiii cùa một miền D la |1 ) | u'i
ạià thict ríiDíỉ, mọi miên deu hữu hạn tliì tôim so các ỉx} troim lich l)ề'
cáe la
■' \ clonK.A 1 ) ị * I donHA:) ị * ... * ! doiu(An) I
Ngoái tất cã các lố hợp có thè cỏ này. một trạni! thái qiian hệ ớ mộl
(hòi dieni cho trư(yc aọi là trạng íhái quan hệ hiện lại chi phan aiiỉì các
bộ giá tiị biêu úicn một trạim liiái cụ thể cua tliế niới lliực. Noi chuiiu. tio
irạiig íhái cùa tl’.è ^ioi llnrc tliay dòi, cỊiian hộ CŨIIU bị thay dõi tliaiih
trạng lliái quan hệ kiiác. I u\ nliicMi. lược (lô R !à ôn clỊnli, klìònụ tliíiy
dôi, trừ khi pỉiai thcii! \ ào một số thuộc tinh dè bièu dicn niộl thõiiu tio
m á i c h u a (lu \ rc lưu t r ữ I r o n t ỉ q u a n hệ.

C'ó tĩiê xav ra tnrờnu h(yp nhĩều thuộc lính cỏ cùnu một miền lũá trị.
Các iliiìộc IIIIỈI chí ra các vai trò khác Iihau đoi với miên. Vi dụ, hai
thuộc íínỉi Dịa chi NV và ỉ)ịa_chí_DV co cùnsỉ iniền iiiá trị- nhưiií’
Uiuọc íínlì thư n!ià( tham cliièu dèn dịa chi cua nhân viên, còn dịa clii lliír
ỉiai lliitiii c h i ê u d ê n dia clii cu a d ưn vị.

57
3.1.2. Các đặc trưng của các quan hệ
1. T h ứ tự ciía các bộ trong một quan hệ
M ộ t Cịuan h ệ đ ư ợ c d ịn li i m h ĩ a nlnr lìiột tập h ợ p c á c bộ. C á c p h â n tn
tionu một tập hợp không có thứ tự. vì vậv các bộ troim một quan hộ
k h ô n g c ó một thứ lự CỊI thè. 1 uy nhiên, iroiiL' một tệp các ban uhi dược
lưu trữ một cách vạt lý trèn đìa. V'i vậ\ , luôn có một thứ tự tiiĩra các ban
ulii. rhír tự này chi võ bán uhi ihừ nhai, bán uhi thứ hai.....ban uhi tliứ n.
Một cách lưcrnu tự, khi la biêu diễn một cỊuan hộ nhu là một bãnu, các
hànu được Ii ì Cmi thị theo một thứ tự nhài định.
I'hứ lự các bộ k hòn” phai là một phan của định nuiiĩa quan hệ. bcVi
vi một quan hệ cố eane biêu diỗn các sự vật ớ mức trừu iưtnig hoặc
lògic. Cỏ thè cỏ nhiều thử tự 1Ô2 ÍC trên một quan hệ. Ví dụ, các bộ giá irị
trong quan hệ SINI1_V1ẺN ư hình 3.1 có thề sắp xep theo nhiều cácli
khác nhau : theo lliử lự lỏuic cua llọ tC*n, iheo thừ tự lôuic của Mã số....
ỉ)Ịnh Iiíihĩa quan hộ khònti ehi ra thứ lỊi’ lôcic nái) cà. vì vậy không có
thử tự lôuic nào hơn lliứ tự lôgic khác. Các quan hệ c h ứ a c ù im một SC)
hànu như nhau, nhưnti các hàntỉ được sẳp xép khác nhau được xem như
dồim nhất với nhau. Khi niột quan hệ dược cài đặt như inột tệp, một thử
tự vật Iv có thc được chi ra Irên các bán ghi cùa tệp.
2. 1'hứ tự cùa các ịỊÌá trị bên tronịí inột bộ
rheo định ntihĩa quan hệ ỡ trên, một n-bộ là một danh sách có thứ tự
cua n ụiá trị. Như vậ\', thứ tự cua các ụiá trị troniz một bộ là quan trọnii.
từ đó suy ra ihir tự cùa các thuộc linh trong niộl lược đồ quan hệ cũng
quan trọníi. Tuy nhiên, ờ mức lôuic, thứ tự cúa các tỉiiiộc tính và các giá
trị cúa nó là không thực sự quan trọng khi giữ được sự lương ứng giữa
các tluiộc tính và các tiiá trị.
Có Ihế dưa ra một định nuhĩa khác về quan hệ, dịnh nghĩa này sẽ
làni cho thứ lự cua các I2,ia trị trong một bộ là khôiiu cân thiết. 'ĩheo dịnh
nghTa này. một lược đồ quan hộ R = (A |, A->.....A„) là một tập hợp các
thuộc tính ; một quan hệ r(R) là một tập hợp hữu hạn các ánh xạ
r = {t], t,„}. tronu đo mồi tị la niộl ánh xạ từ R vào [), ở đâv :
1) = d o m ( A | ) dom (A 2 ) w ... u cioniíA,,).
Trong định ntỉhĩa này. l[Aị| phài thuộc dom(A|). 1 < i < n, v<w mỗi
ánh xạ tị tronu r. Mồi ánh xạ t| dược gọi !à mộ/ hộ.

58
ỉ'hc(» cỉỊnh Iiưliĩa Iia>. inột bộ cỏ thê \ c m như mọt lậ|-> hợp cac cặp
(■ tlìuọc íinh • ” ia t:'Ị ). Iroiiíi dó nioi cặp cho một uiá irị cua ;inh \ ạ từ
m ộ l t h u ò c titili A, đ è n ni ùt Liiá trị \', c u a d o m ( A | ) . Vi l ê n t l i u ọc iinli xiuiỉ
í i i ệ n c ì i n i ! V(T1 ;>ì;ỉ !iỊ c u . ! n o . iìCmi t h ư t ự CIKI c a c l l i u ộ c t i n h la k l i ô n u CỊ ua n
írọnư Dièu nà> làn) nèn > mihĩa (y mức Irưu lirợim hoạc’ lõạic, \ ị cliãna
co ly do <J1 do tiiich cv một I^iá Irị lliuộc liiih xuât hiện tnrói: niộl u,iá trị
thuộc !ín ỉỉ kh á c iroiiLí một bộ.
K h i n iõ l q u a n h è (hrực cài dặl n h ư inột tệp. c á c t h u ộ c tinh d ư ợ c s ă p

\ c p i nộỉ c a c i i \ ậ í h' iihu' c á c t r ư i n m t roni : m ộ l h a n tihi. Tr oni . ’, Irưirnt í h ụ p


dó, cỉiú!i,í;> !:ì s è s ư l iụ n u dịiih iiLỉhĩa thứ nhàt cù a quaiì hệ. trcine cỉ(> ccic
uia irị c iia cá c tlu iộ c lín ii tro iií’ một bộ là có ih ứ lự \ i IIÓ ỉà iii d iín g ia n ra l
Iih ic u k h á i n iệ m . !'u \ t ì h iê n , d ị n h i m h ĩ a t h ử h a i là t ò i i g q i i á t h irn ,

3. ( ác u iá t r ị Ir o iiỊì m ột bộ
Mỏ) íiia írị lron:ĩ mọt bộ ỉa IIIỘÍ giá tri iiLUiNÒn Iir. Diều đo co Iiíilììa
la no k h ò n u p lià ii c ỉiiíi (.lược llia n h cá c tliành phaii iro n i! phạm vi c ù a n iô
h iiili quan họ. N h ư \ ạ > . Iro iiu m ỏ hình quan hệ k h ò iií’- c lio plú-p cỏ cá c
ih u ộ c ìín h p lu a - họp va cac thuộc lin h da trị. C'ác lliu ộ c Unh da trị phai
dược biêu tiicĩi ỉ'<ănu cac quiin hệ, còn các thuòc tinh nhức họỊi chi (.lược
biêu d iể n b ă n ii c á c lỉu iộ c Im h thànli phần ctơn cua nó.
C'ac giá trị cua một 'vài thuộc tính tronu một bộ cụ tlìô có ihô khònu
biết lỉirợc. lìo ạ c k!iÒ !m ih íc h ửní> vớ i nỏ. Tronu irư ò iiu liọ p do. Iig irò i ía
su ciụnu một ụiá trị tlậc biệt ụ,ọi là ,tr/ứ ìrị null. V'i dụ. giíi su qiiaii liệ
SINH V11:N co iliuộc linh s ố diẹn lhoạị ừ Iilìá. 1roim một tập thê
sinli viên, có ỉìuirới cỏ diẹn llioại ò nhà. cỏ ntỉirời khôníi ci'í vá cĩìntí có
niurứi co n h u iiu k h d iiụ hiỏỉ chăc. V a i nhừnự trườníỉ hợp kliỏnL', co. h o ặc
kliônự biốt ehăc. tỉuiuc tinh s ố diện jh o ạ i _ o _ n h a có uia trị nuil.

4. rh c liÌỊ-ii Cỉia niộ( ạuan hệ


Mọt ỉirợe dò q uan liệ có thê dược thè liiệ ii nhu' là n iộ l liiy c n hô, lio ặ c
I11 ỘI kháni’ dịiili. V'í c!ụ, lược dồ quan hệ SINII VllíN ứ trên khắnạ dinh
rănu, noi chuiiư. niọt thục thô S iN ll VIKN có tnột mã sô, họ lên. nụá)
sinli. uiới líìili. cỉịachi, Mồi bộ Iroim quan hệ dược ihe liiện nhir là một
sụ kiện,, hoậc như mót thê hiện cụ thê cùa một khãne định. Nưoài các
quan hè bièu d ic n cá c sự kiệ n v e cá c thực thê, một sỏ quan hộ cu thê
biêu diỗn cíic .sự kiọn về mối lièii kết. Ví dụ. lược đồ quan hệ

59
NIIẢN VII N 1)1! ANílVl;') số NV. Mít số DA. s ố uiờ) khíìni? (lỊi)li
c;ic Iiliàn \ ien lani việc voi cá c dự án, Moi bộ troiiíi tỊiian hệ này lièii kcl
mộl nliân vièn vai IHỘ! dụ' án nià anh ta iàiii \iộc cho !1Ó.
Nhir vậy. nì(') h ìn h (ịìiun hẹ hiên cHên c ú c sụ- kicn Ví' ỉlìực thừ và cái
s ư k iỌ n Vi’ l i ừ n k ê ! L Ỉ ir ớ i í l ợ ì ĩ Ị ĩ i l n y n l ì ù l l à c á c c Ị n a n hệ.

3.2. CÁC RÀNG BUỌC QUAN HẸ, L ư ợ c ĐÒ c ơ s ở DỮ LIẸU


Q U A N HẸ

I r o n e p!iầii n à \ c l i ú i i i Ị t a i h a o l u ậ n \ c CÍK’ h ạ n c h ê trC‘n c á c d ữ l i ệ u

tronu niộl lirợc (lò cơ sa dữ iiệu quan hệ. C ác hạii cliê dó dược uọi lá các
rù/ỉự hiiộc. Có các loại rang buộc ; ràim buộc mièii. ranu buộc khoá. rànii
h u ộ c l o à n \ ẹ n t h i r c t h ê v à r ài i i Ị b u ộ c l o à n v ẹ n í h a i n c h i c u .

3.2.1. Các ràng buộc miền

Cac rane huộc niicn clii ra raiiỉi, giá trị cua mồi thuộc tính A phái Li
rnọt uiá trị n u u \ê n lử liiuộc micn trị ùoin(A). ("ác kiêu dữ liệu liêii
kêl V(VÌ các miền bao L’ ÔI11 : các kiêu dữ liệu sô chuân cho các so nuuvên
(shoit intcuer, iníeucr, lonG inleuer), các so thực (Hoai, doublc prccision
tloal). Ngoai ra còn các kiêu dữ liệu ký tự (dãv ký lự với độ dài cố dịnh,
(lã>' ký Ur \ ứi ilộ dài thav dôi ), ngíiy. thời eian và tien lệ. C'ác loại miền
khác có thè la củc mien C(in của inộl kiêu dữ liệu, ỉioạc một kièu dữ iiệii
dcni dược, Irons’ dỏ mọi í:iá trị có the dược liệt kê rõ ràng.

3.2.2. Ràng buộc khoá và ràng buộc trên các giá trị không
xác ớịnh (nuíl)
MỘI quan hệ duạe dịiih imhĩa như niột tập hợp các bộ. '! hco định
imhĩa, cac phãn lư cùa inột tập hợp là khác nhau. Vi \ ậy, mọi bộ trong
quan liệ pliai kiiát Iihau. Diều tlo co Iiỉihĩa ià kỉiôim có hai bộ có cùng
mộl tò hợp uiá trị clio lầl cá các thuộc tính cuci cliủim.
I iiỏní; thưáim, co tồìi tại cac lập con cua các thuộc lính của một
liĩực do cỊuan hệ co tínli cliàt !à khònt> có hai bộ nào ờ trong mọi trạng
thái quan hệ r cua R cỏ cùnụ niộl tỏ hựp uiíi trị clid các thuộc tính cùa
1 1 0 . ciià sư chúim la k\ liiộu một tập con như vậy là SK, khi đó với hai

bộ kliac nhau hất kỳ t| vá tỊ iniỉiự một trạtm thái quan hệ r ciia R chủng

60
ta c ó raiiíĩ h u ộ c là t i Ị S K Ị t- I ị Ị S K j. 1ậ p l i ợp i l u i ộ c t í n h S K nhu' \ ậ \ d i r ọ c
iiọ\ la một siữn kiìoá (superkcy) của lược (lỗ (Ịuan hệ !í. MỘI siẽu khoá
S K \ a c tỉỊnli rỏ n i ộ t r à n u b u ộ c vò l i n h <ỉu>’ nlr.it. !*ỉiat hi c i i r á n g , k h ò n u có
hai hộ k lu ic Iilu iu í r o n i ĩ t n ộ t i r ạ n g tliá i r cua R có c ú n i í M iọt iiiá t r ị c !ì(í

S K . M u i q u í i n h ệ c o II iilìiH n i ộ t s i ê u k h o a m ặ c t ỉ ị n h . d ó l a t ậ p l i ợ p l ấ l c a
c á c i h u ò c t í n h c u a IIO.

V1Õ1 k h o a K c u a m ộ t l i r ọ c d ô q u a n h ệ R l à i n ộ l s i ê u k h o á c u a R Viyị
linli cii ât là n ê u h o đi h à t k v l Ị ni ộc línli A n à o r a k h o i K thi s ẽ c ò n !ại n i ộ l
tập K khônu phai là siêu k!n>á cua R. Nhu \ậy . inộl khoá la một sièu
k h o á lòi í hi êi i. i ml i ĩ a lủ d ó là m ò i s i c u k h o á i n à ta k hô n u , i h ê VÚ1 h o t h u ọ c
t i nh nài ) ra ktioi n ó i n à \ ẫ n e i ừ t ì u ự c r a n e b u ộ c \' è l i n h d u v nhấl ,

V í d ụ , \ c t q u a n liệ S Í N 1 I _ V 1 1 : N v ớ i c á c t h u ộ c tínỉi M à _ s ố . Í l ọ í ên.


Ngày sinh. ( riớ i_ tin h . I)ịa_chi. I h t i ộ c l i n h M ã sc) !à n i ộ l k h o á c u a
SlNll V I I Í N . b ơ i \ i k h ô n g c ỏ liai b ộ s i a h viC'11 c ó c u n ụ m ộ t ụ i á tri c h o
M à _ s o . M ọ i t ậ p h ạ p t l u i ộ c lỉiili c ỏ c i i u a M ã _ s ố , \ í (lụ Ị M ã số, ! lọ l ên,
Nuày sinli Ị d è u là niộl sièu khoá. l ' uy n h i è n . siêu ktioá ỉMã số.
ỉ lọ tèn, Nu à) '_ s in h } k h ô n u p h a i la k h o á . btyi vì n ê u b o di t ỉ u i ộ c i m h
I lọ t è n , h o ặ c N' uà\ s i n h , h o ặ c c a liai thì n ỏ vẫii c ò n ià m ộ t s i ê u k h o á .

( l i á trị c ù a m ộ t t h u ộ c tínli k l i o á c ó t h è đ i r ự c s ư dụi H’ clè x á c đ ị n h m ộ t


c á c h ( ỉ uv n h ầ t m ỗ i h ộ I r o i m m ộ t q u a n h ệ . V i d ụ , L'iii trị 4 5 1 5 2 0 2 c u a
Mã s ố xác dịnh m ột c á c h du>- nỉiầt bộ uia trị IƯCY11C iniíị với sinh v iên
"1 0 V à n " I r o n u q u a n h ệ S I N H _ V H ' N ( h i n h 3 1). C h ủ ý r ă n g , n i ộ t l ậ p
h ợ p t h u ộ c l í n h l ạ o n ê n m ộ t k l i o á là m ộ t l i nh c h â í c u a h r ự c í!ồ q u a i ì hệ.
D i ê u ràn<4 b u ộ c là l i n h c h â t d ó p h ả i t h o á m ã n trèii n i ọ i t r ạ n g (Ịiái c u a
lirợc đô. Một khoá d ư ợ c xác dịnh từ ý nuhĩa cùa các thuộc linh và tính
cliat là h á t b i è n ; l í nh cl i ất d õ pliai l l i oả m à n klii c h ủ i m l a cIk'11 t h è m c á c
b ộ m ớ i v à o q u a n hệ. V i d ụ, la kl i õnt ỉ t h ê v a k h ô n u l i ư ợ c CÌII (lịnli t h u ộ c
tinlì l l ọ _ l ô n c ù a (.ỊLian h ệ S I N I I V Ị R N là k h o á , b a i vi k h ò n u C(S uì d à m
b a o r a n g k h ò n ụ t ô n tại liai sinli \ icn c ỏ c ù n u liọ lên.

N ó i c l i u n u . m ọ t l ư ợ c d ò tỊiuin liệ c ó I hc c ó Iihicii h ơ n m ộ t k h d á .


1 roim tnrừnu hạp dó, mồi inột khoá dược uoi là một khoú íỉự íuyên
(candidatc kcv), 1 hônụ llnrớny phài chi dịnh Iiìột troim các khoá dự
t.uyên lam klỉoả chinỉì (primar) kcy) cua qiuin liệ. Klioá chính là mộl
k h o á d ự tuycMi m à c á c u i á trị c u a c h ú n e d ư ợ c d ù n i ỉ đ ê x á c đ ị n h c á c b ộ

61
troim quan iiệ. Ta qu \ irớc các tluiộc tinli fạ(i nên khoá chinh cua mọl lưac
d ò tỊUítti h ệ (.lược ụạc ỉi ciinyi.

r / í / / / ; S l N I l Vlỉ:N(Mã số. I [ọ tên, Ncày sinh, CiiiVi !i[ili. [)Ịa cl))j.


C’Ỉ1U ý rane. khi một lược do quan liộ c ó nlìiêii kỉuK! dụ íiiNcn. \ iệc
lựa chọn mụl klioá tiir luyêii dè làm khoá cliíiih là Un ^ , [ ny nliicii. tòl
I i l i âl l a c h ọ n k h o á c h i n h ư ò m n i ộ t t l i u ộ c t i n l i h o ặ c c ó Nỏ c á c i h i i ụ c línli

It nhât,

MỘI rang buộc khác ticn các thuộc tinh chi rò khi nào thi e!io plióp
các liia irị iuill, N h ữ i m thuộc tính luôn luôn phai c ỏ niụt uia !rị \ a c (iịiiii
\ a hạp lộ thi hị ràng buộc lá NO i null.

3.2.3. Cơ sò’ dữ liệu quan hệ và lược đồ cơ sỏ’ dữ liệu quan hệ

() ỉrên. ciiúriL' ta đã nói (lòn các lược dô quan hệ d(Tn k' \ a các quan
hệ don !e, MỘI c ơ SO' dữ liệu quan hộ t h u ờ n e ụôm ĩihicii (.ỊiKin hệ '.ói cac
bộ ụiá trị íroiig cá c quan liẹ dược liên kct \ ớ i nhau II1C0 nỉìiôu cách,
ỉ ronu pliàn này. c h ú im ta sẽ định niỉhĩa inột C(]f s ở clữ liệii cỊuan hệ \ à
một lược dò c^f s ơ dữ liệu quan hẹ.

Một lirợc dô c ơ s o dừ liệu quan hệ s là niột lạp ỈK/Ị1 cac' iirợc ò o


quan hệ s - [R|, R ị .....Rii! ' à một tập các ràim buộc toàn vẹn.
Một cư SỪ dữ liệuquan hệ DB của s là niột tâp !iợp các IrạiiL! thái
quan ỉiệ l)B -■ [r|, r->..... r,,Ị . sao cho mồi I'ị là inột trạrni thái fua R, \ ;i
sao c h o các Irạne tliái quan hệ I'j llioa mãn các ràng buộc toàn \ ẹ n ciii ra
tronu tập cáe iànt> buộc toàn vẹn.
Vi dụ : Hinh 3.2 trình bày một lược dồ cơ sở ciừ liệu ('{)NCi_!’Y \ a
hinh 3.3 trinh bày một cơ sư dữ liệu C()N (j_ l'Y.
N h Ẩ N _V ĨỂ N tH ọ3ệm , Tén, Mă_sổ_NV. Ngây_sinh. Đia_chi, Giơi tính, Lương, M a_sỏ],N G S Mả_số_OV)

ĐO'N_V|(Tẻn_ĐV, Mã_số_ĐV, Mã_số_NQL, Ngây_bắt_đầu)

Đ O N_VỊ_ĐỊA_ĐIỂM (M â_số_ĐV, ĐỊa_điẻm_ĐV)

DỰ_ÁN(Tẻn_DA, Mã_số_DA, Đ|a_cTiẻm_DA Mâ_số_ĐV)

NHÂN_VIÊN_DỰ_AN(Mã_số_NV, Mã_số_DA, số_giờ)


Ị CON(Mã_số_NV, T è n _ P Ĩ, Giớỉ_tinh. Ngày_sinh).

Hinh 3.2. Lược đồ cơ sớ dữ liệu CỎNG_TY

62
NHÂN VIẾN Mẫ sá NV Họ đêm Tên NQày Sinh Đia chỉ Giớt tính Lương Mă số NGS Mã SỐ DV
NV001 Lê Vàn 12/02/79 Hà NÔI Nam 3000 NV002 5
NV002 Trần Đữc Nam M/02/66 Hà Nội Nam 4000 NV0G1 , 5
NV010 Hoàng Thanh 05/D8/79 Nghê An Nủ 2500 NVŨ14 4
NV014 Pham BằPQ 26/06/52 Bắc Ninh Nam 4300 NV061 4
NVŨ16 Nguyén Sơn 14/08/73 Há Nam Nam 3800 NV0Ũ2 5
NV018 Vũ Hương Giang 26/03/83 Nam Đinh Nũ- 2500 1 NVŨ02 5
NV025 Trần lẽ Hoa 15/03/80 Phú Tho Nũ' l~2500 NV014 4
NV061 ị Hoang Giáp 02/05/4? Hà Tỉnh Nam 5500 Nuil

ĐƠN Vị Mã số ĐV j Tên ĐV Mã SỔ NQL Ngày bẩt ơàii i


5 Nghiên cửu NV002 15/09/2000 Ị
4 Ị Hanh chinh NVOM 24/06/1997 1
1 ! Lành đao NV061 25/01/1992 :

ĐO'N_VI_OiA_ĐIÉM 1 Mẳ số ĐV Đia điếm ĐV


1 T Há Nội
4 Ha Nột
5 Nam Đinh
5 Hầ Nộì
5 Bảc Ninh

D ự ÁN Tên DA Mă^SỐ^DA Địa_điểm DA Mâ SỐ ŨV


DA01 Hầ Nội 5
DA02 2 Nam Đinh 5
DA03 3 Bẳc Ntnh 5
DAŨ4 10 Há NỘI A
DA05 20 Ha Nột 1
ĐA06 30 Ha NỘI 4

Hinh 3.3. C ơ s ờ d ừ liệu CÒ NG _TY

63
ỉ roiU’ niộí lược clồ C(y sò clữ liệu C|uan iiệ. các thuộc ÚI1 Ỉ1 biêu diễr
cuna niột kỉiái niệm thê ụiới íliực có thê (lioặc k!iòn<j) <.-o cúiiL’. tòn Iihir
nhau íroiiL’ các cỊuan !iệ khác nhau. Nuirơc lại. các ihiiộc IHIỈI bicHi (liềii
cac khái niệm khác nliau c ỏ lliê c ó tòn như nhau lixMig c;ic qtiaii hệ kỉiac
Iihaii. Vi ciụ. ironu cơ sư dừ liệu CONG I Y (y Irêii. cúc thuoc' linh
Mă sò NV. Mà_sỏ N(ÌS. Mã_,sỏ_NQl, có !ên khac n!'iau. nỉunií.'. dẽu
biêu cỉieiì một khái niệin tló ià mã sô nỉiàii vièii (b(ri \ ị !ií.'in'rị ui;ini sat
hoặc nuuời (Ịuaii ỉý cũim là nhân viên). ĩnini.’ kỉti đó. ihuòc tinli
(liui tiiili co Iiiậl Ironti hai cịiuin bẹ NIIAN_V!!:!N va (O N I uv nhicn.
(luVi tiiili troiiL’ quan hệ NllẢN_'V'inN là biến ttìị mivi líiih ciia ìihàn
\ icn. con (iiíTÌ tinli ('O N la biéu tliị eiới (íiiii cua Iiuirài con
Trtnm một sô phiên han trước cua tnỏ hinh quati hệ, ní-HUri ta vêu
cầu láiiu. các tliuộc tinli hièu diễn cùng một khái niệm của thè ui»ri ihụv
thi phai có lèn nlur nhau tronu mọi quan ỉiệ. ỉìiều dỏ sẽ ỉj;â> ra khó kỉuín
khi cùnỵ tnột kiiái niệm ihế liiới thực dược sư dụnu tri)ìiL> các \ a i iro
Miac nhau.
M ò t h ệ c Ị u a n Irị CO' s ơ d ữ l i ệ u p l i ả i c ó n e ò n ! m ữ d i n h ĩ i ' j h ì a d ữ H ệ u

(l)ata Dctlnition I anguagc - DDL) dè clịnh imhĩa lược dỏ cơ so (!ữ !iệu


quan hệ. Các hẹ qu;m trị cơ sờ dữ liệu hiện na\’ bâu nhu su (iụne SOI
cho iTiục dich nàv.
Các rànu, huộc loàn \ ẹn dược chi ra trên mội !uực clồ cư sư clừ liệii
và dưọc tÕ!i trọiig làm thoa mãn moi tiạiig tliái c a Stí tlữ !iẹu cua lirực dò
náy. Nuoài các rànu buộc niicn và rànu buộc khoá còn có ỉhêtn các ràní'
bu ộc d ư ọ c \CI11 nhu inột phan cua niô hinh quan liệ, dỏ la ràim huộc toàn
\ẹii llnrc Ihê \ a ràne huộc loàn vẹn tham chicu.

3.2.4. Toàn vẹn thực thể, toàn vẹn tham chiếu và khoá ngoài

ĨTIIÔC loàn vẹn ỉììực ihè (ỉirạc phát biêu ; Khoá cliính phai luòn
luòn c ó uiá trị xác dịnh. iiLỊliĩa là khònu đư ợc phép c ỏ <jiá !fỊ null. S a ilì
co ilièii dó là di) uiá irị cua khoá chinh dược sir dụnụ dè xao (tịnli cac tiộ
uiá irị riênti hiệt trone một quan hệ. v iệ c có Iiiá trị nuil cho klioá clìinh
kéo tlieo \ iộc cliúnu ta khônu ihc xác dịnh đirực một so hộ uia trị. Ví dụ.
nêu có hai ha\ nhicu lion các bộ giá trị C(S íiiá irị Mull clu) klióa ciiinh tììi
chúnụ la klìỏnii cỏ khá nănụ phân biệt chủnụ.

64
C. k; ràiiu huộc klio;'i \ a rany buộc l(Kin \ ẹn tliực thc clưục chi ra Irèn
các tịuan hệ riêiiu rè. R ùhị; hiiòí' to à n \'i'ii thiuìì c h iê u dirạc cìii ra giiìa
Inii (juaii hẹ dè (iin tri sụ- tiiưng ứng ụiữa các bộ cua hai quan hệ. Một
^.acli kliônu hinli tliức, ranu hiiộc l(Kin \ c n tham chiốu dược pliíit biếu là :
Môt hộ giá trị trong một c|Uiin hệ có liên kcl dcn một quan hệ khác phái
liỏn kci dcn một bộ uiá trị tòn tại troiii! lịiian hẹ (ió.
Dê clịnh nuliĩa toàn \ẹ n ihain chicLi một cách hinh llurc han, triróc
tiên cliúne ta dưa ra kiiái niệm klioá neoái : Một tập hợp các thuộc liiih
t K Ironu một lược tlỏ quan hẹ R| là một khoá nựoài (íorciiiii key) cùa
R) tham chiêu dêii cỊuaii liệ R2 'Iiíìn hííi ■

Oiiy íăc ! : Các thuộc tinli trone i'K có cìinu micn uiá trị như các
thuộc tinli cua ktio;i chínit PK cua ('ác thuộc linh I'K dirợc <>Ọ1 là
llhitìì cììiừu íỉữn (hoặc la ỉịú>ì //(■ í/ừií) quan hệ R->.

- ( ) u y I(IC 2 M ộ t u ĩ a trị c i i a l ' K I r o n u m ộ t b ộ tị c u a t r ạ n g thái hiện


íại i |(Ri) hoặc co mặt nlìu một íiiá trị cua khoa chinh cua mộl bộ nào
d ã \ i r o i m t r ạ n u t h á i h i ệ n t ạ i r 2( l ^- ) . h o ặ c l à n u l l . I r o i i í i t r ư ó n u I i ợ p Iiã>' t a

có li|l'KỊ t 2 ÌÍ’l^| '■‘1 n(')i ráng hộ t| liên liệ (tham cliiêii) dcn bộ t 2 - [Í-I
(.liriíc uọi la c/iuin hệ lịiíiin cììiữiì \ a Rt dược uọi là LỊitan hệ hị ihiim chiẽti.
1'roim m ộ l c a S(Y d ử liệu c ó nhieu q u an hệ th ư ờ n g có nhieu ràng

buộc (oàn \ ẹ n tham cliiêu. Dè clii ra các rànụ buộc này, Irưức licn phải
có một liièu biot rõ raim \ è y niiiiĩa hoặc \ ai trò cua mỗi tập thuộc tính ờ
trone các lược dò quan liệ kiiác nliaii cua cư sở dữ liệu. C’ác ròne huộc
loàn \ẹti quy chiỏii thiròny, nay sinli từ các moi IìCmi kct uiữa các thirc ihc
clirọc biêu cỉicn bíìnt: các lirợc clò qiian hệ.
('hủ ý raim. ĩiiột klioá nuoài có (hè tham chiếu dcn lịuan hệ của
chinh nó. I rong tnròiie !iợp dó, klioá neoài hiêu thị một liên ket dộ quy.
Chủim ta cỏ thò hièu dicn các rànẹ buộc tham chicu banụ Sít dô. í)ể
làni dicu dó ta \ ẽ môt cạnh có hướiiíi từ inồi khoá nuoài den quan liệ mà
IIÚ tham chiêu clèn. liinli 3.4 biêu diễn lirọc do ơ liình 3.2 vcri c;ic lanu
iiiiộc qu> cliiêii ciirạc biõu ciicii tlico cách nà>'.

65
ỉm Tên, Mã sổ
NHÂN V!ỂN(Họ_đêm sỏ NV, Mgáy__Sính, Địa^chỉ, Giởi tinh, Lương, M à_số_N G S, Mă_số_ĐV)

1 1 .1 1 Ị
_______________ ................................. ...........................~


ĐƠN_V! (Tên ĐV. Mâ sô ĐV. Mâ_số NOL, Ngày_bẳí_đầu)

ĐƠN VI ĐỈA Đ IÊM (Mả số Đ V , Đ ia điém Đ V )

DỰ _ẢN(Tẽn_DA, Mã số DA, Đia_điềm_DA, Mã_số_ĐV)

NHÂN VÌÊN D ư ÁNiMã Số NV. Mã sổ DA. số_giờ)

PHU THUQ C(M ã sò NV, Tén con Giới_tinh, Ngày_sinh)

Hình 3.4. Lược đồ và s ơ đồ tham chiếu

Níioài các rànn buộc loàn vẹn ơ trên, c a sớ dừ liệu còn phai thoa
inàii niột số ráni: biiộí' khác như rànu buộc trạim thái, rànu, buộc chuyẽii
t ác lang buộc Irạnii ihái xác dịnh các ràiiíĩ buộc mà inột trạn”
íhái \ ữniỉ chấc cua co sơ clũ liệu phái thoá mãn. Ví dụ về các rànu buộc
đ ó la : 'M . i r t r n u c u a m ộ i n h à n v i ê n k h ò i i í ! đ ư ợ c v ư c r t q u á l i RTn ụ c ủ a n m r ờ i

uiíỉm sal nliàn \ iôn dó", lioặc "Sô uiờ nhiều nhất m à một nhâii \'iên có
thê !àni v iệc tronu inộl luân trên tât cà các dự án là 56 iiiờ". Các ràniĩ
h u ò c n h ư \ ậ> c o t ỉ i è t l i r ợ c d ạ c l a v à t u â n t h e o b a n g c á c h s ư d ụ n u i n ộ t

niỊÔii nuữ clậc la rànụ buộc, Nuười la có the sứ dụng các cơ cấu như là
kích hoạt (lriuíji,cr) hoặc khánu dịnh (assertion). Các rànu buộc chuvC'ii
tiC’p co thê dược dịnli nuhĩa dc làm việc với những thay dồi trạn<» thái
Ironụ cơ sir dừ liệu. Vi chi vê rànụ buộc này !à : "Lươnu của một nhân
viên v.'lii co tiiê tãmi”. ('ác rànu buộc như vậy thiRTnu dược dịnh nuhĩa
bánu cách su tiụim cac quv lăc. hoặc băim các triuger.

3.3. C H U Y Ê N ĐO! MÒ HỈNH ER THÀNH MÒ HỈNH Q U A N HỆ

Nhu dã irìtih ba} o' Chưưỉm II. hiróc tiếp theo sau viộc xâv dựng mô
hình dừ liệu inức khái niệm, la phái chuyển dổi mô hình đó thành một

66
niõ liinli dù' liệu lỏụic. ỉ)o là eacli ,\â> dựii” CI* sỡ dù liệu quan hệ thực
ticn clirợe áp ìiụnu rộiiu rai liiộn nuv. I roiiu phần này, chiinu ta sẽ nghiên
cửii \ c tliuật loàn chu\C‘n dôi lìiột mò hin!i 1 R thánh ra mò liinh quan hệ.

3.3.1. Các quy tắc chuyển đổi

I lìuật loan c!iu\èn ilỏi dirợc ihirc hiện cáe bước sau (dựa trèn
c a SU' chì liệii ( 'O N( i I Y ) :

hìirơc I : Vứi rnồi kièii ihực thò ihôiiíỊ ihuờiig 1: lionụ lược đồ FR,
hã\ tạo ĩiiột quan hệ !<. clnra mọi ihuộc linh dưn cua 1:. Với các ihuộc
linh j'»huv họp, chì là> các liiuộc íinh thanli phàn d(Tii cua nó. Chọn mộl
iruní: cac ihiiộc tinh khdá cua 1: làm khoá chÌTtli clio R, Nốii khoá được
chọn cua 1: là phuv hạỊỊ (li.òm nliiòu Uiuộc tíiili) ihì tập các thuộc tínlì
(lon do sẽ cùiia nhau lạo !iên klicni chính cua R.
í 7 iiụ : Gia SU' la có kiêu thưc thè n O N VỊ \ứ i các thuộc tinh là
Mà Mỏ DV. íèii Ỉ)V. ỉ:)ịa dièm n v triHìL’ do các lliuộc tính khoá là
Mà l)V. rên Ỉ)V (do niồi do'ii vỊ eo inộl lên du\ nhất) và
!)ịa diêm DV là một liiuọc tính ciii trị (do lìioi dơn \ Ị có nhiều dịa
dicĩiì). Klii đt) kièu thụv ihê 0 ( ) N VỊ duợc chuNÒn tliành cỊuan hệ
iXÍN VỊ vói các thuộc linh Mà số 1)V. 'ỉ èii DV. Klioá chính cua quan
iiệ là Mã sổ DV (cliọn mộl trciim hai thuộc tinh khoá cua kièu thực thổ).
- Hước 2 Với nìồi kièu thực tliè yếu W' troiTu lược do i ’R cùng với
kiêu thực thè chu !i, hã> tạo niộl quan hệ R chửa lai các các thành phàn
tỉtTii (hoặc các thánh pỉiãn d(ni cua các lỉiuộc lính phưc hợp) cua w như
lỏ các thuộc tính cua K. ỉ)ua các ihuọc tinỉi kh(,)á cliínii cua các quan liệ
tucrnu ứim VỚ! kiéu tlnrc thê chủ làm khoá Iiíioài cua R, C á c thuộc tính
iu’iy se xác dịnh kièu liên kêt cua w . Khoa chính cua R !á mộl tỏ hợp cùa
klioa ciiính cua các quan hẹ Urang ứnu \(Vi kiêu tlụrc ihê cliu và khoá bộ
pliụn cua kiêu thực thê \èii w nêu cỏ.
Vi íiụ : (iia SIÌ ta có kicu liên kết N! !ẢN VIl-N <có> CON. troim dó
N liẢ N VỈÙN là kièu tliực ihè chủ với các ihiiộc tínli Mã_số_NV.
liọ dộni, lên, Neày sinli. ( iiớitiiili. rhuộc tinh khoá cùa N! [ẢN_V1I-'N
la Mã số_NV. C'()N là kiêu thực ihè phụ thuộc (vào thực thể
NllAN VIÈN) vói các thuộc tínli là 1lọ_lên con. Nuày_siiih, Gi(Vi_tính.
Kiòu ihực thè náy khônự cỏ tluiộc tính khoá. Khi dó kiều thực thể

67
NỈIẢN V!I:N dirọc chuyèii thanh quan liệ NỈIẢN VlliN \ó i các Ihuộc
tínli nliư trC‘ii, Kièii liiụx' thố CON dược chuycii tliành quan hệ C'()N V(Vi
các tỉuiộc’ tinh Mà sò NV. 1lọ tòn con. Neà\_sinh. (ỉic'ri tinh. Ọuan hệ ?iá\
có k!ioá imoủi là Mã sô NV. klioá cliiiih là Mã sò NV. ị lọ tòn COII.
Btrớc 3 : Với mồi kiêu liên kcl 1 : 1 R Iroim lirạc dô l'R. hà\ \;u;
dịnh các quaiì hệ s \ à T linnm ứniì với các kiêu llụrc ihè tluini uia troim
R. Ilãv chọn một tront: các quan !iệ. cliíme liạii s, \'à tiira khoá cliiiilì cua
1' vào làm klioá imoài troim s. ỉ ol nliat !à chọn s. s lá Iiiộl kièu thực íliè
tham uia toàn bộ vào R. Dưa lất các các ihuộc tínli d(ni (hoặc ciic thànli
phàn dơn cua c á c thuộc línli phức h(TỊ’i) cua kièu lièn kèt ỉ : 1 R \ ào làm
các thuộc tính cua s.
(.'hú i' ; ( ’o một cácli chuyên dòi nioi Hèn kêt 1 : 1 nữa. đ(i !à nhập
hai kièu thực lliô và mòi liêii kết thành một quan hệ. Cách nàv ihưừim
được áp clụnii klú ca hai kiêu ihực thế dôu tham uia (oàn hộ vào liC'11 kcl
và khònu tliam uia vào các liên kct khác.
Í Vt/n ■(ìia sư ta có kiểu liên kct N ilẢ N _ V IÊ N <quàn lý> 1)()N_VỈ.
vói các thuộc tinh cua các kiêu tliực tliê uiònu, như ở trên. Kicu lièn kêl
<quan lý> là n iộ l k i ê u liên kết 1: 1. đ ồ i m ihừi SỤ' t h a m u,ia cua
N ii N VỈlíN \à() kiêu ììCmi két là bộ phận (khônt^ phai Iihân viên nàt)
cũng quan lý diYii vị), sự tliam <iia cua D()N_VỊ là dầ> du (niộl dơn vị
luôn luôn phái có một nmrới quán lý). Khi dó, kiêu thực thè
NIIẤN V11'N sẽ dirợc ciniyốn thành quan hệ NIÍẢN_VI1'N \'ới cáe
ihuộc tính cúa nó. con kiêu ihục (hè I^()N_VỊ sẽ dirợc chu>ôii thánli
quan hộ I){)N Vị \iVi cac thuộc tính cúa kièii thực ihế f)ƠN VỊ cộnụ
tlièni \(yi ihuộc línli Mã SÒ_NV \ à ihuộc tính cua kiêu liên kct <í|uan lý
néu có. I hiiộc tin!i Mã_số_NV sò là klioá imoài clu) quan hệ D()N_VỊ,
I)c làni rò \a i trò ĩiưirời quán lý, k!ìi cluiyen sanu quan hộ Ỉ)()N_VỊ.
ngirời ta đòi lên thuộc línli Mà_so_NV thành Mã_số_NQI, (Mà số nuirơi
quan Iv). Nu(k'iì ra, kiêu licn kcl <quan !v> có niột tliuộc tinh la
Nuà>_hăi dau ; thuộc lính nà> cĩinu dược dưa vào quan hệ i)()N Vị.
- Bưỏv 4 Với mỗi kiêu lièn ket hai ngôi R kieu 1 : N, hãy xác clịnh
các quan hệ s và r [mòu diễn kiêu thực ihé tham uia vào liên kết. s
lươim ứníz với kiêu thực tliè phía N, 1 tươim ứim vói kièu ihực thê (T

68
phia 1 cua kịcu liên kèt. Dua kiioá chinli cua quan hộ 1 vào lam khoá
nụdài Iroiìg s. I .am như vậ\ la \ i mỗi tlụrc thô cụ thè cua pliía N dưực
licn kcl \(Vi nhiêu Iihâl la một lliục thè cụ tìiô cúa pliía i CIKÌ kiẽii !ièii
kèl. Dua các lliuộc linh cỉi.m (hoộc cac tliàiiìì pỉiân ckrn cua cac ihuộc tính
pliuv h(rp) cua kièu liên kèt ! : N \ à o làm ciic ihiiộc linli cua s.
/ 7 lìụ : C iia sư la có k ic ii liõn kèt :

N IỈẢ N VỈHN <làm việc cho> DON VỊ


Iroim dó các kièu thực thỏ N ll N VlẺN, l)ƠN_VỊ là các kiêu thực thô
ơ trẽn. Kiẽii liC-n kết <làiii \ iệc cho> là kièii liên kcl N : I (một nliân viên
c li i l à n i v i ệ c cho n iộl dơn vị v à m ồ i d ơ n vị cỏ nhicLi nhàn \ ÌC'11 l à m Việc

chi>). Khi dó, kiêu thực the Ỉ)()N VỊ sẽ dưực chuyên thànli quan hộ
1)()N_VỊ VÓI các thuộc tính cua kiêu thực thể Dí)N_VỊ ; còn kiêu thực
thê N!1ẢN_V1FN sẽ dược chuyèn ihành quan hệ N liẢ N VllìN với các
ihuộc tính của kiểu thực tỉìc NHẢN_VIFÌN cộnu thèm vói thuộc tinh
Mã số [)V (là khoá chính cua quan hệ Ỉ3()N_VỊ). ỉluiộc linh
Mã_số 1)V sẽ là thuộc tính khoá imoài cùa quan hệ NI iẢN VKiN.
- lìim c 5 : Với mồi kièu lièn kết N : M hai lUỊÔi R. hãv tạo ra một
quan hệ mởi s dê biêu diễn R. f)ira các khoá chính cúa các quan hộ biêiỉ
dicn các kiéu thực ihc tham uia vào làin khoá imoài eua s. l ò hợp các
khoa chính dó sẽ tạo nèn khoá chính cua s. Dưa lal cá cac thuộc líiih
dơn (luuỊc các Ihành phàn dưn của các thuộc tính phức hựp) của kiêu Hèn
kot N : M vào làm các ihuộc tính cua s. Chú Ý ránụ, khòna ihế biếu diễn
một kicii liên kot N ; M bẩnu một thuộc tính khoá nuoài đ(yn uián tronụ
inột tronii, các quan hệ tham gia (nliir (líĩ làm vói các kiếu liên kết ] : 1 và
1 ; N) \ ì tý số lực lirạnụ là N : M.
Vỉ dụ : l ì i à sử ta có kiều liên kết :
NHẢN_V1HN <làm việc với> D ự ÁN
Kièu thực thè N1IẢN_V1HN có các thuộc tính như trên với tíuiộc
linh klioá là Mà sỗ NV. Kiếu thực thế DỤ' ÁN có các thuộc tính ià
Mã số DA, 'ICmi DA. Địa dicm DA, troni’ dỏ ihuộc tính khoá là
Mã sồ_DA. Kiêu liên kết <kini việc với> ià một kiêu liôn kếl N : M
(một nliân vièn có the làni việc vứi nhiều dự án và mỗi dự án có nhiều
nhàn viên làm việc). Kiều liên kct này có một thuộc tính là s ố giờ đề

69
lưu sỏ íiiờ nuì mỏi Iiliàii viòn iỏin \ iệc clio một dụ' an. Khi d ó kiêu liC‘11
kèl <làin việc \(Vi' sẽ (krọe c h u y ê n lliàiili inộl cỊuan liẹ c o têii ỉa
N11ẢN_V1I'N 1)1' \N \(T1 các lliiiộc linli Mà_số NV. Mà_sổ DA.
So_giờ, troiiii do hai thuộc tinh Mã số NV. M;i số DA lạo thanh klioa
chính (phức liợp) ch(> quan hẹ.
- lìinrc 6 : Vai niồi lỉuiộc unỉi da tri A. luìỵ tạo r;i inộl quan liệ Iiìoi
K. Quan hộ R nàv sẽ chửa mội lluiộc tin!’, urưnụ ửnu vói A eộim \iri
(liuộc tinh khoủ K cua quan hộ biêu diễn kièu tliục tliè. hoặc kiêu liên kcí
có thuộc tính là A iàiii khoa iiLioái cua !<• Khdá chính cua R là inột t(i
hợp của A \ à K. Nil-ii ihuộc lín!i da trị là pluiv hcrp thì chium la ciii diia
vào R các thành plìân doii cLia nó.
Ví íiụ : Xót kièu tỉiực lỉiè Ỉ3()N VỊ ơ trcn. 1huộc línli ỈJịa dièm_1H'
là một thuộc lính da Irị. Khi cliuxèn thàiili IIÌÒ hinh quan liệ nỏ sẽ dược
cluivốn thành niột quan hộ có khoa cliiỉil) là Mà_sỗ_DV, Dịa diôin va cú
ihê có Ihèm một so thuộc tíníi khác lưu tlìônu tin v ề địa diổm.
- Bước 7 : \'i'í\ mỗi kiòu liên kêt n ngôi R, trong đó n > 2. hà} lạo ra
một quan hệ s dê bièii diễn 1^. i)ua các khoá chính cua các quan hệ hiéu
diễn các kiếu ihực thè ihanì gia \ ÍIO làm klioá nụciài cua s. Dưa tấl ca các
thuộc tính dcni (hoặc các ĩhanh phàn dơn cua các thuộc tính pliửc lìợp)
cùa kiêu liên kêt n-niiòi \ à o làm tluiộc lính ciìa s. Khoá chính cùa s
thường là một tỏ hợp cac khoá chính eua các quan hệ biêu diễn các kiêu
thực thẻ tham ụia. l uy nhiC-n. nou rànu huộc lực luợnii trên niộl kiêu
thực thê E nào dó llntm iiia \ à(i R là 1 thi khoá chínii ciut s kliỏiiu dirạc
chửa thuộc tínli khoá nụoài ihaivi chiốu dcn tỊuaii hệ lí tưcmu ửnu với
kiều thực thè
K/ d ụ : Clià SU' c lu in e ia c o kièu liC‘n kềl :

i ) Ạ l _ ỉ Y < c u n g c à p > V Ạ r 'I U' < c h o > D Ụ _ Ả N

Dây là một kiòu liên kết cắp 3. (ìià su rẩim. kiẻu tliirc thê DẠl l . \
có thuộc tính khoá là Mã sỏ DL, kicii thục Ihc VẠ'Ĩ T'U’ cỏ thuộc linli
khoá là Mã_số VT. kiêu ihực llic DỤ’_ ẢN cỏ iliuộc tính khoa là
Mà_số_DA, còn kicu lièn két '' Cunu cấp> co thuộc tính là S ô _ lư ạn g dê
kru số lượng vậl tư má một dại lý cunụ cấp cho một dự án. Khi dỏ kiòu
!ièn kct <cuim cầp> sẽ dưọc cluiyên tliànli inộl quan hệ có tên lủ

70
CẢI^ với các thuộc lính Mã số 1)1 . Mã sổ V I Mã số i )A.
Sỏ Urạnt> v;'i khoá chính ụoin ba tlniộc lính Mã sỗ Di ,, Mà só !.
Mã sô DA.

3 3.2. Chuyển đối mô hình cụ thể

I rong ('hưcmg II chúnti la đã phàn lích \ à tiiict kè niô hình Ỉ .R clio


bài toán C '()N (ì_ rY (hình 2.6). Áp dụnu các hước cua thiiậl toan ơ ircn.
chúim ta có mô hình quan hệ cho bài toán C()NCi_ l Y nliii sau :
NHÂN_V!ỂN(Họ_đệm,Tén, Mả_số_NV Ngày^sinh Đia^chi, Giới_lính, L ư ơng M â_số N G 3 Mă_số_ĐV)

ĐƠ N_VỊ(Tên_ĐV, Mả_số_ĐV. Mã_sồ_NQL, Nqày_bảt_đâu)

ĐƠ N_VLĐ |A_Đ IÉ M (M à_sổ_Đ V, ĐỊa_địẻm_ĐV)

DỰ'_ÁN(Tẽn_DA, Mâ_số_DA, Địa_điểm_DA, M ã_số_Đ\/)

NHÂN__VIỂN_DỰ_ÁN(Mã‘_ số_NV, Mâ_số_DA. số_giờ)


PHỤ_THUỘC(Mã_số__NV, Tẽn_con, Giớt_tinh, Nơay_sinh)

Hình 3.6. Lược đồ cơ sờ dừ liệu CÒNG_TY

3.4. TỒNG KẾT

'I rong chương này chúntỉ ta đã trình bà>’ các khái niệm cơ bán cua
mò hình dữ liệu quan hệ. Chương này băt đầu hànu việc tiiứi thiệu các
khái niộni miC‘n, thuộc tính vá bộ uiá trị. Lược do quan hệ dược dịnh
nghĩa như niột danh sách các tliuộc tính mô ta câu trúc cua một quan hệ.
Một quan hệ (hoặc trạniỊ thái quan hệ) là niột lập hợp các bộ uiủ trị phù
liợp với lirực đồ.
Cỏ nliiều dặc trưnu đê pliân biệt cáo quaii tìệ với các banu, hoặc cac
(ẹp thông thiràng. I rirớc tiên, các bộ tronu một quan hệ là khôrm có ihử
lự. i)ộc tnrnụ thử hai liên quan đcii thứ tự cua ciia các ihuộc tínli trong
niọl lược dồ quan hệ và thứ tự lương ứng của các giá trị bèn trong niột
bộ. Mặc dụ đã dưa ra rnột dịnh tmliĩa quan hệ khác đc chửng minli ram»,
hai thứ tự này là không can thiết. Tuy nhiên, dể tỉmận tiện ta vẫn đoi hỏi
các thuộc tính và các giá trị tron” hộ là có thứ tự. Chúng ta cũnu, dã trinh
bày vè các giá trị trong các bộ và giói thiệu các L’iá trị nul! dé biểu diỗn
thông tin bị thiếu hoặc không biết.
Tiep theo, chúng la đã trinh hàv về các ràno buộc mô liinh quan hệ.
Dó là các rànt> buộc miền, ràiiL> buộc khỏa, các khái niệm vc sièii khỏa,

71
khóa dir tu\ẽn. khóa chính \ a rànti buộe NOI Iiull tròn các thuộc linỉi.
S au do, c h ú i m ta dã địnli nuhìa c ơ s ơ d ừ liệu và l u ạ c d ò c ơ S(T d ữ liệ'i
quaii !iệ. C'ác ràim buộc toàn vẹn tliục thè \ a toàn \ ẹ n tham chiôu CŨII!-’
đã dirạc địiili iiuliTa \ à phân ticli. 1oán \ ẹn thụv tlic imãn càni \ iộc klioa
chính co uiá trị null. [ oán vẹn lliani cỉiicu (iuợc sir c h u m dè du> tri s ự

lìhãi quan cua \ iệc tham chièu tronu các bộ liì' ciic quan hộ khác nluui.

C'uỏi cùnu. chiiim ta làni quen \ <Vi tliuặl toán cỉiuNÔn clòi từ inô lìiiili
ER saiiụ mô ỉiiiih quan hệ. Mỏ hinh F R cho C'()N(j 1 Y (ỉưực \ à y cÌỊrnu
Ớ C hưaim 11 diỉ dược chuyCMi dôi lliành lược dồ ca sơ dữ liẹu quan liệ.

C ÀU HỎI ÒN TẠP

1. Đinh nghĩa cá c thuật ngũ' sau : miền, thuộc tính, n-bộ, lược đồ
quan hệ, trạng thái quan hệ, cấp của quan hệ, lưọ'c đồ cơ sờ dũ
liệu, trạng thái cơ sờ dữ liệu
2. Vì sa o các bộ trong một quan hệ là không có thứ tự ?
3. Vì sao khõng cho phép các bộ trùng lặp trong m ột quan hệ ?
4. Siêu khóa và khóa khác nhau ờ chỗ nào ?
5. Vì s a o phải chỉ định một trong các khòa d ự tuyển làm khóa chính ?
6 . Nêu những đ ặ c trưng làm cho cá c quan hệ khác với cá c bảng
hoặc các tệp thông thường.
7. Nêu các lý do về việc tồn tại các giá írị không xác định trong các
quan hệ.
6. Hãy giải thích về ràng buộc toàn vẹn thực thế vả ràng buộc toàn
vẹn tham chiếu. Vì s a o cá c ràng buộc nảy là q uan trọng ?
9. Định nghĩa khóa ngoài. Khái niệm này dùng để lảm gì ? Các khóa
ngoài đóng vai trò như thế nào trong phép nối ?
10. Trinh bày c á c b ư ớ c chuyển đổi một m ô hinh ER s a n g m ô hình quan hệ

BÀI TẠ P

C huyển đổi các lược đồ ER của các bài tập ờ C hương II thành
lược đồ cơ sờ dũ' liệu quan hệ.

72
c Í Ỉ I (>N(; ÍV

CÁC PHÉP TOÁN TRÊN MÔ HÌNH QUAN HẸ


VÀ NGÔN NGỮ SQL

4.1. CÁC PHÉP TOÁN TRÊN MÔ HÌNH QUAN HẸ

1 roĩm phàn lla^ chúnu la imhiên cừu các phép toán cua niỏ hiiih
quaii hệ. Các pliep loan cua mỏ hinh quan hẹ có thê phân lliành hai loại :
các plicp loan cập nhặl và các phóp toán dại số quan hệ. Cac phép toán
cập nhật d n ạ c sử dụnu dê lạo ra một qiiaii hệ díiim dăn ; cac phép toán
dại sỏ quan hệ dtrực sư dụiiu dè dặc lá các phép lảy ihôiiu lin ra.

4.1.1. Các phép toán cập nhật

C';ic Ịiiicp loán cập nliật ụôni ha Ị''hép toán cu han lá chèn, xoá \ à
sưa dỏi, Pliép ciìcn duực dìiiig dò chèn mộl bộ Iiiá tiị lioặc nhicu 1>Ộ ụiá
irị \ a o inộl cỊLian hệ. Plicp \ o á (lùnu dố loại bo các bộ uia (rị. l’hép sưa
tlòi dùnự đê sưa dòi các I»iá Irị cùa niột số thuộc tính Ironu cac bộ ‘iíá trị
dã co. Mồi kiii các pliéị) loán cập nhật dược áp clụnii. các rànu buộc trèn
hrực clỏ ca s ơ dù liệu c ó lliê bị vi phạm. 1 roDg phàn này chúr.n ta sẽ nói
dèii kha n à n u vi phạiiì c á c ran<4 b u ộ c c u a lừnt>, phÓỊ’) toán và Cík' kièu
hành clộnu co thè thực ỉiièn khi iiìột ràim huộc bị vi phạm.

I. chèn (I n s e r t)
Phcp cliùn cunu càp một danh sách các íỉiá trị cho một bộ mới I dirợc
chèn \ ào lri)nu inộ! quan liệ R, 1’liép chèn cỏ thê vi phạm các kiêu rảno,
buộc dược mò l;i (y Irên, Các ràim buộc miền có ihc bị \ i phạm nêu một
uiá irị thuộc tính duợc CÌK> khòim thuộc \ à o mièn u nm u irrm. C'ác ràní’
buộc klioá co thè bị vi phạm neii niộl tiiá trị khoá Iroim bộ mới ( dà ton
tại niộl hộ khác ơ troim quan hệ r(R). Sự toàn vẹn thực ihc có thc

73
bị \ i pliạin ncu khoá cìúnli cua hô mói t là null. S\r toàii vẹn lliani chiòii
có thè bị \ i pliạni nòu một uiá trị cua một khoá ntịoài troim t tliani chicii
dòn một bộ khònu tôn tại troim một quan hệ đưọc tham cliicu,
I Víh i: Với các híinu troim c<r S(T dữ liệu CX)N(1^ I Y. hã> :
- Chèn hộ giá trị <null, 'Vcr. 'Hai'. '15/07/81', ’ỉlà Nội', 'Nam'. 3200.
null, 4> vào quaii hộ NHÂN VI1'N. Phép chèn nàv \ i phạm ràim buộc
toàn vẹn ihực tlie (uiá trị null cho khóa cliính). Phép chèn bị loại bo.
- Chèn bộ giá trị <'NV0{)2'. 'Irưưng'. T h ì \ '1 5 /0 7 / 8 r , 'Hà Nội'.
'Nam', 3200. ’NV067', 4> vào quan hệ NHẢN VIỈ-N. 1’hép chèn nà> vi
phạm rànụ buộc khỏa, bơi \'ì uiá trị 'NV002' dã có (V tronu bàng. I^hép
chèn bị loại bó.
- Chèn bộ giá trị <'NV072'. 'ViT, 'Hai'. '15/07/81', 'Hà Nội'. 'Nam'.
3200. 'NV002', 7> vào quan hệ NHẢN VIHN. Phép chèn Iiày vi phạm
ràim buộc loàn vẹn tham chiêu, tronụ quan hệ DƠN VỊ không có đơii vị
có Mã_ so = 7. IMiép chèn hị loại bo.
- Chèn bộ giá trị <'NV045'1. 'Vũ'. ■Hài'. '15/07/81'. 'Hà Nội', 'Nam',
320Ơ, 'NV()02\ 4> \ ào quan liệ NHÀN_VIÊN. Phép chén thoá mãn tấi
cá các ràim buộc, vì the nó được chấp nhạn.
Nèu một phép chèn \ i phạm một hoặc nhieu ràní> buộc, tuỳ chọn
mặc địiili là loại bò phép chtMi. I ronu trườiìíi ÌK.TỊ-) này, thườnu là các hệ
quan trị cơ sờ dừ liệu sẽ tliônu báo cho nmrừi sử dụnu nguvên nhân cùa
việc loại bỏ phép chèn.

2. Phép xoá (l)clctc)


Phép \ o á được sứ dụim dè \ o á niột hoặc nhièii bộ tiiá trị cùa một
quan liẹ. ỉ’liép xoá chi cỏ thc vi phạrn ràn!> hiiộc tham chicvi trong trưcTTie
hợp bộ bị xoá dược tham chiếu bơi một k!ioá ngoài lừ các bộ khác tronu
scr dữ liệu. Đê chì rõ niội phép xoa. cần phái đua ra một điều kiện
Irêii các thuộc tính cua quan hệ đề chọn các bộ sẽ hị xóa.
17 dụ :

- Xóa một bộ íziá trị của quan liệ N H Â N _V inN _D Ự '_Ả N có


Mã SỐ_NV - 'NVOIO' và Mã_sổ_DA = !0.
F’hép xóa nà> được chấp nhậiỉ.

74
Xo.t họ liia tiỊ ciia NI lẢN^VIHN cỏ Mà s ố > ' V = 'NVO!()'. PlicỊi xoa
na\ ỉshòiiỊ: dirợc Lliâp nhan, bai \ ì có các bộ Ironi! NI lẢN Vll N I )I J AN
tỉiam cỉiii'u tỉẽn bộ n á \ . niiit \ ạy lá vi phạii) ràim buộc toàn vcn ih;iin ctiiẽu.

- Xoa l'ộ iiá irị cua NÍỊẢN Vll.-N có Mã^só NV 'NV()02'. Phép
xoa ĩia\ cùnu \ i pli.iiii raiiL; hiiộc toàn vẹii tham cliiôu.

ỉ^a lu> chọn sẵn sanu dưực sư dụim nêu một phóp xoá ụây ra sự vi
phại)i I n\ cliọn liur nhàt là loại bỏ phép xoá. Tuỳ chọn lliử hai la cò
ỉati írusên I^hép Noa (cascadc ihc dcletion) bầnu cácli \i)á dồns4 ihời
cao bộ tiiani cliicii đến bộ bị xoá. 1 uỳ chọn lliứ ba là sưa doi cac uiá trị
cua cac liiuọc tinh tham chiêu uâ\ ra sự vi phạm. Mồi uiá trị như vậ\
hoặc !i! Lim í:!io báiiữ null hoặc dược thay dôi thàiih bộ có liiệu lực tlìam
cliièii khác, c hu \ rănu, nếu nìột thuộc lính iham chieu uà\ ra SỤ' \ i
phạm !a mõi phàn cua khoa chinh thi khônu tliê làm cho thánli nuil. bơi
\ | nèii !àni \ ặ> ĩliì sẽ \i phạiíi rànu buộc toàn \ ẹ n thụv thè. C’ó thê kêt
liọ|-» ca hu tuv chọn ơ trcn.

3, IMiéị) Mta đôi (l pdare)


P1)CỊ> loan sira ílôi dược dùng dè tha\’ doi các uiá trị cua một hoặc
nhiêu thuộc tinh ironu inộl (hoặc nhiều) bộ cùa một quan bộ R nao dày.
Dê lựa chọn cac bộ càn dưực tliay đồi, nmrời su dụiig pluii chi ra inộ!
dicu kiện trôn cac ihuộc tínỉi.
/ / (ìụ :
- Sưa dôi í.irưnp cua bộ NMẢN_Vir,N có Mã_s()_NV - 'N V 0Ỉ8'
ihanh 2800. i’hcp SiHi đòi này đưực châp Iihậii.
- Sir.i dot Mà sỏ DV cua bộ NI [ẢN_VỈÌ;N cỏ Mà_ sỏ _NV ^ 'NV018'
lliatiti " IMicị'' sua dõi n:i\ VI phạm ràtm buộc toàn vẹn tham clìicu.
- Sưa dòi Mã sỏ NV cua hộ Nl lẢN_Vlf:N có Mã_sn_NV • 'NV018'
thành 'NV'()14'. PÌICỊ') sứa dồi nàv \ i phạm ràrm 1)UỘC toàn vẹn thựe Ihê và
loan vẹn lliam chiêu,
\'icc sưa đòi niội ihuộc tính khônụ phai lá niộl khoá chính hoặc mộl
kỉuni lìíKiái tliu ừníì khòiiíĩ g à y ra c á c vi p h ạ m ràni> h u ộ c . 1 lộ cỊuan tiị c ơ
S(Y dữ lịộii chi cần kiêin tra de khảnụ dịnh rằP.u, giá irị mứi lủ thuộc inicn
\ a kicu uiá trị duim dan. Việc sứa dôi uiá trị một khoá chính tirơim tụ

75
Iilur việc \ o á một liộ \ à chèn bộ khác \ ao c h ồ cua nó. Nhir \ ậ v . clniim la
ti(y \ỏ truxViiu hợỊ-i (là lliao luận vứi phcp cliòn \ à phép \()á, Ncu một
thuộc tinh khoá nuoai bị sua dôi thi liẹ quan irị C(V sơ dữ liộu phai dani
ixH) ránu. uiá Irị ni(Vi tham chièu dỏn một bộ có lòn lại Iroim quan liỌ
clirợc tham chièu (lioậc lá null).

4.1.2. Các phép toán đại số quan hệ


Niioài v i ệ c dịnh ntihĩa CÍ.ÌU trúc c a s ơ dừ liệu \ à cá c rànu buộc, inột
mô hình dừ liệu phai chưa một tập hợp phép toan dê thao lac dữ liệu.
Tập ỈH.rp ca sư các pliép toán mò hinh quan hệ tạo nèii đại sô qiiaii hộ,
Cúc phép toán này giúp clio nmrới sử dụnu xác dịnh rõ các yêu câu là\
lin cơ ban. Kết quà cùa một phép lấv lin là inột quan hệ mói, có thô dược
tạo ra từ một hoặc nliièu quan hệ. Các quan hộ dó có thè dược thao tác
liép theo bàiiíi cách sư dụnạ các phép toán ciiii cùng dại so. Một dãv các
phép toán quan liệ lạo nCMi một hièu thức đại số quan hệ mà kỏt qua cùa
nỏ cũna là một quan hộ.
Các phép toán dại số quan hệ dược chia thành hai nhỏm. Một nhóm
bao tĩồni các phép toán tập ỉiợp lấy từ lý lliuyát tạp hợp toán học. Các
phép toán dó là phép hợp, phép íiiao. phép trừ lập hợp và phép ticli
l)ề-các. Nhóm kia bao aom các phép toán dược xâv dựng dặc biệt cho
các cơ sở dữ liệu quan liệ. Các phép toán dỏ là phép chọn, phép chièu,
phép nôi và một sô các phép toán khác.

1. C ác phép toán lý th u y tt tập họp


Nhóm dầu liên cúa các phép toán dại số quan hệ là các phép loán
l o à n h ọ c t h ô n u i h ư ờ i m t r ê n c á c tcập h ợ p . i ) ó l à c á c p h é p t o á n h c r p , giiU)

và trừ tạp hợp. Các phép toán này là các phóp toán hai nuỏi, imhĩa là moi
phep (oán dược áp dụtm LÌK) hai tập hợp. Khi áp dụiii 2; các pliép loán nà>
cho c a sở dữ liệu quan hộ. hai quan hệ ihani gia vào một trong các phép
toán trên phai có kiêu cua các bộ như nhau, hay nói cách khác, chúng
phái có cùng một cẩu tríic. f)icu kiC‘M này dược gọi là tưonịi thích doníỊ
nlìấl. llai quan hệ R (A |, .....A„) \ à S (lỉ|. IÌ 2 .......B„) dược gọi là íưonị^
Ihich clồníĩ nhắt nếu chúnu có cùnti cấp n và dom(Aj) = dom(Bj), với 1 <
i < n. Diều đó có nuhĩa là hai quan hệ có cùim so các thuộc tính và mồi
cặp thuộc tính tương ứng cỏ cùng miền uiá trị.

76
c ac plióp loan (.lirọv (lịnh imliĩa nhu' sau :
a) f*lú’p h ọ p : 1lạp cua li;ii quan hẹ R \ à s. clirực kv liiệu là 1^ yj s.
cho kèt qua là niột (Ịiian hẹ ciiứa tât cà các bộ có Ironụ R. hoậc troníi s.
Iidậc Innm ca li;ii. V(Vi |-)licp toán hạp các bộ IriiiiỊ: lập hị loại ho.
h) Phép ỉỉìdo : (liao cua tuii quan liệ R \ a s. d ư ợ c ký hiệu là R s,
cho kC't qua là inộl quan hẹ chửa tâl các các bộ có tronu ca hai quan íiệ
ỉ< \ à s
c) P h é p trù quan h ệ : Phép trừ quan liệ R \ à s, dược kv lìiệu !à
R - s. cho kct qua là một quan hệ cliứa tât ca các bộ có troim R nhưne
khỏnu có troim s.
17 du Xét hai quan hộ :

R Họ_tên Tuói Gỉơi_tinh Họ_tôn Tuổi Giới^tính

AA 20 Nam BB 18 Nủ

BB 18 Nũ' EE 20 Nam

cc 21 Mam DD 25 Nữ

DD 25 Nữ FF 21 Nam

Khi dó :

RuS Họ_tên Tuổi Giới__ỉinh RoS Họ_tên Tuổi Giởi_tinh

AA 20 Nam BB 18 Nữ

BB 18 Nữ DD 25 Nừ

cc 21 Nam

DD 25 Nũ' R -S Tuối Giới_fịnh

EE 20 Nam AA 20 Nam

FF 21 Nam cc 21 Nam

C'ac lính chấl cua các phép loán tập hợp :


- Plióp toán l i ợ p \ a g i a o là các phép toán íỉiao hoán, nehĩa là :
1< u s - s R \ a R r, s s R
- Các phép loàn trên cũnu cỏ lính chât kct liạp, nuliĩa !à :
u (S w 'ỉ') = (R 'U S) w 1' và R o (S .o T) = (R o S) n T

77
ỉ^1k'P loán irữ tập lìợp khỏim cỏ ííĩili clìât uiao lu>aii, UÌL' ỉa :

(l) T í c h D ẻ - c á c c i i a h a i í Ị u a t ĩ l ì ệ : 1 ích í ) ê - c á c v ò n eoi ià ỉ í c h ÌÌOỈỈ


ìỉ ợ p ( c n t s . s p r o d u c l ) , h ( n ) c l a n ô i Ììôỉì h ợ p ( c r o s s ị o i n ) . diTíYc k \ l ỉ i ộ u l à ■
1'iclì t ) e - c a c la lììộ l p h é p íc>án hai n e ỏ i . lìhiriiíi n h ữ íi ii lỊuan liộ !ììà n ó a[^
d ụ n u trcii d o k h o i m c à n plìai là íuxrnu l l ìí c h clòiiu ỉìỉuìt. IMiCị') í o a n n á \
ílirợc sir dụi iíi d è n ỏ i c á c h ộ c ù a hai q u a n h ệ \ à o m ộ l k i ê u k ẽ l hưp.

Kỏt L|ua c u a R (A ị. A i __ A„) X S(1ÌỊ. ...... Hị y) là ni ộl t|iuui hẹ { }

víVi n - ni llì uộc l ính Q ( A | . A 2..... Atì- ỈÌị, lỉịìi)- Ọ u a n h ệ kcl iịUii Q
cỏ các bộ dirực tạo thantì do sự kcl hợp niột hộ cua I< \ a inoí hộ cua s.
Ví du, xót liai qiiaỉì hộ R \ à s nhu' sau ;

R i A1 A2 A3 Bí 82 B3
------- 4........ — -

I aa bb cc dd da \ db

Ì ab ba oc cd ! cb ac

T í c h l ) e * c á c c ủ a c ỉ n ì n u là tịiian h ệ :

R Xs A1 A2 A3 B1 B2 B3

aa bb cc dd da db

aa bb cc cđ cb ac
.^ . 4 —

ab ba ac dd da db

ab ba ac cd cb ac

Nhir \ậ y . neu R có nu bộ và s cỏ Hs bộ thì Rx s có nị<ỉìs In). PiìCỊ-


toán nà\ nèii áp dụiiu mộí minh thi kliônu có ỷ imỉììa m à y . No chì có lại
khi liep theo baim inột phép cliọn các uiá trị lưoiiíi thíclì cua các Ihuộc
tính \iiat plìát từ các quan hệ thành phân. 1 ích [)c-các kèt hợp vái niộl
phép chọn cho ta lìiộl phép noi.
2. C ác p h é p toán írc n CO' sỏ’ d ữ liệu q u a n hệ
a) Phép chọn (Select)
Phép chọn dirợc sử dụnu de chọn một tập hợp các bộ ĩỉioa ?ìiàn cỉicu
k iộ n c h ọ n t ừ n ìộ t qiiaiì h ẹ . '1'a c ỏ thỏ x c m ph c[) c h ọ n niìii n iộ t h ộ i o c . n o
chi uiù lại các bộ thoa măn diều kiẹn dặt ra.

78
i'hóp chọn dirợc Ký liiẹii là : a. chọn>(•<)
trone đó ký hiệu ơ dirợc diìnụ dC- kv hiệu pliép chọn, còti •' diều kiện ch ọ n >
là niòt biêu tiiức lôiúc dược chi ra trên các thuộc lính của R. Chú ý cànu.
R nói cliunu là niộl hiêii llnrc (iại sn quan hê. Kcl qua CIÌÍI inột biêu ihúx'
dại sò quan hệ là một lỊuan hộ. Biêu thức don uian nhất cliính l:i tên cua
m ộ t quaii hộ ciia một C(T s ơ d ừ iiệu. Q u a n iiệ ket qua cu a Ịìhép c h ọ n c ó
ciiniỉ tliuộc tinh nlur R. Vi dụ. dè chọn các bộ NI ỈẢN_ Víl-.N tliuộc về
dơn \ ị có mã sô là 4, lìoặc các bộ NI lẢN VIl-N cỏ lưiynụ kVn han 3000
ta cỏ tlỊẻ \ icl một cacli riênẹ rò như sau :

a-v,à s õ .. ị.(NIIẢN_VlHN)

^<l.irơriL> > 3000 ( N I Ỉ A N _ V 1Ỉ-’N )

iiiôu thức lỏuic chi ra trone <diêu kiện chọn> được tạo nên từ niột
so hạnu mục cỏ dạnu ;
<tòn ihiiộc tíii!i> <Ị)hop so sánh> <í>iá irị hăim>
lidặc •' lèn ihuội: tiiih> <|'ihcỊ'' so sánli <tca tluiộc lính '
tronu dó ' tên thuộc t í i i l i l à tên cua một thuộc tinỉi trone R. <pliép so sanh>
lá mộl trong các phép loan so sành {<. <=, >"=. >. ^ ỉ, còn <uiá irị hăng>
la một aiá irị hăne lir niicn uia Irị cua thuộc tinli. ( ác hạim mục ccS thế
dược nối với nhau băny các phép loán lôuic AND. OR. N Í)!' dê tạo ra
một điều kiện chọn chiinu. Vi dụ. dê chọn ra các nhân vièn lam \ iệc ư
dơn vị co inã sò ià 4 và có lưonu ỉớn liơn 3000, hoặc các nhàiì \ iên làm
\ iệc ó don \ ị cỏ mã sò la 5 \ a cỏ luínm lứn hơn 40()() ta có the \ iếl pliép
chọn như sau :

^•iMri SC) l)V--^> A N i)< l ir0Tig>,'(K)().-()K <Ma sỒ J)V-- 5>AND l.ưimg>?500 ' ( N ỉ Ỉ A N _ V I ! ' N )

Kèt qua chí ra ở banc 4.1.

Bảng 4.1. Kết quà phép chọn


"
M à^số N V Hợ đém ĩé n Ngãy^Sình Đ ia_chi G/ổí tinh U ỉo n g M ã_số_N G S Mỗ_^SỐ_ĐV

NV002 Trần Đ ử c Nam 14/02/66 Hà Nội Nam 4000 NV061 5


'
NV014 Phạm Bánq 26/06/52 Bắc Ntnh Nam 4300 NV061 4

NV016 Nguỵẻn Sơn 14/08/73 Hà Nam Nam 3800 NV002 5

79
( ‘hu \ r ã n ẹ . L\’u ; p h c p t oá n S(ì sáỉih í i o n u l ập hơỊ') I' . .
á p t i ụ i m c h o c á c l l n i ọ c tíiih c ó m i c n ụ i á trị là c a c u i á írị c o ilìu ĩir íìiiu la

n ì i c n ỉiiá li‘ị sỏ. M i è i ì i:>ịa trị c á c cià\ IvV ụ r d ư ạ c x e n i nl ìu c o íiìir Ur d\ i a


irc n \ iẹc s o sánli c á c (iàv k v lự. N ỏ u m i ò n e i a irị c u a n i ộ í t h u ộ c t i n h la

IIÌỘÍ l ập hơp c a c a i á trị k l ì ỏ i m c ó t h ứ tự‘ tiii clìi c o CÚL |>lìcp s o s á n l i U o i m


\{}Ọ họ'p ; . y Ị là c ó í h è á p d ụ i m (lirạc. N u o à i ra, c ỏ íỉìè c o n c a c ịìlicp
raiih ho siiím. chĩinL^ hạn lìhư "là niộí da\ con cua . hoặc "iroíìu kh()iiĩiíj
Í U ' ... đ ô n

K c l q u a i n ộ l p l i ê p c h ọ n c h r ợ c x á c (lỊiìiì l ì h i r s a u : đ iè u kiộn chọii


d ư ọ v á p c l ụ n u clìt^ Ịì i oi h ộ í t r o n ụ R m ộ t c a c ỉ i d ộ c ! ạ p . ! ) i c i i đ ó d i r ự c ll ìirc

hiện bãne cách íhav thc ĩnoi thuộc tinh Aị lione <clieu kiện chọn ' hăn_u
t i iá írị l Ị A ị ị c u a ÍIÓ i r o n ụ b ộ . N c i ỉ < đ i c u k i ộ n c i ì ọ n ■ c h o v}:\ t!Ì d ú i m tlii

bộ í sẽ duợc cliọn. ! ál ca các bộ dirợc chọn xuàl Ịìiẹn li'onu kCi C|ua cua
pliép chọn. C'ac phép tíKin lôíiic A N D . ()R, N o r dirạc ỉlurc ỉìiện ihco
cỊuy líic biiih llìiràỉm cùa chủnu.
Phcp chọn là phép toán niột níiCn. nehĩa ỉà nó duạc ap tlụnu clìo niộí
lỊuaíì hộ. ỉ Itrn nừa, phép chọn dược áp dụrm c!ìO từnu (x) ĨÌIỘỈ cách dộc
lạp. Vi \ ậ\\ các diêu kiện chọn khỏnu lliê lien quan (ỈCII nhicu bộ. (,)uatỉ
hộ kct cịUíi cua phép chọiì có cãp iiiỏnLĩ như câp ctui R. s ỏ các hộ iroiiư
quan hộ kòl qua luỏi) luỏn nho liaĩi hoạc băng sỏ các bộ iroiiu R.
Phép chọn là một phép toán có lính ciìât íịiao ỉìoaii. iiLihìa là :

D iõu kiỘ!) ỉ ( ^ - D icu kiộiì 2 --(1 ^ )) ™ ỉ ìic u kiệii 2 D iồu k iý n ! ( I ^ ) )

( I t r n ì i ừ a l a c ỏ í h e k ê t h ạ p m ộ l l o ạ i c a c p h c p CỈÌỌĨI í h a n l ì n i ộ l p h e p
chọn ỏan uiaiì bầnu cách sử dunu phép loan AND. Ví cỉụ :

^Dicukiộnl I )icu kiộn 2 ( ỉ)icii kiộn 2 ' A N Í ) O iou kiộti I ( )

h) Phép ch iều (Proịecí)


Ncu ta coi một quan lìộ nỉur inộl hánu ihi phcị') chọii th ọ n inộí so
liànu eùa banu Ihoà inàn đicu kiẹn chọn \ à bỏ qua các hìmii khỏnụ thoa
màn dicii kiệiì chọĩi. I^liép cliicu là phép toán chọn inộl sô cột cua híiiit’.
Nou clìúnu ta chi quan lâiìì dòn một số lỉiuộe línlì cua Lịuaiì liệ, chuim ía
(lùim piicp chicu dc cliiẻu Icn các thuộc tính dó. IMicp cliicu cìuợc kv
ỉìiộii ià :

^■ -íỉanh s á c h c á c Ih u ộ c íinh

80
ưonìi cló 71 là k \ hiộu ílu n y (ỉè bicu dicn phép ch iề u , <danh sách các
ílìuọc tinh - là IMỘI tianlì sách con ciic thuộc lính cúa quan hẹ R. Nói
clìuiiy K là ĩnội biêu íhưc dại sỏ quan hộ. truờim hợp dơn gian nhất nó là
ícn c u a một quan liẹ c u a C(V S(V clữ liộu. Kct q u a c ủ a phép c h i ế u là một
ỊUcHi hộ clìi co các thuộc luilì nãni lĩí)ĩm <tlanh sách các thuộc tinh> và
co cuniz t!ur tụ- nlni ihú tụ- civả clìúnu ctì irone danh sách. Như vậy, cấp cua
quan lìộ kẻt qua là sỏ cao thuộc tiĩìlì co ivonn <(jaiili sách các thuộc tinh>.
Nêu - danlì sach các thuộc tínli> chi bao izồni các Ihuộc tính không
Ịiliai ihuộc lính klìoá cua R llii quan lìọ ket qua có thô có nliữnu bộ trùng
Iilìíui. ỉ ^ h é p c l i i c u i o ạ i h o m ọ i b ộ i r ù n e ì ặ p . \ a n h ư v ậ y , k ế t q u a c ủ a p h é p
chicu là niộl tạp hạp các bộ \ a !à một quai) hệ dúnụ đan.
ỉ / Ju Phcp chicu ;

^\1à sô w . ỉỉv' ỉ ôn. ỉ - i r ưni í í ^ f )

cho ket qua !à một qiiaiì hộ có các lluiộc tínỉì Ma_số_NV. Họ_đệm, rên,
1 larnu (bãiìii 4.2).

Báng 4.2. Kết quả phép chiếu

Mã_sổ_NV Họ_độm Tên Lưưng

NV001 Lồ Vân 3000

NV002 Trằn Đức Nam 4000

NV010 Hoảng Thanh 2500

NV014 Phạm Bàng 4300

NV016 Nquyền Sơn 3800

NV018 Vũ Hương Giang 2500

NV025 Trằn Lẻ I Hoa 2500

NV061 Hoàng I Giáp 5500

Số các bộ ironu tỊuan hẹ két qua từ mộl phép chiếu luôn luôn nhò
l uT ĩ i lioậc bằng số các hộ Iroĩiu R. Nốu danh sách chiếu là một siêu khoá
CIKI R (nehĩa là nó chừa một khoá ỉìào (ló cũa R) thì quan hệ kết quá cỏ
cìinu một so bộ Iiliư R. Neoài ra, plìóp chiếu có lính chất sau :
^*' ị)anh sách l > í ^ ' ỉ>aníi sách 2 > ( f ^ ) ) ~ ^ < í^ an h sách

Phép clìicu khônu có tính ^iao hoán.

81
c) P h ép dặt /ựi tên (R ena nte)
d i ú n u la co thè áp dụnư nhiồu phép toán quan hệ liên liép nhau,
i roiiii irưànư hợp ti(\ iioặc chúim ta có thế viết các phép t(nín như lá một
bicu tliức tlại so qunii hộ bánỵ cácli xếp lontĩ các phép toán lại với
nliau. hoặc chúnu la có thê ap dụrm mỗi phép toán lại một thời diểni và
lịu> ra các qiian iiộ kèt qua truna gian. '] ronu trircTim hạp lạo các quan hệ
irune gian, caii phai dặt tòn cho quan hệ dó.
/ 7 dụ : Oc diia ra ỉ lọ lèn và Lưưniỉ của các N H Ả N_ViHN làm \ ’iệc
ơ dơn vị có Mã_sô là 4. cỉiúnự ta phài áp dụng một phép chọn và một
phép chiêu, ("ó thê viết một hiêii thức đại số quan hệ đơn như sau ;

Họ iCmi. I ư ơ n u > ( ^ ' M 5 số - . ) > ( N I Ỉ A N _ V I b N ) )

MỘI cach khác, có the tạo ra kel qua triinu íiian và viêl biêu thức trên
lìiànỉi dãv các pliép toán nhu sau :
KỌTÍÌ < - a. Mã ,ó = 4 >(NI 1 ẢN_VĩÊ N)

K.CI CỊlia < - 71. [|j, |^ư,rng->( K Q T G )

! hỏtm ihirờim \ iệc phàn tích một dãy phức tạp các phép toán banu
cách c!ii ra cac (Ịiian hệ kết quá trung gian dễ hơn việc viết một biêu thức
dại sô quan hệ dơn. Chiìnư la cỏ thê dùng kỳ thuật này đè dặl lại tên cho
các íhuộc tinỉi tronụ các cỊuan liệ trung ụian và kết quả. De đặt lại ĩèn cho
cấìc thuộc tính CIU) mộl quan hệ. chiìnu ta liệt kè các lên mới tua các
thuộc lính tronụ cĩip íỉủu nuoặc.
Vi Jụ R( 1lọ \ a J ò n , 1-ircmg) <- 7r.:| lọ tên. i.ương>(KQTG)
cho kếỉ qua là quan hệ R, trong đó ihuộc tính Họ_tên được đặt lại tên
thànỉi lỉọ va lên.
Nêu kliỏnu cỏ \ iệc dật lại tên thì lên của các thuộc lính trona quaii
hệ kè! qua cua một phép chọn là íiiont> như các tên tronsỉ quan hệ ban
dầu \ à có cùim niộl t!iứ tự như thử tự của các thuộc tính đó. Đối với
phép cliiốu. nếu khôni: có việc dặt lại tên thì quan hệ kết quà có :ác tên
thuộc tính giốim nhu các tôn troriíí danh sách chiếu và có cùng thứ tự
như chúní’ xuất hiện tronu danh sách.
Cluìiìu ta có tliế dịnh niiliĩa một phép toán đặt lại tên, nó có ihể đặt
lại tcii cho niò[ tèn quan hệ, ỉioặc các tên thuộc tính, hoặc cả ha:. Pliép
đặt lại tên dược kv liiệu là :

82
P,S(B|,R,.., !H)ặc (X(R). hoặc

irone dó : p là ky hiệu pliép toán dặt lại tC'n ; s là tcn quan hệ inứi ;
H|, ỈÌT- l^n l‘i tỉniộc tính mới.

Biêu Ihức Ihử nhất tỉặt iại lên quan liộ và các thuộc tính cua nỏ. Nếu
các thuộc tinh cua II !a A ị , A|, tlii sai! khi dặt lại tC*n, quan hộ có
len mái la s . còn các thuộc tÍ!ih có lên mỏi là [i|, B t...., B„. ĩìiếu thức
ihử hai clii đặt lại lên qiuin hệ. nưhĩa !á sau phép đặt lại lên. quan hệ có
tên niái la s. còn các ihuộc únh \ ẫ n manụ tcn cũ. Biêu thức thứ ba chỉ
dặt lại tèn các ihuộc tínlì, nòu các thuộc tính cùa R là A |, A-).... A„ thi
Siiu khi dặt lại tcMi chúna có tên là B|. Bn-
d) P h ép n o i (Join)
l’hóp nối được ký hiệu l á t x i và dược dủnc de kết ỈKTp các bộ có liên
hẹ \ ứi nhau lừ liai quan hệ thànti một bộ. Phép toán này rât quan trọnti
dối vứi cơ sớ dữ liệu quan hệ có nhiêu baim. hời vì nó cho phép xìr lý
các môi lièn kcl giữa các quan hệ. Dạnu lôntỉ quát cùa phép nổi trên hai
quan hệ R{Ai, A„) \ à S (íí|, R 2 .. .. ỉ^m) là :
R [X s
•■-dicu kiện nòi'-

Ket quá của phép nối !à một quan hệ Ọ (A |, A 2 .....A, 1, B]. FỈ2 .......B,n)
có n + ITI Ihuộc tính. Mỗi bộ của Q là một sự kêt nối giữa một bộ của R
\ à mội bộ cúa s khi chúnạ ihoa màn <điều kiện nối>. Sự khác nhau giữa
tÌLh l)e-các và pliép noi là : ironti phép nôi clii cỏ các bộ thoà mãn điều
kiện nối mới xuất hiện trong kết qua, Ironu khi đó trơng tích Đc-các mọi
ìò liựp ciia các bộ dồu có tronạ kết quá. Diều kiện nối dược chi ra trên
cac thuộc tính của liai quan hệ vá s và dược tính toán cho mồi tổ h(7 p
các bộ. Mọi lố hợp bộ mà ' điều kiện noi> là dúng được chứa trong quan
iiệ kết quá Q như là một bộ đơn. Một <điều kiện nối> tổng quát có dạng ;
<diều kiộn> A N D <điều kiện> AND ... A N D <điều kiện>

tronu dỏ : mỗi điều kiện có dạnu A, 0 Iij. ờ dày Aj là một thuộc tính cùa R,
iV| là một thuộc tính của s. A| vả B| có cùnu miền giá trị và 0 là một
irong các dấu phép loán so sánh [<, <=, >=, >. ^ } . Một phép toán nối

83
\ iyi dicu kiện lòim quát như vậy uọi là tuột phép nổi íê-tci. Các bộ cỏ các
ihuộc tính nòi là null khỏim xual hiện trong kết quả. Theo nghĩa đó.
[ihép toan khônu nhất ihiet phải xử lý mọi thông tin trong các quan hệ
tham tiia.
l ’i dụ : (iia sư ta có hai quan hệ R và s như saii :

R ^2 >^3
s 82 B3

Aa Ca Ba Ba Aaa Bbb

Ab Cb Bb Bb Ccc Ddd

Ac Ca Ba

Ad Cc Null

Ae Cd Bb

Khi dó kết quà cứa phép nối tè-ta R và s với điều kiện A 3 = Í^I sẽ
cho kèt qua là ;

R t x s Ả2 Bi B2 B3
^3
<A3 = Bi>
--------------1
Aa Ca Ba Ba Aaa Bbb

Ab Cb Bb Bb Ccc Ddd

Ac Ca Ba Ba Aaa Bbb

Ae Cd Bb Bb Ccc Ddd

Phần lớn các phép nối chi cho phép các điều kiện nối với các so
sánh bàna. Nhữim phép nối chi sử dụng phép so sánh bàng được gọi là
nổi hănịỉ (eqm join). Ví (ÌỊI trên là một phép nối bằng. Chú ý rằng, trong
kct qiia cua phép nối bẳng chủní 2, ta thấy luôn luôn có m ột hoặc nhiều
cặp thuộc tinh có các uiá trị như nhau trong mồi bộ. Việc có các cặp
thuộc tính có eiá trị như nhau là thừa, vì vậy người ta đề nghị một phép
nối mởị uọi là nồi tự nhiên, ký hiệu là *. Phép nổi tự nhiên nhàm loại bo
thuộc lính thử hai (thuộc tính thừa) trong điều kiện nối bàng. Định nghĩa
chuân cua nối tự nhiên đòi hỏi hai thuộc tính nối (hoặc mồi cập thuộc
tính nối) phải có tên như nhau trong cả hai quan hệ. Nếu các thuộc tính
đó khôim cùng tên thì trước khi nối phải áp dụng phép toán đặt lại tên.

84
Vi dụ, ta cần nối tự nhiên hai quan hệ R(Ai. At. A;<) và S(B|, ỊỊ-1 , lỊ,)
như trong ví dụ trên. Đê có thề thực hiện dược phép noi tự nhièii vái
diều kiện so sánli bằng, ta phải đổi tên thuộc tinh lĩ| thành nuhĩa là
phái viết ;

Phép nối sẽ có kết qua như sau :


........... .. .... Ị..... .............
R *s Ai A2 A3 Ị B2 S3

Aa Ca Ba Aaa Bbb

Ab Cb Bb Ccc Ddd

Ac Ca Ba Aaa Bbb

Ae Cd Bb Ccc Ddd

Nếu các thuộc tính mà trên đó nối tự nhiên được chi ra cỏ tèn như
nhau thì việc đặt lại tên là không cần thiết.
Chủ ý rằng, nếu không có một tổ hợp các bộ nào ihoá mãn diều kiện
nối thi kết quả của một phép nối là một quan hệ rỗng không chứa bộ
nào. Nói chung, nếu R có IIR bộ và s có Iis bộ thi kết qua cua ohép nôi R
với s sẽ có số các bộ lớn hơn 0 và nhỏ hơn nKiis. Cỡ của mộl kết quá nôi
chia cho cỡ cực đại PrHs tạo nên một ty lệ gọi là chọn lựu noi, do là một
tính chất của mỗi điều kiện nối. Neu không có điều kiện nối, mọi tô hcyp
các bộ sẽ được chọn và phép nổi trờ thành một tích Đe-các.
Phép nối được sử dụng dể kết hợp các ciữ liệu từ nhiều quan hệ, sao
cho các thông tin có liên hệ với nhau có thể được bicu diỗỊi trong một
bàng. Dôi khi phép nối dược áp dụng nối một bảng với chính nó. Chúng
ta có thể áp dụng phép nối tự nhiên và nối bằng đề nối nhiều bảng với
nhau.. Nếu nối n bàng với nhau thì phải chỉ ra n - 1 diều kiện nối.
e) Tập h ợ p đầy đ ủ các p h é p to án q u a n h ệ
Ngưòri ta đã chỉ ràng, tập họp các phép toán đại số quaii hệ {a, TT. X}
là một tập đầy đủ, nghĩa là mọi phép toán đại số quan hệ khác có thổ
được biểu diễn thông qua các phép toán của tập hợp này. Ví dụ. phép

85
giao cỏ ihê dưực bièu diễn bãim cách SU' dụng các phÓỊ-) hợp và trir tậ|>
hợp nliir sau :
R n s = (R o S) - ((R - S) O' (S - R)) {*)

Như \ ’ậy, IKÌÌ một cách cliínli xác là khôiiL’ cầỉi phái có phép uiao.
Mồi khi cần thực hiện một phép íiiao. lít clii cần đưa ra bicii thức- phiìc
tạp (*) là dủ.
Một ví dụ khác, một phóp noi cỏ thê được chi ra nlnr niột tÌLÌi j)c-
các và sau dó là một pliép cliọn ■

s — - dièii kiộn cluỉn ( ^


< dicii kiộn nòl '■

Một cách tưcmiị tự, ta cỏ ihc lha> thể phép noi tự nhiên bầnụ niội
tich Dê-các di sau mộl phép dặl lại tC‘ii và sau dó là các phép loáii chọn
và chièu. Như vậv, các phép toán noi cĩinu khỏnu cần lliiỏt. rii> nhièn,
các phép toán dó ral quan trọng, bơi vì chúng tiện dùnu và rất thirờnk
xuyên được áp dụng troim các cơ sở dữ liệu. Các pliép toán dó dược đưa
vào tronu dại số quan hệ ỉả do tiện dụnu hơii là do cần thiết. MỘI pliép
toán khác cũng được dưa vào. dó là phép chia.
f ) P h ép ch ia

Phép chia có lợi cho inột loại tru\ vần dặc hiệt, dùi khi có các ữnu
dụng trong cơ sở dừ liệu. Phép chia được áp dụim clio hai quan hệ R(7)
và S(X) và được ký liiệu là R(Z) -í- S(X), tronu dỏ X c z . Ciià sử Y = z - X
(như vậy z = X u Y). Kết quá cua phép chia !à quan hệ r(Y) cliửa rnột
bộ t nếu các bộ ti< xuất hiện tronụ R vói tnỊYỊ t và với 1 |<ỊX] - ts clối
với mọi bộ Is tronti s . Diều dỏ c ó Iií^hĩa lá. dê một hộ l xuấl hiện Iroim

kêt quà r của phép chia, các giá trị trong l pỉiai xuat hiện trong R trorm
sự kết nối với mọi bộ của s.
Ví dụ : Xét phép chia quan hệ R(A, B) cho quan hệ S(A) nhir báne
3.3 dưới đày. Ta thấy chi có các thuộc tính B| và B 4 là két noi với lấl Cíi
các bộ của s ở tronií R. Vì vậy, két quả nhận được là niột quan hệ 1(íì)
v ớ i hai g i á trị c ủ a là B | v à IÌ4.

86
B àng 4,3. Phép c h ia T(B) = R(A, B) : S(B)

R B s u
A, Bi
------------ỉ

A2 B, Ao

A3 Bi A3
A4 Bi

A, B2
A3 B2
A2 B3 T

A3 B3 .
A4 B3
A, B4
A2 B4
A3 B4

3. C á c p h é p toán q u a n hệ bỗ sung
C'ó nhiềii truy van cơ sở dữ liệu khônu thê thực 'hiện dược băno, các
phép toán đại số cơ bán irình bày ở trên. ĩroim pỉiần nà>, chung ta sẽ
irình bày các phép toán bổ sung đỏ biéu diễn các truy vàn dỏ Các phép
toán này làm tăng ciàriìíỉ sức mạnh của đại số quan liộ.
aj C ác h à m n h ỏ m và các p h é p n h ó m
Kiêu càu hỏi đầu tiên khônu thê biêu diễn dược troiiu dịii số quan
h ệ c ơ s ớ là c h i ra c á c h à m n h ó m t o á n h ọ c irèn c á c tậ p ht/p í>iá trị c u a c á c
co sơ dữ liệii. Các ví dụ về các hàm như vậy cỏ thê ià dua ra lương irung
binh hoặc tông lương cúa tất cà nhân viôn, hoặc cho hicl so các bộ ciia
bang NI!AN_VI1:N. Các hàm hay áp dụnn dc Um thập các uiá Irị so là
hàm ; tổni> (SUM), trunu bình (AVr.RACìỉ’), íinh tịiá trị lòn nhất
(MAX). uiá trị bé nhất (MIN), hàm dếm (COUN I ) dược sư dụniỊ dế đốm
các bộ giá trị.
M ộ t k i è u c à u h ỏ i h a y d ù n g k h á c là đ ò i h o i Iil ióm c á c b ộ t r o n u m ộ t
quaii hộ theo một giá trị cúa mộl số các thuộc tính cua chúna, và sau dó
áp dụnu các hàm nhóm một cách dộc lập cho ù rns nhỏiri, Ví dụ. nhóm
các bộ cùa quan hệ N IiÀ N _ V IF N iheo Mã số i)V. Như vậy, mỗi nhỏm
bao gồm các nhân vicn cùng làm việc trong một dơii vị. Sau dó chúng ta

87
có íhc dưa ra inồi uiá trị cua Mà_so Ỉ)V cúnu \ớ i luíYnu ưun\i hình cua
các nhản vicn õ troiìt* dơn \ ị.
Clìúnti ta có ihê dịnli nuhĩa một phep toáíì nhoni như sau :

<các tllllộc tinh nllóm - 3.. danh sudi các hủiii nhỏm (•<)
trong dó : 3 là ký hiệu phóp loán liủiii nhỏm. <các lliuộc lính nhỏiii> la
một danh sách các thuộc tính cua quan hẹ dưọv chi ra tiDiiu R.
<danh sách các hàm nlióni> là cianii sách cac cặp (<luun ■(<tliuộc tíiih>)).
Trong các cặp như vậy. <h;im • là niộl troim các liàni clio phóp Iiliư
SUM, AVI'RAC} í :. MAX, m i n . c o i INT. va thuộc tinh> lá một lluiọc
tính của quan hệ dirọc clii ra tronu R.
Quan hệ kết qua cỏ các tlniộc linh nhỏm cộnu \(Vi niột thuộc tín!i
cho mỗi phần từ tronu danh sách hàm. Ví dii. dỏ lay ra theo Mã_sô I)V
sô nmrời trong từnu don \'ị \ à lươnii trunu binh cua các nhân viên theo
từng dơn vị, ta viol :

^^â_số_ĐV 3 ( 0 1 AV(:RA(}i:íi,ư(rng)(ỉ^'ỉ i À N _ V i n N )

Kết quá được minh hoạ ư baim-4.4.

Bàng 4.4. Minh hoạ phép toán nhóm

Mã_số_ĐV COUNTn AVERAGE(Luưng)


-4 -
1 5500
3 3100
4 3325

Nếu không chi ra thuộc tính nhóm ihì các hàin được áp dụng cho eác
giá trị thuộc tính của tấl cá các hộ tronu CỊuan hệ Vì vậv, quan hộ kẽl quá
chi có một bộ. Cần chú ý rầne, nói chuiiu các ưùui\ lặp Miỏim dược loại
bò khi hàm nhóm dược áp dụnu. Kcl quá của việc áp dụnu một hàm
nhóm là một quan hộ chứ khỏnu phai là mộĩ dại lirợim vô hirởnu, thạni
chí nếu nó chi có một uiá Irị.. ^

h) C ác p h é p toá n k h é p kín đệ lỊiiy


Một kiểu phép toán khác, nói chunu kliỗng clii ra dược tronu các
phép toán đại số quan hệ cơ sơ là phép toan khép kín clệ quy. Phép toán
này được áp dụng cho mối liên kết đệ quy giữa các bộ cùnti kièu. V\Vi
các phép toán này, cần phải sư dụiií’ kỹ thuật lặp.

88
c) ('ác p h ẽp toán n ố i lìỊỊOùỉ (outer jo in ) hợp ngo à i (outer union)
I rong phần nàv c h ú n u ta lliao luận một vài IĨ1Ớ rộim cúa phép toán
Iiỏi \ a liợp. ( 'ủc phép loán nòi mỏ tà ừ trên liên kêt các bộ tlioà màn diêu
kiện nôi. Như \ ậ \ . các bộ kliông cỏ bộ liên kết sẽ bị loại khỏi kếl qua
nối. c ác hộ \ á i lỉiá trị nuii Ironu các tliiiộc tính noi cĩiiiiỉ bị loại. MỘI lập
họp các |)hcịi toán uoi là nổi níỉoài có thè dược sử dụnu khi chinm la
imiôn aiù các bộ Irona R. hoặc s. hoặc Irontỉ cá hai quan hộ Ironiỉ kết
quíi cua phép nối dù chúnu có nhừnu bộ liên kết trong quan hệ kia hay
khônu. C’ó ba Ị ih é p nôi nuoài iiọi là noi níỊoài trái (lcft outer ịoin). nôi
nịioài phuì (riuhl oulcr ịoin) và noi nịioài đay Jù (full outer join). được
ký hiệu tiraim ứnu là :

Nối ngoái trái Nối ngoài phải Nối ngoài đầy đủ

ỈMióp Iiòi ngoài trái giữ lại mọi bộ trong quan hệ hên trái R trong
pliép nối. Nôu kliòng có bộ liên kếl nào được tim thấy trong s thi các
thuộc tínli cua s tronu kết qua phép nối được "làm dầy" bằnu các i>iá trị null.
1 ưmm lụ' như vạv. đối với các phép nối ngoài phài và các phép nôi
níỊoài đây dii.
Phei') loán liạp iiii,oài đưực mờ rộng đé lấy hợp cua các bộ từ các
quan hệ néu các bộ khônu tưmig thích đồng nhất. Phép toán này chi ỉấy
hợp ciia cac quan hộ mà chúim chi tưcmíỉ thích bộ phận, nghĩa là chí một
\ ái thuộc tính cua chúiig là tươntí thích phép lụyp. Diều phai tòn trọng là
danh sách các tluiộc tính lương thích phái chứa một khoá cho cá hai
tliian hệ. Các bộ từ các quan hệ thành phần với cùng một khoá chi được
biêu diễn riiột lần troim kếl quà và có giá trị cho tất cá các thuộc tính
tronụ kct cỊuã. C’ái: thuộc tinh không tương thícli phép hợp từ bất kỳ quan
liệ nào cũne dược uiừ troiiíỉ kết quả và các bộ không có giá trị cho các
(liuộc lính này cũne được lấp đầy bằng nhừrm giá trị null.

4.1.3. Một số ví dụ về truy vấn trong đại số quan hệ

'I roiìg phần tiày, chúng ta xét một số ví dụ minh hoạ việc sử dụng
các phép loàn đại số quan hệ. Các ví dii ở dày thực hiện trên cơ sở dừ
liệu CX")N(}_rY ớ mục 3.2.3. Nói chung, một truy vấn có thể dược thực
hiện bàng nhiều cách và sứ dụng các phép toán khác nhau. Trong các ví

89
dụ sau (truy vấn), chúng ta xét tnộl cách thực hiện, các bạn dọc có thê tụ
dưa ra các cách ihực hiện khac.
• 1'niy vắn I : í)ira ra llọ_đệm , Tèn và Địa chi cùa tal cá các nhniì
v iên làm v i ệ c c h o d(Yii vị c ó tèn là 'N u h ièn c ứ u ’ ( c á c quan hộ rCì l . Ỉ ( i 2
là các kot quá trunu ụian) :
1 C l 1 <— (7 I ỹi, o y .= 'M giiiẽii )

'l'G2 ^ ( r c i * N ỈIẢ N _ V ÍẺ N )

*■ lọ độin, [ On. Dịa )

rheo cách ihực hiện Iiày. quan hệ T ( ì l chứa lliôim tin vê dơii vị co
tên là 'Nụhièn cứu', quan liệ 1 0 2 chửa thông tin về các nhân VÌCMI làm
việc cho đ an vị 'Nuhièn cứu', quan hệ K fìT _ Ọ lJA chửa các tliônụ tin
theo > êu cầu cua truN' vấn. ĩ r o n g các báim của chíina la, các thuộc tiiiỉi
nối cỏ tên như nhau nên cỏ thê dùnií phép noi lự nhiên.
I'a cỏ thê viết truy \ ấn 1 dưới dạim :

^1 lọ dộni, rỏii. D ịa chi(*^TC‘n i ) V ' N g l i i ẽ n * N ỉ Ỉ A N _ V i I : N ))

• Truy vấn 2 : Với mỗi dự án đặt tại Hà Nội, hãy liệl kê lV!ã_so_DA.
Tèn ĐV, rèn, Địa chi, Ngày_sinh cua niỉười quan lý đan vị.
^ *^l)Ịa iIiCmii DA - 'Ha N ộ i'( f^ Ụ _ ‘^ N )

r 0 2 < - ( T G l * D Ơ N VỊ)
ỉ G3 <— ( I G 2 [ X ] số N(.)1. = Mii SÔ_NV NỈ1AN_VI1-^N)
i)A, Ma sô n v . 1 lọ dệni. Diiỉ chi. ^ \gá v _sm h( I

'l a cỏ thê viếl truy vân 2 dir(yi dạng :

số_l)A. M ;1 số_l>V'. il« itciii, lìia chi, Ngii\ sinh ( l)ia ilicni 1)A ■ "I'a Noi"

(Í) Ụ _ Ả N * ỈX )N _ V ị t x ] .VNỌI, M3_SÙ_NV NHẢN_V1HN))


• Truy vấn 3 : i lãy lini tên cúa các nhàn viên làm việc với tất cả các
dự án do đơn vị có mã so là 5 kiêm soát,

ICỈl < - TlM ã s u J ) A ( * ^ M a số D V . 5 ( n Ụ _ _ Á N ) )

TG2 ^ 7rMa_số_NV, Ma^sôj)A(NỈ I Ả N _ V lfíN _ l)Ụ L Á N )


rcỉ3 <- TG 2 - 'I Cil

KẾT_QUẢ ^ 7TH,,_ciộm, TC-n(TG3 * N H Ả N _ V 1 F N )

90
4.2. NGÔN NGỮ SQL

Nuỏí ì nL'ừ d i r ạ c XCIÌÌ ia Iiìột y ê u tỏ c h í n h (! onụ liop \ à í ) SỊI'


l l i à n ỉ ì c ò n e c u a C(r ciữ l i ệ u q u a n h ộ k h i á p tl ụ iìu \ à o il o i sõĩìí: íliụ c ticn

\ a hội. .

IMulỉỉ na\ c-iut \ c u irinli bà} các tinh riaim cua neỏn nưữ S(Ji ciaiìh
cho các ỉìệ quan trị cơ s a dữ liệu thưm m mại, Ironu khi C lìuxynu ill đà
tnniì hã\ k h a k v l u r y i Ị o v ê m ỏ h i i ì h i ý i h u y ẻ t c ơ s ò CUÍỈ m ồ liifìh (i ữ liẹi ỉ

quan hệ. ị voì\Ị\ piián 4. L clìúỉm ta đà cỉỗ cập đen các plìcp ưouíi dại
sỏ q u í i n hẹ. \ ỉệc liiẽu s á u s ă c \ ỏ c á c p h é p t o á n n à y l ủúịì ì \ í i i n n h ọ c n ă n i
bat tôĩ cluợc c;ic k h á i ỉiiệin kl iác t r o n e c a s o d ừ l iệu q u a n hẹ. I Iỉ\ nhitMU
các plìép toan cua dại sô C]uan !iẹ urcyiìLĩ dôi plìửc tạp dôi \(Vi hàii hêt
lìuuxyị ciùíiU, ỈICIÌ neòn iiuữ SỌL dược \ c i n la niột sự tha\ llìc hoan iìao.
S ( ) ! . l a !1 1 ỘĨ
*
n Wur ỏ n nuCr
V-.
l ì ì ứ c c a o . n ê n I iwg i r ơ i s ư d ụ n e c h i c a ì i x a c d ị n i i

k è i Cịiuì c u a t ! u > \àn l à izi. p h ầ n c ò n l ại ! à t í n l ì ! o ; u i v à l ố i ư u h o á c â u


l ệ n h d ư ợ c i i ộ t Ị i i a n I rị CO' sơ ci ữ l i ệ u đ a n i n l i i ệ i n .

S()l, (Struciurcd ự u c n i anmumc) bắt Iiuuồii lù nuon nmì


(Slructiired í ímlish ()Uf j-v I unuLiaiic). ncỏn ngữ duực ihièl kể tại lậ|')
iloàn IBM Iihãin (kra ra một ụiao diện truv vấn dữ liệu \ ới hẹ quàn tri cư
so dữ licHi ihứ lìuhiỌni S Y S Ỉ Ĩ Í M - R , SQL hiện đã dirạc chuùn hoá \ à
dược liỗ trợ liíiu !iet các hộ quan Irị c a sơ dữ lièu c]Lian hệ ihirơnii
mại. c huân SỌ! đàu tiên với cái tèn SQ1.-86 (lioặc SQ!,-1) la sự kèt
liợp uiìra iìiii iô chức ANS! (Ihe Aiiicrican Nalidiìíil Stuiidurci ín.sũtutc)
và ISO (llie International Standard Oruani/ation). Saii dỏ. phiên bán này
(lược nur rộnu vứi uhièu tiiih nănu moi và d ưạc uọi lã SQI -2 {ha>
S(.)l.-92). íỉiện Iicív. thuàii S(^)I 1 dã ra đùi với các tínli nân;: lìiíVi nỉnr
lìỗ trợ cơ so cii'r iiệu hirơníi dỗi Iượnt!. SỌl la Iiụôn nuù lổnu !\ợp \ ề cơ
S(< dữ liệu Nó bao uỏm ca câu lệnh cỉỊnh nuliĩa diì liệu (!)í)l - Data
1 )cliiiilion i anguauc). cáu lệnh truy vàn (qiicry) và các càu lênlì thao tác
\.ri dữ liệu nhu l j P I > \ rí-, DEI.niT,, IN’S F R 'r ( l ) M ! , - Dala Manipulaútìn
i anụuaíic). Bòn cạtih do. SQ!. còn cune câp các lính nănu nliu' lạo khuii!:!
niiin (VICVV). chia sè, gán quyên và xác thực nuirời (lìinụ (security &
autliori/ation), dịnlt nghĩa các rànụ buộc dữ !iệu (coĩislraints) \ à đicu
khièii íỊÌiio tac (íunsacticin Controls), SQL có ihê hoạt dộp.e dộc lập. lioạc

91
được nliúnu vào các rmôn ni»ĩr chủ như C7C++. Pascal, iheo nhu cầu cua
nuười phát triển ứng dụntĩ. 'ĩrong chircmg này, các câu lệnh dược viei
tuân Iheo chuan SỌL-2.
I’tiần 4.2.1 chủ yếu niô tà các câu lệnh dịiih nghĩa dữ liệu (DDl.) dè
tạo hoặc sưa đối lược đồ, bánu và các rànu buộc. Phần 4.2.2 tập trunu
vào câu lệnh truy vấn dữ liệu và phần 4.2.3 đề cập thèm một so tính
năim khác, Phần 4.2.4 bàn về các câu lệnh thao tác với dữ liệu nhu
UPDATl', I N S E ir r , 1)1:LETE. Phần 4.2.5 mô ta khái niộin khung nhiii
(view). Phần 4.2.6 tập trung vào khái niệm ràng buộc tống quát the hiện
qua câu lệnh A SSER TIO N S hoặc TRIGGERS. Phần 4.2.7 liệt kê một số
tinh năng của SQL, chưa được trình bày ở chưmig này.

4.2.1. Cảu lệnh định nghĩa dữ liệu, các ràng buộc và lược đồ
trong SQL

1. Khái niệm về lược đồ trong SQL-2


Các phiên bản trước đây của SQL không cung cấp khái niệm lưục
đồ cơ sở dữ liệu quan hệ (Relational Database Schema) ; tất cà các bàng
(quan hệ) trona co sờ dừ liệu được xem là thành phần của một lược đồ
duy nhất. Khái niệm lược dồ dược dưa vào chuẩn SQL-2 nhầm để nhóm
các bàng, các cấu trúc thuộc về một img dụng nào đó. Một lược đồ (SỌl.
Schema) được xác định bởi tên của nó, và bao gồm một định danh xác
thực cho biết ntíirời dùng nào sờ hữu lược đồ cũng như mô tả của các
thành phần trong lược đồ. Các thành phần của lược đồ bao gồm các
bảng, các ràng buộc, khung nhin, miền (domain) và các cấu trúc mô ta
lược đồ. Một lược dồ được tạo ra nhờ câu lệnh C R E A T E SCHEM A.
Các thành phần của lược đồ có thể thêm vào hoặc bớt đi sau khi tạo lược
dồ. Ví dụ sau đây tạo Iiìột lược đồ có tên là C Ồ N G TY và thuộc sở hữu
của níĩirời dùng là NAM.
CREATE SCHEMA CÔN(3_TY AUTHORIZATION NAM
Chủ V : Trong ngôn nuữ SQL không dùníỊ được tiếng Việt có dấu.
I uy nhiên, đẻ dỗ llieo dõi, chúng lôi sử dụnt' liếng Việt có dấu đe ghi tên
các bàng và các thuộc tính, nếu bạn đọc muốn thừ nghiệm các lệnh S Q I .
trên máy tính thi đưa vào tiếng Việt không dấu,
Ngoài khái niệm lược đồ, SQL-2 còn đưa ra khái niệm catalog. Một
catalog bao gồm một tập các lược đồ. Trontĩ một catalog luôn tồn tại

92
một lược đồ đặc biệt có tcn gọi là I N P O K M A ĨIO N SCHIiM A dìiiiu dế
hứa thòng tin vè các lược do khác. C'ác ràng buộc toàn vẹn dĩr liệu nỉur
oàn vẹn tham chiêu (rcfcrentiai intei>ritv) chi được thièt lập nêu các
haim thuộc vô các lược dỏ trorm cùnu một catalou. Các Iirực dò trong
cùnu một catalog còn có thê chia sé chunạ một sổ thành phan, chăng hạn
nliir dịnh nghĩa miên xác dịnh...
2. C âu lệnh C R E A T E T A B L E , các kiểu d ữ liệu và cách tạo các
ràn g buộc
C"RI'A'rE 'ĨA B L l: là lệnh dùng đé tạo hảng với inột số thỗnụ số như
tên bảnu. thuộc tính vá các ràng huộc. 'ĩronu mồi thuộc tính lại bao gồm
các thônu số như tên thuộc tính, kiểu dữ liệu (bao uồm cả kiêu lần miền
xác định), và rànti buộc nếu có. Ràng buộc khoá chính và ràng buộc toàn
vẹn iham chiếu cũnii có thế được định nghĩa ngay trong khi tạo bảng
bằng cách thêm vào sau phần định nghĩa các thuộc tính, hoặc dùng câu
lệnh AL TĨiR TA ÍỈLE đề thèm vào sau khi bảng đã tồn tại.
Một lệnh tạo bánc có dạnti :
C R H A l E T A B l.E <Tên bảng> (
<thuộc tính 1 > <kiểu> (<cỡ>) <ràn <4 buộc>,
<thuộc tính 2 > <kiểu> (<cỡ>) <ràng buộc>,

<thuộc tính n> <kiểu> (<cỡ>) <ràng buộc>) ;


Chúng ta cỏ thế chi rõ tên lược đồ chứa bàng muốn tạo bằng cách
dặt tên lược đồ trước tèn báng và cách nhau bởi một dấu châm.
Ví dụ : CRE:ATFi 1'ABLE CÔNG_TY.<Tên bàng> { . . . ) ;
a) K iểu d ữ liệu
Kiểu dừ liệu Iroim SQI.-2 bao gồm kiểu so, kiểu xâu ký tự, kiểu xâu
bit, kiểu ngày giờ.
- Kiéu số bao gồm các kiều số nguyên (INTEGER hoặc INT,
S M A l.L ỈN l') và số thực (PLOAT, REAL., DOƯBLỈiI) có nhiều kích
thước và độ chính xác khác nhau. Định dạng kiểu dữ liệu số có thể thực
hiện bời một trong các cách : DECIMAL(ị, j) hoặc DEC(i, j) hoặc
NUMERIC(i, j), trong đỏ : i là sổ các chữ số ; j là số chữ số thuộc phần
thập phàn. Trong trưòmg hợp không được khai báo tường minh thi ị
bằng khôníí.

93
- \ á ỉ í ký íirco thè cỏ ciộ dái cổ (lịnh (('1 lAR(nì lidậc ( Ị f\RAC' 1! R(I1 >).
hoặc có dộ dài tha> (iỏi (\'ARC'l ỈAR(ii) lioạc ( '1!AI\ \'Ai<YIN( ì(iii
hoặc ( I l A i v A t ' 1 I:!< VA!í.YINCì(n)). i roiiíỉ do n lá kic!i tỉiinvc (oi cla
cua xâu.
- K ’(Jìi VÙI/ hii cũnu co hai loại !à <JỘ ciai cò d ịiìli (!^! ỉ (Ii)). lìoặc clộ
ciài ilias' dôi il'?ỉ r V 'A R Y IN (}(n )). rronụ đỏ n là dộ dai cực dại ru;i xàỉi
bil. ỉ)ộ dài II mặc clịiili cua xàu ky tự tioặc xàu bit !à mỘ!
Kiên lìíĩày \\! llìàí iỊÌun cỏ niột chúi l!ia> clôi troiiL^. SQI.-2. Kiêu
Iiuà}' (Ỉ)A 11') co dộ rộnii là 10 \ a các thàii!) phân cuu nỏ la náiiì
(YỈ'.A1\). tliánụ (MON l ỉl) \ à nuà\ (I)AY). Kiêu dịnli ciạtu' cỉièii hinli la
Y Y Y Y -M M -D l). Kiêu thời uian (TÍMH) \ ớ i dộ rộiiụ il nhái la 8 vái các
thanli phần là uiớ (lỉO U R ), phúl ( M I N U r t ; ) và giây (SI .(■( )N1)). Kièu
dịnh dạin' dién hình là 1II 1:ÌV!M;SS. Níioài ra kicu r iM t (iỊ (.ũiie dược
dịtìlì niíhĩa. V(Vi i '4 ỌÌ lá phân chinh xác sau tỉiâv. Klii clúnu kièu nà\ llii
kiêu Ỉ IMI' dược lliẽni vào (i + !) vị tri, niộ! \ ị trí danh cho cỉâu imăn
cácli và i \ ị irí dànli cho phần thập phân cua íiiàv. c uòi CUI!L!. niột kiên
dữ iiệu nữa la '1 IV1I'S l AM P ket hợp ca hiii kièii DA 1i \ a 1ỈMH cộriíi
lhC'm sỏ VỊ trí dè chi clộ chính xác sau iziây và lu>' chon CỈK! việc sư dụni;
\ùni^ ihài uian cliiiân loàn cầu hay khônụ.
Một kiêu dữ liệu khác liên quan dcn DA [ ỉ-;, [ IMi ; và ỉ IMI S I AMP
là 1N’Ỉ I R V A I K i ò u giá trị này xác dịiih khoán” íliừi ụiaii uiừa ỉiai mÒL
Ihời gian luyệi dõi như DA TE. riMH, riM l SI AM!>.
h) R ùhíị huộc
Nlnr cinnm ta dã \ é l IrDim Chươne ỉll, các rànu biiộe írõn cac thuộc
tinh có thế là ráng buộc về uiá trị, rànạ buộc khoá, loàn vẹn iharn cliiêu
và ràne huộc toàn \ cn thực Ihê. rronti lệnh tạo baiiiỉ. các ràni: buộc co
lliô dược íịIiì iitỊay sau định nuhĩa thuộc tính hoậc uhi riênu thánh inột
dòrm troMí> lệnh tạo banu.
ỉ r o n e S ( ) L - 2 , c h ú n í i ta c ó t h è SU' d ụ n i ỉ trực l i è p c;iv' k ỉ ò u d ù liệ u
như dã nói triiih bà> ờ Ucn. hoặc tự dịnh imhĩa mộl kicii (hì liệu mới
ihônu qua lệnh CRIÌATỈ: DOMAIN như sau ;
C'Kr:ATỈ . DOMAIN KIHIJ_M'\_SỎ AS CHAR(<)ì ;
Sau càu lệtih này thi có thc dùng KIẾU^ MẢ s o thay ihc cho ('! IAR(/)).
r/ íiụ [lình 4 ^(n) minh họa các iệnh tạo các hane írony cơ sư dữ
liệu ( ỔNCÌ 'l'Y (xcm Cliirơne II!).

94
IR E A T E T A B L E NHÃN_VIỂN
(Họ_đệm VARCHAR(20) NOT NULL,
Tên VARCHAR(15) NOT NULL,
Mã_số_.NV CHAR(9) N O Ĩ NULL
Ngày_sinh DATE.
Đ ịa_chỉ VARCHAR(30),
G iớ M in h CHAR.
Lương D E C IM A ự lO , 2),
M â_so_NG S CHAR(9).
M ã_số_ĐV ỈNT NOT NULL,
PRIM ARY K E Y (M ã_số_N V j,
POREIGN K E Y (M ã „số ^N G S ) REPERENCES NHÂN_VIÊN(M à_số_NV),
POREIGN K E Y (M ã^số_Đ V ) REPERENCES Đ O N_VI{M ã_số_ĐV)) i

C R E A T E T A B L E ĐQ N_VI
(Tẻn_Đ V VARCHAR(15) NOT NULL,
M ả _ sọ „Đ V INT NOT N U L l ’
M ă_số_NQ L CHAR(9) NOT NULL.
Ngảy_bắt_đầu DATE,
PRIM ARY K E Y (M ã_số_ĐV),
UNIQUE {Tẽn_ĐV),
rO R E IG N KEY (M ã^số^N Q L) REFERENCFS N H ÂN _ViÊN (M ã„số_N V)) ,

CREATE T A B LE Đ O 'N _V LĐ IA ^Đ !Ể M
(Mã_số_,ĐV INT NOT NULL.
Đ!a_điẻm _Đ V VARCHAR(15) NOT NULL^
PRIM ARY KE Y(M ả_số_Đ V, Địa_,đtềm_ĐV),
POREIGN KEY{Mã_số_„ĐV) REPERENCES ĐƠN__VỊ(Mâ_số_ĐV)) :

:: r e a t e t a b l e d ự _ á n
(Tẻn_DA VARCHAR(15) NOT NULL,
Mả__số_DA ÍNT NOT NULL,
Đ Ịa_điẻm _D A VARCHAR{15),
M ả_số_ĐV iNT NOT NULL,
PRIM ARY K E Y {M ã „số .DA),
U N IQ U E {Tên„D A ).
POREIGN K E Y (M à_số_D A ) REPERENCES ĐƠN_V|(Mă_,số ĐV)) ;
D R E A T E T A B LE N H Â N _V ỈÉ n1 d Ự_ẢN
(M ả_số_N V CHAR(9) NOT NULL
Số__giở DECIMAL(3. 1) NOT NULL
PRIM ARY KE Y(M â_số_N V, M ă_só„D A ).
POREIGN KE Y(M ã_số_N V) REPERENCES NHÂN_VỈÊN(Mà__số_NV),
POREIGN KE Y(M ã số DA) REPERENCES DỰ’_AN(M â_số_DA)) :

: reatetable con
(Mâ__số__NV CHAR(9) NOT NULL.
Tẽn_con VARCHAR(15) NOT NULL.
G iới_tinh CHAR,
Ngày sinh DATE.
PRIM ARY K E Y (M ã _ số „N V , Tên_con).
POREIGN K E Y (M à „s ố „N V ) REPERENCES NHAN_ViỂN(Mã__số_NV) :

Hỉnh 4.3(a). M inh hoạ về các cảu lệnh DDL trên lưực đồ
cơ sở dữ liệu CÒNG TY

95
RùtĩỊỊ buộc i’À giá trị inậc địnlí trong S Q L -2 :
Bới vi SQ1.-2 clio phép một trưừnii cỏ thc la> uiá trị Nl M I . liên
chúng la cỏ ihe dùnti rànu buộc NO r NULL dế cho biỏt mộl trirànii nà(,
dò khônu dirợc lav uiá irị không xác dịiih. Rànu buộc N() [ N i n .l luôn
dirạc áp dụnụ cho Irườim klioá cliính. Có thê thiel lập ỉiiá trị mặc dịnli
cho mội laRTiie Iiào dỏ rmay khi tạo báim banu mệnh de DHÍvM'I I' <í\ Iiluc •
sau mồi phần dịnli nuhĩa trirìynụ. Trong hình 4.3(b). chúne ta sẽ eập cácli
định nghĩa nuười quan lý mặc định cho một phòntỊ ban. phòiiL! mặc định
cho một tihân viên,...
I ronu, liình 4.3(a), chúng ta cũnt> tháy cách định nuhĩa rànu buộc
khoá chính (PÍÍ^IMAÍ^Y K Ỉ’Y), rànu buộc duv nhất (UNlỌUi;) và ràim
buộc tham chiếu (POREIGN KEY). Ràrm buộc khoá chinh có thê cau
tạo từ mộí hoặc nhiều trường trontĩ bảnu.
Như chúnu ta dã nói đến irong Chưcmg III. mộl ràne huộc toàn vẹii
iham chiếu (relcrential integritv) có thế bị vi phạm khi tiền hành chèn,
xoá hoặc cập nhật các bản uhi trong các báng liên quan. 'I roim SQL-2.
nuirời thiết kế lược đồ có thê quyết định hành dộníi cua hệ quan trị khi
ràng buộc toàn vẹn tham chiếu bị vi phạm thỗníi qua inộl trong cac
mCMiỉi đề sau : SET NULL, CA SCA D E và SE'l' DI:;FAUL'r cộim \ ới một
trong hai sự kiện là ON DELETE hoặc ON liP D A TH. srri' NULI. sẽ
được tiến hành thiết lập giá Irị của trưcVng khoá ngoài (FO R !n(iN KÍ'Y)
thành NUỈ ỉ , khi xoá hoặc thay đồi giá trị của trường klii)á chính.
CASCADK sẽ xoá hoặc cập nhật các bán ghi lương ứng trong báng tham
chiếu khi xáy ra sir kiện xoá lioặc cập nhật các bán ghi lên bang đirực
tham chiếu. SET DLÌPAULT cũng tươnụ tự như SE 'r NUM., Iilnmg uiá
trị được thiết lập là tĩiá trị mặc định thav vì NUI-l.. Phần này dược minh
hoạ troni> hinh 4.3(b).
Ihực hiện lệnh SErr NULL ON D E L m i : và C A SC A D i; C)N
UPDA I H cho trường khoá ni>oài Mã_số_NGS của bànu NÍỈẢN_Vir£N.
Diều này có ntỉ,hTa là khi niỉirời giám sát bị xoá thi Irưừnu Mã số_NGS
cua các nhân viên được thiết lập là NULL. Còn khi trirờnu Mã_sô__NV
cua nmrời giám sát được cập nhật giá trị mới thi trirờnc M ã_số_N G S
cùa các hán ulii tương ứng với các nhân vièii của người quàn lv nà\' sẽ
được cập nhật lại bang giá trị trường Mã_số_NV cửa nuưừi quaii Iv.

96
Ilịiih 4 Mb) niiiìlì h o ạ c á c h dặl iCmì c h o c á c r à i m b u ộ c k h i t ạ o bảỉìíi.
ỉ (OIUĨ ihiot k è c a sà (lù Ịiộu. ĩ i e u ò i ta l l i u ơ i m d ặ l t ê n c h o c á c r a n u h u ộ c
(‘i h oi ìL ’ k h i e a n s i a i cloi lìOệíc Xt>á c l ì u n g . í CIÌ c u a c á c r à i i ' j b u ộ c p h à ị là

clu\ iiliâ* íroiìu [^ỉìạĩìi \ ị ỉươc ilo.

CREATE ĨA B L E NHÂN_V!ỂN

( ,

Mà_sồ_ĐV !NT N O I N U LL DEPAULT 1

CONSTRAINT NVKC PRIM ARY KEY{Mả_số_NV).


CCNSTRAINT NVKN1 POREIGN KEY(Mã_sô_ NGS) REPERENCES

NHÂN_VỈÊN(Mă_^sỏ_,NV) ON DELETE SET NULL ON UPDATE CASCADE,

CONSTRAINT NVKN2 POREIGN KEY(M â_sổ„Đ V ) REPERENCES


ĐƠN_VỈ(Mâ__sô_ĐV) ON D E L E ĨE SET DEPAULT ON UPDATE CASCADE) ;

CR EA TE TABLE Đ 0 N_VI
í. .

ỊV!ã._số_NQL CHARO) NOT NƯLL DEPAULT 'NVOOOO',

CO NSTRAINT ĐVKC PRIM ARY KEY(Mã_sỗ__ĐV).

C O N S T R A IN T Đ V D N UNIQUEtTèn__ĐV).

C O NSTRAiN T ĐVKN POREIGN K E Y {M â„số „N Q L) REPERENCES


NHÂN_VỈÊN(Mã._số_ NV) ON DELETE SET DEPAULT ON U P D A ĨE C A SC AD E ):

C R E A ĨE TA BLE ĐO'N_Vị__ĐỊA_Đ!ẾM

(....
PRIM ARY KEY(Mà__số_ĐV. Địa_điẻm_ĐV),

POREÍGN KEY(IV!â_số_ĐV) REPERENCES ĐO’N ,V l(M ả_sò_Đ V ) OlSI D E L E ĨE


CASCADE ON UPDATE CASCADE) ;

Hinh 4.3(b). Minh hoạ về các cáu lệnh DDL với giá trị mặc định
và các ràng buộc trong các quan hệ

Cac haníi đuọc tạo ra baniz cãu lệnh CRliA Í d ư ợ c uọi là


*. ác haỉỉịỉ; CO' sơ (hoặc các CỊỉuin hê C(r sơ), ('ó Iiuhĩa là câu trúc \ à dừ liệu
ironu banu là lồn tạí tlu.rc sự Ircn các lìlc dừ liệu cua liẹ quan trị. ỉíàna
Lơ s à hoàìi toàn khác \ ứ i khái niẹm khunu nhin ( b ả n g ảo) đư ợ c tạo ra
íhỏnu qua câu lệnli 11’ VI1'^W. Kliâi niệm khunu nlìin sè dược íĩiới
ihỉệu tronu phàn 4.2.5.

97
3. ( âu lệnh D R O P S f H E M A , D K O P T A B L E
Nốu khòny cầii sử dụng đen một lirợc đồ nào dó, chúng ta có the su
(iụnu càu lệnh DROI^ SCIIE M A đê xoá bỏ. Có hai luỳ chọn xoá bỏ la
c AS('AlJl và RỈ^S I RICT. Ví dụ, muốn xoá bỏ lược dồ CÔNCì TY
cùng lất cã các háim, miền xác định và các thành phần kliác, tuv cliọn
C'ASC’AI)1' dược sir dụnụ trong càu lệnh DROP SCMEMA như sau :
DROr’ SCHf;MA CÒNG TY CASCADE ;
Nêu liiỷ chọn RÍ:S'I RIC r dược sử dụntỊ thi lược đồ sẽ được xoá bo
chi khi khôniỉ cỏ đối tLạyiiti nào bẽn trong nó.
Ncu không cần sứ dụng một bàng nào đó trong krợc đồ, chúim ta C(1
Ihè \('á ho nỏ bầng câu lệnh DROP l ABLE. Ví dụ. nếu không cần thônú
liti về các dối tượnt' "ăn theo" các nhân viên trong lược đồ C Ô N G TY.
chuim ta có thố loại bò bàng CON như sau :
[)ROP TABl.H CON ;
Ncu tu\ chọn RliS'Ĩ RIC r đuợc sư dụng thì bảng chi dược xoá klìi
khòníí bị ihaiii c h iếu đến bởi c á c bàn g khác trong c á c ràng b u ộ c. D ố i VƠI
luy chọìì ( ’ASC’AI)i;. các ràng buộc và kliiing nhìn tham chiếu đến báim
hị XiVả sè lự dộnu bị xoá theo.

4. c âu iệiih A L T E R TABLE
Càu irúc cúa báng co sớ có thể được thay dổi bời câu lệnh AL TI .R
l ABỈ.I . C'í'ic thay dôi cỏ thể là thêm hoặc xoá trưcmg, thav đổi dịnli
nụhTa irưong. thêm hoặc xoá các ràng buộc. Ví dụ, để thêm vào niộl
tnrưim iiru ihỏnụ tin về chức VỊI của các nhân viên vào baiii!
NI lẤN VilíN, clìúnu ta thực hiện lệnh sau :
A l.n -R 1'AÍỈI.r; NHÂN_V1ẺN ADDChửc_vụ VARCHAR02) :
Sau khi ihcni vào. dừ liệu ờ trưtVmỉ này là rồng. Chúnt» la có thc dC'
giá trị mặc dinh cho nó hoặc thực hiện một câu lệnh cập nliật (U PD A 11
tronu pliần 4.2.4) dc thiết lập giá trị cho trưcnm này. Nếu không có giá trị
mặc cỉịnli, giá trị lại trường này bàng NULL và do đó không thể áp dụnu
ràng buộc N o r NULL trong trường hợp này.
i)c \ o á một tiườrm, trong câu lệnh ta kèm thêm luỳ chọn C A S C A D l
hoặc RF:;S 1RICT. Neu C A SC A D E dược chọn, toàn bộ các ràng buộc v;i
kluiim nliìii ihicl lập trên trưcmg đó sẽ được xoá một cách tự động. Nci

98
tuv chọn R l . S l K i C i dược sử dụnỊi. lệtih này sẽ thực hiện ihành công
chi trorm triiàng liợp kliõnụ có khung nhin lioặc rànu buộc Iiào liên quan
dcn irưứni: \na Vi dụ sau dâ\- sè \ o á trướiiu l)ịa_chi khỏi bàtm
NHẢN V IT n ;
A I , I I .K 1A i ỉ l . i : ( (')NCi r Y . N H Ả N _ V i r ; N Í ) K ( ) P Dịa chi C A S C A D E ;

C'ó thê sưa iại uia trị mặc dịnh cho trưmm Mã_số NQL tronu báng
N í i l í ò ỉ ỌI;AN 1 Y nhu sau :
Al . TI . R I Alỉl i: DON Vị A\:\T.R Mã số NỌI SÍ-; I D1-:FAU[. 1 "NVOOOO"

c Iiôi cùne. la có thê sửa đôi các rànu buộc bãrm cách xoá bò hoặc
ihêni mởi cliúnu. Dê \ o á niụl ràng buộc nó càn phai lòn tại và có một tên
x.ác dịnli. Ví dụ. dê xoá ràim buộc cỏ tèn uọi là NVKN trong bàng
N llẢ N VlHN. ta tliực hiện :
AI ri-.K l ABl.i; NHÀN. VIÊN DROPC(WS 1 'RAIN'I NVKN CASCADE ;
í)c tlièni Iiìới inộl ràng buộc, ta sư dụng lừ khoá ADD. Ràiiíi buộc
mới thCMii \ ao oó thc cỏ tên xác định hoặc khôni! tên.

4.2.2. Các truy vấn cơ bán trong ngôn ngữ SQL

S(^I, cỏ mội lệnh hoi dữ iiệu cơ hàn, dó là lệnh SF.I,FC'r. Lệnh


S M . t - c r nà\ khône liên quaii đC'11 phép chọn tronụ dại sô quan hệ ở
CluuynỊỊ 111. C'o rầt niiiỏu mệnh dê con luỷ chọn tronu càu lệnh SlìLIìCT,
chúnu la sẽ iàm qiicn lần lượt lừníi tiiỳ chọn một. ỉ)ế minh hoạ câu lệnh
SCLHC r, tii sử dụnu lược đồ hình 3.5 và dừ liệu trong hình 3.6.
1'rirớc khi tiếp tục, chíui!’ ta cần bict một sự khác biệt quan trọng
ụiữa SỌI, \ à niô hinh quan hộ được dề cập ờ Cíiuxnm 111. SQI. cho phép
liai hay nhicu han ulii tronu bàng giônu hệt nhau (cỏ giá trị băng nhau tại
mọi trirànẹ). Do d(S, nói chunti các bàn ulii tronií bàng SQL không hợp
thành một tập hợp mà h'i một lúi (bag) các bàn uhi, bởi vì troim một tập
hợp các phan tử kliônu dược trùng nhau. Tuy nhiên, hầu hết các bàng
ciia SỌI. dcLi là tập hợp các bàn ghi khi tạo bàníí cơ sở (CRHATrì
r A B l .i') hoặc khuna Iihin (CREAXr. V I ỉ :W) clìíinu ta thường xác dịnh
khoá chinh hoặc ciùnLỉ mệnh de DIS riNC,'1 dê hạn che các ban íìhi
trùnu nhau.

99
I. ( ấu trúc SI ! ,IX T - FK()M - VVHEKE trong câu lệnh SFÍ ÍX 1
Dạne divn lĩian nliâl cùa câii lệnh S l í l . l ì c r là cấu Irủc bao uòiii ba
m ệnh dè s Ị Ị, 1,c I I■R ( ) M - w H í K f ; IIhư sau :
Sl.l I X ' r < d a n l i s ; i c h t h u ộ c tíiili -

í ROM ■ danh sách bani; >


VVl ]Ỉ',R1; ' ciicu kiệii ' ;

1 ro n ii dỏ ;

- <danh sách Ihuộc tinh'- là danh sách các thuộc lính hoặc biêu thuv
ctui các thuòc tính đuợc dua v ào kết qua cua truy van.
- <daii!i sách banu> la danh sách các bảng mà từ dó các thuộc linh
dirạc làv ra.
- <dièu kiện là lìiột biêu thức lôẹic xác định một bán uhi nào đo cu
thoà mãn diều kiện cua càu lệnh ha\' khòníí.
Sau dàv lá inòt sô ví dụ :
* 1'riiy vân / : liiên thị nạày sinh và địa chi cùa tàt cá các nhân vièn
có lên là 'I.ê Vân'.
Srĩl.KCT Ngày_sinh, Dịa^chi

1ROM N H Ả N _ V 1ẺN
W11LR H i lọ_đệm - 'Lc' AN D Tẻn = 'Vân' ;
ỉ ru\ \ấJi này clii iiên quan đến báim N ỉi N _ V IẺ N nên chi một
minh barm dỏ xual hiện ironu -'danh sách báng>. Triiv vấn chi chọn các
han yhi thoa niàn diêu kiện sau mệnh đê WHEiRFi và lất nhicn kèt
qua CỈ!1 chicu liico hai triàniụ là Ntzày_sinh và Địa chi dê dưa \ à o
•'CÌanii sách tliiiộc tinh> sau mệnh de SIíl J-'t' 1 ’.
Mõi tru\ vấn d(Tii íiian trC'n một hánu í>orn ba mệnh dồ như trC'n chi
sụ kẽt hợp cùa hai plió|i chiếu và chọn tronu đại sô quan hệ. MCmiIi dô
SI [,1.( í iroiiu tru\ \ ấ n chi ra các trường cùa phép chieii, mộnh clè
\\ !I! RỈ c!ii ra dicu kiện cua phép chọn. Chi có niộl sự khác biệt clu\
ntiấl là kci quá cua truy ván có thc tra về hai hay nhiều bán uhi trìinư
nhau, ironu klii kct tịua cua phép chọn thi không xày ra hiện tượng này,
hcTÌ \ i n e u c á c b a n t:lii triìnii Iiliau thi c h ú n g s ẽ bị l o ạ i bó t. K e t q u à c ủ a
tru\ \ ân trên nhu' sau :

100
Ngày_sinh Đia_chỉ
12/02/79 Hầ NỘI

• ìriiy vân 2 : Hiên thị họ và tên, dịa CỈIIcua lât ca các !ihân viên
lam \ iệc clio chni vị 'Nuhiên cửu'.
sr.[J-,C'l' Họ_đệm,'I en, f)Ịa__i.hì
I ROM NHẤN'_V1An, DON VỊ
\\ I!1'R1 Icn DV = 'Nghiên cứu'AND
N l l Ả N V l í i N . M ă SỐ_DV [ K l N V ị , M à số J ) V ;

ỉ rii\ vần trên đây íưonự tự như một hiêu thức đại số quan tiệ kốt
hợp bơi bịi phép toán là chọn - chiéu - noi (SÍ Ỉ.1X' [ - ỈM<(),HX'r -
,I()IN). í)icu kiện chọn Iiàni tronii mệnh de WI1LRỈ với !‘ên_Ỉ)V "
'Nuhiên cứu', điều kiện kốt nối cũnụ nam troim mệnh dề WH1 RI, vói
NHẢN V Ỉ F N . M ã _ s ố J ) V = DƠN VỊ.Mã^^số DV, 'Iruy vấn nav được
cliiêii theo ba trườnu là Họ_dệiii, ĩên, Dịa_chi. Kèl qua cùa t!u\ \'ân
nỉiir sau :
Họ_đệm Tên Địa_chi
Lê Vân Hà Nội
Trần Đức Nam Hà Nội
Nguyễn Sơn Hầ Nam
Vũ Hương Giang Nam Đinh
Noi chunn, có thề đặt số lưcrng luv ý điều kiện cliọn và điệu kiện kết
nôi sau mệnh dè WHHRH. Ví cki sau đây minh hoạ iruy vấn với hai điều
kiện kết nối.
• Tniy vấn 3 : ỉliển thị mã so dự án. tôn dưn vị quản lý dự áii. tên
riêim. dịa chi. ngày sinh của nụười quản lý dơn vị, quán lÝ dự án của tất
cá các dự án được thực hiện tại 'I là Nội'.
sri.rx r Mã s ổ _ D A , T c n _ l ) V . Tên, Dịa_chi , Ngày sinh
Í ROM D ự _ Á N , D Ơ N VỊ. NI I Ả N _ V I Ẻ N
\VI I[-;RE I)ự_ÁN.Mã_số_DV = i3ƠN_VỊ.Mã_số_DV ANI)
M ã _ s ố _ N Q L = M ã _ s ổ _ N V A N [ ) [)ị a_đi ể! !i _DA = ' Hà Nội ' ;

ỉ)iều kiện kết nối D ự ÁN.M ã số_ĐV = DƠN VỊ.Miỉ số r^V liên
kct uiữa hai bàng D ự _ Á N và DƠN VỊ đe biêt đoii vị nào quàn lý dự án.
Diều kiẹn kết nối Mã_so_NQ[. = Mã sổ_NV lièn kết uiữa hai bànti

101
1)()N_VỊ va NHAN Vll-.N clè bict nmrời nào là ckni \ ị UưcTim cua d(rn
vị quan lý nói trên. Kèt Cịiia cua truy vân như sau :
\_SỐ_DA Tên_ĐV Tén Đia_chỉ Ngày_sinh
1 Nghiên cứu Nam Hà NỘI u iữ im
10 Hành chính Bầng Bắc Ninh 26/06/52
20 Lãnh đạo Giáp Hà Tĩnh 01/05/47
30 Hành chính Bẳng Bắc Ninh 26/06/52

2. (iiải quyết vấn clc nhập n hằng tên thuộc tinh và cách sử dụng
biệt danh

Tronu SQL. liai truờntì co thê có trùnu tên. miỗn là chúnu thuộc hai
bàne khác nhau. Ví dụ. các trưcmg Mã_số_ĐV trone các bànu D ự ÁN
và DƠN_VỊ. Iroim lru(mtz luTp này. nếu niộl truy vấn cùnụ chọn hai
trưcmg đó thi chúnu ta hiiộc phải đặt tôn cua bánu trước tèn trường và
cách nhau một dâu chàm dê tráiih nhập nhănc.
Ví dụ, tronu tru>' vẩn 3 ta dã đặt tên các bảna D1,]_AN và ĐC)N_VỊ
trước các thuộc tính Mã số_ĐV dế phàn biệt thuộc únh là cua báníí nào.
Nhập nhànu tên cũnu xáv ra tronẹ trường hcyp tham chiêu hai lân tới
một báiiií trong cùnu một tim vấn.
Ví dụ :

• Truy ván 4 : Với mọi nhân viên, hãy lày tliônu tin ve họ đệm, tên
nhân viên \'à họ dệin, tòn cua nmrời lỊÌám sát tương ứng.
Si;iJ:C r NV.Hợ dệm, NV.Tcn, N V 1Jlọ_đệm, NVI ,Tên
PROiVl NliẢN VlHN AS NV. NliẢN_Vií'{N AS NVl
WUERE NV.Mã SỐ NGS = NV I ,Mã_^sổ_N V ;
lYonc trưcTim liợp nà}, ta khai báo hai biệt danh khác nhau clio bànạ
N H Â N _ V IẺ N là NV \ à N V l . Chúim ta cũng cỏ thế dùng biệt danh để
thay đôi tên trường.
Trong truy vấn 4, NV và N V l là hai bảng khác nhau được sao chép
từ bảng NIỈÂN_VIÍ:N . NV thay thế cho bãim nhân VÌCMI còn N V l thay
thế cho bảng nhữnt’ người giám sát và sau đỏ liên kct hai bang một cách
bình thưcmtỉ. Sau đâv là kết quá của truy vấn 4 :

102
Họ_đệm Tên Họ_đệm Tên
Lê Vân Trần Đức Nam
Trần Đú’C Nam Hoàng Giáp
Hoàng Thanh Phạm Bảng
Phạm Bầng Hoàng Giáp
Nguyễn Sơn Trần Đức Nam
Vũ Hương Giang Trần Đức Nam
Trần Lê Hoa Phạm Bẳng
Ngoài mục đích loại bo nhập nhàntĩ tên trưàne, tèn barm. cơ c!iô sử
dụng biệt danh còn có một mục đích khác là làin cho càu iruy \ ấn ngan
tiọii hem. Ví dụ, truy vấn 1 có thế sừa thành ;
SELECl Họ_đệm, Tên, Địa_chi
Í-ROM NHÂN VIÊN Aắ NV, ĐƠN VỊ AS ĐV
Wỉ lERE Tên_ĐV = 'Nghiên cíni' AND NV.Mã_số_ĐV = DV.Mã_số DV ;

3. Câu lệnh S E L E C T khuyết mệnh (lề VVIĨERE và việc diiiiíí ký


tự thay thế (*)
Khi một truy vấn thiêu mệnh đề WIỈERE, tất ca các ban ghi sẽ
dược chọn. ĩronii trường hợp cỏ nhiều h(Tn hai bánu troníỉ mệnh đẻ
l'R ()M và không có điều kiện kết nối thi kết quả trả vồ là tích I)ề-các
uiữa các bàng.
Ví dụ, truy vấn 5 chọn tất cá các Mã__số_NV cùa nhân viên từ báng
N llẢ N ^ V IÊ N , trong khi dó truy vấn 6 có kết quá là tích Dề-các cua hai
bàng NỈ1ÂN_VIÊN và DƠN VỊ.
• Truy vấn 5 :
SELECT Mã_số_NV
F 'R O M N H Ả N _ _ V IR N ;

Kết qiiặ của truy van ;


Mă_số_NV
NV001
NV002
NV0 1 0
NV014
NV016
NV018
NV025
NV061

103
• 'ỉr u y vãn ỏ :

s I • I , Lĩ (' I M à_số_N . I èri 1) \ '

I ROM N l l Ả N Vl l . N. [ X) N_V!

Kèt C|ua của truy van ;


Mã_số_NV Tên_ĐV
NV001 Nghiên cứu
NV001 Hành chính
IN'V0 0 1 Lănh đạo
NV002 Nqhiên cưu
NV002 Hành chinh
NV002 Lãnh đao
NV0 1 0 Nghiên cửu
NV0 1 0 Hành chinh
NV0 1 0 Lãnh đạo
NV014 Nghiên cửu
NV014 Hành chính
NV014 Lãnh dạo
NV016 Nghiên cứu
NV016 Hành chinh
NV016 Lành đạo
NV018 Nqhièn cứu
NV018 Hành chính
NV018 Lânh đạo
NV025 Nghiên cử u
NV025 Hành chính
NV025 Lảnh đạo
NV06 1 Nghiên CÚ'U
NV061 Hành chinh
NVQ61 Lảnh đạo

các iruv van nèn xcni xct kv các dicu kiện chọn
và kểt nối sau mệnh đề \V1I! RIí, bời \ i nếu lỉiicu hdặc đicu kiệĩi khòiu
chính xác thì sẽ dẫn dến một kết quà khó lioán trưóc.

104
f)c lã\ uỉl ca 'jac í n n n ì i i m a k h ỏ n í 4 c ã n liệt kê ì ư ơ n v m i n h . Uì sir
ilụníi díui í ) d c lha> Elìè. Vi iìụ, U'ÌW vaiỉ 7 lày ra íal ca c ác í r irơnu ĩ ronư
han;.' Nỉ !AN V!Í !N v<n dicìi kiẹn là Mà sổ [)V ịvdUỉi 5.
• Tnn' \xìn ’ :
Sỉ .ỉ ! ( ' [
ì-ROM \ \ lẢ N V IH N

\ \ Ị|1 K ! Mà .sỏ D \ - ^ :

Kct Cịua c u a ư u \ vâ n ;
sójV/ Ngav VI' ĩ^ĩph Ouì chi í'-K>'Og Mậ sÓ_AJ'.7'S .Vc1__sỐ ĐV
NV001 i-Ẻ. V9n 12 /0 2 /7 9 H à Nội Nam 3000 N V 00 2 5

N V 002 T -án O rrc N a 'ì' 14/02/66 H à Nội Nam 4000 NV061 5


N V 0 16 N g i.y é n So'n 14/08/73 Ha Nam Nam 3800 N V 00 2 5
NVŨ18 Vj G<anq 2 6 0 3 /8 3 N a m Đm h NO' 2500 N V 00 2 5

'rriiv' \ ; u i K i a\ ra lầi CÍI c á c t h u ộ c línii c u a h a i h;iiig N H Ấ N V' ỈHN


\ai)()N \'Ị \ ;>; (iiÓLi kiện 1'èn ĐV 'Niíhiêii cứu'.
« /'7 /i' \\ìl! V ■

S ỉỉ i L ỉ '

Ì-R (,)M M !Ã N V IÍ;.N A S N V , D Ơ N VỊ AS D V

Wi !!' . ỉ<l. icii i ) \ - ' Ni i hi ôn c ứ u ' A N D N V . M ã s ố i)V --DV.Mả s ó 1)V ;

t)ò í!iực hiện trii\ vấn n à \. S<^)I, sẽ nối hai bang NỈIẢN VỈỈ'N và
L)( ỈN VỊ ihco dièii kièn Mã số 1)V a hai bang băna nhau, sau dó ỉầ\ ra
cac hàn>j: thoa niaii dicu kiệi! '1'ên l)V - 'Nuhiêii cứu', Kct qua của iruv van :
N gây Mă_số_ Mă___
Họ ơém ĩ'6r: Lírơng
NV Siỉìh ch ỉ tinh NGS SỐ^ĐV ĐV áỐ^NQL bất đèu

Lè v,3-' “i y ■■M Há Nanì 3000 NV002 5 Nghiộn NV002 1^/09/


Nộ' cuu 2000

T rầ n N-.ìr-i '4/C//t^6 Há Nam 4000 NV061 5 Nghién NV002 1ĩ-109/


E )'J - Nộ: cừu 2000

N ^ J u y 4 'l ' 'i T''B- " '.i Hr. Narĩ’ 380n NVG02 5 Nghiên NVOC? 15/09/
Nam cưu ?000

Vù '''íiao!,'! Ndtn Nử 2500 NV002 5 Nghiên NV002 15/09/


Omr. cửu 2000

4. B an g n h u là tậ[) h o p tronịi SQÍ>


N!iư cià íiê cập ơ các phân irước. SQÍ, thirớnu xư iy các hanu không
! như ni ột táp hựp m à như ià một lúi (bau), các bộ Irùnu iập có the

05
XLiàl liiện Iihiòu làn Iroiiu bảiiụ và tronu kèl qua cu;i một truy vàn. SQl
khônu lự dộim loại trừ các bộ trìuiu lặp lionu ket qua cua truy vấn bíìi
inộl so iv do sau ;
- Viẹc loại bỏ các bộ trùnu là một phép toán phức lạp. Dê làin việc
dó liuóc tiên cần sắp xếp các bộ. và sau dỏ loại bỏ các bộ trúnu cạnh Iihau.
- N uirài sừ cÌỊinụ c ó tl i ể m u ố n n h ì n t h ấ y tat c à c á c b ộ t r ù n g n h a u
tronu kêl quá cua truy vấn.
- K h i á p clLintí c á c h à m n h ó m c h o c á c b ộ , tr ont i p h à i i lớ n c á c trirờrm
hựp chíum ta không m uốn loại bỏ sự trùiie lặp.
Một banu SQL với một khóa sẽ được giới hạn là một tập hợp, bơi vì
uiá irị khỏa phai khác nhau trong mồi bộ. Nốu muôn loại bỏ các bộ trùni^
nhau trong kết quá trà về cùa truy vấn, chúnu ta sư dụng từ khoá
D lS ĨIN C r ngay sau m ệnh đề S E L f'C Í. Nói chunu. S I iL H C r
DISI INC' F loại bỏ các bộ trùng lặp, còn SI'! 1X' Ĩ A l.l, (ho<ặc SP.LHC ĩ )
ttiì khônu. Ví dụ :
• 1'ruy vấn 9 :
SE L E Cr ALL. Lương
F ROM N[IÂN_VỈÊN ;
• Truv van 9a :
StỉLECr DISTINCT Lương
f r<OM Ní iÂN_VIÊN ;
Kel quà của truy vấn 9 là đưa ra tất ca iưant; của các nhân viên, còn
triiv vấii 9a đưa ra các lưcmg khác nhau của các nhân viên (loại bỏ các
aiá trị trùnu lặp). Kct quá của truv vấn 9 và 9a ;
Lương Lương
3000 3000
4000 4000
2500 2500
4300 430Q
3800 3800
2500 5500
2500
5500

106
SỌl, áp dụnu irựL’ liổp một số phép toán Irèn tập hợp của đại số quan
hệ. ('ỏ các phép toan líi h ạp (U N IO N ) và giao (ÍN TERSIX: F) (SQI.-2 có
i Ii C
mii cá phép toán loại trừ l-XCỈÌPl'). Bàng kết quá từ các phép toán này
thoá mãn là tập hợp. hoi v ỉ các ban ghi trìint’ nhau đã được loại bỏ. De
thực hiện dược các phep toán trên, các banu tham tỉia phai có cùnu cấu
trúc và thứ tự t ác irườiiiĩ !à giốnu ĩihau. Ví dụ sau minh hoạ pliép toán hạp.

• 7>v/v VÚỈI ÌO : I .iệl kê tất ca Mã số_D A của các CÌỊĨ án có licn quan
đến các nhãn \ ièn có lèn là 'Nam' với vai trò là nhân viên làm viộc cho
dự án, hoặc imười quan lý ciia dcm vị điều hành dự án.
(SEI.nC 1 DISHNC 1 Mã_sổ_DA
FF<OM DỤ'_ẢN. í)ON_VỊ, NHÂN_VIÊN
W H í ;RF: dụ á n . M ã số D V = Đ Ơ N _ V Ị , M ã _ s ố _ D V

AND Mà số NỌL = Mã_số_NV AND Tên = 'Nam')


UNION
(SFÍ 1J : X ' ! D I S [ I N C i M ã _ s ồ J ) A

FRC)M D ự Á N, N H Ả N V I Ê N Dự_^ ÁN, N H Â N _ V 1 Ê N

W11HRÍ: DỤ'_ÁN.Mã _số Ỉ3A = NHÂN_V1ÈN_Dự__ẢN.Mã_số_DA


AND NI iẢN V ìiI n Dự_ÁN.Mí ì _số_NV - N H Â N __VIẺN.Ma, số NV

A N D Tên = 'Nam') ;

'ĩro n g truy vấn hợp này, m ệnh đề S E L E C T đầu tiên lấy tất cá các
mã số dự án liòn tịuan đến nuười có tên ỉà 'Nam' và đóng vai trò là người
quán lý dưn vị diều hành dự án. Mệnh đề thứ hai lấy tất cà các mã số dự
án được thực hiện bai các tihân viên có têii là 'Nam'.

Kct quà của tru\ \ àn 10 là :


Mă_sỔ_DA
1
2
3
10
20

107
5. c ác Ị)ỉiép loán so sánh chuỗi, số và mệnh (lề OkDI^K IỊY
I runụ phân nủv. chúni> ta sỗ de cập <lèn mòi \ ài linh nãiux nữa cùa
SỌỈ nlìU' toán lứ so sánh cluiỗi 1 ỈKỈ’. cac phcp tdán sò liọc \ à sắp xcp
1 oáii t ư I . I KI CÙIIL!, \(Ýi c á c ký ! ự tha> tliè Iiliir % ( k v t ự Ịiliầii t r á m ) t h a \
tliè c h o ni ột c h u ỗ i bàt k \ . ký lỊi ( k v t ự ụ ạ c h ciưíVi) l h a \ i h e chc) m ộ t ks
Ur bài ky.

/7 du :
• rruy vân 1 / : Dưa ra tàt ea các nỉiâii \ iên co dịa chí a ỉ lá Nội.
SIII.ỊÌC I' lli.1 dệiii. lén
IKOM N1IÃN__VIFN
\ \ l l l i RH f)Ịa d u 1,1 Kl: ' % l l a N ộ i % ’ ;

Kèl qua cua Iruy vàn ia :


Ho_ớệm Tên
Lè Vân
Tr ần Đ ử c Na m
Dê !â\ tàt cá các nhàn viên sinh troim Iihữnu nám 50, chúnu, ta dùiiL!
lru\ \ àii 12. c) dây, '5' là cliữ số ihứ ba\ lừ trái sang ihco (lịnh clạnc nuá>
iháim là 1)I)/MM/YY. do đó chúnư ta dùim xâu so sánỉi là '________ 5 '
• l'ruỵ vàn 12 : Dưa ra tên cua các nhân vìCmi sinh vào nhĩnm nãm 50.
Sí’1 I ,C1' I ỉọ dộm,'ỉ'ên
IROM NIIÂNVIHN

\V1II: r ỉ ì Ngà>_S!nh l . l K h '___________ 5 J ;

Ket quá cũa truy van :


Ho_đệm Tên
Phạm Băng
Các plicp loáii số học trong tiiiy \ ấii bao gòm các phép toán cộng (+),
irừ (-). nhàn (*) và chia ('). Ví dụ, muốn tănu i()% ỉucrnti cho các nhãn
viên làm \ iệc CỈU) dự á!i c ó têii 'D A 0 2 ', ta thực hiện lri!\ vấn sau :

• Tnạ' vun 13 ; í)im ra các nháiì \ ièn cúnii vứi Urơiig cua họ sau khi
tănụ 10% nừii như liọ lam việc ciio íìi.r án có ten lá 'I)A()2'.
sri,li( r H ọ dệi i ì . ĩ ê i i , l . i *l.irtTiig

Ỉ ROM N H A N _ V ir ,N . NÍIÀN_Vli'N_Í)Ụ__AN, l ) Ụ_ AN

108
w ’i ii ; ri - . NI I AN VI Í : N. Mà s Ố _ N V - N 1 1 A N VI LN [ ) l , r A N . Mã sổ NV
A > s i : ) ỉ) li Á N ,M ã số Ỉ ) A - N I Ì Á N V ỉí - N 1)1,.' Á N .M a sò Ị )A

A N D I c n DA

Kcl (Ịua cua ín i\' vàn la :


Ho__cĩêm Tén 1 V Lương
Lê Vàn 3300
Trần Đức Narn 4400
Vú Hưong Giang 2700
ỉ)oi \(Vi kiên chuỗi, hai hay nhiêu chuỗi (krợc kẽt ỉiòi băne loán
lư 'L'. Dỏi vui kièu DA H'. H M l ' , ỉ IMI-STAMP \ù kièu IN TỈ RVA! thi
co thê ciùnu liai toán lư ' ' va dỏ lãni: hi)ặc giain, Vlột loan lư khác
dưọc dúnu dè so san!i !à H( 1WFtiN. rniy \'ấn Sỉtu minli lK>ạ toái! tu này.
• Truy vắn 14 : l.iẹl kè toàii bộ nhân vièn troiiL'. (lơn \ ’ị có mà số
hăng 5 vá có nuìV lưmm tronu khoanu, 3000 đèn 4000.
s i : i j : c 'r *
1 R(ÌV1 N Ỉ I Á N VI HN
\V! IIÍRÍ'. (i.tK^ng RF: [ \Vl-.l'N 3000 AND 4000) ANÍ) Mã_sổ_ì.)V - 5 ;
Kèl qua c ủ a tru) \ ân ;
M ã_ số_ N V H ọ_ đê m Tên N gày_sinh D ia_chì G iói_tinh l-U orĩg M S_số_N G S Mã_số__ĐV

NV001 Lè V án 12/02 /7 9 H à NỘI Nam 3000 N V 00 2 5


N V 00 2 Tràn Đ ứ c Nam 1 4 /0 2 /6 6 Hà NỘI Nam 4000 NV061 5
N V 01 6 Nguyẻn Sơn 1 4 /0 8 /7 3 Hà Nam Nam 3800 N V 0 02 5

SQL cho phé|’i nguời cỉùnụ sáp \ ế p các bản ulii lăim hoặc iiiain
tiần theo niộl hoặc imn sỏ tnrờnu nào do bănu, cach sư dụiiu mệnh đề
( )RO['R BY. í riẠ \'ân sau itâv minh hoạ ciièu này.
• Truy vân 15 : Dua ra danli s á c h các Iihàn viciì \ à các clự áiinùi họ
lliam íiia. f)ôn<i tỉioi săp xèp tãiie dàn theo tèn ci(rn VỊ \ a tmim moi tlơn
\ Ị săp xêp lànsỉ iiâĩi iheo tòn niiàn \ ịêii.
SÍ .Ll-.C I l èn F)V, i iọ dệ m. l òn, l ên DA
riU ÌM t)ON VI, N iiÀ N V IÍ:N . NHẢN Vlí-.N i)Ự Ả N . i ) ỉ j ÁN
\VH1;KI' i)()N_VỊ.Mã số DV = NilÂN_VII-N.Mã_sốJ)V
AND NHẢN V IÍ:N ,M ã số N V NHẢN V IR N [) l.r A N .M ã số N V

A N D r ) Ụ' _AN. Mã_s ố J M = N H Ả N _ V I L N DỤ Ả N . M ă _ s ố _ D A


O R D l i R B Y ' l ê n 1)V, l ên ;

109
K êl qua cũa tru y vân :
Tên_ĐV Họ_đệm Tén Tén_DA
Hành chính Phạm Bâng DA05
Hành chinh Phạm Bâng DA06
Hành chính Trần Lê Hoa DA05
Hành chính Trần Lê Hoa DA06
Hành chính Hoàng Thanh DA04
Hành chính Hoàng Thanh DA06
Lânh đạo Hoàng Giáp DA05
Nghiên cứu Vũ Hương Giang DA01
Nghiên cứu Vũ Hương Giang DA02
Nghiên cứu Trần Đức Nam DA02
Nghiên cứu Trần Đức Nam DA03
Nghiên cứu Trần Đức Nam DA04
Nghiên cứu Trần Đức Nam DA05
Nghiên cứu Nguyễn Sơn DA03
Nghiên cứu Lê Vẳn DA01
Nghiên cứu Lê Vân DA02

Nếu không chỉ ra cách sấp xếp thi tliứ tự mặc định là tăiiíỉ dần,
Chủng ta có ihé chỉ tL Ù y n g minh cách sắp XCỊ-) bẳne các từ khoá DHS('
(giám dần) hoặc A S C (tăng dần). Thứ lự ưu ticn la từ trái sano, phái. Neii
muốn sắp xếp giám dan theo tên phòng, tănti ciần theo họ và lãng dan
theo tên riêng, la sừ d ụng m ệnh đề O R D H R BY như sau ;
ORDBR BY ĩèn ĐV DESC, l ên ASC ;

4.2.3. Các truy vấn nâng cao

Trong phần trước đã đề cập đến nlũrim \ ’ắn đè cơ bán của truy vấn
SQL. Trong phần nàv, ch ú n c ta sẽ tiếp tục đề cập đốn một sổ tinh nănt>
phức lạp hơn như truy vấn lồnu nhau, hàm ĩihỏin....

I. T r u v vẩn lồn g n h a u v à p h é p so sánh tập họp


Ironíí SQL., một số truy van cỏ diêu kiện kC‘t nôi hoặc diêu kiện
chọn k h ô n c pliài là nlũm u giá trị cho trước mà lại là kct quà của một
iruy vấn nào dó. De thực hiện dirực nhừnu tru> van nliir \ ậ \ . người ta

110
iliiràng phai sư dụiig clốn khái niệm truy vấti lồntỉ nliau. Sau (làv là Iiiộl
v í clụ m i n h h o ạ .

• Truy vân 16 :
Slíl.l.C I DISTINt’ r Mà s ố D A

l-R O V l D Ịi ÁN

WI Ì I ; R1 M à số D A IN

rS E L i;C i V1à số D A

f ROM Dự AN, DON VỊ, N I I Ả N VIẺN

\ Vl l t ; Rl Dư ÁN.Via số f)V ĐON VỊ. Mã s ố J ) V

ANDÍ K5N VỊ.Mã số NQL = N!1ẢN VIẺN.Mã số NV


A N l ì rê ĩi 'N a m ' )

C)R Mã s ố DA IN

(S 1 ;L E C T M ã sồ D A

FRC)M NHẢN Vll-N DỤ ÁN, NH Ấ N VIẺN

\VI1HRF, NHAN VIỀN D ự Á N . Mã _ s ố _ N V - NI Í ÂN, VI ÊN. Mâ sổ NV


A N [ ) Tên 'N a m ') :

Ket quà của truy \ aii :


Mã_số_DA
1
2
3
10
20
'I'iuy vấn con dau liên chọn các mã số dự án thuộc dơn vị quán lý
mà đcrn vị trirơnụ, cỏ lèn 'Nain', Ironu khi truy vấn con ihứ hai chọn mã
số các dự án cỏ nhân viên làm việc có tên là 'Nam'. I ruy vấn nia,oài chọn
các m ã số dự án thuộc niộl troiìg hai tập kết quả trên.
Phép toán so sánli IN clio phép kiềm tra một giá trị nào dó có tliuộc
một tập iK.yp ha> klìônu, Giá trị so sánh tronu phép toán IN có thề là một
bộ íiồm các giá tri dirực dật trong dấu níìoặc đ(rn vả phàn cách nhau htri
dấu phay. Ví clụ :
S í-Ij;c ĩ DIS Ị IN( ĩ Mã sổ_NV
[■ROM NỈIẢN Vlf.N_^DỰ ẢN

111
( M à sỏ DA. Sổ giờ) IN ( S i - , l J : c r M;ì Ỉ)A, S(. gu'y
I ROM NHAN VII N I)! AN
\\!il'Kt,Ma M, \ v \\(ì(l!').

í ri!> \ ân Iia\ chọn dịnh daiiỉì clir áii \ à sò ui('y làiii \ ịọc cii.i lài ca (.'III.
nliàn \ ión co cặp (Mà sò DA, sỏ L’iờ) băiiịi \ iVi nh;'m vỊcii Mà sỏ NV
la ' N v o o r .
K c l q u a c u a t r u> \ à i i l à :

Mã_số_NV
NV001

N u o à i t o a n lu Ỉ N. m ộ t s ò l o a n u'r k h a c (ìirơc diiiìL’ (!c s o Siinh c;ic ui a


irỊ d(T!i \(Vị n i ộ l tập ỉ i ọ p nh u’ toá n Ur A N Y (hoặc S(>M L). l o a n tir
A N Y t i a \ ê uiá tri TKI '1: n ê u niộ! >.’ ia trị d u ạ c s o sanli băĩií.' It ỉiliâ! I11Ọ!
phần tư ir o im tập so sánh. 'I'ừ kỉi o á A N Y và S O M Ỉ ' C ('1 !hè sir (ỉụiiụ ih a \
Ihè cho nhau. C á c ịilicỊ) toán có thê IvCl Ì1Ợ|1 với A N Y (lìóặi; S( ) \ 1!"| l:ì :
>. \ à <>. I'ìr k h o á A I !. c ũ n u d ư ợ c k ê t h ọ Ị ' viVi c;!C t o á n !U'
nà\ . Vi dụ so sanh \ ■AỈ.L V sẽ tra \ c I RUĨ:! nêu uiá írị V lớn hon tâi
c a c á c Ịihầi! l ư i r o n g t ậ p ỉ'. 'í'ru>' v a n s a u ỉa m ộ t \ í d ụ : í)ii'a r a !iọ tèii
n h â n vi èi i c ỏ iuxrnti ! ón h ơ n l i r ơi m c u a tàl c a c á c n h à n \ iên Iroiìi: ckrn \Ị
có Mã sò DV băim 5.
SKl.i C 1 l l ụ d ệ m , í êii

Ị1<()M NIIẦN VI1'N


\\ ỉ i i ;r ì , l , ươ i i g > Ai 1 , ( S HI J ; C ' i l.irodg

I ROV1 NIIÂN VIÍN


\V11RRH Mã SÓ !)V - 5) ;

Kèi íỊua ciia lru\ \'ãn ;


Ho_đệm Tên
Pham Bẳng
Hoàng Giáp
N ó i c ì u i i m. ta c ó liiè s ư clụnu I n i v v â n l o n u n h a u \ à i ÌXI i n ử c . nlnniL’
kliÒHii n ê n s ư liụiiu c á c íruv \ àn qua phúc tạịi v i s ẽ !à aaiih n ặ n i’ c l i o liộ
q u a n trị klii \ ứ lý n h ừ n u c â u lệiih n à \ . C ' h i n m ía c n n g c ó !hc u ặ p v à n dô
n ! iậ p n l i ầ i m \ ề tèii t r ư ờ n u kh i c h ú n g x u ấ t h i ệ n ở m ệ n h ciê I R O M c a c à u
l ẹ n l i I r u v \ â n t r o i m v à t i u y \ à n I i e o à i . S a u đ à y ỉ a i i i ộ t i n i n h h o ạ c !)0 tliâ}
k h a n ă i m uậị'' p h a i i r i r à n u h ợ p n l i ậ p n ỉ i ã i m l è n t r i r ờ i i a h o ặ c t ê n h à n ạ .

112
• Tniy vấn 17 : Dưa ra [lọ tên cúa các !ihân viên có người phụ thuộc
VƠI ( l i ò u k i ệ n !à c ó c ù i i g t>iới l í n h v à c ù n g t ò n r i è n g .

Si .l l i ' I' NV.Iio dẹm, NV. l èn


I KOVl NHÀN' VI HN AS NV
\V!II;R|-: N V . M à số N V in ( S i ;! j ;c i M à _ s ố _ N V
1 ROM PIIỤ THUỌC
\ V H í ;RL N V . T c n = Tê n [
/ \ N D NV. Gi ới _ t í n h = Gi ới tínli) ;
Kõt cỊua cua truy vấn ;
NV Họ_đệm NV. Tên ('Không có)
[rontí truy vấn con phái chỉ ra NV.Giới tinh, hởi vì nó ám chi
trutTnu Cìiới_tính cua báng NH Â N _V IÊN ờ truy vấn ngoài. C húng ta
khône thế sử dụng Giới tính vi bànu PHỤ T H U Ộ C cũng có một trườna
(iiói_tính. Tương tự như vậ> đối vứi NV.M ã_số_NV. Tóm lại, nếu có
nhữim thuộc tính có tên như nhau trong các báng khác nhau thì nên phân
biệt chúnu bầim cách dặt tòn banu (hoặc bí danh bàng) trước thuộc tính
do dè tránh sự nhập nhãniỉ.
ír u y van tirơnịị tịiian (corrclated nested querics) xảy ra khi điều kiện
trong mệnh đề WMi-RH của truy vấn con có tham chiếu đến một vài
thuộc tính cùa iruy vấn nuoài. Với dạnu triiy vấn này, truy vấn con sẽ
dược tínli toán lại mỗi khi truy vấn ngoài diivệl qua một nhân viên, truv
\ aii tront: phái tính toán lại dè tìm ra những nmrời phụ thuộc có cùng tên
và giới tính với Iihân viên hiện lại ơ truy vấn ngoài. Sau khi tính toán lại,
nếu nhân vièn hiện tại có triÙTng Mă_số_NV nằm trong tập kết quả của
truy vấn con thì nhân viêii dó sẽ được đưa vào kết quả và ngược lại.
Nói chung, các truy van lồntỊ nhau cỏ chứa toán tử so sánh = hoặc
ÍN dcii có thế biểu diễn dưới dạng một truy vấn đơn. Ví dụ, Iruy vấn 17
oỏ lliế được viốt lại thành truy vấn 17a như sau ;
• Truy vắn ỉ 7a :
SHLEC I NV.Họ đệm, NV.Tẽn
FROM N H Ả N _ V 1 Ê N A S N V , I M1 Ụ_ THUỘC AS P T
\VHFRH N V . M ã _ s ổ _ N V = P1 . M ã _ s ố _ N V
AND NV.Giứi_tính = PT.Giới_tính
AND NV.Tòn = Ỉ’ I'. I'ên_PT ;

MNVCSŨ _ 1 1 3
[ỉan dầu SQl. dược thi hành trên hệ SYS rEM-í< có thêm cả toán lu
so sánh C'()N I A I N S dùng đé so sánh hai tập hợp. N h ư n g các hệ quàn trị
cư sở dữ liẹu thương niại sau này không tiếp tục hồ trợ nó, do không tìm
dược cách cài đặt hiệu qua. Toán tử này trả về giá trị TR Ư E nếu một tập
lụyp chứa loàn bộ phần từ cùa một tập hợp khác. Ví dụ sau đây minh hoạ
toán lư này.
• T niy van !H : Đưa ra lên cùa các nhân viên làm việc cho tất cả các
dự án (lo dan \ ị có mã số là 5 điều hành.
Slỉl.i;C'l' Họ_đệm, Tên
I ROM NHẢN VIÊN AS NV
WHÍ-R ỉ : ((SBLECT Mã số DA
FROM NHÂN_VIÊN_DỰÁN
WHERE NV.Mã_sổ_NV = Mă_số_NV)
CONTAINS
(SELECT Mâ_sổ_DA
FROM Dự_ÁN
WHERE Mã_số_ĐV = 5)) ;
I rong truy vấn 18, truy vấn con thứ hai (không tương quan với taiy
vấn ngoài) lấy m ã số dir án do đơn vị 5 điều hành. Với mồi nhân viên
được diivệt qua ở truy vấn ngoài, truy vấn con thứ nhất (có tương quan
với truv vấn ngoài) lấy các mã số dự án mà nhân viên đó tham gia. Nếu
kết quà này chứa tập kết quà cùa truy vấn con thứ hai thì nhân viên đó
thoá mãn. bởi vi nhân viên đó đã làm việc cho tất cả các dự án do đơn vị 5
điều hành và ngược lại. Có thể nhận thấy ràng, toán tử so sánh
C'ON 1A IN S tương tự như phép toán chia trong đại sổ quan hộ. Vì ngày
nay, toán tử CON'l A IN S không được cài đặt trong các hệ quản trị cơ sở
dữ iiệu nên chúng ta d ùng hàm tồn tại (E X IST S) để thay thế.

2. Màin tồn tại (E X IS T S ) và h àm d u y nhất (U N IQ U E ) trong S Q L

1làni tồn tại trong SQ L được dùng để kiểm tra xem kết quả của truy
vấn tưcTng quan có ch ứa bản ghi hay là rỗng. Đối ngẫu cùa hàm tồn tại là
hàm không tồn tại ( N O T EXISTS). Sau đây là một ví dụ minh hoạ.

114
• Truy vấn 19 ;
SF-:LECT NV.llọ đệm, NV.Tèn
ị-ROM NHẢN VIỦN AS NV
WHERH Í-XISTS (SHl.ECT *
ỉ ROM PHỤ THUỘC
WUERE M ã s ố N V = N V .M ãsố N V
AND Giới_tính = NV.Giới_tính
ANDTên_PT = NV.Tên ;
Ket quá cúa truy vấn ;
NV.Họ_đệm NV. Tên (Khồng cò)
ĨYong truy vấn trên, truy vấn con tham chiếu tới các trường
Mã số_NV, Hợ đệm. Giới tinh của Iruy vấn ngoài. Phân tích cụ thể
như sau ; Với mỗi nhân viên được duyệt qua ờ truy vấn ngoài, truy vấn
trong sẽ tim tất cà các người phụ ihuộc có cùng m ã số nhân viên, cùng
tèn và cùng íỉiới tinh. Nếu kết quả của truy vấn con tồn tại ít nhất một
ban ghi thi nhân viên hiện tại ừ truy vấn ntioài sẽ được chọn và ngược lại.
Sau dây là một ví dụ minh hoạ về hàm không tồn tại.
• Truy vấn 19a : Liệt kê tên của các nhân viên không có con.
SELBCT Họ_ đệm, Tên
FROM NHÂNVIÊN
VVHERE NOT EXISTS (SELECT ♦
FROM CON
w HERE NHÂN_VlÊN.Mã_số_NV = Mã_số_NV);
Ket quả của truy vấn :
NVHọ_đệm NV.Tẻn
Hoàng Thanh
Nguyễn Sơn
Vũ Hương Giang
Trần Lê Hoa
Hoảng Giáp

1 'rong truy vấn này, truy vấn con sỗ lấy tất cả những người phụ
huộc nhân viên hiện tại ờ truy vấn ngoài. Nếu kết quả cùa truy vấn con

115
kliònu tồn tại ban eliináo, nhãn viên đỏ sẽ được chọn và ngược lại. SOI.
còn co một ham khnc là hàin duy nhât (UNIQUH). H àm này trả vê
rRL'ỉ{ neu kliôni> có ban ulii nào trùnc nhau trong kết quá trá vè cùa mội
t r u y v à n v ỏ I i í i ư ợ c lại.

• '1'niy vân : I iệt kê họ tcn cùa các nuirời quán lý cỏ ít nhất một
nuirời con.
SK1,FX’ r í l ọ dộni, Tcĩi
FR()M Ni 1ÂN_VIẺN AS NV
w n r:R i; Í.XISTS (SFLr;cT *
I ROM CON
WHERI- NV,Mã_sổ_NV = Mã__số_NV)
AND HXISTS (SELECT ♦
PROM ĐƠNVỊ
WHERE NV.Mã_số_NV = Mã_sổ_NQL) ;
Kct qua của truv vấn như sau :
Họ_đệm Tẻn
Trần Đức Nam
Phạm Bằng

3. T ậ p các ị»iá trị xác định và giá trị rỗn g tr o n g S Q L


iìontr các phần trước dây. chủng ta dã sử dụng các toán tử nlur
ANY, A L l ..... (lối vỏi các truy vấn con. C h ú n g ta cũng có thể sử dụnu
các toán tứ nàv với các lập các giá trị đã xác định được bao bởi một cặp
dấu nuoặc đ(rn.
l 'í d ụ :

• / n i v vấn 20 : !)ưa ra M ã_sổ_N V cùa các nhàn viên làm việc cho
dự án 1, 2 ỈKHIC dự án 3.
SHI i-: c r DISTINCT M ã_số_N V
FR()M NHÂN_VIÊN_Dự_ÁN
WHI:RF. Mă_số ĐV i n (1, 2, 3) ;
SỌI. cho phép các truv vấn kiểm tra xem giá trị tại mộl trường nào
dó cỏ rỗnu hay khỏnu.
• Truy vân 21 : D ưa ra họ, tên của các nhân viên không có người
íiiám sát.

116
SELI'C r llụ_đệni, Têii
l'ROM NHẢN_VIRN
WHERK Mã_số_NGS IS NUl.L ;
4. rh ay dổi tên h ả n g và tên tru ìm íĩ tron^Ị truy vấn
( ’ó thê dôi tên của các tluiộc tính troim kết qua các tru> vấn bằnii
cách đặt tên mới vào sau trưíVnií được chọn và ngăn cách b(TÌ từ khoá
AS, Sau đây là một ví dụ.
• Truy vấn 22 :
S í u . l i c r NV.Tên AS Tên_nhâri_viên, NVI.Tên AS 'rên_iigưừi_uiám_sát
I ROM NHẢN_VIÊN AS NV, NliẢN_V!F^N AS NVl
WHERH NV.Mã_sổ_NGS = NVl .Mã_số_NV ;
Kết quá cua truy vấn :
Tên_nhân_viên Tên_người_giám_sát
Vân Nam
Nam Giáp
Thanh Bầng
Bảng Giáp
Sơn Nam
Giang Nam
Hoa Bảng
SQL-2 cho phép điều kiện kết nối có thể đặt ngay sau mệnh đề FROM.
['u5' chọn này đã được một số hộ quản trị áp dụiig mà cụ thể nhất là
MS Access và SỌL Server.
Vỉ dụ :
• 7'ruv van 23 :
SELHCT Họ đệm, Tên, Dịa_chỉ
KROM (NHÂN VIẺN J01N ĐƠN VỊ ON NHẢN_VIẺN.Mã_số_ĐV -
ĐƠN_VỊ.Mà__số_ĐV)
WHERE Tên ĐV = 'Nghiên c ứ u ' ;
Kết quá của truy vấn :
Họ_độm Tên Địa_chì
Lê Vân Hà Nội
Trần Đức Nam Hà Nội
Nguyễn Sơn Hà Nam
Vũ Hương Giang Nam Định

117
C) truy vấn trên, kết nối sau mệnh đề FROM giữa hai bảng
NHẢN VIÊN và ĐƠN VỊ được xem như một bảng kết nối (Joined
table). Người ta chia các cách kết nối ra làm các dạng sau : kết nối tự
nhiên (Natural join), kết nối ngoài (Outer join). Với dạng kết nối ihứ
nhất giữa hai bảng, không có điều kiện kết nổi nào được chi ra tường
minh ; một diều kiện kết nối bàng (equi-join) ngẩm định được áp dụng
cho mồi cặp thuộc tính có cùng tên giữa hai bảng.
Neu tên của các thuộc tính trong hai bàng tham gia kết noi không
giống nhau, người thiếl kế truy vấn có thề thay đổi tên trường bàng từ
khoá AS. Trong các bảng đã xét, phần lớn các thuộc tính kết nối đã co
tên giống nhau, ví dụ trong các bàntì ĐƠN VỊ và NHÂ N VIÊN cùng có
thuộc tính Mã_số_ĐV. Như vậy khi thực hiện kết nối tự nhiên, có một
điều kiện kết nối ngầm định được áp dụng cho hai trường M à_số_Đ V ở
hai bảng. Ví dụ về kết nối tự nhiên :

• Truy vấn 24 :
SELECT Họ đệm, Tên, Địa^chỉ
FROM NHÂN_V1ÊN, ĐƠN_VỊ
WHERE Tên_ĐV ='Nghiên cứu';
Kết quả giống truy vấn 23.
Dạng kết nối mặc định của SQL là kết nối trong (inner join). Ví dụ
trong truy vấn 22 , chỉ những nhân viên có người giám sát mới được
chọn vào bảng kết quả, còn những nhân viên có giá trị trường
Mã số N G S là rồng đều bị loại trừ. Nếu người dùng cần một kết quả là
tất cả các nhân viên kể cả có hoặc không có neười quản lý đều được đưa
vào kết quá thì phải sử dụng khái niệm kết nối ngoài (outer join) như
trong ví dụ truy vấn 24b sau đây.

• Truy vấn 24b :


SELECT NV.Tên AS Tèn_nhân_viên, NVl Tên AS Tên_người_giáni_sál
FROM NHÂN_V1ÊN AS NV LEFT OUTER J01N NHÂN_ViÊN
AS NVI ON NV.Mã_số_NGS = NVl.Mã_sổ_NV ;

118
Kết quả của truy vấn ;
Tên_nhán_vién Tên_người_giám_sát
Vân Nam
Nam Giấp
Thanh Bâng
Bằng Giáp
Sơn Nam
Giang Nam
Hoa Bẳng
Giáp Null
Tuỳ chọn kết nổi trong SQL-2 bao gồm INNER J01N (giống như
JOIN), L E F T O U T E R JOIN. RIGHT O U T E R JOỈN và FIJLL o u l ER
J01N. Í3a loại kết nổi sau từ khoá OUTER là không bắt buộc. Các kếl
nối có thể lồng nhau. Ví dụ, truy vấn 25 sau đây minh hoạ kết nối
lồng nhau.
• Truy vắn 25 :
SELECT Mã_số_DA, Mã_số_ĐV, Tên, Địa_chi, Ngày sinh
FROM ((Dự_ÁN JOlN ĐƠN_VỊ ON Dự_ÁN.Mã_số_DV =
DƠN_VỊ.Mã_số_ĐV) JOIN NHÂN VIÊN
ON ĐƠN_VỊ.Mã_số_NQL = NHÂN_VIÊN.Mã_sổ_NV)
WHERE Địa điểm DA = 'Fià Nội' ;
Kết quả cùa truy vấn :
Mă_số_DA Mă_số_ĐV Tên Địa_chl Ngày_sinh
1 5 Nam Hà Nội 14/02/66
10 4 Bảng Bác Ninh 26/06/52
20 1 Giáp Hà Tĩnh 02/05/47
30 4 Bầng Bắc Ninh 26/06/52
5. Hàm tổng họp và hàm nhóm
Trong C hươ n g III, chúng ta đã làm quen với khái niệm hàm tồng
hợp dưới d ạn g các phép toán quan hệ. Thông thường các hàm tổng hợp
và hàm nhóm được tích hợp vào trong các hệ quàn trị, bởi vi trong thực
tế, các hàm này được sử dụng tưorng đối thường xuyên. Danh sách các
hàm cụ thể : COƯNT, SUM, MAX, MIN, AVG. Hàm C O U N T trả về số
bản ghi trong bảng kết quả của truy vấn. Các hàm SUM, MAX, MIN và

119
AVCi Ira vè tông, uiá Irị k'm nhất, bé nhât \’à tiiá irị trunu hình ciia
trường là đoi so cua các hàm nàv. Các hàm nàv thưòng đứng sau niệiìl:
đe S l " 'L n c r \ à liAVlNCì của eấu trúc trii> vấn. Sau đây ià các \ i (iu
minh hoạ.
• l ’n iy van 26 : 1'ính tỏnu lirơnu. ỉươim cao nhất, thấp nhât và uiá ti Ị
trunu bình lươnu cửa các nhân viên trone cônia ly.
SHLHC r S U M (Lươiig), M A X d a n rim ), M lN (Lươiig). A V C i(l.uơni’)

FROM NHÂN V IH N ;

Ket qua cúa truv vẩn :


SUM(Lương) MAX(Lương) MIN(Lương) AVG(Lương)
28000 5500 2500 2808
Nêu muôn hạn chê các tính toán trèn trong mộr đơn vị nào dó, chăníi
hạn là đơii vị 'Nghiên cứu', chủng ta thực hiện iruy vấn 27 sau dâv.
• Truy vấn 27 : Tính tổnu lương, lương cao nhất, lưOTg thâp nỉiât Vú

lương trung bình của các nhàn vièn tronu dcrn vị "Nghiên cứu".
SEl-ECT SUM(l.ương), MAX(LưưMg), MlN(Lưưng), AVG(L.ương)
FROM NHÂN_V1ÊN AS NV, ĐƠN_VỊ AS ĐV
WHERE NV.Mã_sổ_DV == DV.Mã_số_ĐV AND rên_ĐV = 'Nghiên cứu’ .
Kel quá của truy \ ấn :
SUM(Lương) MAX(Lương) MIN(Lương) AVGịLương)
13000 4000 2500 3250
f)ê đưa ra số itrợng nhân viên làm việc troriíí công ty và số lưựng
nhân viên của đơn vị 'Nghiên cửu' ta sử dụne các truy vấn sau ;
• Tniv van 2H :
SEU-CT COUNK*)
FROM NIIẢNVIẺN;
Kết quà cùa truy vấn :
Count C)
8
• Truy van 29 :
SELECT COUNl(*)
FROM NHẢN_V1FN, F)ƠN_VỊ

120
\ \ 1 11 ,K1 NHÃN V I Ỉ - N . M à > Ỗ _ D V =■ D Ơ N VỊ.Mã số D\
AN'[) lòn_!)V = 'Nghiên cửu' ;
K ê l qiKi c i i a l r u \ v à n ;

C o u n t C)
4
1 rone hai iruy vấn trên, dấu sao (*) đại diẹn chd các han lihi. Hàm
C'{)( 'N i o hai truy vàn trèn có thè dèm cá các bàn iỊhi trùnu nhau. 1'rong
triràni! liụp khônL' miuMi đém các bán uhi trùnu nhau, ta thực hiện như
lru> \ an 30.
• / n iy vân 30 : í)ếm so m ức lưíTiiíỉ khác nhau trong công ty.
SF J.ỈX 1 C()UNT(DIST1N'C1' L.irơiig)
1 ROM N11ÂN_V1ÊN ;
Với lru\ vắn tivn. các bíin uhi có lirơnu bằnu nhau sẽ được loại bỏ
v a kôt cỊuà tra về chinh là sỏ mức lircmíi khác nhau tronu cônu ty.
K.CI qua cua truv vàn :
Count (DISTINCT Lương)
6
Các hàni nhóm còn có tnột cách sư dụng khác như truy van 31.
• 'ín iy vãìì 31 : Liộl kê các nhàn viên có nhiều h(Tn hoặc bàntỉ 2

Iimrơi phụ tiiuộc.


SI ,11x1' ỉ lọ_Jệni, T'ẽn
1R(.)M NI1ẢN_VIHN AS NV
VVIK RỈ (Sl-Ll-X-T COUN'l(*)
I R(ÌM PHỤ_[ HUỘC AS p r
\Vi lf;Rl- NV.Mã số NV = í>T.Mã_số_NV) >= 2 ;
Kci qua cửa triiN' vàn :
Họ_đệm Tên
Lê Vân
Trần Đức Nam
Tioiiu rầí nhicu trường hợp, chúng ta muốn áp dụng hàm nhóm vào
các nhỏm con troiig các báng dựa trên một vài trưèmg nào đỏ. Ví dụ,
muốn lìin lươnụ trung bình của cáo nhân viên trong từng phòng, hoặc số
nliân vièii làm việc cho mỗi dự án. Trong những trườne hợp như vậy, ta

121
càn nhóm các bàn ghi lại thành từng nhóm dựa trên các trường phân
nhóm và sau đó áp dụng hàm nhóm vào mồi nhóm một cách độc lập vớt
nhau. SQL cung cấp mệnh đề G R O U P ĨĨY cho mục đích này. Sau mệnh
đề GROUF’ BY là các tnròrng phân nhóm, các trưcyng này có Ihề hoặc
không xuất hiện sau mệnh đề SELECT.
• Truy vấn 32 : Với mỗi đưn vị, hãy liệt kê mã số đtTn vị, số lư(7ng
nhân viên ở trong từng đưn vị cùng với lương trung binh cùa đofn vị.
SELECT Mã_số_ĐV, COUNT(*), AVG(ỉ.ưưng)
FROM NHẢNVIÊN
GROUP [3Y Mâ số ĐV ;
1'rong
truy vấn trên, các bản ghi được phân nhóm với tiêu chí phàn
nhóm là có cù n e m ã số đơn vị. Sau đó trong mỗi nhóm, truy vấn tiến
hành đếm số nhân viên và tính lương trung binh của họ.
Ket quá cùa truy vấn :
Mã_sỐ_ĐV COUNTC) AVG(Lương)
1 1 5500
4 3 3100
5 4 3250
• Truy van 33 : Với mồi dự án, lấy số hiệu dự án, tên dự án, và số
nhân viên làm việc cho từng dự án đó.
SELECT Mã_số_DA, Tên_DA, COUNT(*)
FROM DỰ ÁN AS DA, NI ỈẢN_VIÊN_Dự_ÁN AS NVDA
WHERE DA.Mã_sổ_DA = NVDA.Mã_số_DA
GROUP BY Mã_số_DA, Tên_DA ;
Tniy vấn 33 minh hoạ cách dùng điều kiện kết nổi c ù n g với mệnh
đề G R O U P BY. Trong trường hợp này, việc thực hiện h àm nhóm sẽ áp
dụng sau khi đà kết nối từ hai bảng.
Ket quả của truy vấn :
SỐ_DA Tẻn_DA COUNTỢ)
1 DA01 2
2 DA02 3
3 DA03 2
10 DA04 3
20 DA05 3
30 DA06 3

122
Dôi khi chủng ta m uốn lấy giá trị cùa các hàm nhóm chỉ cho các
nhỏm thoà mãii một số diều kiện nào đó. Ví dụ, giả sử sửa dổi truy vấn
33 dề chi nhữtig dự áii có trên hai nhân viên làm việc được đưa vào kết
qua. SỌI. cung cấp mệnh dề FỈAVING két hợp với mệnh đề GROUP BY
clc đáp ứng nliu cầu trên. Ví dụ minh hoạ ờ truy vấn 34,
• 'Jrny vấn 34 : Với mồi dự án có hai người làm việc trở lên, hăy liệt
kê số hiệu, tên dự án và số người làm việc cho dir án đó.
1 Mã_số_DA, Tên_DA, COUNT(*)
í ROM [)Ự_ÁN AS DA, NHẢN_VlÊN_Dự_ÁN AS NVDA
WHER[: DA.Mã_số_DA = NVDA.Mã_số_DA
GROUP BY Mã sổ DA, Tên DA ;
HAVING COUNT(*)>2;
Kct quả cúa truy vấn :
Mã_số_DA Tén_DA COUNTC)
2 DA02 3
10 DA04 3
20 DA05 3
30 DA06 3
• Truy vắn 35 : Vói mồi dự án, lấy mã số, tên và số nhân viên ờ đom
VỊ có mã số là 5 làm v iệ c c h o dự án.
SGIJ:CT Mã SỔ_DA, Tên_DA, COUNT(*)
FROM DỤ ÁN AS DA, NHÂN_VIÊN_DỤ_ẢN AS NVDA,
NHÂN VIÊN AS NV
WHL-RE lM.Mã_số_DA = NVDA.Mã số DA AND NV.Mã_số_NV =
NVDA.Mã_số_NV AND NV.Mã_số_DV = 5
GROUP BY Mã số DA, 'lên DA ;
Kcl quá cùa truy vấn :
Mã_só_DA Tên_DA COUNTC)
1 DA01 2
2 DA02 3
3 DA03 2
• Truy ván 3ố : Với mồi đom vị có nhiều hom 5 nhân viên, đưa ra mã
số đơn vị và số nhân viên thuộc đem vị đó có thu nhập trên 4000.

123
si;ij;c'i' Mã S Ổ 1 ) V , C ' 0 U N Ĩ ( +)
i ROM DO N VỊ A S D V . N H À N VỈH N A S N V
\VỈ 11-R T f ) V . M à số D V N V . M ã sổ l ) V A N D ỉ invng 40000 A N D
M ă số i)V IN {SI 1 1 ( ' [ M à SỔ_Í)V
TROM n i i à n _ v i ì ;n

GROUP [ỊY Mã_sỐJ)V


IIAVINC. C'OlíN ĩ'(*) > 5)
( ÌROUÍMi Y Mã_sổ_I) V ;

Kêt qua của truv vân :


M ã_số_ĐV COUNTỢ) (không có)

6. T ố n g kết về truy vấn S Q L


Một truy vấn ironu; SQ)L có thè chứa uVi sáu mệnh đề, nhưng chi hai
mệnh dề đầu tiên là bal buộc. Cúc mệnh dồ đirực sáp xèp theo thứ tự sau
dàv (mệnli dồ tronu ngoặc vuỏnu là tu> chọn).
SI:.LL-X'l <danh sách thuộc línli và iià!ii>
[ ROM <claiih sácli banạ>
WHERli <dieu kiện>
G R O U P B \ ’ <các ihiiộc tính Iihónp
ÌAV1N'(Ì <dicii kiộii nhóm>]
( ) R D F R [iY < d a n h s ách i h u ộ c tíĩih;

Mệnh dề SE U iC T liệt kê các triràniì, các hàni hoặc các biểu thức
♦ r ’ •

Cần đ ư a v à o t r ơ n g b á n g k é t qu á . Mệnh đ ề l'R O M c h i ra các bảng cần


cho truy vấn, bao gồm cá các bàníỉ được tạo ra từ các liên kết giữa các
bánti cơ sở. M ệnh dề WI ÍI-Ri-' chì ra diều kiện đề chọn các bàn ghi hoặc
điều kiện kết nối nếu cằn thiết. CiROUÍ’ BY chi ra các trư à n g phân
nhóm, Ironu khi H A V I N G dưa ra đièu kiẹn nhữiitĩ nhóm nào thoà mãn
để đưa vào banti kết quà. Cuối cùntí, O R D liR BY cho biêt kết quà của
truy vấn sẽ đirợc sắp xếp theo nhfmu trường nào, thứ tự tăng hay eiảm.

4.2.4. Câu lệnh INSERT, DELETE, UPDATE trong ngôn ngữ SQL

T ro n e SQL, neirời la ciùn^ ba câu lẹnh INSHIIT, D E U Í Ĩ E .


U1’I)A ['E’ đề thao lác trèn dừ lièu.

124
I. l.ộnh I N S E R ỉ
Dạng (l(rn giàn nhât CUÍI lệnh ỈNSliR 1 la cliòti inộl ban uhi vào bang.
C’húng ta phai clii r;i têii hiing \ a daiiỉi sácli gồm uiá trị cua các Irưànti.
H anli sách g i a trị c a c IriRTiig n à y có ihC' đ ư ợ c liệl kê theo ihứ tự các

triròim cua báim. Vi tiụ. dè thèm một nhàn viên m(Vi \ à o bàĩi^
fỉM PI,()Y Ỉ'1- chúnu, ta ihực liiện càu lệnh sau.
ì n s i ;fiT IN r o Ni l Ả N V i r N

V A L I J Í : S ('N V0 75', 'Hoàng i hanh'. ' i ung'. '3 0 ^ 2 / 6 2 '. 'llà N ộ i ’, 'Nam',
37000, ' N V 0 14 ' , 4) ;
Dane thứ hai cùa lệnh !NSf'R Ị là cl)o hạn chế các trưáiiii được thiết
lập giá trị khi chèn một ban ghi banu cách chi ra tưcmg minh danh sách
các trường tirmm ửna. '!'uỷ chọn này được sử dụng khi bàng cỏ nhiều
trường, tronụ khi nuưòi d ù nạ chỉ m uốn thiết lập giá trị cho một số
trưòrm troiig bản uhi mới. Các trương khôní 4 được thiếl lập tiiá trị sẽ lấy
giá trị mặc định hoặc rỗnu (NuU). Ví dụ. dè nhập inột nhân viên mới chi
với một so thông so như họ. tôn. mã số đ a n \'ị và m ã số nliân viên,
chúnu ta thực hiện câu lệnh ;
INSHRT INTO NHÃN_V1ÊN(I iọ__dện), rên. Mã_số ĐV, Mã số_NV)
V A L U IĨ S ('I loáng rhaiih'. 'Mai', 4, 'NV02S') ;

Các thuộc tính k h ô n a được ihiềl lập uiá trị trt)ntí câu lệnh trên sẽ lấy
t>iá trị mặc định hoặc khỏim xác định (Null). Có the clìèn vảo một lúc
nhiều bản ghi bằim cácli đô tiiá trị mỗi ban uhi vào trone dấu ngoặc đem
và các bán ghi được cách nhíiii bới dấu phấ>.
Một hệ quàn trị cơ sở dừ liệii tuân iheo tất cà đặc tả của phiCMi bản
SQL-2 sẽ hồ trợ các ràng buộc toàn vẹn trong các câu lệnh D DL (Data
Dclìnition I anguagc). Tuv nhiên tm n u thực tc, một sô hệ quàn trị không
thoá màn điêu này bài những Iiỉià phái triên càn Iihăc giữa toàn vẹn dữ
liệu và tính liiộu quà cua hệ thốnu do việc tiiàn thù hết các ràng buộc !à
công việc khó khàn, dồim thời cũng là ntiuyên nhân chính khiến tốc độ
xử lý của hệ thống chậm lại. Cụ thể nhất là hệ qiiàii trị M y S Q L (tinh đcMi
thời điểm hiện tại) không cho thiết lập ràne buộc toàn vẹn tham chiếu
(Refercntial intcí;ritv constraint) giữa các báng do M y S Q L m uốn giữ
dược ưu thế tuvệt đối cua nỏ là hệ quản trị cơ sờ dữ liệu nhanh và lỉọn

125
Iihẹ. 'I rong những triÙTng hợp như vậy, người sử dụnu phái tự hắt lỗi va
xư lý.
Câu lệnh IN S E R T sẽ gặp lồi trong trường hợp một trường nào đó co
ràng buộc N O T N U L L , nhưnu lại không dược thiết lập giá trị khi chèn
một bàn ghi mới,
Ví dụ :
INSHRl' INTO NIỈÂN_VlÊN(Họ đệm. Tên. Mã sốJ)V )

VALUES ('Hoàng', 'Hài', 5) ;


Lệnh trên sẽ gặp lồi, bời vì thuộc tính M ã_ so _ ỉ)V cỏ ràng buộc
NOT N U L L nh ưn g khô n g được thiết lập.
Một biến thế khác cùa lệnh iN S E R T là chèn một lúc nhiều bán ghi
sau khi tạo bàng. Ví dụ, để tạo một bảng tạm thời có lên. số nhàn viên,
và tổng lương của các nhân viên trong các đ(7n vị, ta thực hiện lệiih :
CREATE TABLE ĐƠN_VỊ_INFO
(Tẽnđơnvị VARCHAR(15),
số_iihân_viên INTEGER,
Tổng_lương INTEGER) ;
INSERT INTO ĐƠN_Vị_INFO(Tên_đơn_vị, số_nhàn_viên. Tổng lương)
SELECT Tên_ĐV, COUNT(*), SUM(SALARY)
FROM (ĐƠN_VỊ J01N NHÂN_V1ÊN ON ĐƠN_VỊ.Mã_số_ĐV =
NHẢN_VIÊN.Mã_số_DV)
GROUP BY Tên_ĐV ;
Bảng Đ Ơ N _ V Ị _ l N F O được tạo ra bởi lệnh tạo bảng và chứa diì liệu
được tổng kết từ câu lệnh INSERT. C húng ta có thể thao tác trên bàng
Đ Ơ N _ V ị_ IN F O như trên các bàng thông thường và khi không cần dến
nữa, ta có thể loại bỏ nó bằng lệnh D R O P TABLEi. Nên nhở rằng, bàniz
Đ Ơ N _ V Ị_ IN F O k h ông được cập nhật thông tin mới khi sửa đôi dừ liệu
trong hai bảng Đ Ơ N _ V Ị và N H A N _ V IÊ N .

2. L ệnh

DELETE
Lệnh này d ùng để xoá các bản ghi trong bàng. Có thổ dùng mệnh dề
W H ERE để lựa chọn các bản ghi muốn xoá. rại mồi thời diểni, chi có
thể xoá được bản ghi từ một bảng nào đó. Tuy nhiên, nếu chiìiiư ta /T
dụng các sự kiện cho ràng buộc toàn vẹn tham chiếu thì khi xoả baii i;l''

126
trong một bảng lại ánh hưởng đến sự tồn tại cùa các bàn ghi trong một
bảng khác. Neu thực hiện lệnh này m à không bao gồm mệnh đề
VVHERH thi tất cà các bàn ghi trong bảng sỗ bị xoá. Kết quả sẽ tương tir
nếu triRTng hợp có m ệnh đề W H E R E , nhưng điều kiện là luôn đúng với
mọi bàn ghi. Sau dây là ba ví CÌỊỈ khác nhau về lệnh xoá dữ liệu.
FROM NHÂN VIÊN
WHERE Tên = 'Vân';

DÍỈLETE FROM NHÂN VIÊN


WHERE Mã_số_NV = 'N V 0 0 r ;

DtiLETE FROM NHÂN_V1ÊN


WHERE Mã số ĐV !N (SELECT Mã số ĐV
FROM ĐƠNVỊ
WHERE Tên ĐV = 'Nghiên cứu’) ;

3. L ệnh Ư P D A T E
Lệnh này được dùng đế sửa đổi giá trị các trường cùa các bản ghi
trong bảng. C ũng giống như lệnh D E L E T E , có thể sứ dụng mệnh đề
W HERE trong lệnh này để lựa chọn các bản ghi cần cập nhật dừ liệu.
Tuy nhiên, sửa đổi giá trị của trưòrng khoá chính có thể kéo theo việc sửa
đổi giá trị các trường khoá ngoài nếu thiết lập ràng buộc toàn vẹn tham
chiếu giữa các bảng với tuỳ chọn O N U P D A T E (S E T D EPAULT,
SET NƯLL, C A S C A D E ). M ệ n h đề S E T trong lệnh này xác định giá trị
cập nhật cho các tnrờng. Ví dụ, để thay đổi địa điểm và mà số đom vị cùa
dự án số 10 thành 'Hà Đông' và 5, chúng ta sử dụng câu lênh sau ;
UPDATE Dự_ÁN
SET Địa_điểm_DA = 'Hà Đông’, Mã_sổ_ĐV = 5
WHERE M ã _ s ố _ D A = IO ;
Nhiều bàn ghi có thể bị sửa đổi trong một lệnh Ư P D A T E. Một ví dụ
là tăng 10% lương cho tất cả các nhân viên trong đơn vị 'Nghiên cứu'.
UPDATE NHÂN_VIÊN
SET Lương = Lương * I . I
WHERE Mã_so_ĐV IN (SELECT Mã_số_ĐV
FROM ĐƠN_Vị
WHERE Tên_ĐV = 'Nghiên cứu') ;

127
I rong càu iệnh nà>. khônụ thê lliiềl lập i!Ìá Irị rỏiiii Ik»;k iiicK: địníi
cho trircnig. Nliơ rãnu. mỗi càu lẹnh ỉ: tại mộl llicri ilicm chi thao
lác dược ircii một trường duy nhất mà Ihòi. Muốn ihực hiẹn cáp nhật
tròn nhièu trirờng. liãv sư ciụnu nhicu câu lệnh.

4.2.5. Khung nhìn (view) trong ngón ngữ SQL

I roníi phàn nà>. ciiúim la !àm quen với kliái niệm khunu nliiii troiie
SQI., Sau đó lim hiẽu cơ cliè lạo khuim nhìn trong >:ác hộ cỊLian irị ca sơ
dừ liệu cùnu nhir \ ấ n de cặp nhật khunii nhin như tliế nào,

1. Khái niệm về k hu ng nhìn (biing áo)


1 'huậl ní>ĩr khuiig nhin (\ ic\v) hay bánu ao (virtuíil tablc) duiit’ de chi
một baim dược định nehĩa dựa trên các bane tièn dè. Các baim tiên dề co
thê là bunu cơ sơ (chứa dữ liệu thật sự), hoặc là klìunu nhiii dà tồn tại.
Khác vói bảnu cơ sơ, khiiim nhin khỏim chứa dĩr liệu thực sự niii chi là
một banư ảo. Có thô hị ^iới hạn khi tiến hành cập nhật ihỏnu t]ua khune
nhin. n hưn <4 không có ííiới hạn nào đoi với tru} vấn.
Chúnii ta cỏ thê hiếu khunu nhin là một banu dược sư dụnu thirờnii
xuyèn, mặc du no không chửa dừ liệu thực sự. Ví dụ, ta thương xuvcn
thực hiện truy vẩn về tên dự án và các nhàn vicn làm việc tronc dự án.
'I hay \'i sư dụng niộl truv vấn thirờnu xuyên bang cach tạo ra một khun‘j;
nhìn, sau dó mồi lân cần đốn sẽ thực hiện một iriiv vấn đ(vn gián trên
kliiing nhÌM vừa tạo.

2. 'Fạo k h u n g rthìn t r o n g S Q L
I.ệnh đè tạo khunu nhìn là CRIỈA rii VIEW. Một khunL’ nhìn dược
xác định bởi tèn. danh sách các Ihuộc tính. Trong trưừnu liựp khóim clìi
ra danh sách tliuộc tính. CRHATE V1HW sẽ mặc dịnh lay tất cả các trườnu
trong các báng tiền đề. Sau đây là hai \ i dụ về cách tạo khuny nhìn.
Vi dụ I :
CRF',ATí ; vinvv NMẢN VIHN_DỤ'_ẢN_I
AS SKl.HC' !' liọ đệin, Tên. Tên_DA, số giờ
l-ROM N[IÂN_V1[';N. DỰ_ÁN. NỊiÀN_VỈHN_DỤ_.AN
WHl:RI-; Ní !ÂN_VlÊN.Mă_sổ_N V = NHÂN_VỈÊN_DỤ_ÁN. Mã_số..NV
AND DỤ'_ÁN.Mã_số_DA = NHẢN_^VIẺN_DỤ' ÁN Mã sỐ_J)A •

128
I 'ì í /ụ 2 :
(.'R1:,A I B V l i ; w D Ơ N VỊ JN'Í o
( rên_đoìr vị VARCMAĨÍÍ15),
Số nhâii viên INTF:XiFíR,
r ổ n g lirơng IN Il-CìHR) ;
AS s i :i j :c '[ r è n J )V . C'C)L'N ỉ'(*). suM (S A L A R Y )
IR O M (DON_^VỊ J()1N NliẢN_VI[-N ON DƠN_VỊ.Mã_số_ĐV =
NMẢN_VỊÊN. Mã_số_DV)
GROUP BY Tên ĐV ;
1 rong ví dii 1 , chúng ta không chi ra danh sách các thuộc tính cho
NIiẢ N V I Ê N _ D ự _ Á N _ l , nên khung nhin này lấy toàn bộ các thuộc
tính sau mệnh đề S H U íC r. Trontì ví dụ 2, chúng la chỉ ra một cách
tườnu minh tên các trườim. nôn các thuộc tính của khung nhìn
ỉ)C)N_VỊ_INFO không lấy lên mặc định cùa các ihuộc tính sau mệnh đề
SELEC 1’ nữa. Và từ lúc này trớ đi, khi gặp phải một yêu cầu phức tạp
trèn các báng tiền đề, ta có thề thay thế bàng một taiy vấn đơn giàn trên
khunu nliin vừa được tạo.
Kốt quá cùa vi dụ 1 ;
' NHÂN_VIỂN_DỰ_ẢN_1 Họ_đêm Tén Mă_số_DA số_giờ
Lê Vân 1 32
-*?
Lê Vân 2 /
Nguyễn Sơn 3 40
Vũ Hương Giang 1 20

Vũ Hương Giang 2 20

Trần Đức Nam 2 10

Trần Đức Nam 3 10

Trần Đức Nam 10 10

Trần Đửc Nam 20 10

Hoàng Thanh 30 30
Hoàng Thanh 10 10

Trần Lê Hoa 10 35
Trần Lê Hoa 30 5
Phạm Bầng 30 20

Phạm Bàng 20 15
Hoàng Giâp 20 null

129
Kêl qua cua V! ( i ụ 2 :

ĐO’N_VỊ_INFO Tên_đơn_vị số_nhân_vién T ỗ n g jư ơ n g

Nghiên cứu 4 13300

Hầnh chính 3 9300

Lânh đạo 1 5500

Ví d ụ : I)ế lấy họ, tên cúa tất cả các nhân viên iàm việc cho dự án
'DAOr. chúníi ta tận dụnu khung nhin NI IÂ N _V IÊ N _D Ụ ’_ ÁN_1 bằniỉ
truy \ẩ n d(yn gian như sau (thay vì thực hiện một íruy vấn kết nối giữa
các hang tiên dề N H À N _V IÊ N , D ự _ Ả N , N H Ả N _ V I Ê N _ D ự _ Á N ) ;
SÍ-I.nCT Họ dệm, Tên
FROM NHÂN_V1ẺN_DỰ_ÁN_1
WHERH Tôn DA = ’DAOr ;
Khác với bảng tạm thời, khiinc nhin luôn cập nhật dữ liệu mới nhât
lừ các batm tiền de. Neu khônti cần sử dụng khung nhin nữa, có thể dùnu
lệiih [)R()P VIl:W dê loại bó chúng.
Ví dụ : DKOP V1EW Nỉ 1ẢN_VIÊN_DỰ_ÁN_1 ;

3. Co’ chế tạo k h u n g nhìn trong S Q L


Kliunụ; nhìn thực sự hữu ích và thuận tiện cho người dùng, nhưng
khó khăn lại đè nặim trên vai những người thiết kế các hệ quản trị cơ sỏ
J ữ liệu, b(ri vì câu liỏi "Thi hành khung nhin trong các hệ quàn trị cơ sơ
íỉừ !iệu làni sao đê đạt hiệu quả cao nhất ?". Trong thực tế, có hai chiếỉi
iirợc tiếp cận khác nhau. Chiến lược thứ nhất lỉọi là sứa đôi truy vun
íquerv niodincation). Cách này liên quan đến việc sửa đồi truy vấn
khune Iiliìn thành một truy vấn dựa trên các bảng cơ sở. Điểm yếu cùa
cách tiếp cận nàv là khó địnli nghĩa được khung nhìn thông qua các truv
vấn phức hợp. Chicĩi lirợc thứ hai được cọi là vcit thê hoủ khung nhìn
(vicvv inaleriali/.ation) liên quan đến việc tạo các bàng vật lý tạm thòi
khi khunu nhìn lan dâu ticn được gọi, và sau đó được lưu lại với phỏnu
tloáii sẽ có các lần ụọi tiếp theo. Theo cách này, vấn đề sẽ này sinh khi muốn
giữ khun.íi nhìn luôn được cập nhật dữ liệu từ các bảng tiền đề. Một cư
chế dè khắc phục yếií điêin này là áp dụng khái niệm cập nhậi tăng.

130
'1 lico C(y cliê n à \. thi klii cac lệnh DMl dược thục hiện tròn các háng
licn dè dcu dược cập nhật vào bánu lạni thơi cua khunti nhin. lianụ tạm
lliơi sẽ khỏim dược xoá chirnu náo tân sô sư (lụnu khunụ nhìn chưa giam
dư(W niức cho trirứí:,
Cập Iiliậl kh un u nliin lừ các hanụ tièn de là một c ô n g việc lirmm đối
kho khăn \ à có thc bị nhâm lần. NíSi cliuiiíi, một tliao tác cập nhật trên
khuim nhiii dược định nuliĩa tivn inột banu dơn và khônu chứa hàm
nhóm sẽ dược ánh xạ vao tronu các baim tiền de. Đối với khung nhìn
diíợc tạo tử việc liên kết các bànii tiền dề. một thao tác cập nhật có thể
duạc ánh xạ thành thao tác cập nhật Irên các bánii tiồn đe theo nhiều
cách khác nhau. f)ẻ chi ra các vàii dè cỏ thè náy sinh khi cập nhật các
khuiìL’ nliin được dịnh nuhĩa từ nhiêu biiim tien đồ. hã> xem xét khung
nhìn NI IẢN_Vlf:N _í)Ụ'_AN_l \ à Líia sư ràim, chútm ta thực hiện thao
íác cập nhật sau :
i;PDA'i'L NI !ẢN VlHN Dl i_ÁN J
sr.l' Tỏn DA 'I M 0 2 '
\ \ 11í ;KÍĨ 1lụ đệni - ' Trân Dửc' A N D r ê n = ' Nam'
ANI> lẽn_l)A = 'DAOl' ;
] liao lác cạp nhật này có tliê dưạc ánh xạ vào một vài Ihao tác cập
nhậi trên các bàim lièn dề dè có dược một kèt quà m o n ạ muôn. Sau đây
là hai khá nănu (a) và (b).
(a) :

UPDA !'!-, NHẢN V1Ì:NJ)Ự ÁN


Si: i' Mã_số i:)A = (Sl'l l ('T Mã_số_DA
1 ROM [)Ịi'_ÁN
\VII1;K1; TC-n_13A = 'DA02')
w 111: i<I•. Mà_sỐ_N V IN (s 1•:l, 1;c 1 Mã số_N V
1 ROM NHẢN_V1HN
\V1ICRI: llọ_đC'ni - Trằn f)ửc’
AND fôn = 'Nam')
AND Mã số DA IN (SIỈLEC'T' Mã_sổ_DA
FROM DỰ_ẢN
WHl-RB rên_DA ='DA01') ;

131
(b) ;

lỉPDATP i:>ụ ÁN
SI- ! l ôn DA '!3 A 0 2 '

\v i i i :r i , 'len da 'D A O r.

4.2.6. Các ràng buộc tổng quát thông qua câu lệnh CREATE
ASSERTION

ĩroníỊ SQL-2. nụười dùnu có the tạo ra các rànu buộc tổng quát,
dạim ràne buộc này khỏnu được xếp vào bất kỳ dạng ràng buộc nào đã
giới thiệu ờ trên, riiôníi qua chì dẫn assertions, chúne ta sứ ciụng càu
lẹnh C'RI£A ĨEi A SS E R I ION như một câu lệnh DDL. Mồi assertion
được tạo ra sẽ có một tên tươĩiíi ứng. Vi dụ, để tạo ra ràn s buộc "l.irơnu
cùa một nliàn viên không được lớii hon ỉưcmg cùa đcm vị trirờntí". trong
SỌI.-2 ta sử dụnii câu lệnh sau :
C RtA TE ASSIiR'1'ION
CHBCK ( N O T HXISTS ( S E L E C T ♦
FROM NHẢN__VIẺN NV, NHÂN_V1ÊN NVl,
ĐƠN VỊ ĐV
\ \ H E R E N V. L ươn g > N V 1. L ươn g
AND NV.Mã_số_ĐV = ĐV.Mã_số_ĐV
AND ĐV.Mã_số_NỌL = NVI .Mã_số_NV));
Ten cua rànu buộc có thế đirợc dùng để tham chiếu tới khi muôn sửa
đối hoậc xoá rànti buộc dó. Hệ quản trị cơ sở dữ liệu chịu trách nhiệĩTi
đàm bào ràníĩ rànc buộc trên không bị vi phạm. Bất kỳ mệnh đề
WHHRI' nào cũnc có thê dược dùng, nhưng rất nhiều ràng buộc tồng
quát chi cần sử dụnu hàm tồn tại (E X IST S) hoặc không tồn tại ( N o r
í ;X1STS) là dủ.
N hó răim, mệnh đề CHHCK và điều kiện ràng buộc có thể được
dùim V(VÌ lệnh ( ’RF,A'rr. D OM AIN đề tạo ra một ràng buộc trôn một
miền CỊI thê nào đó như là hạn chế tiiá trị cùa một vùng vào một mièn
con nào dó. Ví dụ. đẻ hạn chế iiiá trị của M ã _ số _ Đ V là một số nguyên
nằm siữa 1 và 20 , ta có thể viêt :
CREATE DOMAiN MẢ_SÓ_ĐƠN_VỊ AS INTEGER
CHECK (MẢ_SÓ_ÍX)N_VỊ > 0) AND MẴ_SÓ_ĐƠN_VỊ < 21) ;

132
4.2.7. Một số tính náng khác của ngôn ngữ SQL

Nạoài các tính năng đã dược de cập Ironu chưcme nàv, SỌl . vẫn còn
một số tính năng kliác chưa dược xem xét. ('húng bao uồm ;
- SỌL có inột dạnu lệnh nữa đe gán quyền truy cạp hệ thoiiíi hoặc
dối tượng cho người dùim như G R A N T hoặc RỉvVOKi;,... Chúnẹ
thưtyiiu được phân vào nhóm l^Cl. (Data Control I.anmiauc).
- SQI, có Ihể dược nhúng tront> các imôn rmừ cliu như CVC++.
COBOL, PASCAL, de tạo ra các chirưim trình đa nãnu V(ýị sức mạnh
được tận dụnạ từ hai dạnu nạôn imữ. Với cách nhúne như vậv. các điêu
khiên truy cập dữ liệu từ nuôn nuữ chủ thườim tỉiôiiíi qua con trò (cursor).
- SQL hồ trợ giao tác (transaction).
- Mỗi một hệ quàn trị c o sử dừ liệu tliưtmg mại, nuoài \ iộc tuân
theo đặc tà của SỌL-2 còn có thêm một vài línli năng mới với mục dích
là thuận lợi hơn cho người dùnu.

4.3. VÁN ĐÈ TỐỈ ƯU TRUY VÁN

4.3.1. Các bước xử lý truy vấn và vấn đề tối ưu

Một iruy vấn viết troniỉ ngôn ngừ bậc cao ihirờng được hệ quàn trị
cơ sơ dừ liệu thực hiện theo các bước như sau :
Bước ì : Truy vấn được quét đê xác định xem nó được viết trong
ngôn ngữ nào. Sau đó nó được kiếm tra cú phap để phát hiện các lỗi, và
nó dược xác nhận hợp lệ, tức là kiểm tra xem các quan hệ, các thuộc tính
sư dụng trong triiy vấn có ở trong lược do của cơ sờ dữ liệu dược truy
vấn hay không. Cuối cùng, truv vấn dược chuyển thành biếu diỗn bèn
trong (một biêu thức đại số quan hệ) thưcnig là dưới dạng niột cây truy
vấn. C"ây truy vấn là một cây biểu diễn một biếu thức dại số quan hệ,
trong dó các đinh trong biểu diễn các phép toán, cấic lá biều diễn các
quan hệ tham gia vào các phép toán.
Biárc 2 : Bộ tối ưu truy vấn (Query optimiser) cúa hộ quàn trị cơ sở
dữ liệu sẽ đưa ra một chiến lược thực hiện để lấy ra kết quả truy vấn từ
các lĩle cơ sở dừ liệu. Một truy vấn thưừna có nhiều chiến lược thực

133
hiện, nó phụ thuộc \'ào cách sáp \ô p ciic ỉllc cơ sò ciữ liệu trên bộ nii(V
ntioài và thuật toán tliực hiện các phé|) loáii đại sổ quan liệ. Hộ tôi ưu
truy van sò chọn một chiC'n lược piiù hợp dê xứ lý iruy van \ à quá iriiil)
chọn một chiên lược nlur \ ậy gọi là lối iru Im y vãn.
Bước 3 : fk) lạo niã cho truy \ â n (Ọucr\ codo iicneraior) sẽ tạo ra
một chương trình dô thực hiện tru\ \ ãn.
Biarc 4 : fỉộ xir lý co sớ dữ liệu thòi uiaii chạy (Runlime databasc
processor) sẽ chạv chưưnẹ li inh dô dưa ra kết qua.
rối ưu truv vấn ơ dây được biêu là tìm một phươnu án hiệu qua \ à
h(Tp lÝ cho việc thực hiện truy vấn. Diều dó phụ thuộc rất nhiều yeu lồ :
các file c ơ s ờ d ừ liệ u được lư u t r ữ t r ê n b ộ n h ớ Iiíỉoài t h e o cách nào (sáp
xếp luần tự, sẩp xếp theo niột trường dược sáp hay có fìle chi mục),
thuậl toán để thực hiện các phép toán (Ví dụ : Tìm kiếm tuần tir hay tim
kiếm theo chỉ so, chi mục), ihứ tự thực hiện các phép toán, iziá lưii trữ
các nie...
Do chúng ta chưa có đầy du kiến thức về cách tồ chức các nie trên
bộ nhớ ngoài cũng như thuật toán thực hiệi) các phép toán, nôn Irony
phần này chi xét đến việc tối ưu theo cách lãiii thay đổi thứ tir thực hiện
ban đầu của truy vấn, nghĩa ià biến dổi biểu thức quan hộ ban đầu thành
một biêu thức tưcrng dirưne, Iihirnu "hy v ọ i m ” sẽ dư ợ c thực hiện nhanh
hơn. Phương pháp tồi ưu như \'ậy gọi là phươnịỊ, p h á p toi Uĩí haiĩịĩ đánh
Ịỉiá kình nịỉhiệm (Hcuristics). l'ư tưởng cùa thuật toán dựa irên nhận xét
như sau : Việc thực hiện các phép toán một ngôi (phép chiéu, phép
chọn) thường cho kết quà lá một quaii hộ có kich thước bé hon kích
thước quan hệ toán hạnu, còn các phép toán hai nỉỊÔi (phép nổi, tích
De-các) ihưcmg cho kết quá là một quaii lìệ có kích thước kVn hơn kích
thước của quan hộ toán hạnu. Vì vậv. dế tiết kiệm thời gian thực hiện
phép toán cũntỉ như khônụ Iiian Uru trữ. nmrời ta tìm cách biến đổi biêu
thức ban đầu thành một biếu thưc tưcmg dưíYiig, sao cho các phép toán
một nsỉôi được thực hiện trước các phép toán hai ngôi, đồng thời giâm
bớt kích thước cùa các quan hộ tham íỉia vào các phép toán lìai neôi nêu

134
tl !Jiỏu dỏ thực hiện dược nhờ sử dụng các hicii clỏi tinnm diriniư
..Lii) sú quan liệ.

4.3.2. Các phép biến đổi tương đương của đại số quan hệ

C húng ta có các quy tấc biến dồi tương đưcrng sau dây ( ( '| là diêu
kiện, 1 . là danh sách) :

- Q u y tắc 1 : ANIX'„)

Một phép chọn với điều kiện chọn là lổ hợp của một dãy phép
chọii dơn tương đươnạ với một dãy các phép chọn vói diêu kiện
chọn là một điều kiện chọn đem thành phần.
- Quy tấc 2 : = (R))

Phép chọn có tính chất giao hoán.

- Q u y tắc3 : 7 T i ^ ( 7 Ĩ L , ( R ) . . . ) = 7ĨL,(ỉ^)

Một dãy các phép chiếu tưong đương vứi phép cỉiieu cuỏi cùiig,

- Ọ u y tác 4 : 7ĩị,(ơc(R)) = ơc :( tci (R))

Phép chiếu giao hoán với phép chọn.

- Ọuy tắc 5 : RCX cS = ^ I X C'R ; R X s = s X R

Phép nối và phép tích Đề-các có tính giao hoán.

- Quy tác 6 : ơc(R [X ]S ) s ( R ) Ị X ] Ơ(^^{S)

trong đó : c = C'i A N D C 2 , C| chi chứa các thuộc tính của R ;


C 2 chi chửa các thuộc tính của s. Tương tự như vậy đối với phép
lích f)ề-các.

- Quv tấc 7 : Nếu L = (Aị. À 2 ,..., An, B|, Bn) ; A |, Ai,..., A„ là


các thuộc tính của R và B|, B 2 v , Bm là các thuộc tính của s thì :

7ĨI.(RDX1c S ) = (7Ĩa„A,.

N c u L ” (A.Ị, A.29--M Ap, Ap+Ị,..., An-ỉ-p-* B ị , l Ì 2 v ^

A i, A 2 v . An là các thuộc tính cùa R ; B |. Bni là các thuộc

135
tính cùa s ; A„ 4 p, ỈỈ„1 .|,... lìnnq là các thuộc tinh có
trong điều kiện nối c thi :

— (^.\. A, A A I A D x 3 C^ ^ B, n, H A , A ( 1^ ) )

- Quy tắc 8 : R u s = s u R ; R o s s s o R
Các phép toán hợỊi và Ịiiao có tính giao hoán.

- Q uy tẳc 9 ; (R 0 S) 0 T s R 0 (S 0 1)

trong đó : 0 là một troim các phép toán nôi, tích Đe-các. htrp. giao.

- Q uy lẳc 10 : ơ c ( R 0 S) s ơc (R) 0 ơc (S)

trong đó ; 0 là một trona ba phép toán tập hợp : phép hợp, phép
tỉiao, phép Irìr.

- Quy tắc 1 ] : 7Ĩ| (R S) = ĨĨỊ ( R ) K ị (S)

Phép chiếu giao hoán với phép hợỊ 5 .

- Q uy tẩc 12 : N ế u tích Dề-các tươim ứng với điều kiện nối ihì :

a c ( R X S) = ( R t X l c S )
Á p d ụng các quy tắc biến đổi trên, chúng ta có the biến dôi mội
biểu thức đại số quan hệ thành một biểu thức tương đương ("tối
ưii" hom).
Ví dụ : Xét truy vấn trên cơ sở dữ liệu C Ô N G TY ừ chương 111 :
"Đưa ra họ đệm, tên cùa các nhân viên sinh sau năm 1975 và làm việc
cho dự án có tên là 'DA02'". Truv vấn được viết trong SQL. như sau :
SELECT Họ đệin, Tèn
FROM NHÂN VIÊN NV, NỉiÀN VlẺN DỤ ÁN NVDA, DỤ ÁN DA
WHERE (Tên DA = 'DA02') AND (DA.Mà số DA = NVDA.Mã_số_DA)
AND (NV.Mã_số_NV = NVDA.Mã_số_NV)
AND (Ngày_sinh > ' 1975-12-31') ;
Các bước tối ưu truy vấn được tién hành như sau :
Bước ì : Biểu diễn truy vấn dưới dạng cày truy vấn ;

136
^ Ho đệm Tôn

ơ (Tên_DA = 'DA02’) AND {DA Má_Số_DA = NVDA Mâ_số DA)


AND (NV Mâ_SỐ_NV = NVDA Mâ_số NV) AND ÍNgày_sinh > -1975-12-3r)

B im v 2 : Bicii phép chọn với điều kiện hội thành một dãv các phép
chọn ((^uy lấc ( Ọ l ) 1). Sau dó sử dụng tính chất giao hoán cua phép
chọn dổi \ ới các phép toán khác (QT2, QT4, Q T 6 , QTIO) dể đưa các
phép chọn x u ố n i í dưới lá càng sâu càng tốt. Ta có cây n h ư sau :
^Ho_độm,Tén

ƠMâ^sổ_DA == Mâ_sổ_DA

ƠMâ_sổ_NV s Mâ_số NV

<^Tèn DA = 'DA02'

137
Ikrớc 3 : Sừ dụm; các Q '15, Q 1 9, tính cliấl ụiao hoán và kết liạp cua
các phép toán hai ngôi dể sẳp xếp lại cây. ']'a có cây như sau :
^H ọ đệni.Tén

^ Mâ_sò,NV = Mâ_số NV

<^Mâ_sổ_DA * Mâ_sổ_DA <^Ngáy sinh >-1975-12*3V

ỉìư ớ c 4 : Sử dụnti ỌT12. thay một phép chọn trong một tích Đề-các
thành phép nối, ta có cây :
^H ọ độm.Tén

B ước 5 . Thcrn vào các phép chiếu đê làm giảm bớt kích thước cùa
các file. Phép chiếu chi giữ lại các thuộc lính nối và các thuộc tính cần
cho các phép toán đi sau. Ta có cây truy vẩn cuối cùng ;

138
^Ho đêm,Tên

Mả_số^NV = M3_SỐ_NV

^W ả_sồ_NV ^ M â _ s ố _ N V , Ho__đẻm, T ẻ n

Mả số_DA = Mả số DA Í^Nqầy sinh >'1 9 7 5 -12'31'

^M â_sô_DA 7tMả_số_NV, Mâ_số_DA NV

NVDA

DA

Như \ ậ \ , từ truv \ ấn han dầu :

^ l l ọ đệm. T c n í ^ lên l)A - 'DA02' A N D Ngày sinh > 'I975-12-;ỉ 1'

(NHÂN_VIÊNX3Ma_sổ_NV
N l l Ả N _ V I Ê N _ D ự _ Á N t X ] Mă S Ố ..D A DỰ_ẢN))
Chúni’ ta dã "toi ưu hoá" và nhận được truy vấn :
dộiii, rc-n sô, K v ( ^ M â _ s ố _ I , ) / \ ( ơ 1è n _ D A = ' l) A02' ( r ^ Ụ _ A N ) ) )

s ố _ D A Í ^ M a số N V . Via sổ n A ( N H Ả N _ V I Ê N _ l ) Ụ _ Á N ) ) )

sỏ _ N v ( ^ M A sồ N V , Họ độm, rên(<^Ngàỵ sinh > ' 1 9 7 5 - 1 2 - 3 r ( N l I Ả N _ V I Ẻ N ) ) ) )

4.4. TỐ NG KẾT

- Phàn 4.1 cùa chương này dành cho việc trình bày các phép toán
tièn cơ s a dữ liệu quan hệ. Các phép cập nhật trên mô hinh quan hệ gồm
ínsert. Delcte. Update. Mồi một phép toán có thể vi phạm các kiéu rànii

139
buộc nhấl định. Mỗi khi niột phép toán duợc áp clụnụ. trạng thái cơ sơ
dữ liệu sau khi phép toán được thực hiện phái được kiồm tra đc dam bảo
rằng, không cớ một ràng buộc nào bị vi phạm.
Tiếp theo cluìng ta đã mô ta đại số quan hệ cơ sơ, dỏ là một tập hợp
các phép toán thao tác quan hệ và có thể được sử clỊinti dế đưa ra các truy
vấn. Chủng ta cũng đã định ntỉhĩa và phân tích cách sứ dụng các phép
toán như chiếu, chọn, tích Đe-các, nối, phép đặt lại tên. Các pỉiép toán
tập hcrp như uiao, hc.yp, trừ cũnu dược định nghĩa và phân tích. C"uoi cùnu
chủng ta tháo luận về các kiêu truy vấn quan trọng khôiig llic sư dụng
được các phép toán đại số quan hệ co sơ. Dồnu thời đã tĩiới thiệu phép
toán hàm nhóm đế làm việc với các kiểu yêu cầu nhóm. C'ác kicu truv
vấn đệ quy cũnu dược thào luận và giới thiệu cách clii ra một so kiêu
Iruy vấn ciệ quy. Các phép nối ngoài, hcrp nuoài, mơ rộng cúa phép nối
và phép hợp cũnti được đề cập dến.
- Phần 4.2 dành giới thiệu về ngôn ngữ SQL. lìán dặc ta SQL-2
hoặc một vài biến thể cùa nó được tích hợp vào các hệ quàn trị cơ sở dữ
liệu thương mại như IBM DB2, ORACLE, IN PO R M ỈX , SYÍÌASE....
Phiên bản đặc tà SQL đầu tiên được thi hành Irong hộ SYS'l E M -R của
hãng IBM. SQL được thiết kế nhằm dể cunụ cấp một giao diện giữa
người dùna và hệ quản trị cơ sở dữ liệu với các thao tác nhir tạo, xoá,
cập nhật bảng, tạo khung nhìn, tạo ràng buộc,... Các tính năng quan
trọng đã được giới thiệu trontĩ từng phan. Trong phần cuối cùng, chúng
tôi giới thiệu thêm một số tính năng quan trọng của SQL nham đem lại
cho bạn đọc một cách nhìn tổng quan về nsỊÔn ntỉừ này.
Tuy chưcmg này chù yếu bàn về SỌL-2. Các bạn đọc có thể tham
khảo các tài liệu [ 1 ], [2 ],... đề biết ihêm các chức năng khác chưa được
trinh bàv ở đây cũng như các khá năng dược bồ sung trong SQI .-3.
Bàníĩ sau đây tổnu kếl cú pháp của SỌI ,-2 dưới dạng tóm tảt, ngắn
gọn và tiện cho tra cứu. Trong bảng này một số ký hiệu được sử dụng
như o (ký hiệu không kết thúc), [ | (ký hiệu tuỳ chọn). {} (ký hiệu lặp),
(I ị Ị) (ký hiệu thay thế nhau).
• CRBATE TABLE <Tên bàng>
(<Tên cột> <Kiểii cột> l<Kàng huộc cộl>|
{, <Tèn cột> <Kiểu cột> f<í<àng buộc cột>],}
[< ràng buộc bàng> {, <Ràng buộc bảng>}]) ;

140
• I)R()Ỉ> VAÌilAÍ <Tèn baiig>
• A\J'\:iR l A B l . Ị < T e n hàng>

• Aí)n < TCmì cộl > <Ki ề u c ộ t ^

• S í ;LỈ-X’ ĩ [Ỉ)ỈS riNC'ỉ I <I)anh sách thuộc tinlì>


ỉ ROM {<'ĩỏn báng> {Bí danlì} I <Bảnt’ được nối>)
I, (<Tèn bang> {Bí danh} I <Bàng được nối>)}
[ Wỉ n- : RH <ỉ)iềii ki ện>]
IGROUP lìY <Các thuộc tính nhóm>
Ỉ I A V Ỉ N G < Di ề u kiộn c họn n h ó m > ]
fORDFR BY <Tên cột> [<Thử tir>] <Tên cột> f<Thứ tự>
• < D a n h s á ch t huộc t í nh> (* 1 < T c n cột > Ị < M à m > ( ( [ D I S T ! N C T ]
< 1 èn cột> i *))), (<'rcn cột> I < H à m > ( { [ D I S T l N C T Ị < T è n cột> I *)))}))
• <Thuôc tính nhóm> <Tên cột> {, <Tên cột>}
• <Thứtự> (ASC I DESC)
• IN S E R T IN TO <l'ên báng>[(<Tên cột> {, <Tên cộ t > }) ]

( V A I U B S ( < Gi á Irị hầnt ’>, {<Gi á trị h ầ n u > } ) {, ( < G i á trị h à n g >
{, <uiá trị lìằna>})} I < lệnh select >) ;
• D E ư : 11- FR()M <Tẽn bàng>
W H E R [ ; < D i c u kiện c họn>] ;

• UPDATE <Tên bàng>


SBT <Tẽn cột> “ <Biều thức giá trị> {, <Tẻn cột> - <Biểu thức giá trị>}
WUHKB <Diều kiện chọn>] ;
• CREATi: [UNIỌI !1:1 INDHX <Tẽn chi số> ON <Tcn bàng>
rên cột> f<Thử tự>] {, <Tẻn cột> [<Thử tự>]})
[ClAiSIER]

• DROP INDHX <Tên chi số>


• CREA ĨB Vil-,w <Tên view > [(<Tên cột> {, <Tên cột>})
AS<Lệnh select>
• DROP VIEVV <Tèn view>
- Phần 4.3 cùa chương trinh bày một phương pháp tối ini truy vấn
(tối ưu heuristics). Tư tường chù yếu cùa phươiig pháp là áp dụng các

141
biC'11 dôi tiunm dưưnu các biêu thức dại số quan hệ. làm cli.) t ác pỉicp
toán n iộl n u ò i d ư ợ c t h ự c h iệ n trước c á c p h é p toán hai Iiíiỏi. t m i e dich là
làm giam kích thước các nie cơ sở clữ liệu trước khi thực hiện cac phcp
toán hai imỏi dế làin clio việc thực hiện biêu thức nhanh và tiết kiỌni
không I>ian Iihớ hơn.

C Â U HỎI ÔN T Ạ P

1 Hãy trinh bày các phép toán cập nhật trên các quan hệ vả các
kiểu ràng buộc toàn vẹn phải được kiểm tra đối với mỗi phép toán
cập nhật
2. Liệt kê các phép toán đại số quan hệ và mục đích của mỗi p h é p toán.
3. T ươ n g thích ià gi ? Vì s a o cá c phép toán HỢP, GIAO, TRỪ’ đòi hỏi
các quan hệ tham gia vào phép toán phải tương thích
4 Hăy nêu m ột vài kiểu truy vấn mà đối với chúng việc đặt lại tên của
các thuộc tinh là cần thiết để chỉ rõ tính không nhập nhằng củ^
truy vấn.
5. Trình bày các kiểu phép toán NỐI khác nhau.
6. Phép toán NỒI NGOÀI khác với phép toán NỐI như thế nào ?
7. Phép toán HỢP NGOÀI khác với phép toán HỢP như thế nào ?
8 . Bảng trong ngôn n g ữ SQL khác với quan hệ đ ư ợ c mô hình hoá
trong c h ư ơ n g III n h ư thế nào ? Bình luận về s ự kh ác nhau đỏ. Tại
sao SQL cho phép các bản ghi trong bảng có thể trùng nhau.
9. Liệt kê các kiểu dữ liệu trong SQL-2.
10. Co’ chế của ràng buộc thực thể (Entity integrity) vá ràng b u ộ c toàn
vẹn tham chiếu (R eíerentiai integrity constraint) trong S Q L-2 Ràng
buộc toàn vẹn tổng quát là gì ?
11. Nêu khái niệm khung nhìn trong SQL, cách tạo khung nhìn ? Co’
chế cập nhật d ữ liệu giữa c ác bảng tiền đ ề và khung nhìn ? Các
cách tiếp cận khác nhau trong thi hành khung nhìn trong các hệ
quản trị cơ sở dữ liệu.
12. Liệt kê và nêu c h ứ c năng của sá u mệnh đề trong một c â u truy vấn
SQL. Những m ệnh đề nào trong đó là bắt buộc, nhũ’ng m ệnh đề
nào là tuỳ chọn.

142
BÀI TẬP

1. Cho lược đồ c ơ s ờ d ữ liệu THƯ_VIỆN gồm :


SÁCH (Mã sách. Tên_sách, Tên_NXB)
SÁCH_TÁC_GIẢ (Mã sách. Tẽn TG)
NHÀ_XUAT_BẢN (Tẽn NXB. ĐỊa_chI, ĐiệnJhoạị)
SÁCH_BẢN_SAO (Mã sách, Mã nhanh, Số_lượng_bản_sao)
NHANH_THƯ_VlẸN (Mã nhanh, Tên_nhanh, Địa_chỉ)
SÁCH_MƯỢN (Mâ sách. Mã nhanh, sổ thẻ. Ngày_mượn, Ngày_trả)
NGƯỜI_MU’ỢN (Số thé. Tên, Địa_chỉ, Điện_thoại)
Hãy viết các biểu thức quan hệ cho các truy vấn sau đây trên cơ sở
dữ liệu TH Ư _V IỆ N :
3) Có bao nhiêu bản sao của cuốn sách "The Lost Tribe" có trong
nhánh thư viện cỏ tên là 'Shapstovvn' ?
b) Có bao nhiêu bản sao của cuốn sách "The Lost Tribe" cỏ trong
mỗi nhánh thư viện ?
c) Đ ưa ra tên cùa tất cả người mượn chưa m ượn cuốn sách nào.
d) Với mỗi cuốn sách đ ư ợ c m ư ợ n ra từ nhánh thư viện 'Shapstovvn'
có ngày trà là ngày hôm nay, hãy đưa ra tên sách, tên người
m ượn và địa chỉ người mượn.
e) Với mỗi thư viện nhánh, hãy đưa ra tên nhánh thư viện và tổng
số sách đư ợc m ượn ra từ nhánh này.
0 Đ ưa ra tên, địa chỉ và số các sách do người này m ượn với
n h ữ n g người m ư ợ n nhiều hơn 5 cuốn sách.
g) Với mỗi cuốn sá c h cỏ tác giả (hoặc đồng tác giả) là 'S tephen
King', hây đ ư a ra tên sách và số lượng c á c bản s a o có tại nhánh
thư viện có tên là 'Central'.
2. Cho c ơ s ờ d ữ liệu CÔNG_TY gồm c á c lược đồ :
NHÂN_VIÊN (Mâ_số_NV, Họ_đệm, Tên, Ngày_sinh, Giới_tính,
Địa_chỉ, Lương, Mâ_số_NGS, Mã_số_ĐV)
ĐƠN_VỊ (Mã_số_ĐV, Tên_ĐV, Mâ_số_NQL, Ngày_bát_đầu)
DỰ_ÁN (Mâ_số_DA, Tên_DA, Địa_điẻm_DA, Mâ_số_ĐV)
PHỤ_THUỘC (Mâ_số_NV, Tẽn_PT, Ngày_sinh, Giới_tính, Quan_hệ)
NHÂN_VIÊN_DỰ_ÁN (Mâ_số_NV, Mâ_số_DA, số_giờ)
ĐƠN_V!_ĐỊA_ĐIÉM (Mả_số_ĐV, Địa_điẻm)

143
ví.
Hãy viết các biểu thức quan hệ thực hiện các truy vấn sau :
a) Đ ưa ra tên và địa chì của tất cả các nhân viên làm việc cho đơn
vị 'Nghiên cứu'
b) Với mỗi dự án có địa điểm tại Hà Nội. hãy liệt kê mã số dự án,
mă số của đơn vị kiểm soát, tên, địa chỉ và ngày sinh của ngu’ò'i
quản iý đơn vị.
c) Tìm tên cùa các nhàn viên làm việc với tất cà các dự án do đơn
vị có mã số là 5 kiểm soát.
d) Tạo ra m ột danh sách các mã số dự án đối với các dự án có một
nhân viên hoặc m ột người quản lý đơn vị kiểm soát dự án có tên
là 'Nam',
e) Đ ưa ra tên của tất cả các nhân viên có nhiều hơn hoặc bằng 2
người phụ thuộc.
f) Đ ưa ra các nhân viên không có người phụ thuộc.
g) Đ ưa ra tên cùa những người quản lý c6 ít nhất ià một người
phụ thuộc
3. C ho hai bảng cơ sờ dữ liệu sau đây :
NHÂN_VIÊN

M â ^số ^N V Họ_đệm Tén Lương Mã_số_^ĐV

NV01 Phạm Ván Nam 800 ĐV1

NV02 T rương Lương 1000 ĐV1

NV03 Hoàng Giáp 950 ĐV2

NV04 Nguyễn Ânh 1050 ĐV2

NV05 Trần Mỹ Binh 950 ĐV1

NV06 Lẽ Thanh Thảo 780 ĐV2

NV07 Hồ Kim Huệ 980 ĐV1

ĐƠN_V|

M â^số^O V Tên^ĐV M ã_số_NQ L

ĐV1 Phòng Tài vụ NV02

ĐV2 Phòng Y tế NV07

144
a) Hãy viết các lênh của SQL để :
a1- Đưa ra tên đơn vị va tổng lương theo từng đơn vị
a2- Đ ưa ra họ đệm. tên của các nhân viên cỏ lương cao hơn
lương trung bình của các nhân viên thuộc đơn VI có mã số
l à ’Đ V r .
a3- Đưa ra họ đệm. tên, lương cúa các nhân viên cố lương cao
hơn lưo’ng trung binh của các nhân vién trong trong đơn vị
của nhân Viên đó,
a4- Đ ưa ra tên đơn VỊ, họ đệm, tên của những người quàn lý các
đ ơ n V|.
a5- Đ ư a ra họ đệm, tên của các nhân viên có lương cao hơn
lương cúa ngưò i giám sát trực tiếp cùa họ.
b) Viết các biểu thức đại số quan hệ tươ n g ứng của câu a.
Cho cơ sờ dũ’ liệu C Ô N G _TY gồm các lược đồ :
NHẰN_VIÊN (Mã_số_NV, Họ_đệm, Tên, Ngày_sinh, Giới_tính,
Địa chi, Lương, Mã_số_NGS, Mã_số_ĐV)
ĐO'N_VỊ (Mâ_số_ĐV, Tên_ĐV, Mã_số__NQL, Ngày_bắt_đầu)
DỤ_ÁN (Mã_sồ_DA, Tên_DA, ĐỊa_điẻm_DA, Mâ_số_ĐV)
CON íMã_số_NV, Tẻn_con, Ngày_sinh, Giới_tinh)
NHÀN_VIÊN_DỰ_ÁN {Mâ_số_NV, Mã_.số_DA, số._giờ)
ĐON_VỊ_ĐIA,ĐIÊM tMâ,_số_ĐV, Đialđiểm)
a) Hãy viết cá c câu lệnh SQL ỉhực hiện cá c truy vấn s a u :
a1- Đưa ra tên và địa chỉ của tất cả các nhân viên làm việc cho
đ ơ n vị "Nghiên cứu".
a2- Với mỗi d ự án có địa điểm tại Hà Nội, hãy liệt kê mă s ố d ự
án, mã s ố của đơn vị kiểm soát, tên, địa chỉ và ngày sinh
của người quản lý đon vị.
a3- Tìm tên của càc nhân viên làm việc VỚI tất cả các dự án do
đơn vị có mã sổ là 5 kiểm soát.
a4- Tạo ra m ột danh sách các mã số dự án đối với các dự án có
một nhân viên, hoặc một người quản lý đơn vị kiểm soát dự
án có tên là 'Nam'
a5- Đưa ra tên của tất cả các nhân viên có nhiều hơn hoặc bằng
2 người con
a6- Đ ưa ra các nhân viên không có người con nào.
a7- Đ ưa ra tên cùa những người quản lý có it nhất là m ột
người con.
b) Hãy viết cá c biểu thức đại số quan hệ tươ n g ứng của câu a.

145
CUIIƠNG V

LÝ THUYẾT
THIẾT KÉ C ơ S ở DỮ LIỆU

QUAN HỆ«

rronạ chưaim này. chúng ta sẽ thào luận vê một sô vân dè !ý thuyèl


dã dược phát triền nhằm mục dích chọn dược lược dồ quan hộ "tốt",
nehĩa là do đạc một cách hìnli thúc dề biết vì sao tập hợỊ:> các lluiộc tinli
nàv nhóm vào troim các krợc đồ quan hệ thi tốt hơn nhóm kia. Chúng ta
có thế nói đến "tính tốt" của các lược đồ quan hệ ở hai mức ; mức lôgic
\ à mức cài đặt. Mức thứ nhất liên quan đến việc người sir dụnu thê hiện
các lược đò quan hẹ và ý nuhĩa cúa các thuộc tính cùa chúnti như thê
nào. Mức thử hai lièn quan đến việc các bộ trontỉ một quan liộ cơ su
đirợc lini Irừ và cập nhật ra sao.
Việc thiết kế cơ sở dừ liệu có thể đirợc thực hiện bằng cách sử dụng
hai aiài pháp ; dưới lèn (bottom-up) hoặc trên x u ố n g (top-down).
Plnrơnu pháp thiốt ke từ dưới lèn xem các mối liên kết cơ bàn giữa các
thuộc tính riènu rẽ như là dièm xuàt phát và sứ dụng chúng đê xây dựne
nôn các quan hẹ. Ciiai pháp này còn có tên gọi là íhiếí ké haníi lô n g hợp
(I)esign by svnthesis). Ngược lại, phương pháp thiết kế từ trên xuống,
còn gọi là ihiel ké bằììịi phân tich (Desiun by analyse) bắt đầu từ một số
các nhóm thuộc tính trong các quan hệ nhận được từ thiết kế quan niộm
và các hoạt độntĩ chuvển đoi. Sau đó việc thiết ké hatìíỊ p h â n lích được
áp dụim dối vói các quan hệ một cách riêng rỗ và tập thề dẫn đến việc
tách các quan hệ cho dến khi đạt được tính chất mong niiiốn.

5.1. CÁC NGUYÊN TÁC THIẾT KẾ Lược Đ ồ QUAN HẸ

5.1.1. Ngữ nghĩa của các thuộc tính quan hệ

Khi chúnu ta nhóm các thuộc tính đê tạo nên một lược đồ quan hệ,
giá thiết rằna có một ý nghĩa nào đó gán với các thuộc tinh. Ý nghĩa này

146
eòn uọi là niĩữ iiíỊhĩa. nỏ eỉii ra \ iệc hièu cáf giá trị ihuộc tính lưu trữ
trong c á c b ộ c ủ a m ộ t C|uan h ệ Iil iư i h ế n à o ? N ó i c á c h k h á c , c á c u i á Irị
tlniộe tính tronu một bộ liôii hệ \ ỡi nhau nhu thè nào ? Nêu việc tliiet kê
khái niệm dược làm mội cách cân Ihận, sau dỏ là mộl ctiuvCMi dối sang
các quan hộ thi hau hct imừ Iiụliĩa dã dược uiài thích và thiết kế kết quà
có Iiiộl ý nahìa rò rànu. Nói cliLinu, \'iệc íiiui thích nuữ nụhĩa của quan hệ
càim dề dànti thi viộc tliiel kẽ lược do quan hẹ càng lốt. Một ví dụ về
thiết ke lược đồ quaii hệ tốt là lirợc đồ cơ sớ dữ liệu CÔ N G _TY . Trong
lược dồ dó. các thuộc tinh deu cỏ ý nuhĩa rõ rànụ. không có tính mập
mờ. Nau\ ên tấc sau sẽ hỗ trự clio viộc tiiiốl kế lược đồ quan hệ.
Nịỉuyên tẳc 1 : I hiết kế một krợc đồ quan hệ sao cho dễ tỊÌài thích ý
imhĩa cúa nò. F)è làm \ iệc dỏ. kliôim nôn lồ h(Tp các thuộc tính từ nhiều
kiểu thực thế và kiếu liên kêl \ à o một quan hệ đơn. Một cách trực quan,
nếu một lược dồ quan hẹ tưanu ứne với một kiêu thirc thè, hoặc một
kiêu licn kết thi ý imhĩa tr('i Iiẽn rõ ràim. Nmrợc lại. một quan hệ tưcrng
ứ n g \ ớ i m ột h ỗ n h ợ p c á c tiiục thè \ i\ liên k cl thì V ntỉliĩa trơ n ê n k h ô n y
rõ ràni:.

5.1.2. Thông tin dư thừa trong các bộ và sự dị thường cập nhật

Một mục tiÔLi cua thiết ke lược dồ là ỉáni tối thiêu khôntz gian lưu trữ
các quan hệ cơ sứ. Các thuộc tínli đuợc nhóm vào Irting các lược dồ
quan hệ có một ánh hircrim dáng kế dố!i kliôim gian lưu trừ. Ncu cùng
một Ihônu tin dược lưu Irũ nhièii lần trontĩ cơ sờ dừ liẹii thi ta gợi dó là
dư thừa íhôniỊ fin. \ à dieu dó sẽ làm lãnt' phí không gian nhớ.
Ví dụ : Giá sừ ta cỏ banc c a sớ sau dày :
NHÂN_VIÊN_ĐƠN_VỊ

M ã^số^N V H ọ^đệm ĩè n N g à y _ s in h Đ ịa ^ c h ì MỖ_SỐ_ĐV Tên^Đ V M ã_số_N Q L

NVOOl Lé Vản 12/02/79 Ha Nỏt 5 Nghièn cừu NV002

NV002 Trần Đức Nam 14/02/66 Ha Nộ( 5 Nghién cừu NV002

NV010 Hoàng Thanh 05^08/79 Nghệ An 4 Hành chính NV014

NV014 Pham Bảng 26/06/52 Bấc Ninh 4 Hành chinh NV014

NV016 Nguyẻn Sơn 14/08/73 Hà Nam 5 Nghiên cừu NV002

NV018 Vũ Huơng Giang 26/03/83 Nam Đinn 5 Nghièn cừu NV002

NV025 Trồn Lẻ Hoa 15/03/80 Phú Thọ 4 Hành chinh NV014

NV061 Hoầng Giáp 02/05/47 Há Tĩnh •1 Lânh đao NV061


l

147
o d;ì> co sự dư thừa ihòim tin. Nêu một dơn vị có nhiều nhân \ iên
làm \ iệ'c tlii lliôim tin về ĨX)N_VỊ (Mã_số, Tcn_ĐV, Mã_số_NQI,) dược
lưu trữ nliicu lần Iroim báng. So vói việc dùng hai báng NHẢN_V!HN
\ ;i i)()N VỊ riêiiii rẽ như ironiĩ lược đồ C Ò N G _T Y , việc sử dụnu bảng
này làm lãim phí khỏnu, gian nhớ.
Nyoái việc lãim phí khònu gian nliớ, nó còn dẫn dếii một vấn de
Iiii,iiiêm trọna là sụ dị ihườrm cạp nhật. D ị thường cập nhật bao eom : dị
tlìirờng chèn, dị thườne xoá. dị thircmg sửa đôi. Nlìừnii dị thưc^mc cập
nliật nay sè (lưa vào ccy sò dừ liệu nhữnu thông tin "lạ" và làm cho cơ sơ
<iữ liệu niàt !ính dúnu dăn.
Dị th u ờ n g chèn : Gây ra khó khăn khi clièn các bộ uiá trị vào bảne,
lioăc dẫn dến vi phạm ràiií’ buộc.
Ví dụ : ỉ)ế chèn một hộ giá Irị cho một nhân viên mới vào báníi
NI IẢN_VIỮN_DƠN_VỊ, nuoài các thônu tin về nhân vièn, ta phai đưa
vào các tliòiiíi lin \ ề dơn \ ị mà anh ta làm việc, hoặc các giá trị null (nèu
nhàn viên khônu làm việc cho đơn vị nào cả). Các thông tin về đtĩii vị
pỉiai dược đưa vào một cách đúng dẳn. phù họp với các thông tin của
đơn \ Ị đỏ trong các bộ khác. Trong khi đó, với lược dồ cơ sờ dừ liệu
C'()N(Ì_TY chúna la khônt!, phải !o lắng ui, vi các thông tin về một dưn
vị chi dược lưu trữ một lần. Mặt khác, rất khó chèn một đ(7 n vị mới vào
quan iiệ NỊ Ỉ Ả N _ V I 1 ^ N _ Đ ( ) N _ V Ị nếu đcni vị đó k h ô n g c ó nhân v i ê n nào
làm việc. Cách uiải quyết duy nhất là điền các giá trị null vào các thuộc
tính cua nhân viên. Diều dó làm này sinh vấn đề về ràng buộc bởi vì
Mã_số_NV là khóa chính cùa quan hệ.
Dị thườnỊỊ xó a : Gâv ra \ iệc mất thòng tin khi xóa.
Vi Jụ Khi ta xóa inột bộ aiá trị trong bàng NIỈẢN_VIÊN_D()N_VỊ.
NC-U Iihàn \ iôn tircrnu ứim với bộ giá trị đó là người cuối cùng làm việc
cho đơn vị thi phép xỏa sẽ kéo theo việc làm mắt thông tin ve dơn vị.
Dị th n ò n ỊỊ sử a dồi : Gày ra việc sửa đối hàng loạt khi ta muốn sửa
dõi một uiá trị troim một bộ nào dó.
Vi dụ : I'a niuốiì sữa ụiá trị cùa thuộc tính Mã_số_NQL cùa đ(m vị 5.
Diồu đó kéo theo phài sira íĩiá trị của thuộc tính này trong tất cả các bộ
ứn<> \ ới đơn vị 5.

48
IXra trẽn cac dị thường ơ trC'ii, chứnu, ta cỏ lliè phát hièi! nmiycii
tăc saii ;
Nguyên lắc 2 : ’ỉ hiet ke các krợc dô quan hộ C(r S(V sa o c h o khóng
sinh ra nhừnụ dị thưànií cập nhật tronu các quan hệ. Nêu có xnàl hiệiì
những dị thircrng cộp nhật thì phải uhi chép lại mộl cách rõ ràim và phai
dám báo rang, các chiKxng trình cập nhật dừ liộu sẽ thực hiện niôt cách
dúnịi đăn.

5.1.3. Các giá trị không xác định trong các bộ

I ronu một số thiết kế lược đo, ta cỏ thé nhóm nliiều tliuộc tính vói
nhau váo một quan hệ "béo". Nếu nhiều thuộc tính khôtm thích liạp c;ho
niợi bộ trong một quan hệ, ta sẽ kết thúc với nhiêu giá trị nu!l trong các
bộ dó. Diều đỏ có thé làm lăng khòiiíỉ gian ơ mức lưu trữ và cỏ thè dẫn
đến vấn đề về hiêu ý nghĩa của các thuộc tính. Việc clii ra cac phép nôi ở
mức lỏgic cũng sẽ gặp khó khăn. Một van dê lũra với các uiá trị null là
các hàm nhóm như C O U N T , SUM không áp dụiiíi dược dôi với chúng,
llcTii nữa, các giá trị nul! có thề có nhiều cách uiai thích. C'hănt> hạn,
ihuộc tinh không áp dụng được cho bộ này, giá trị cua thuộc tính c!io bộ
này là khônụ có hoặc niá trị cho ihuộc tính là có nhinm \anu, mặi. 1 ỏm
lại, các giá trị null cỏ nhiều ý ntihìa khác nhau.
Nguyên tắc 3 : 'ĩránh việc dặt vào trong các quaii hệ ca sơ rihừiig
thuộc tính mà các uiá trị của chúng thườriíĩ, xuvên là null nêu có tỉìê. Nèu
không the tránh dược các giá trị null thì phái đàm bào ranu. chủng chi áp
dụng trong các trường hợp đặc biệt và không áp dụim clio một số lớn các
bộ Iroiig quan hệ.

5.1.4, Sinh ra các bộ giả

Nhiều khi chúng ta đưa vào cơ sở dữ liệu những quan hộ kiiông


đúng, việc áp dụng các phép toán (nhất là các phép nối) sẽ sinh ra các bộ
giá trị không đúng, gọi là các bộ "già".
Vi dụ : Xét hai lược đồ quan hệ ;
NV_Df) ( l ên, Địa_điềm_DA)
NV_DAI (Mã_sổ_NV, M ã_sốJ)A, sổ_giờ, Tên_DA, Dịa_điềm_I)A)

149
NV_ĐĐ Tén DỊa_ổịểm_DA

Vân Há Nội

Vân Nam Định

Sơn Bảc Ninh

Giang Hả Nội

NV_DA1 Mâ_số__NV Mỗ_số_DA số _ g iờ Tèn^DA Địa__điếm_DA

NV001 1 32 DA01 Hà NỘI

NV001 2 7 DA02 Nam Đtnh

NV016 3 40 DA03 Bắc Ninh

NV018 1 20 DA01 Hà Nội

Bây giờ nối tự nhiên hai quan hệ trèn với nhau, ta được quan hệ :

M à_sổ_NV Mâ_số_DA số_giở Tên_DA Địa_địểm Tên

NV001 1 32 DA01 Hả Nội Vân


*
NV001 1 32 DA01 Hà Nội Gtang

NV001 2 7 DAỮ2 Nam Định Vân

NV016 3 40 DA03 Bắc Ninh Sơn


...............
*
NV018 1 20 DA01 Hà Nội Vc^n

NV018 1 20 DA01 1 Hà N ội Giang

Ta thấy các dòng đánh dấu * là các bộ Dấy là các bộ giá trị
không có trên ihực tế.
Nguyên tắc 4 : 'I hiết kế các lược đồ quan hệ sao cho chúng có thề
được nôi với điều kiện bànạ trên các thuộc tính là khoá chính hoặc khoá
ngoài theo cách đani bảo không sinh ra các bộ "uia". Không nên cỏ các
quan hệ chứa các thuộc tính Iiối khác vứi các tổ liợp klioá chinh, khoá
ngoài. Neii không tránh được những quan hộ như vậy, thi không nên
nôi chúng trên các thuộc linh dó, bời vì các phép nối có thể sinh ra các
bộ "giả".

5.2. CÁC PHỤ THUỌC HÀM

Khái niệm cơ bán nhất troĩm thiết kế lược đồ quan hệ là khái niệm
phụ thuộc hàm. Troim phần này, chúng ta sẽ định ntihĩa hình thức khái

150
niệm náy \ à cách sử dụng nó đê định nghĩa các dạim chuần t h d các lưạc
đò quan hệ.

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

Một phụ thuộc hàm là một ràng buộc giữa hai ĩihỏm thuộc tính của
mộl C(í S(T dữ liệu. Già sử rănu. lược dồ cơ sơ dừ liệu cua ta cỏ n tlniộc
tính Aị. A„. ĩ'a hãy nuhĩ rằnụ, loàn bộ cơ sờ dữ iiệu dirợc mỏ tcỉ
bànu inột lược dồ quan hộ chunu R(U), u - {A|, A 2 ...., A,,}. Giả sư X
vá Y là hai lập con cua R.
Mộ/ p h u thuộc hùm , ký hiệu là X Y, giữa hai t(ip thuộc tính X và
Y chi ra một ràng buộc trên các bộ có the lạo nên một Irạng thái quan hệ
r cua R. Ràng buộc đó là : với hai bộ t| và t 2 bất kỳ trong r, nếu cỏ
tiỊXJ = t2 | X | thi cũng phải có tiỊYỊ ^ t^l Y .
Nếu có X Y, ta cũng nói ràĩm. X xác định hàm Y hoặc Y phụ
thuộc hàm vào X. PliỊi thuộc hàm được viét tắt là r i ) (Funciionai
Depcndency). rập thuộc tính X dược gọi là vê trái của FD, tập thuộc
tính Y được gọi là vế p h ã i cua F'D. Như vậy, X xác định hàni Y Irong
lược dồ quan hệ R khi và chi khi nếu hai bộ của r(R) bànu nhau trên các
giá trị của X Ihì chúng nhất thiết phái bàng nhau trên các giá trị cúa Y.
Chủ ý rànu, nếu X Y thì không thể nói gi về Y —> X.
Một phụ thuộc hàm là một tính chất ngữ nghĩa của các thuộc tính.
Những ntỊirời thiết kế cơ sở dữ liệu sẽ dùng hiểu biêt của họ về ý nghĩa
cùa các thuộc tính của để chi ra các phụ thuộc hàm có thể có trên mọi
trạng thái quan hệ cua r(R) cúa R. Khi ngữ nghĩa cua hai tập thuộc tính
trong H chi ra rằng có thể có mộl phụ thuộc hàm, chúng ta sẽ đặc tả phụ
thuộc hàm như một ràng buộc. Các trạng thái quan hệ r(R) thoa mãn các
ràng buộc phụ thuộc hàm dược gọi ỉà các trụrìỊỉ, ihủi hợp p h á p cùa R, bởi
vi cluìnu luân theo các ràng buộc phụ thuộc ỉiàm. N hư vậy, việc sử dụng
chủ vổu của các phụ thuộc hàm là dùng để mô tả một lược đồ quan hệ R
bàng việc chi ra các ràng buộc trên các thuộc tính phải thoà rnãn ở mọi
thời diêm. Một phụ thuộc hàm là inộl tính chất của lược đồ quan hệ R
chứ không phải là tinh chất của một trạng ihái hợp pháp r của R. Vì vậy,
một phụ thuộc hàm không thể được phát hiện một cách tự động từ một

151
Irạĩig thái r nià phãi do một imười hièu hict nựữ nulũa CLia các ihiiộc linli
xác định một cách rõ nìnu.
l ĩ iiụ : C'ho quan liệ ;

DAY Giáo_viên Môn_học Tài_liộu

AA Mòn học 1 XX

AA Môn học 2 YY

BB Môn học 3 zz
‘i—
cc Môn hoc 4 TT

Mới nhin qua. chúntí ta có thê nòi có inột phụ thuộc hàm l ài liệu ->
Môn_học. Tuy nhiên, chiinụ ta khòniĩ ihê khăng dịnh dược, vì diêu đó
chi đúne với trạng thái quan hệ này. biết dâu Irong trạng ihái quan hẹ
khác có thề có hai môn học khác nhau sứ dạnu cùnỉ; một tài liệu tham
khảo. Với một trạnu thái cụ thể. chủnu ta chi cỏ thể khăng định là không
cỏ một phụ thuộc hàm giữa nhom thuộc tính nàv va nhóm ihuộc tínli
khác. E)ề !àm điều dó, chi cần dưa ra một plián vi dụ. Chànu hạn. ỡ trong
quan hệ ta có thc khănu định rầng. kliôim có phụ thuộc hàm giữa
Giao_viên \ à Môn_học băim cách chi ra ví dụ là AA dạy liai môn học :
"Môn học 1" và "Môn học 2 ”. Vậy Gicio viên không thể xác dịnli du>
nhấl Môn Jiọ c .
Dc biếu diễn các phụ thuộc ham tioim một lược đồ quan hệ, la sir
dụng khái niộm s a dỏ phụ thuộc hàm. Mồi I'í) dược biêu diên băng một
dường nằm nganu. Các thuộc tínli ở vế trái cua Fl) dược noi với dưtrng
biêu diễn FD bầnu các dườim thăni; dừnu, các thuộc lính ờ vế phải của
I-'D dược nối với đirònu bicu diễn M) bằim mũi tên clii dén các thuộc tinh.
Vi dụ : I.irợc đồ quan hệ :
M U Ợ N ( S ố _ t l i è , M ã s ố_sách, T è n _ i m u ờ i _ n u r ợ n , Tên sách, Ngày_nur ợr i )

Với các phụ thuộc hàtn :


số_thè “ > l ên murời imrợn
Mã_số_sách Tên_Siich
số_thè, Mã_số sách —> Ngày imrợti
có sơ đồ phụ thuộc hàm như sau ;

152
MƯỌ'N

S ốJhẻ ị M â_số_sách Tên_người_m ượn i Tèn_sách Ngáy_m u’ợn

5.2.2. Các quy tắc suy diến đối với các phụ thuộc hàm

Ky hicii 1' !a lập các phụ lliuộc hàm dược xác định trên một lược dồ
quan họ R(ỉ !). X. Y la hai lập con cua 1). Một phụ thuộc hám X Y
dược i^ụi la v//r Jicn ííinrc lừ một lập các phụ thuộc ham F dược xác định
tiên R nÕLi X - > Y cliina Ironu mỏi trạng thái quan liệ r là mờ rộim h(Tp
phap cua R. Nghĩa là. inồi khi r làm thoíì mãn mọi phụ Ihuộc hàm tront!,
i , X —> Y cũna dúnu tronu r. 'l a sir dụnu kv hiệu !•' = X Y đê ký liiệu
Ị)hụ thuộc ham X V dược su\ diền từ lập các phụ thuộc hàm F'. Đê
\a c dịnli MIỘI cácli su\ diễn các phụ ihuộc hàm có hệ tliốĩig, can phai xây
tỉựim một lập cát qin tăc su> diễn. 1 'ập quy tẩc này sẽ điiợc sir dụnii de
M1_\ diễn cac phụ ihuộc ham mới tir một tập các phụ thuộc hàin cho
trước. C o 6 qu\ lăc su\ diễn đòi với các phụ thuộc hàm :
Ọii\ lác ((,> ! ) ỉ (qu\ lăc phan \ ạ ) : N'ếu X 3 Y thì X —>Y
Qti\ lắc 2 {Cịiiv tãc tãníi) : |X YỊ Ị=- x z > YZ
()a> lãc 3 (qiỉv tầc bác cầu) : (X —> Y, Y —> /.} 1= X ' > Y
Qu > t ã c 4 ( qu> í á c c l ì i é u ) : ÍX Y Z } Ị= X Y và /

Q u\ tẳc 5 (qu> ùk’ hạp) : (X -> Y, X —> ZỊ 1= X —> Y 7


Ọii> tác (quy tác tựa bác cầu) ; |X --)• Y. WY ị- vvx —> z
Ọuy lac phíin xạ [■'liát hiêu rang : MỘI lập hạp các thuộc tính liiỏii
luôii xác tlỊiih cliính nỏ hoặc một tập con bất kv của nó. Vị QTl tạo la
cac phụ lỉuiộc luôn ỉuòn ílúng, những phụ thuộc như vậy dược gọi ià lầm
/híiừììỊ^. MỘI cácli lỉiiili thức, một phụ thuộc liàm X —> Y là tầm thưmig
neu X 3 Y , nmrợc lại. nó dược aọi là khôn}’ tầm thii-ờiỉự. Quy tac tănụ
(ỌT2) Iiói răne : Việc thòm cùníí một tập llìiiộc tính vào cả liai vế CIUI
niột phụ ihuộc hàm sẽ tạo ra một phụ thuộc hàm dúng đăn. Theo ỌT3,
các pliỊi ihuộc liàni la bầc cầu. Ọuy tắc chiếu (Q ỉ 4) nói rànu : 'l a có thè

153
bò b(Tt các thuộc tính ra khỏi vé phái của phụ thuộc hàm. Việc áp dụim
nhiều lần quy tắc này cỏ thế tách phụ thuộc hàm X —> | A | , A-)...., Ap}
thành mộl tập hợp phụ thuộc hàm {X Ai, X —> A 2 ,..., X A„). Quy
tắc htrp (ỌT5) cho phép chúng ta làm ngược lại ; ta có thề gộp các phụ
thuộc hàm {X —> A |. X —> Ai,.--. X Ap} thành một phụ thuộc hàm
đơn X ->• {A|, ApỊ .
Có thể chứng minh các quy tẩc suy dicn ớ irên một cách tạrc tiẻp,
hoặc bằng phán chứntỊ dựa trên định níỊliĩa cua phụ thuộc liàrn. Đe
chứng minh băng phan chứng, ta giả thiết một quy tấc là không clúng và
chi ra ràng điều đó là kliông thè. Sau đây chứiiíỉ minh các quy tăc.
- Ọiiv tác ì : Gia sứ rằng, X 3 Y và hai bộ ti và t 2 là thể hiện quan
hệ r của R sao cho ti[X] = tT[X]. Khi đó ti[YJ = t 2 [Y]. bởi vì X r) Y nên
X —> Y phải xảy ra trong r.
- Qiiy tác 2 (chímg minh bàng phản chứng) : Giả sử rằng, X -> Y
đúng trong một thể hiện quan hệ r của R. nhirng x z —> Y Z không đủng.
Khi đó phải có hai bộ ti và t 2 trong r sao cho :

(1) t,[XJ = t2[XJ,


(2) t|[Y] = t 2 [Y],

(3) t,fXZj = t 2 fXZ] và

(4) t|[YZ] t 2 [YZ|.


Điều đó !à không thể, bởi vi từ (1) và (3) suy ra :
(5) t|[Zl = t 2 [Z], từ (2) và (5) suy ra ti[YZ] = t 2 lY Z |, mâu thuẫn
với (4).
Quy íẳc 3 : Giả sừ ta có X —> Y và Y ^ z . Khi đỏ với mọi bộ t| và Í2
trong r, t|[XÌ = t 2 [X) kéo theo ti|Y] = t 2 [Y] (vi X —> Y) và ti[Y | = t2 [Y]
kéo theo t |Ị Z | = h \ z \ (vi Y Z). Như vậv, vái mọi hộ t| và t 2 irong r,
t|[X] = t 2 [XỊ kéo theo t,[Z | = t 2 [Zj, hay X z.
Chúng la có thể chứng minh từ QT4 đến Q T 6 theo phircmg pháp tạrc
tiếp như trên. Tuy nhiên, có thể sử dụng các quy tẳc đã được chứng minh
là đúng để chímg minh cliúng. Sau đây chứng minh theo cách đấy.

154
- (Juỵ tãc 4 :
(1) X -> YZ (cho trước).
(2) YZ Y (sử dụng QT1 và YZ ID Y).
(3) X Y (sử dụng QT3 trên (1) và (2)).
- Ọ ì n ’ tú c 5 :

( 1) X 'V' (cho trước).


(2) X -> / (cho trước).
(3) X YX (sư dụng ỌT2 trên (1) bàng cách thêm vào cả hai vế
X và XX = X).
(4) YX YZ (sử dụng Ql'2 trên (2) bằng cách thêm vào cả hai vế Y).
(5) X -> YZ (sử dụim QT3 trên (3) và (4)).
- {)ìiy lãc 6 :
(1) X Y (clìo trưức).
(2) WY z (cho trước).
(3) v v x w Y (sử dụng ỌT2 trên (1) bàng cách thêm vào hai vế W),
(4) w x -> Y (sử dụng QT3 trên (3) và (2)).
Từ chirnụ minh ở trên, ta thấy rằng, chì can ba quy tắc Q T l , ỌT2,
Q í 3 là dú, các quy tấc sau có thể suy diễn trực tiếp từ 3 quy tẩc đó. Các
quy tác từ Ọ I 1 đến QT3 được gọi là các quv tắc su y diễn Am strong.

5.2.3. Bao đóng của tập phụ thuộc hàm và bao đóng của tập
thuộc tinh dưới một tập phụ thuộc hàm

I hông thinmg, những ngưừi thiết kế cơ sở dừ liệu đầu tiên chí ra


một tập các phụ thuộc hàm dễ xác định được nhờ ngữ niịhĩa của các
thuộc tinh ciia R. Sau đó la sử dụng các quy tẳc Amslrong để suy diễn
các phụ thuộc hàm bô sung. Cho trước một tập phụ thuộc hàm F, tập h(ỵp
tàt ca các phụ ihuộc hàm suy ra được từ F bằng cách sừ dụng các quy tẩc
suy diễn dược tíọi là hao đóng của tập p' và được ký hiệu là F^.
Vi dụ - F = { X - ^ Y ; Y - > T }

{ F kj { X - > T , X - » YT}}

155
Một cácli cỏ hệ (hỏim. dè xác định tât cá các phụ thuộc hàm bỏ
suim. dâu tlèn hãy xác dịnh lập thuộc tính X xuất hiện ờ vế trái cúa một
phụ thuộc hàm nào dây tronu r , sau dó xác định tập hcTỊi tâl cá các thuộc'
tính phụ thuộc hàm vào X. Như vậy, với mồi lập thuộc lính X, ta xác
định tập X các thuộc tinh phụ thuộc hàni vào X dựa irêii I-'. X dược gọi
là hcH) đ ỏ n ^ cùa X tiưới F \ à được dịnh iiuhTa là :
x ‘ = |A e u I X A e F ’ }.

'Hieo định ntỉhĩa cua X ta có bô dề sau :


Bổ đề 5.1 ; X —> Y được suy diễn từ tập phụ thuộc hàm F bàntỉ, các
quy tấc suy diễn Anistrong khi và chi khi Y c x^.
'Hiật vậy, giả sử X -> Y được suy diễn từ tập phụ ihuộc hàm F báng
các quy lắc suy diền Amstroniỉ, và Y = A 1 A 2 ... Am với A ị, A 2 ,.-- An, ỉà
các tliuộc lính. N hư vậy. theo quy tác chiêu ta cỏ : X —> A | , X -> A 2 ,...,
X —> Ap,. rheo dịnh nuhĩa cùa X , Ai e X với i = 1. 2,..., m. Như vậy.
Ye X

Ngược lại, giả sừ Y e và Y = A 1 A 2 ... Am- 'í'hco định nghĩa X ta


có X —> Aj với i = i.... ni. '1'heo quy tấc họfp, ta cỏ : X —> Y.

I)c xác định X chúnụ ta sứ dụnti thuật loán sau :

Thuật toán 5.1 (Xác dịnh X - bao đóng cùa X dựa trên F) :

X* - X ;
Repeat
Old x ‘ - x " ;
với mỗi phụ thuộc hàm Y —> z trong F thực hiện

nếu X ’ 3 YthỉX' = X "O Z ;

unlil (X ' - Old X ' ) ;


Ví dụ : Xét lược dồ quan hệ
R = {Mã số_NV. IIọ tên NV, M ã_ số _ D A , Tên DA,
ỉ)Ịa_điểm_D A , s ố giờ}

156
và tập pliu ihuộc hàm 1' {Mã số_NV —> llọ_tèn_NV,
Mã số DA —> l èn DA. DỊa diếm_l)A,
ỊMà_sồ_NV. M ã_số_D A ' -> s ố uiò}
Áp dụng thuật toán 5.1 ta có :
| M ã _ s ố _ N V f = ;M ã_số_NV. Họ lên_NV}

Ị M ã_số_D A ì = í Mã_số_[)A, rên_DA, ỉ)ịa_điểin_DA Ị

iM ã_số_N V , M à _ s ố J ) A Ị * = {Mà^số_NV, H ọ J ê n _ N V .
Mí\_số_DA, Tên_DA. s ố giờỊ.

Định lý 5.1 : rhuậl toán 5.1 tinh X là dúníi.

Chửng m inh : Giá sư ta có ; X Y, theo thuật toán 5.1, Y sẽ được


thêm vào tập x ’, như vậy Y c x ' .

Ngược lại. uia sử Y c X . 1hco cách xây dựim X ta có ; X —> X .


riieo qin tấc phán xạ. ta có : X Y. Vậy : X > Y .B
Oịnli lý 5.2 : I íệ q u y lẩc SUY (liền A m s t r o n g là đúnu và đầy dù.

ChửiiỊỉ m inh : C húng la đã chửníỉ minh tính đúng đẳn của Q T l ,


Ọ '12, Q'ỉ 3 ờ trC‘ii. Bây ííiờ chỉ cần chÚTm minh các quv tẳc đỏ là đầv đu,
nghĩa là, nếu X Y khônc suy diễn lôuic được từ F baiiíỉ hệ suv diễn
Amstroriii thi X - > Y khônii thoả mãn trên quan hệ r(R).
Dè hini điều dó, uiã sử X -> Y không suy diễn được từ F bằng hệ
suy diễn Amstrong, ta sẽ xây dựng một quan hệ r sao cho các phụ thuộc
hàm cùa F là thoả rnãii trên r, nhưng X —> Y không thoá mãn trên r.
Quan hỌ r được xày dựng nhir sau : r chi gồm hai bộ giá trị t| và t 2 , trong
đó các thuộc tính tronu t| đều cỏ giá trị 1, trong Ỉ2 chi có các thuộc tính
thuộc X là có I>iá trị 1. các thuộc tính còn lại cỏ giá trị 0.

ti ; 1 1 ỉ 1 1 11 1 ỉ 1 1 1 1 1

t2 : I 1 1 i 11 1 0 0 0 00 0 0
Ta ctuVníĩ tò rằnu. mọi phụ thuộc hàm của F đều thoà mãĩ\ trên r.
'1'hật vậv. giả sử cỏ nhụ thuộc hàm w V của F khôna thoá mãn Irên r.
Như vậy w ^ X , vi nếu không sẽ vi phạm tính bàng nhau của w trên

157
hai bộ t| và t 2 - Hem nữa, V không thể ià tập con của X , bởi vi ncu V là
tập con của X thì w —> V sẽ thoả mãn trên r. Vậy phái có ít nhất mộ'
thuộc tính A của V là không thuộc x^. ']'heo bổ dề 5.1, nếu \ v c; X tli!
X w . Do w > V nên X —> V. Do A là một thuộc tính cua V nên
X —> A, hay A thuộc x ’ . Điều đó là vô lý. bởi vì A khõnu ihuộc X .
Như vậy, mọi phụ thuộc hàm cúa F là thoà mãn irên r.
Bây giờ ta chứng tỏ rằniì : X Y không thoà maii trcn r. I hật \ ậ \ ,
giả sừ ngược lại X —> Y thoà mãn trên r. N hư vậy, cá X và Y đều pliài
thuộc x \ vi nếu không sẽ vi phạm sự bàng nhau trên các bộ l| và I2 cua
X và Y. Nhưng nếu Y thuộc thì X —> Y sẽ suy diễn được lừ F (theo
bồ dề 5.1). Điều đó mâu thuẫn với giả thiết X —> Y khônt> su>' diễn dược
từ F. Vậy X Y không thể thoả mãn trên r. Định lý được chứnụ ininh.H

5.2.4. Đao đóng và khóa

Dể ý rằng, nếu là tập tất cà các thuộc tính cùa quan hệ thi có
tiíỉhĩa là X xác định hàm các thuộc tính còn lại, hay nói cách khác X là
một siêu khóa. Ta có thể kiểm tra xem một tập thuộc lính X có phải là
khóa của một quan hệ bằng cách trước tiên xem có chứa lất cả các
thu ộc tính của quan hệ hay k h ô ng, sau đó kiểin tra k h ô n g c ó một tập COII
s nào được lập từ X bằng cách loại bỏ một thuộc tính của X thoả mãn
s chứa tất cả các ihuộc tính của quan hệ (nghĩa là X, là siêu khóa lối thiêu).
Ví dụ : Xét lược đồ quan hệ R(A, B, c , D, E, F) và tập phụ thuộc
hàm : F = {A, B -> F ; A ^ c , D ; B E} .

Ta có: {A, B}^= {A, B, c , D, E, F } , A ' = {A. C, ỊB, E).


Vậy A, B là khóa cùa quan hệ.
Thuật toán 5.2 : Tìm một khóa K của R(U) dựa trên tập F các phụ
thuộc hàm.
1) Đặt K ;= u ;
2) Với mỗi thuộc tính A trong K, lập lại các bước sau :

- Tính (K - đối với F ;

- Nếu (K - A)* chứa tất cả các thuộc tính trong u thì đặt K K —A j .

158
I hiiật toán 5.2 cho phép xác định dược các khoá cùa một quan hệ
xuất phát tir một siêu khoá han dầu là tập tất cá các thuộc tính ciìa quan
hệ. Có thê thày [rirm, việc tínli khoá như vậy rât mâl thời íỊÌan. bói vì nêu
quan liệ có n tliuộc tinh thì nó có 2” tập con. Vi vậy, nếu khoá cùa quan
hệ chi cỏ ít thuộc tính tíiì số lẩn tính các hao dóng đổ kiềm tra là rất lởn.
'I rên thực te, người la tìm khoá cua quan hệ dựa trên nhận xét sau : Neu
quan liộ có khỏa, thi các thuộc tính khóa của quan hệ phải là các tập con
cùa tập h(yp các thuộc tính ờ vế trái các phụ thuộc hàm trong F. Vì vậy,
đè tim được các khóa nlianh IKTII, trước tièn chúng ta tính L|. là hợp của
các thuộc tính ơ các vè trái cùa các phụ thuộc hàm trong F, sau đó tính
bao đóiiíi của tất cà các tập con cúa 14 \ Neii bao đóng của tập con nào
chứa tất cá các thuộc tính cứa R thì tập đó là mộl siêu khóa. Đe kiềm tra
nó là một khóa ta thực hiện như biróc 2) của ihuật toán 5.2.

5.2.5. Sự tưcyng đương của các tập phụ thuộc hàm

Troim phần này chúim ta thào ỈLiận về sự tưcnig đirơiitỉ của hai tập
phụ thuộc hàm. Một tập hợp các phụ thuộc hàm E dược pliú bởi một tập
các phụ thuộc hàm F (hoặc F phủ E), nẻu mọi phụ thuộc hàm trong E
đều ớ trong 1' . Diều đó có ntihĩa là mồi phụ thuộc hàm trong E có thế
suy diễn được từ F. Mai tập phụ thuộc hàm íi và F là tương đương nếu
= !•' . Như vậv tirang đirưnu có ntỉhĩa là mồi phụ thuộc hàni trong E
có thế suy diễn được từ F và mỗi phụ thuộc hàni trong F có thể suy diễn
được từ F..
C'ho hai tập phụ thuộc hàm rì và F. Đô chứng minh hai tập phụ
thuộc hàm này tương dirơim. ta phái chứng minh các phụ thuộc hàm cùa
E đều suy ra dược từ f' và ngược lại các phụ thuộc hàm cùa F đều suy ra
dược từ K. De chứng minh phụ thuộc hàm X —> Y suy ra được từ tập phụ
thuộc hám I’ ciiúnạ ta cỏ thê thực hiện theo hai cách :
a) Áp dụng các quy tắc suy diỗn để biến đổi các phụ thuộc hàm
trong I*' cho đến khi nhận được X -> Y.

b) Áp dụng bồ đề 5.1, tính X (bao đóng cùa tập thuộc lính ở vế


trái), Neu X 3 Y thì X —>Y suy ra được từ F.

159
\'ỉ dụ . Xét tiai tập pliụ thu<)c hàm :
1' = IA -> c . AC' -> l). 1: -> AI), ỉ - > í 1;
1. -= { A ..> CD. i : - > AỈI}
'i a cliứnu Iiiiiih hai tập phụ thuộc hàm Iia> ià lirơn<_’ ciiron<j theo
cácli b). íỉạii dọc có tliè (iề dàim chứnu minh llieo cách a)
Cììữní: m inh !■'Ịihu F.
i ìm bao dỏiiíi cua các \'è trái của các phụ tluiộc liàiiì ironti lí Ihco 1 ' ,
Áp dụnu thuật toán 5.1 a trên, ta có :
Ị AỊ ' | A, c , Di

I H. A. D. Ilì
Ta lhâ> các hao dónu này chứa các \ c pliai tu(rnụ ửnụ. Tir cỉo su> r;i
F phu ỈZ.
ChửnỊỉ nìinh ỉ:', pỉìit F ;
'['im bao dóniĩ của các vế trái cua các phụ thuộc hàm Iroim í' theo 1 ',.
'l a có :
I M ’ = { A .C , D}

{AC1’ = i A. C, í)}

l l i ỉ " - ( K. A, 11 |
l'a ihấv các bao dóna nà) chứa các ve phai luxrnu ừng. r ù dỏ su\ ra
li pliu F.
Như v ậv. f- tương đươiií’ với 1'.

5.2.6. Các tập phụ thuộc hàm tối thiểu


Một lập pliỊi thuôc hàm là to i íhiêii neu nỏ tlioa mãn các tliòu kiỌn
sau dày ;
ỉ . Vè phai cùa các phụ thuộc hàm troim F chi có mội thuộc linli.
2. Cliúiig ta khôrm thề thay ihé bấl kỳ một phụ thuộc hani X A
trong F bàne phụ thuộc hàm Y -> A, tronu dỏ Y là lạp con dúĩiu ciui X
mà vẫn còn là một tập phụ thuộc hàm tươiiíỉ đirơne \ (Vi 1 \
3. Chúnu ta không thê bỏ di bất kỳ phụ tluiộc hàm nào ra klioi i' mà
vẫn có một tập phụ thuộc hàm tưcĩng dương với F.

160
l'a cỏ thê hiêii vè tập tối thiêu các phụ Ihuộc hàm niiư lá một tập hợp
ơ dạnt’ chuan không có sự dư thừa. Dicu kiện 1 dam bao rănu, niỗi phụ
tluiỘL' hàm là ở dạnu chính tăc vói một tliuộc tính ơ \ c phai. Dicu kiện 2

\ à } diini bao rănu, khỏnu có SỊI' dư tliừa tronu các phụ ihuộc, hoặc do co
các thuộc tính dư thừa ở vỏ trái cua phụ thuộc, hoậc do có một plụi ihuộc
có thê dược suy diỗn lừ các phụ thuộc khác ơ tronụ !' .
Một phú loi thiêu của mộl tập phụ llniộc hàm I- là ruột tập toi thiêu
các phụ thuộc hàm tươnu dirưnu với I’. '[Inrờim có rất nhiều các
phù tối thiêu cho một tập các phụ thuộc liàm. l a có thê lim dược it nhất
là inột phù tối thiểu G cho một tập các piiự thuộc hàm 1' hất k>' theo
thuật toán 5.3 sau đây :
Thuật toán 5.3 ( ĩ ì m phu loi thiếu G clio F) :
1. Dặt G F.
2. riiay thế mồi phụ thuộc hàm X —> j A |. A 2 ,....A|,} Irorm (i bàng n
phụ thuộc hàm X A). X A 2 ,.... X ~> An-

3. Với mỗi phụ thuộc hàm X A tronii Cỉ và vói mồi thuộc tính B
là một phần từ của X : Ncu ((ì - (X A)) o {(X - ị B}) -> A) là tương
dương với G thi ihay thế X -> A bẳnii (X - ỉ B ỉ ) -> A ơ trong G.

4. Vứi mỗi phụ thuộc hàni X A còn lại tronu Cì ; Nốu (Cì - |X >A I )
là tircmg đương với G thì loại ho X —> A ra khoi (ì.
Vi dụ : ĩ i m phủ tối ihiếu (ì cho tập phụ llìuộc hàm :
F = {A BC, B AC\ c AB Ị .

Bước 1 : G = {A ^ BC\ B > AC'. c -> ABỊ .


Bước 2 : G = {A B, A -> lì > A. B -> c , C’ -> A. c
Bước 3 : Do các phụ thuộc hàm trdiiu (f dều có vế trái gồm một
ihuộc tính nèn G vẫn ụiữ nuuycn.
Bước 4 ; l.oại bỏ các phụ thuộc hàni ihừa :
1) í)o A —> B và B -> c nên A c là thừa. Do c —> B \ à B —> A
nên c > A là thừa. Bỏ di nhCmí’ phụ thuộc hàm tlùra tađược một phủ tôi
thiểu là : í A B, B A, B -> c , c - > B !.

1’ 161
2) Do A lí \ à B —> c nên A -> c íà thừa. Do có F3 —> c và c A
nên íỉ -> A là thừa. Do cỏ c A và A -> B nên c —> Fì là thừa. Bó di
nhừnii phụ tliuộc hàm thừa, ta nhận được một phủ tối thiểu khác là ;
|A B. B c . c: A}.

5.3. CÁC DẠNG CHUÁN DỰA TRÊN KHÓA CHÍNH

Sau khi đã Iiuhiên cứu các phụ thuộc hàm và m ột số tính chất cùa
cluìng. bâv ụiừ ta sẽ sứ dụim chúng như thông tin vệ ngữ nghĩa cúa các
lược dồ quan hệ. Giá sử ràni». mỗi một quan hệ được cho trước niột tập
các phụ thuộc hàm và mỗi quan hệ có một khoá chính. Trong phần này
chúnu ta sẽ imhiẻn cửu các dạng chuắn và quá trình chuấn hoá các lược
đô quan hệ.

5.3.1. Nhập môn về chuẩn hoá

Quá trinh chuản hoá (do Codd đề nghị năm 1972) là xét một lược
dồ quan hệ và thirc hiện inột loạt các kiêm tra để xác nhận nó có thoả
miĩn mộl dạnti chuàn nào đó hay không. Ọuá trinh này được thực hiện
theo phương pháp trên xuống, bằng việc đánh giá mồi quan hệ với tiêu
cliuấn của các dạnu chuân và tách các quan hệ nếu cần. Quá trình này có
thế xem như là việc thiết kế quan hệ bàng phân lích. Lúc đầu, Codd đề
nghị ba dạnụ chuấn eọi là dạntỉ chuẩn !, dạng chuẩn 2 và dạng chuẩn 3.
Một định ni>hĩa mạnh hơn cho dạng chiiấn 3 gọi là dạng chuẩn Boyce-
Codci do Boyce và Codd đề nahị muộn hơn. Tất cà các dạng chuẩn này
dựa trên các phụ thuộc hàm giữa các thuộc tính cùa một quan hệ. Sau
đó. dạim chiiấn 4 (4NF) và dạng chuẩn 5 (5NF) được đề nghị dựa trên
các pliụ thuộc hàm da trị và các phụ thuộc hàm nối,
( huân ÍUHÌ d ữ liệu có tlic được xem n h ư inộl quá trình phân tích các
lược dồ quan hộ clio trước dựa trên các phụ thuộc hàm và các khoá
chính cìia chúne dc dạl đến các tính chất mong muốn :
(1) Cực tiêu sự dư thừa và
(2) C'ực tiểu các phép cập nhật bất thường.
Các lưực dồ quan hệ không thoả mãn các kiểm tra dạng chuẩn sỗ
được tách ra ihành các lược đồ quan hệ nhỏ hơn thoả màn các kiểm tra

162
vá có các tinh chất mong muốn. Như vậy. thù tục chuẩn hoá cung cấp
cho nhừng nạirừi thiết ke cư sơ dữ liệu ;
a) Một ctr câu hinh thức đê phân lích các lược dô quan hệ dira trên
các khoá cua nỏ và các phụ Ihuộc hàm giữa các thuộc tính của nó.
h) Một loạt các kiêm tra dạng chuấn có thể thực hiện trên các lược
dỏ quan hệ rièiiu rẽ, sao cho cơ sở dữ liệu quan hệ có thể được chuẩn
hoá dcn một mức cần thiết.
Oạnu chuân cua niột quan hệ liên quan đến điều kiện dạng chuẩn
cao Iihât mà nó thoa mãn. Các dạng chuẩn khi được xem xét độc lập với
các sự kiện khác không dàm bảo mộl ihiếí kế cơ sờ dừ liệu tốt. Nói
chung. \ iộc xác mi nh riènụ biệl từnu lược đồ quan hệ ở dạng chuẩn này
hay clạim chuân khác là chưa đù. 'ĩốt h(jn là quá trinh chuẩn lioá thông
qua phép tách phải khăim định một vài tính chất hỗ trợ mà tất cả các
lược do quan hệ phái có. C'húng uồiTi hai tính chất sau :

- rinh chất noi khônịỉ mắt mát (hoặc nồi không phụ thèm), nó đảm
bào rầng, vấn dề tạo ra các bộ eiã kliônu xuấl hiện dối với các lược dồ
quan hệ được tạơ ra sau khi lách.
- Tinh chắt hào loàn sự phụ thuộc, nó đàm bảo rằng từng phụ thuộc
hàm sẽ đirợc biếu hiện trong các quan hệ rièng rẽ nhận được sau khi tách.
1 'rirớc khi dịnh ntihĩa các dạng chuần. chúng ta xem lại định nghĩa
các khóa cua một quan hệ. Một .siêu khóa (siiperkey) của một lược đồ
quan hệ R = ỊA| , Ao,.... A„i là mộl lập con s các thuộc tính cùa R,
s e R. có tính chấi là khônụ có hai bộ t|, Í2 trong một trạng thái quan hệ
hợỊ-* pháp r nào cùa R mà tifS] - tT[S]. Một khỏa K là một siêu khóa có
tính chất là. nếu bỏ đi bất kv thuộc tinh nào ra khỏi K thi K không còn là
siôu khỏa nừa. Diều dỏ có nghĩa là, khóa là một siêu khóa tối thiểu. Neu
niột lirợc đồ quan hệ có nhiều hơn một khỏa thì các khóa đó được gọi là
các khóci d ự lìiyén. Một irona những khóa dự tuyến sẽ được chỉ định làm
khÓLi c h in h và c á c kh óa c ò n lại đư ợ c ÍZỌÌ là cá c k h ó a p h ụ ( s e c o n d a r y
key). Một lược đồ quan hệ phải có một khóa chính. Một thuộc tính của
một lược đồ quan hệ R dược gọi là một thuộc tính khỏa của R nếu nó là
niột thành phần của khóa chính cùa R. Một thuộc tính được gọi là thuộc
tính khôníỉ khóa nếu nò khôna phải là một thuộc tính khóa.

163
5.3.2. Dạng chuẩn 1

Một quaii hệ dirực uọi là ó í/ự//í' cìiiiúỉì I <lN F i IICU niièn eiá iri cua
inột thuộc tính chi chứa các giá trị Iiụuyên từ ((!(rn, khônẹ phân cliia
được) và giá irị của mỗi thuộc tinli troim mộ( bộ phai là lìiột uiá tiỊ don.
lấy từ miền uiá trị của thuộc tính íló. Nhir v ậ). INI' không cho "ihÓỊi
quan hệ cỏ các thuộc tính đa trị hoặc có các nhỏm thuộc t i n h lạp ( Ịuaii
hệ tronu quan hệ). Nó chi cho phép các uia irị cua các liiuộc íirh lá
niiuvên lử.
Vỉ ciụ : Xét các quaii hệ Ỉ)()N_VỊ \ à NMlẢN_Vir:N l)l,r_ AN nhir
bàng sau:
-------- ----------

ĐƠN_VỊ M ẳ^số^Đ V Tén_ĐV M ã^số^NQ L Địa_điểm

5 Nghiên cứu NV002 Nam Định, Hà Nội, Bắc fiinh

4 Hành chinh NV014 Hà NỘI

1 Lânh đạo NV061 Hả Nội

NHÂN_VIỂN_DỰ _ÁN Mà_số_DA Tên_DA Tên_nhán_vịên Số gử

1 DA01 Vân 15
Nam 20

2 DAŨ2 Nam 10
Thanh 12
Bằng 28

3 DA03 Thanh 20

Các quan hệ này khônu thoa mãn dièii kiện INI' . Quan hệ ỉ)(ín _ V Ị

chứa thuộc lính da trị Dịa_dicm ; quan hệ NI1ÁN_V11-N Dl.I ẢN :hứa


nhóm các thuộc tính lặp 'I ên nhân_\ icn và Sô_sziờ.
í)ể dạt den dạnu chuân 1 dối vói các quan hẹ trên, ta ciiiim phĩcrnu
pháp sau ;
Ix)ại bỏ các thuộc tíiih vi pliạm dạim chuan 1 và dật chúng vác một
bảng riC’im cùng với khoá chính cùa quan liộ ban dầu. Khoá cliínl cua
bàng nàv lả một tô hạp khoá cliính cua qiian hệ ban dàu và lliuộc líih cla
Irị, hoặc khoá bộ phận ciia nhóm lạp.

164
c ae ihuôc tính con lại lặp ihanii inộl quan liệ vcVi kiióa chính là khóa
cliiiili han tlùu.
Ap Jụiìí; I uợc (tò cỊuaii hệ i)(lN VỊ (ĩ trên sẽ dược tácli thành hai :
i ) ( Í N Yị(Mã_,sỏ__f)V, ÍCII Ỉ)V. Mà__số N Q l , )

IKK VỊ DỊA D I Ỉ A K M à sỏ l )V. í)ia đ iểm)

1 Liực <.!(') qiian hệ NHAN V1!'N 1)1; ÁN cìiii” dược tácli thành hai;
1».' A N ( Mã sỏ D A. l è n DA)

NHÀN. VIAn [>Ụ' ẢN(Mã số DA. Tên nhăn viên. số_giờ)

5.3.3. Dạng chuẩn 2

Dạiisi ehuàn 2 ( 2N1) dựa trèn khái niệm phii thuộc hàm đầy đủ. Một
pliụ tliuộc ỉiàni X - > Y !à mội pliụ thuộc hàm dầv dù nếu loại bỏ bât kỳ
ihuộc tinh A nao ra khỏi X thì phụ thuộc hàm khôntỉ còn đúnt’ nữa. Điều
dó có ntihĩa là : Vở\ tluiộc tiiìli A hất kỳ, A € X. (X - { A | ) / > Y. Một
phụ tỉiuộc hàm X —> Y là phụ tiuiộc hộ phận nếu có thể hò một thuộc
tinli A e X ra k!ioi X inà pliụ tỉiuộc hàm vẫn đúna. Điều đỏ có ntìhĩa là,
v ó i A e X . ( X^ Í A}) - - >Y.
/'7 Jụ : Xél ỉược dô quan ỉiẹ :
Kl i ÂN V1Í-;N DỰ ÁN (Mã số NV. Mã số DA. số giờ, Họ_tên_NV,
l en !)A, I)ịa đ i c m _ D A )

Khi đỏ :

Mà số_N'V, M ã_số_l)A > s ố giờ là phụ thuộc hàm đẩy đủ ;

Mã sô NV. Mã số DA —> 1ỉọ tcn NV là phụ thuộc hàm bộ phận,


boi \ i có phụ Ihuộc hàm ; Mà số_NV Ilọ_tèn_NV.
V^iệc kiòni tra dỏi với 2NI- bao uỗni việc kiổni tra đối với các phụ
thuộc hàm có các thuộc lính ớ \'ê irái của nó là một bộ phận của khoá
chinli. Neii klioá chinh chửa một tliuộc lính dơn tliì không cần phải kiểm
tra. MỘI luạc dồ quan hẹ R là ơ dạníi chuẩn 2 nếu nó thoá mãn dạng
clnuìn 1 \ à mỗi ihuộc tính kiiòne khoá A tronụ R là phụ thuộc hàm dầy
đú vào khoá chinh của R.

165
Nếu một quan hệ không thoà mãn đicu kiện 2NI- ta có thè chuân
hoá nó để có các quan hệ 2NI' như sau ; Loại bỏ các ihuộc linh kliông
khoá phụ thuộc vào một bộ phận khoá chính và tách thành một báng
riêng, khoá chính của bàng là bộ phận khoíí mà chúng phụ Ihuộc vào.
Các thuộc tính còn lại lập thành một quan hệ, khóa chính của nó là klióa
chính ban đầu.
Ví dụ : Xét lược dồ quan hệ :
N H Â N _ V I Ê N _ D Ụ _ Á N ( M ã số N V . Mà số DA. s ố _ g i ờ . NV,
Tên_DA, Đja diém DA)
với các phụ thuộc hàm ;
Mã_số_NV, M ã_số_DA —> s ố _ g iừ ;
Mã_số_NV —> 1lọ tên NV ;
Mã sổ D A —> rên_DA, Địa_điểm_DA.
Ta nhận thấy, ớ đây có những thuộc tính không khoá phụ thuộc vào
một bộ phận của khoá chinh. Như vậy, nó không thoả mãn điều kiện 2Nr.
Áp dụng phương pháp chuấn hoá trên, lược đồ được tách thànli các
lược đô như sau :
N DI (Mã số DA. Tẽn_DA, Địa điềm_DA) ;
N D2(Mã số NV. Họ tcn_NV) ;
N D3(Mã số NV. Mà_số_I)A, số_giừ),

5.3.4. Dạng chuẩn 3

D ạng chiiẩn 3 (3NF) dựa trên khái niệm phụ thuộc bẳc cầu. Một
phụ thuộc hàm X Y Irong một lược đồ quan hệ R là một phụ thiiộc
hàm bắc cẩu nếu có một tập ỈK.rp thuộc tính z khônti phải là một klioá dự
tuyển, cũng không phải là một tập con của một khoá nào, và ca X z,
z Y đều đúng. Theo định nghĩa nỉ>uyên thuý của Codd, một lược đồ
quan hệ R là ở 3NF nếu nó thoả mãn 2NF và khônu có thuộc tính khỏng
khoá nào của R là phụ thuộc bẩc cầu vào khoá chính.
Neu một lược đồ quan hệ khôntỉ thoà mãn điều kiện 3NF\ ta có thc
chuẩn hoá nó đế có dược các lược đồ 3NỈ' như sau ; Loại bỏ các thuộc
tính phụ thuộc bắc cầu ra khòi quan hệ và tách chúng thánh một quan hộ

166
riêng có khoá chính là thuộc tính bấc câu. Các thuộc tinh còn lại lập
thành một quan hệ có khóa chính là quan hệ ban dầu.
Ví dụ : Xét lược đỗ quan hệ :
NHẢN_V|[-Nj:)ƠN_VỊ (Họ_têĩi_NV, Mã số NV. Ngày_sinh, Dịa_chi.
Mã_số DV, Tén ĐV. Mã_scWNỌI.)
với các phụ thuộc hàm :
Mã số_NV —>■Họ_tên_NV, Nuày sinh, Địa_chi, Mã_số_ĐV,
Tên ĐV, Mã_so_NQL :
Mã_số J ) V -> Tên_ĐV, Mã^số_^NỌl.
Các thuộc tính Tên_ĐV, Mã_số_NQL phụ thuộc bác cầu vào khoá
chính, lược đồ quan hệ không thoả mãn điều kiện 3NF.
Áp dụng phương pháp chuẩn hoá ở trên, lược đồ được tách ra như sau :
NV_DVl(Họ_lên_NV, Mã số NV. Ngày_sinh, Địa_chi, Mã_số_ĐV)
NV DV2(Mã số ĐV. Tên_ĐV, Mã_số_NQI.)

5.3.5. Dạng chuẩn Boyce-Codd


Một lược đồ quan hệ R được gọi là có dạng chuân B oyce-C odd
(BCNP') nếu nó là ở dạng chuẩn 3NF và không có các thuộc tính khóa
phụ thuộc hàm và thuộc tính không khóa.
Vi dụ : Lược đồ R(Ại. A 2 , A 3 , A 4 , A 5 ), với các phụ thuộc hàm
^2 ^3! -^4’ ^ 5 ■■'^4 ^2-
Quan hệ này vi phạm dạng chuẩn BCNF, bời vì có thuộc tính khóa
(A-)) phụ thuộc hàm vào thuộc lính không khóa (A 4 ).
Nốu một lược đồ quan hệ không thoa mãn điều kiện iìCNF, ta có
thể cluiẩn hoá nó để có được các lược đồ nCNF như sau : ĩ.oại bỏ các
thiiộc tính khóa phụ thuộc liàm vào thuộc tính không khóa ra khói quan
hệ và tách chúng thành một quan hệ riêng có khoá chính là thuộc linh
không khóa gây ra phụ thuộc.
Áp dụng phương pháp chuẩn hóa ở trên, krợc đồ được tách ra
như sau :
R , ( A 4, A 2 )
A4, A3, A5)

167
Vi iìụ : C’Ik) lược dồ quan hẹ R =- {Ạ. B. c . D, E, G, 11, I. J} có
khóa chính là A, B.
Vói tập các phụ thuộc hàm :
A, B c . D. i ;, r. (ì. n, 1. J
■A > ì ;. í ', g . h . 1. ,f

I 1. J. í) n
Do có plụi tỉiuộc hám A lí, ỉ ’. G. II, ỉ. J, m à A là một bộ phận
CLia khỏa chinh nC*n quan hệ R là vi phạm 2 N F . 'l a tách R thành :

R,(Ạ . ỉ:. I; G. i l J, .1) và R:(A, B, c , D).

lìo im R| do có phụ thuộc hàm F - > 1, J ; nên ta có I, J phụ thuộc


hắc cầu vào khỏa chính. R| là quan hệ vi phạm 3NF. Trong R t ta có phụ
thuộc hàm D —> lì, irorií; đó B là một thuộc tính khóa, R-> vi phạm
BCNF. Tách R) và R) ta có ;

I<-1 i(iì, i, J). R | 2 (A. Ei, F, G, il), R 2 i(D, B), R 2 2 (A, D, C)

5.4. CÁC THUẬT TOÁN THIẾT KẾ c ơ s ở DỬ LIỆU QUAN HỆ


VÀ CÁC DẠNG CHUẦN CAO HƠN

Như chúnu ta dã thào luận irong đầu Chương V, có hai cách chính
đè thiết kc cơ sở dữ liệu quan hộ. Cách thứ nhất là thiết kế trên-xuong
(top-down dcsign). Dây là cách hay được sứ dụng nhất Irong tliiết kế
ứng dụng cơ sở dữ [iệu thươnẹ mại. Nó bao ụồm việc thiết kế một lược
đô quan niệm trong một mô hỉnh dĩr liệu bậc cao, chẳng hạn như mô
hình E-R. sau dỏ ánh xạ lược đồ quan niệm vào một tập quan hệ băng
cách sử dụng các thu tục ánh xạ như đã nói đến trong ChưcTiit> III. 'ĩiếp
theo, mỗi một quan hệ dược phàn tích dựa trên các phụ thuộc hàm và
các khỏa chiiih dirực CÍII dịnh bầnsi cách áp dụng các thủ tục chuân hóa
như đã nói đèn tronu mục 5.3 đê loại bỏ các phii thuộc hàm bộ phận và
các phụ thuộc hàm bắc cầu. Việc phàn tích các phụ thuộc không m ong
muốn cũng có tliế được tlìực hiện tronu quá trinh thiết ke quan niệm,
bang cách phân tích các phụ lluiộc hàm uiữa các thuộc tính bên trong các
kiều thực thè và các kiên liên kết đê ntiãn ngừa sự cần thiết có sự chuẩn
hóa phụ thòm sau khi việc ánh xạ được thực hiện.

168
Cách thừ hai là (hiél ké chrới-lén (bottom-up desiun), mội kỳ tliuật
tiếp cận \ ả nhin nỉiận việc thiết kế lược đồ cơ sở dữ liệu quan hộ một
cácli eliặt chè, trên cơ sở các phụ thuộc hàm được chi ra trên các thuộc
tínli của cơ sờ dữ liệu. Sau khi người thiết kế chi ra các phụ thuộc, người
ta áp dựiiLĩ một thuât toán chuấn hóa đế tống hợp các lược dồ quan hệ.
Mồi một lirạc dồ quan hệ riène rẽ ờ dạnti chiiân 3NI-, hoặc BCNF. lioặc
ờ dạtiu c h u ã ii CÍU) h a n .

'I ronu pliần nà\' chú yếu trinh bày cách tiếp cận thứ hai. I rước tiên
ta dinh nuhĩa lại các dạng chuân một cách tồng quái, sau đó trìnli bày
eác thiiàl toán chuân hóa va các kiều phụ thuộc khác. Chúng ta cũng sẽ
trinh háv chi tiêt hưn về hai tính chất cần có là tách khônc mất mát và
tách bao toàn phụ thuộc. C'ác thuật toán chuẩn hóa thường hất đầu bàng
việc t ỏ n u hợp niột lược đồ quan hệ rất lớn, eọi là q u a n h ệ p h ó c Ị u ả t
(universal rclation), nó chứa tất cá các thuộc tính của cơ sờ dừ liệu. Sau
đỏ ilụrc liiện iặp đi lặp lại việc tách (decomposition) dựa trên các phụ
thuộc hàm và các phụ thuộc khác do người thiết kế cơ sờ dừ liệu chi ra
cho đến khi không còn tách được nữa, hoặc không muốn tách nữa.

5.4.1. Định nghĩa tổng quát các dạng chuẩn


Nói chuníi, ta muốn thiết kế các lược đồ sao cho chúim không còn
các phụ ihiiộc bộ phận và các phụ thuộc bac cầu, bời vì các kiêu pliụ
thuộc này gây ra các sứa đồi bất thường. Các bước chuân hóa ihành
3NF. BC N F đã được trinh bày trong phần trước bànc cách loại bỏ các
phụ thuộc bộ phận và bấc cầu dựa trên khóa chính. Các định nghĩa nàv
khônti tíiih đến các khóa dự tuyển cùa quan hệ. Trong phần này, chúng
ta sc đưa ra các clịnh nghTa về các dạng chuẩn tồng quát licm. cỏ tính đến
tất cá các khỏa dự tuyển. C'ụ the, thuộc tính khóa được định ntỉhĩa lại ỉù
mội họ />ỉìận cùa một khóa d ự íiiyên. Các phụ thuộc hàm bộ phận, dầy
đú, báe cầu bâ\ uiờ sẽ được định nghĩa đối với tất cà các khóa dự tuyến
cua quan hệ.
Dịtìlì Hiỉhĩa cỉạng cìniấn ì : Một lược đồ quan hệ I< là ở dạng chuần
1 (INI-'), nếu miền íiiá trị của các thuộc lítih của nó chỉ chứa các iĩiá trị
niiuyctì lư (đ(Tn. k h ô n g phân chia được) và giá trị cua một ihuộc tính bất
kv trong một bộ giá trị phải là một giá trị đ(m thuộc miên giá trị cúa
thuộc tính đó.

169
DỊnh nịịhĩa cỉạnịĩ chuún 2 : Một lược dồ quan hệ R là ó dạtm chiiân
2 (2NF), nếu mỗi thuộc tinh không khóa A trong R không phụ thuộc bộ
phận vào một khỏa bât kỳ cùa R.
Vi dụ : Xét lược do quan hệ :
R = {A, B, c. D, E, F'
với các phụ thuộc hàni ;
A ^ B. c , D. H, F

B, c -> A, D, F. F
B -> F ; D E
Lược đồ trên có hai khóa dự tuyên là A và BC, chọn A làm khóa
chính. Do có phụ thueìc hàm B —> F nên F phụ thuộc bộ phận vào khóa
B, c , lược đồ vi phạm chuẩn 2NF. (Cliú ý ràne, tronạ định nghĩa dạng
chuẩn dựa trên khóa chính, lược đồ này không vi phạm 2NÍ').
Dịnh nghĩa d ạng chiiãn 3 : Một lược đồ quan hệ R là ở dạng chuẩn
3 (3NF) nếu khi một phụ thuộc hàm X —> A thoà mãn trong R, thì :
1) í ỉoặc X là một siêu khóa cùa R ;
2) Hoặc A là một thuộc tính khóa của R.
Vỉ dụ : Xét lược đồ quan hệ R ớ ví dụ trên. Giá sử nó được tách
thành hai lược đồ :
R, = { A , B , C , D, E}

R 2 = { B , F}
Do có phụ thuộc hàm D E, iroiiií đó D khôntì phải thuộc tính
khỏa, H cũng không phải là thuộc lính khỏa, nên RI vi phạm chuẩn 3NỈ'.
Dịnh ngbĩu dạng chuùu Ỉĩoyce-Coíầi : Một lược đồ quan hệ là ở
dạng chuẩn Boyce-Codd (BCNF) nếu khi một phụ Ihuộc hàm X -> A
thoá mãn trong R thì X là một sièu khóa của R.
Ví dụ : Xél lược đồ R = {A. B, c . D) có A ỉà khóa chính và {B, C}
là khóa dự tuyến. Nếu có tồn tại một phụ thuộc hàm D —> B thi lirợc đồ
này vi phạm BCNF vi B là một thuộc tính khóa. (Chú ý răng, trong
trườne ỉiợp định ntĩhĩa dạníí chuẩn dựa trên khóa chính, lược đồ này
không vi phạm BCNF).

170
5.4.2. Phép tách các lược đô quan hệ

'ỉ'ách Ì/U(ÍH hệ C'ác ihuật toán thiết kế co sờ clữ liệu quan hệ


dược trinli bà> tronu phần này bất đầu từ một lược dồ quan hệ phổ quát
R ^ !A | , .....A,,} chứa lất cá các thuộc tính cua cơ sờ dừ liệu. Với gia
thièl quan hệ phò quái, tèn của mỗi thuộc tính là duv nhất. Tập h(7 p F các
phụ thuộc hàm thoá mãn trên các thuộc tinh của R do những nẹười thiết
kc cư so dừ liệu chi ra sẽ được các thuật toán sử dụng. Sừ dụng các phụ
Ihuộc ham, các thuật toán sè tách lược đồ quan hệ phô quát R thành một
tập hợp cac hrực đè quan hệ = | R | . R 2 ,..., Rnii - tập liợp sẽ là lược
đồ cơ S(í dừ liệu quan hệ. D được gọi là một p h é p lách (decomposition)
của íl. Nlnr \ ậ y . phép tách một lược đồ quan hệ R = {A|, A 2 ...., Ap} là
tliay thê nó bầng một lập các lược đồ con D = {R|, R 2 ,...< Rm}- trong đó
các R, vói i = 1. 2 .....m ; là các tập con của R và

R| u R2 w R3 u . . . u Rm = R .

I. Phép tách và s ự bảo toàn phụ thuộc


Việc inỗi phụ thuộc hàm X Y trong F hoặc được xuất hiện trực
tiếp một iroim các lược đồ quan hệ R, tronc phép tách l), hoặc có thê
dirợc suy diễn từ các phụ thuộc hàm có trong Rị là rất có lợi. Ta gọi đỏ là
ctièu kiân hao íoàìì phụ thuộc. Chúim ta muốn bảo loàn phụ thuộc, bới vì
mồi phụ thuộc Irontí F biều thị một ràng buộc trong cơ sờ dĩr liệu. Bây
lịiờ chủne la dịnh nuhìa các khái niệm này một cách hình thức.
Clu) trước một tập hcrp các phụ thuộc F trên R, p h é p chiốu cứa F
írên R,, ký hiệu là 7Tr (F). trong đó Rị là một tập con của R, là một tập

Ik.tit các Ịihụ thuộc hàm X -> Y trong sao cho các lliuộc tính trong
X Y clcu dược chửa troni’ Rj. Như vậy, phép chiếu của V trên mõi lược
dồ quan hệ R| trong phép tách í) là tập hợp các phụ Ihuộc hàm trong
(bao đónu cùa !•), sao cho các thuộc tinh ớ ve trái và ve phái cùa chủng
dều a trong Rị. 'l a nói ràng, phép tách D = {R|. Rị----. KinỊ của R bào
loàn phụ thuộc đối với 1' nếu hợp cùa các phép chiếu của F trên mỗi Ri
trontỉ I) là tươim đircmg với F. Điều đó có nghĩa là :

171
((Tĩịị*'I (F) ) u (7TkJF)
‘'2
) U ... U ( 7t,^
‘'m ( 1 ) ))’ = [•
N ế u m ộ t p h é p t á c h là k h ô n í i b à o t o à n p h ụ t h u ộ c , m ộ t v à i Ịihụ t ỉi uộ c

sẽ bị mất trong phép tách. Đẻ kiếm Ira xcin một phụ tliuộc hàm X - > B
trong đó X là tập thuộc tính thuộc vc F<|. B hì một thuộc tính thuộc R|, cc
thoả mãn trong Ri hay không ta làm như sau : rruớc hcl linli x ’, sau do
với mỗi thuộc tính B sao cho :

1. B là một thuộc lính của Ri ;

2. B là ơ trong x " ;
3. íì không ớ tronụ X.
Khi đó phụ thuộc hàm X ^ B thoả mãn trong Ri-
T a x é t m ộ t v í cIịi v ề p h é p t á c h kliôní> b á o t o à n p h ụ t h u ộ c .

Vi dụ : Xét lược đồ quan hệ ;


R = !A, B. c , D}
với các phụ thuộc hàm A BCD ; BC" —> DA ; [ì -> lì.
Lược đồ này có hai khóa dự tuyến là A và BC. Giả sử nó được
tách thành :
Ri = {D, B}, lược đồ này chứa phụ thuộc hàm D —> B

R? = {A, c , D}, lược đồ này chửa phụ thuộc hàm A CD.

Rõ ràng sau khi tách, phụ thuộc hàm BC -> DA bị mất.


Định ỉý 5.3 : Luôn luôn tim được mộl phép tách báo toàn phụ thuộc
D đổi với F, sao cho mỗi quan hệ Rj tronsỉ I) là ớ 3NI' .
Phép tách D dược thực hiện theo thuậl toán sau dây :
Thuật toán 5.4 : Tạo một phép tách bủo toàn phụ thuộc

D = { R | , R 2 .....Rm}
của một quan hệ phổ quát R dựa trèn một tập phụ thuộc hàm F, sao cho
mỗi Rị trong D là ở 3NF.
Thuật toán này chỉ đám bào tínli chất bao toàn phụ thuộc, không
đàm bảo tính chất nối không mấl mál.

172
lỉìpiu : MỘI quan liệ \'ũ trụ Fĩ và một tập phụ thuộc hàm F trên các
Ihuộc tính ciia R ;
1) l i m p h u l ố i ll i i è i i ( i c u a 1\

2) V(ĩi inồi \ é tiái X cua niộl phụ thuộc hàm xuất hiện trong G, hãy tạo
m ộ t l ược ttô t r o i m I) \ ơ i c á c t h u ộ c lính ị X KJ | A | } u {A?} u . . . u { Aị , ) } ,

tronu dỏ X - > A | . X > At,..., X A|, chi ià các phụ thuộc hàm trong G
\(Vi X là v è trái ( X !a kl i ỏ a c u a q u a n h ệ n à y ) .

3) Dặt các tlni(}c línli CÒII lại (nhĩrntỉ thuộc tính chưa được đặt
\ à o quan liộ nào) vao một quan hệ dơn đê dám bào tính chất báo toàn
thuộc tính.
Ví du : Xét krạc dò :
R ịA. lì. c . D}.
với các phụ thuộc hàm :
1 - ÍA BCD ; BC DA ; D B] ;
!,ưọc do này co liai khỏa dự’ tuyên là A và BC.
I'a tl iực h i ệ n tl i uật toáii n h ư s a u ;

Birớc / rrước tiên tim G là phù tối thicii của F. 'lìieo thuật toán tìm
phu tối thiêu, đầu lièn ta làm cho các vể phải trong G chỉ chứa một thuộc
tí n h , ta c ỏ ;

(} = ỊA -> 1 *, ; A c ; A -> ỉ) ; BC -> D ; BC -> A ; D -> B}


Sau (ỉỏbo di các phụ thuộc hàm thừa (!à các phụ ihuộc hàm có thế
suy diễn dược từ các phụ thuộc hàm khác). l'a thấy A —> Blà thừa, vì có
A I), D B ; B( ~> D là thừa vì BC —> A và A D. Vậy G còn lại là :
(} = 1A -> C' ; A - > D ; BC A ;D B}
Birớc 2 (iliép các plụi lluiộc hàm có cùng vế trái vào lược đồ con.
I.irực dồ R sẽ được lách ihành ; R|(A, c . D) ; R2(B, c , A) ; R3(D, B)
\ ớ i c á c k h ỏ a c h í n h d ư ợ c iiỊich dưới.

Dịnh lý 5.4 : I huật toan tách lược dô R = ỊAi, A 2 ...., An) thành tập
các lược dồ con R|, (i == 1, 2.....m) ớ 3N1’ và bảo toàn phụ ihuộc.
Clnrn^ minh Kõ rànu ràim, tất cả các phụ thuộc hàm trong G đều
clirợc tliuật toán bao loàn, bơi vi mồi phụ thuộc xuất hiện trone các quan

173
hệ của phép tách í). Vi G tưtmg đương với 1' nên tầt cá các phụ thuộc
của cCina dược bào toàn tụrc tiếp bằniỉ thuật toán, hoặc được suy diễn
từ những phụ tlniợc hàm Irong các quan hệ kết quà. Như vậ>, tinh chấl
bào loàn phụ thuộc dược đàm bảo. Do G là pliủ tối thiêu, iiCmi trong ( i
khôim có nhừnu phụ thuộc hàm bộ phận và phụ thuộc hàm băc càu. Do
vậy, các phụ thuộc liàm Irontỉ G đều là phụ thuộc hàm trực licp, diều dó
có nghĩa là các Rị dều ơ 3N1'.

2. Phép tách k hôn g mất niát thông tin (Losslcss join)


Phép tách D phài cỏ một tính chất nữa là tách khôni’ mất nial (hoăc
lính chất nối khôiiíi phụ thêm), nó đàni bào răng, khònu có cac bộ gia
được tạo ra khi áp dụiiỉi một phép nối tự nhiên vàơ các quan hệ trong
phép tách.
Một cách hình thức, ta nói rằnụ. một phép tách í) = {Rị. R:-.... R,„|
cua R c ó linh chât khôntỉ mất mát t h ô n g tin đôi với m ộ t tập hợỊ)
phụ thuộc liàm F trcn R, ncu với mỗi trạnsí thái quaii hệ r eua R Ihoa
mãn F thi

trong đó * là phép nối tự nhiên của các quan hệ trong D, 7[|J (r) lá phép

chiếu của r trên Rj.


Nếu một phép tách không có tính chất không mất mát ihôniĩ tin thi
chúng ta có thê nhận dược các bộ phụ thêm (các bộ giá) sau khi áp dụng
các phép chiếu và nối tự nhiên. Nghĩa của từ mấl mát ở đây là mấl mát
thông tin chứ không phải mất các bộ giá trị. Vì vậy, với tính chất này ta
nèn gọi chính xác ỉiơn lả tính chất nối kỉiông phụ thêm.
riiuật toán sau dùng để kiểm tramột phép tách có tính cliât nòi
không mất niál thông tin hav không :
Thuật toán 5.5 : Kiểm tra tính chất nối không mất mái.

ỉnput : Một quan hệ vũ trụ R(Ai, A 2 ,..., An), một phép tách
D = {R|, R 2 ' —' Rm} cùa R và mộl tập F' các phụ thuộc hàm.
1) Tạo một ma trận s có m hàng, n cột. Mồi cột cùa ma trận i'mg với
một thuộc tính, mồi hàng ứng với mỗi quan hệ Rj.

174
2) [J)ặt S(i. ị) = 1 nêu thuộc tính Aj tlniộc về quan hệ Rj và bànu 0
trong trưòníỊ hợp imưạc lại.
3) I ặp lại vònti, iặp SÍIU dày c h o đén khi nào v i ệ c thực hiệ n v ò n g lặp
khônạ làm thay dôi s ; Với mỗi phụ thuộc hàm X -> Y tronc F, xác định
các hàng trong s cỏ các ký hiệu 1 như nhau trong các cột ứng với các
thuộc tính tronu X. Ncu có một hàng trontỉ số dó chứa 1 irong các cột
ứ n g với thu ộ c tinh Y . thì hày làm c h o các CỘI tim nụ ứ n g c ủ a c á c hàng
khác cũng chứa 1 .
4) Neu có một liàim chứa toàn ký hiệu ” 1" thì phép tách có tính chất
nổi không mất mát ; nmrợc lại. phép tách không có tính chất dó.
ỉ)ịnh lý 5.4. rhuậl toán 5.5 là dúni;.
( 'hứnịỉ minh : Cho trirác mộl qiian hệ R được tách thành một sô
quan hộ R |, R-).....R,„. I huật toán 5.5 bắt đầu bằnu việc tạo ra một trạng
thái quan hệ r tronu nia irạn s. 1 ỉànu i tronc, s biêu diễn một bộ tj (tương
ừ n g \'ới qu an hệ R|). Ílàníi nà \ c ó các kv hiệu "1" íronụ c á c CỘI tưưng

ứng với các thuộc lính của R| và các ký hiệu "0" trong các cột còn lại.
Như vạv, tj|R,] bao gom các íỊÌá trị 1. Sau dó, thuật toán biến đôi các
hàng của ma trộn nà> (tronti vòng iặp của bước 3), sao cho chúng biểu
diễn các bộ thoá mãn lất cá các phụ thuộc hàm troim F. () cuối vòng lặp
áp dụng các phụ thuộc hàm, hai hàng bất kỳ trong s chúng biều diễn hai
bộ trona r có các tziá trị aionu nhau đối với các thuộc tính của X ở vế trái
cùa phụ thuộc hàm X Y trong V cũng sẽ có các giá trị giống nhau đối
với các thuộc tính cùa vế phái Y. c ỏ thề thấy rànu. sau khi áp dụntỉ, vòng
lặp cua bước 3. nếu một hàng bat kỳ trontỉ s kết thúc với toàn ký hiệu
" 1 " thi điều đó có nghĩa là :

hay là D có tính chất tách không mất mát đối với F.


Mặt khác, nếu khôiiíi có hànt> nào kết thúc bằng tất cà ký hiệu " 1"
thì D không thoả m ãn tính chất tách không mất mát. Trong trưcTng hợp
sau, trạntỉ thái quan hệ r được biểu diễn bàng s ớ cuối thuật toán sẽ là
một \ í dụ về một trạng thái quan hệ r của R thoà mãn các phụ thuộc
trontỉ F, nhưng không thoà mãn điều kiện tách không mất mát. N h ư vậy,

175
quan hộ nàv được dùng như một phan ví dụ chứng minh rãne, 1) không
có tính chất tách không mất mát đối với F. Chủ ý rằng, các ký hiệu "1"
và "0" khỗim có ý ní>hĩa dặc biệt gì ở cuối thuật toán.
Ví dụ ỉ :
R = (Mã_số_NV, Tên_NV, Mã_số_DA, Tèn_DA, ỉ)ịa_c1iêrn_DA,
số_giờ)
R! =(Tên_NV, Dịa điềm J ) A )
R2 = ( M à _ s ố _ N V , M ã _ s ố _ D A , s ố _ g iừ , 'Ten_DA, Đ ịa _ d i ê n i_ [) A )

í' = { Mã_số_NV - > 'í'ẽ n _ N V . Mã_số_DA •-> {T è n ^ ^ D A , í)ịa_dièin_DA },


{Mã_số_NV, Mã_số_DA} s ố _ g iờ }

.... ^ ' ■ ■
M ả_số_NV Tên_NV Mã_số_DA Tén_DA Địa_điểm _DA số_giờ
1 1

1 1 1 1 1

Xét lần lượt phụ thuộc hàm Mã_số_NV —> Tên_NV, M ã_sổ_D A ->
(Tên DA, ĐỊa điểm DA}, {Mã số NV, Mã số DAỊ -> s ố giờ. Ta
thấy khônu có trường hợp nào các thuộc tính tương írnỉi vói các vế trái
đều có aiá trị bằng 1. Vì vậy, không thể làm gì để biến dổi ma trận. Ma
trận không chứa một liàna gồm toàn ký hiệu "1". Phép tách là mất mát.
Vi ciụ 2 :
R = (Mã_số_NV, Tên_NV, Mã_số_DA, Tên_DA, Dịa_điểni_DA, sổ giờ)
R!= (Mã_số_NV, Tên_NV)
R2 = {Mã_sổ_DA, Tên_DA, Địa_điểm_DA}
R3 = (Mã_sổ_NV, Mã_số_DA. sổ_giờ)
[• = {Mã số_NV -> Tên_NV, Mã_số_l)A -> {Tên_DA, Dịa_dicm_DA},
ỊMã_số_NV, Mã số_DA} -> s ổ _ g i ờ }

Mã_số_NV Tén_NV Mã_số_DA Tên^DA Địa_điểm _DA sổ_g»ờ

1 1 0 0 0

0 0 1 1 1

1 0 1 0 0

(Giá trị ban đầu của ma trận S)

176
Xét phụ thuộc hàm Mã số NV -> rêii_NV. ỉ a thầ> hànu thứ 1 \ à
hàng thử 3 cua s có chửa 1 tại Mã số_NV, Inìnu dó hànu thứ 1 chứa 1
tại rcn_N V nên la sửa lại uiá trị của Tèn_NV ờ hàtm thử 3 thành 1.
Xét phụ thuộc hàm Mà_số_ĩ)A —> í l èn 1)A. Dịa diC'ni_r)A; . ta
thấy hàng thứ 2 và liàng thứ 3 cua s chứa I tại Mã_số i)A, troim d(S
iiàng thứ hai chứa 1 tại 'l'èn J ) A và Dịa_diêm_[)A nèn ta sưa uiá irị cua
các thuộc tính đó tại hàng thứ 3 thành 1.
...— ....... ■

M ã_số_NV Tén^N V Mà_số_DA Tén^DA Địa_điém _DA số_giờ

1 1 0 0 0 0

0 0 1 1 1 0

1 1 Jỗ^ 0^ 1

Ma trận chứa một hàng gồm loàn ký hiệu 1, Phép tách này là khôim
mất mát.
rhuật toán 5.5 cho phép chúníỉ ta kiêm ira xcni một phép tách D
cụ thể có tuân theo tính chất nối khôim mất mát hay khônu. C'âu hòi
tiôp theo là, liệu có một thuật toán tách inột lược đồ quan hộ phổ quát
R = ỊAi, A 2 ,..., An} bànu mộl phép tách 1) = [R |, R t ..... R,„'f sao cho
mồi Rj là ờ FÌCNF và phép tách D có tính chất nối khónu niẨt mát đối
với F hay không ? Câu trà lời là có. rrirớc khi trình bà\ thuậi toán, ta
xem một số tính chất cúa các phép tách nối khôim mất mát nói cliunti.
Tính chất 1 : Một phép tách D = {Rị, R-i} của R có tinh chất khỏnu
mất mát ihông tin đoi vứi một lập phụ tluiộc hám F trôn R klii v à chi khi :

- Hoặc phụ thuộc hàm ( ( R | r ì Ri) -> ( R ị - Rọ)) ơ troim f' ;

- lio ặ c phụ thuộc hàm ( ( R | r ì Rt) —> (Rt - R |)) a tron” [• .


Với tính chất này, có the kiêm tra lại các phép tách clniầii hóa trong
mục 5 . 3 và sẽ thấy rầntỊ, các phép tách dó là thoà mãn linh chất noi
khôna niất mát.
Tính chất 2 : Neu một phép tách I) = ỊR|, R-I,.... R,„ị cua R có tính
chất nôi không mất mát dồi vứi một lập phụ thuộc hàm I’ trèn II. \ à néu

'l/i 177
niộl phép tácli I)| = [Q|. Q 2 ,-... Qk} 1^1 có tính chất nối không mất
mát doi vứi pliép chieu của F trên Ri thi phép tách

1)2 -= íí<|, í<2.....R ,-h Ql, Q2.......Qk, R i . l .........Rm}


của R có tính chất nôi không mất mát đối với F.
'1'íiih chất này nói rầiiụ, nếu một phép tách D có tính chất nôi không
mất mát đối vói một tập F', ta tiếp tục tách một trong các quan hệ R|
tronu D thànỉi phép lách khác D/ (/ = 1. 2...., k) có tính chất nối không
mất mál đối với 7C|^ (F) thi việc thay Ri trong D bằng D/ (/ = 1, 2,..., k)

cũnu tạo ra một phép tách có tính chất nối không mất mát đối với F.
'í huật toán 5.6 sau đây sử dụng hai tính chất trên để tạo ra một phép
tách D = [R |, R-),..., Rm) cúa một quan hệ vũ trụ R dira trên inột tập các
phi.i thuộc hàm F. sao cho mỗi Ri là BCNF.
Thuật toán 5.6 : rách quan hệ thành các quan hệ BCNF với tính
chất nối không mất mát.
Itipul : Một quan hệ vũ trụ R và một tập hợp các phụ thuộc hàm p'
. trên các thuộc tinh của R ;
1) Đặt D ;= {R} ;
2) Khi có niột lược đồ quan hệ Q trong D không phải ở BCNF, ta
thực hiện vònsỉ lặp : Với mỗi một lược dồ quan hệ Q trong D không ở
ỈK'NF hãy lìm một phụ thuộc hàm X Y trong Q vi phạm B C N F và
ihay thế Q troni’ I) bằng hai lược đồ quan hệ (Q - Y) và (X yj Y). Quá
trinh lặp dừng khi không còn quan hệ nào trong D vi phạm BCNF.
Mồi vòim lặp trong thuật toán 5.6, ta tách một quan hệ Q không
phai 1K'NI' thành hai lược dồ quan hệ. Theo các tính chất 1 và 2, phép
tách I) có tính chất nối không mất mát. Ket thúc thuật toán, tất cà các
quan hệ troim D sẽ ớ lìCNK.
1rong bước 2 của lluiật toán 5.6, cần xác định xem một lược đồ
quan hệ Q có ớ hay khôníỊ. Một phương pháp đề làm điều đó là
kiếm tra. Với mỗi phụ thuộc hàm X —» Y trong Q, la tính x ^ . Ncu
khônu chứa tất cả các thuộc tính trong Q thi X —> Y vi phạm BCNF', bời
vi X khôníỊ phái là một siêu khóa.

178
Một kỹ Ihiiật nữa dựa trên quan sát răng, khi mộl lược đồ quan hệ Q
vi phạm BCN1-' thì cỏ tồn tại một cặp thuộc tinh {A, FỈJ trong Q sao cho
lỌ - ỊA. B}Ị A. Bẩnti việc tính bao dóiiụ {Q - {A, B}} cho mồi
cặp tliuộc tinh {A, BỊ của Q và kiêm tra xem bao đónti có chứa A (hoặc
B) hay không, chúna la có thè xác định được Q có ờ BCNI' hav không.
Ví dụ : Xét lirực đò quan hệ ;
R - {A. B. c . I). E, F)
với các plụi thuộc hàm :
A BCDHF. BC -> ADEỈ-, B ^ F. D ^ E, D ^ B.
Lược dồ qiian hệ này có hai khóa dự tiiyên là A và BC. Ta có B —> F
vi pliạm BCNF vì B khôiia phái là sièu khóa, R được tách thành
R |(B. F) với phụ thuộc hàm B —>
K->(A. B, c . D, E:) với các phụ thuộc hàm :
A -> S C D E , BC - > A D F , D E, D - > B.

Do D -> n vi phạm BCNF' (D là một thuộc tính không khóa), R 2 được


lách thành R 2 i(I^. K) với phụ thuộc hàm I) -> E.
R 2 ^(ABCD) với các phụ thuộc hàm :
A ^ IKT), BC AD, D B.
Do D - > B vi phạm BCNF (D không phái là thuộc tính khóa), R 22 được
tách thành R 2 2 l(í^'
R t ) 7(A, C, D) với phụ thuộc hàm A —> BI) (phụ thuộc hàm BC —> AD
bị mất).

rỏm lại. ta có phép tách D = {Ri, R 2 1 . K 2 2 I' í^2 2 2 }- Phép tách này
có lính chất nối không mất thông tin nhirng không báo toàn phụ thuộc.
Nốu chúng ta muốn có inộl phép tách có tính chất nối không mất mát và
báo toàn phụ thuộc thì phải hài lòng với các lược đồ quan hệ ờ dạng
3NĨ'. H uiật toán sau đây là cài tiến của thuật toán 5.1, nó tạo ra một
phép tách lỉioả mãn :
Báo toàn phụ thuộc ;
- Có tính chất nối không mất m á t ;
- Mồi lược đồ quan hệ kết quả là ở dạng 3NF.

179
ỉ huật toán 5.7 : 1hiiật toán lòne hựp quan hệ vói tínli chát hào toàn
phụ thuộc và kliôiiu m;U mát.
lfìpìtt Một quan liệ \ ũ trụ R \ a mộl tập các pliụ thuộc liàni 1' ircMi
các t li i i ộ c tin h cua R.

1) Tìm phu lòi thicu G cho 1'.


2) Với inồi \ c trái X cua một phụ thuộc hảrn xiiàt hiện trong (t hãy
tạd ra niộl lược dò quan hệ troim 1^ vái các thuộc tính
; x 'vj Í A | I ^ ỊA2! ^ {Akì ^

troiie đỏ : X -> Aị. X Aọ,..., X Aị, chi là các phụ thuộc hàm o
t r o n u ( ì \ (Vi X la v ố ir á i ( X là k h ó a cua q u a n hệ n à y ).

3) Nèu khônu có lirợc dồ qiian liệ nào trona D chứa mộl khóa cùa R.
thi lạo ra thèin m ộ t lirực d o (ỊLian hệ iron u D c h ứ a c á c t h u ộ c tính t ạ o nên
mộl khóa cua R.
Không phai lúc nào cĩum có kha năim tìm đirợc một phép tách
thành các luực dồ quan hệ bao loàn phụ tlĩuộc, và niỗi lược dồ irong
phép tácli là ư ÍỈ('NĨ', Các hrợc dô cỊuan hệ trong phép tách theo thuật
toán ở Ircn tỉiirờnu là 3NI . ỉ)ê có các lirợc đô B C N Ỉ \ ta có thê kièm tra
các lược dỗ quan hệ 3NF tronu phép tách một cách riêng rẽ để xem nỏ
có thoá mãn BCNF kliôim. Neu có lirợc đo quan hệ Rị khônu (í BCNỈ'
ihì có thê tách liêp hoặc đe nmiyẽn nó là 3NF.

5.4.3. Các phụ thuộc hàm đa trị và dạng chuẩn 4


ĩroiii! pliần này, chúim ta thao luận khái niệm phụ thuộc liàm da trị
\ à (lịnh nuliĩa dạtm chuân 4. Các plụi thuộc đa trị liệ quá của dạng chiiân
1 khônu chd Ịihép inộl thuộc tính cùa mộl hộ có mộl tập uiá trị (iiuhĩa là

các tliuòc linh da trị). Nêu cliúim ta có hai hoặc nhiêu hcrn các thuộc lính
độc iạp vã (la trị tronu cùnu inộl lirực dồ quan hệ thì phai lặp lại mỗi một
aiá trị ciia inộl troim các thuộc tínlì với mỗi uiá trị cúa Ihuộc tính khác,
dè íiiữ cIk ) iiạ nu thái quan hệ nhàt quán \ à du y tri tính dộc lập uiCra các
thuộc linh. Ranu hiiộc dó dược chi ra hanu một phụ thuộc da trị.

1. Dịiih (I^hỉa phụ thuộc (la trị


Gia thièi cỏ một luợc (tỏ quan hệ R. X và Y là hai tập con ciia R.
Xíộl phụ thuộc íhí frỊ\ kv hiệu là X - > Y, clii ra ràim buộc sau dây tròn

180
mộl trạim thái quan hệ bất kỷ cua R : Nốu hai hộ t| \ à l:> lòn lụi troim R
sao cho 1 | | X | - t-i|X| thì hai bộ tì và t; cũim tôn tại Innm R với các tínli
sau :

t; X ^ t-t X ' t1 X t2 X

t3 Y - t, Y v à t.t Y] t: Y

t '. / " t : / | v à t.ị / = tị 7 . . v ớ i z - ( R - ( X v j Y) )

Khi X Y Ihoa mãn. la nói rànu X dã xác (lịnh Y. Bơi vi do tính


doi xirnt’ tronụ dịnh imhĩa, khi X >- > Y thoa inãii troiiu R thì X — > /
cũim ihoa mãn tn n m R. Nhu' \ ậ \ . X > Y kéo theo X - >—> z, vì thê
dỏi khi nó đư ợc viỏt là : X Y!Z.
t)ịnh nuhĩa hình thức chi ra rănu. cho tnrơc một Liiá irị cụ tiiè cua X,
tập hcrp các uiá trị của Y dược xác định bai uiá trị nàv cua X là được xác
định hoàn Idàn bởi một minh X \ à khônu phụ thuộc vào các íiiá trị cúa
các tliuộc lính còn lại / cua R. Nliư \ậy, mỗi khi hai bộ tồn lại cỏ cac
giá Irị khác nhau cua Y, n hưne cunu mộl uiá trị X tlii các uiá Irị nà\ cùa
Y |)hai dư( 7 c lập lại trouii các bộ riènu rẽ v ớ i mỗi uia irị k h á c nhau cùa z
cò mật với cùim giá irị cua X, Diều dỏ tưcmo ừng niột cácli khôim liình
thức \ ơi Y là một thuộc lính da trị của các thực thô dược biêu diễn bằng
các bộ tro nu R.
Ví dụ \ ề phụ thuộc da trị :
N H Ă N _ V IẺ N Tén^N V Tên_DA Tén co n _ N V

Nam DA01 Lan

Nam DA02 Hoa

Nam DA01 Hoa

Nam DA02 Lan

I ront; banu tròn có hai phụ llniộc đa trị là Tên NV ->-> rèn_I)A,
I c-n N v Tèii con NV.
Một phụ (liuộc da trị X -> -> Y (lược gọi là phụ lìniộc đa trị tam
th.ưừniỊ nèu ;
a) Y là niột tập con của X ;
b) ỉ loặc X Y = R.

181
Một phụ thuộc đa trị khôĩiiỉ thoà mãn a) hoặc b) được gợi lá mộl
p h ụ thuộc đa trị khóniỊ (am thưừnịị. Neu chủng ta có một phụ ihuộc da
trị không tầm thườnu troniỊ một quan hệ. ta có thể phái lặp các giá trị
một cách dư thừa trong các bộ. Trong quan hệ NMÂN_VIÊN ờ ví dụ
trên, các giá trị 'D A O r, 'DA02' của Tên_DA được lặp lại với mồi giá trị
cùa Tên_con_NV (một cách đối xứng, các giá trị 'Lan', 'Hoa' được lặp lại
với mồi eiá trị cúa Tên DA). Rõ ràng ta kJiôníì mong muốn có sự dir
thừa đó. Tuy nhiên, lược đồ quan hệ trên là ơ BCNF, bời vi khỏnc có
phụ thuộc hàm nào thoá mãn trong quan hộ đó. Vi \ậ v . càn phái định
nghĩa một dạng chuần thứ tư mạnh htyn BCNF và ngăn cấm các lirực dô
quan hệ như quan hệ N HÂN VIÊN.

2. C á c quy tắc suy diễn đối vói các phụ thuộc h àm và phụ thuộc
đa trị•
Các quy tắc 1 đến 8 sau đâv tạo nên một tập hợp đúng dắn và đầy
đù cho việc suy diễn các phụ thuộc hàm và phụ thuộc đa trị từ một tập
các phụ thuộc cho trước. Già thiết ràng, tất cà các thuộc tính được chứa
trong một lược đồ quan hệ "vũ trụ" R = {Ai. A 2 ,...,An} và X, Y, z , w là
các tập con cùa R (FD ký hiệu phụ thuộc hàm, MV D ký hiệu phụ thuộc
đa trị).
Q uy tắc ỉ (quy tắc phản xạ cho l''D) :
Nếu X 3 Y thi X Y.
Ọ uy lắc 2 (quy tắc tăng cho F'D) :
{ X - > Y} | = X Z - > YZ.
Ọ uy tác 3 (quy tác bac cầu cho FD) :
{X->Y, Y->Z} N X->Z.
Q uy tắc 4 (quy tấc bù cho MVD) :
{X Y} 1= {X (R - ( X u Y))}
Q uy tắc 5 (quy tẳc tăng cho MVD) :
Nếu X Y và w 3 z thì w x ->-> YZ
Q uy tắc 6 (quy tắc bấc cầu cho M VD) :
{X Y, Y - > - > Z} 1= X (Z - Y)

182
Quy lác 7 (quy tắc tái tạo cho FD và MVD) :
{X ^ Y } 1= X Y
Quy lác s (quv tác liên hợp cho FD và M VD) :
Neu X —>-> Y và có tồn tại w với các tính chất :
a) w n Y = 0 ,
b) w - > z và
c) Y 3 Z
thi X ^ z.
'l ừ quy tac 1 đến quv tẳc 3 là các quy tắc suy diễn Anistrong đối
với các phụ th u ộ c hàm. Q u y tấc 4 đen quy tẳc 6 là c á c quy tắc SUY diễn
chi liên quan đến các phụ thuộc đa trị. Quy tắc 8 liên kết các phụ thuộc
hàm và các phụ thuộc đa trị. Đặc biệt quy tẳc 7 nói rằng, một phụ thuộc
hàm là một trưcmg hcyp đặc biệt của một phụ thuộc đa trị. Điều đó có
nghĩa là mồi phụ thuộc hàm cũng là một phụ thuộc đa trị, bởi \ ì nó thoa
mãn định nghĩa hinh thức cùa phụ thuộc đa trị. v ề cơ bán, một phụ
thuộc hàm X —> Y là inột phụ thuộc đa trị X —>—> Y với một hạn chế
phụ là : có nhiều nhất là một giá trị cúa Y được kết hcTp với mỗi uiá trị
của X. Clio trước một tập họp các phụ thuộc hàm và phụ thuộc đa trị chi
ra irèn R = [Aị, A 2 ,.--. An}, ta cỏ thể sử dụng các quy tắc đã cho để suy
ra tập hợp đây đù các phụ thuộc (hàm và da trị) F đúng trong mọi trạng
thái quan hệ r của R thoả mãn F. Chúng ta lại gọi F ' là bao đóng của F.

3. Dạng chuẩn 4
ỉ)ịnh nghĩa ; Một lược đồ quan hệ R là ờ dạng chuẩn 4 (4NF) đối với
một tập h(yp các phụ thuộc 1 ' (gồm các pliỊi thuộc hàm và phụ thuộc đa
trị) qếu với mồi phụ thuộc đa trị không tầm thưcmu, X Y trong F .
X là một siêu khóa cùa R.
Như vậy, một lược đồ quan hệ vi pliạm 4NF nếu nó chứa các phụ
thuộc hàm đa trị không mong muốn. Ví dụ, lược đồ quan hệ
NI1ÂN_VIÊN ờ ví dụ trên là vi phạm 4NF, bởi vi trong các phụ thuộc
hàm da trị Tên N V - > —> Tên DA và Tên N V - > - > Tcn con, Tên NV
không phải là một siêu khóa.

183
()ia sir chủnụ la tách baim N H Ả N _ V IẺ N thành hai bang như sau :
--------- 1 (
NV_DA Tèn_NV Tén_DA NV_CON ĩé n ^ N V Tén_con_NV

Nam DA01 Nam Lan

Nam DA02 Nam Hoa

1 lai haim này là a 4N1', bơi vi các phụ thuộc đa irị Tèn_NV
Tèn DA và 'Iòn_NV Tên con NV là các phụ thuộc đa irị tầm
tlurờim. ĩront’ liai haim này khỏnu có các phụ thuộc đa trị không tâm
thirờnu cũnu như khônu cỏ các phụ thuộc hàm.

4. 'í ách có tính chất nối không mất m át thành các quan hệ 4 N F

Khi chúnu ta tách một lược đồ auan hệ R thành R] = (X u Y) và


R-> = (R - Y) dựa trên phụ llniộc hàm đa trị X Y đúng trơng R,
phép tách có tinh chất nối khônu mất mát. Đỏ cũng là điều kiện càn và
dủ cho phép lách một lược dồ thành hai lược dồ có tính chất nối không
mất mát. Ta có tính chất sau ;
Tính chất r : Các lược dồ quan hệ Ri và R 2 tạo thành một phép tách
cỏ tính chất nối khônu mất mát cua R khi và chi khi ( R 1 0 R 2 ) —>-> (R| - R 2 )
(hoặc (Rị n R-.) - > —> (R| - R-í)).
Áp dụng únh chất trèn. la có thuật toán tạo một phép tách có lính
chất nối không mất mát thành các lược dồ quan hệ ở dạng 4NF
rhuật toán 5.8 : ' 1 'ách quan hệ thành các quan hệ 4NF' với tính chất
nối khôntỉ mất mát.
ỉiipiư : MỘI quan liộ vũ trụ R và IVÌỘI tập pliỊi tluiộc h à m v à phụ
thuộc da (rị I’.
1) Dặt 1) := |R}.
2) - Khi có mộl lược dồ quan hộ Q trong I) không ở 4NF. thực hiện
chọn một ỉưạc dồ quan liệ Q trong D kliông ở 4N F ;
- 'I'ini một phụ thuộc da trị không tầm tliirờng X —>-> Y trong ọ
vi pliạm 4N1' ;
- Thav the Q tronu D bàng hai lược dồ quan hệ (Q - Y) và (X u Y)}.

184
Ví íiụ : Xét lược dồ :
NI lẢ N _V ỉf:N (Tèn_N V . Tên DA, Tên_con NV)
la có phụ thuộc liàin da trị Tên_NV —>-> Tên_I)A. trong dó
Tèn_NV kliôrm phái là inộl siêu khóa, vậy nó vi phạm 4 N Í\ 'ĩa tách thành :
N V D A d ôn NV, ỉ ê n DA), NV_CON(TCmi_NV, Tcn_con_NV).

5.4.4. Các phụ thuộc nối và dạng chuẩn 5

Như chúna la dã thấy, các tính chất 1 và tính chất 1' cho điều kiện
đé một lược dồ quan hệ dược tách thành hai lược đồ quan hệ R| và R 2 .
và phép tach có tinh chất nối không mất mát. 'l uy nhièn, tronu một số
trưOTiíỉ, hợp, có the không có phép tách có tính chất nồi không rnất mát
của R thành hai lược dồ quan hệ, nhưng có thể có phép tách có tính chất
nối không niàl mát thành nhiều hom hai quan hệ. Hem nữa, có thể không
có phụ thiiộc hàm nào trong R các chuân cho đến BCNF và có thể không
cỏ phụ thuộc đa trị nào cỏ troiiíi R vi phạm 4NF. Khi đó, ta phải sư dụng
clến một phụ thuộc khác íiọi là p h ụ t h u ộ c nối và nếu có phụ thuộc nối Ihì
thực hiện một phép tách đa chiều thành dạne chuẩn 5 (5NF).

Một p h ụ ỉhuộc nối, ký hiệu là JD(Ri, R 2 ,..., Rn) trên lược đồ quan
hệ R chi ra một ràim huộc trên các trạng thái r của R. Ràng buộc dó
khăng dịnh rảng, mồi trạng thái hạp pháp r của R phái có phép tách có
tính chất nối không mất mát thành R|, R 2 .....Rtv Diều đó nghĩa là :

*(^R,(''). 7rR,(r),..., 7T|< (r)) = r

Một phụ thuộc nối JD (R ị, R 7 ,..., Rn) là một p h ụ thuộc nối lầm
íhưởnv. néu một troim các tược đồ quan hệ Rj ở trong JD (R |, R 2 ..... R„)
là băng R.
Một lược dồ quan hộ R là ở dạng chuẩn 5 {5NỈ') (hoặc dạim chuấn
nối clìiếii (PJNI' - Proịect - Join Normal Form) đối với một tập f' các
phụ thuộc hàm. pliỊi thuộc đa trị và phụ thuộc nối) nếu với mồi phụ
thuộc nối khônu tầm tlnnVng JD (R i, R 2 ,..., Rn) trong F thì mồi Rj là một
siêu khóa cùa R.
Vi tìụ : Xét quan hệ C U N G _ C Á P gồm toàn các thuộc tính khóa :

185
CUNG_CAP Tén_nhà__cung_cấp Tén^hàng Tên_Dự_án

Ncc1 Bulong Dự án 1

Ncc1 Đai ốc Dự án 2

Ncc2 Bulong Dự ấn 2

Ncc3 Đai ốc Dự án 3

Ncc2 Đinh Dự án 1

Ncc2 . Bulong Dự án 1

N ccl Bulong Dự án 2

Gia thiết ràng, ràng buộc phụ thêm sau đâv luôn đúne : Khi một nhà
cung cấp s cung cấp hàng p và một dự án J sử dụng hàng p và nhà cung
cấp s cung cấp ít nhất là một hàng cho dự án J th ì nhà cung cấp s cũng
sẽ cung cấp hàng p cho dự án J. Ràng buộc này chi ra một phụ thuộc nối
JD (R|, R 2 , R3) giữa ba phép chiếu :

R 1 (Tên_nhà_cung_cấp, Tên_hàng),

R'>(Tên_nhà_cung_cấp, Tên_dự_án),

R 3 ( rên_hàng, Tên_dự_án)
cúa quan hệ C U N G CẨP.

Quan hệ C U N G CÁP được tách thành ba quan hệ Ri, R?, R 3 ờ dạng


chuẩn 5. Chú ý rằng, neu ta áp dụng phép nối tự nhiên cho từng đói quan
hộ một thi sẽ sinh ra các bộ già, nhưng nếu áp dụng phép nối tự nhiên
cho cả ba quan hệ thì không sinh ra các hộ già.
R1 R2 R3

Tên_nhà_cung_cắp Tên^hâng Tên_nhà_cung_cấp Tén Dự_ân Tên_hàng Tén_Dự_àn

Ncc1 Bulong Nccl Dự án 1 Bulong Dự án 1

Ncci Đai ốc N cd Dự' an 2 Đai ốc Dự ân 2

Ncc2 Bulong Ncc2 Dự án 2 Bulong Dự ân 2

Ncc3 Đai ốc Níx3 Dự án 3 Đai ốc Dự án 3

Ncc2 Đinh Ncc2 Dự ấn ì Đinh Dự án 1

186
Việc |)hát Iiiệii các phụ thuộc nối irong các c a sở dữ liệu thực te với
hànu trăm thuộc lính là một diều ral khó khăn. Vì vậy, tronu thực tc thiết
kê co s a dừ liệu liiện nay thirờniỉ không chú ý dên nó. Nói chuim, trong
thực tê ihict kế cơ sơ ciữ liệu, người ta chi chuẩn hóa các bãnu, đen '^NF,
BC'N1' là du.

5.5. TỐNG KÉT

Chucĩni! nà\ bat đau banu việc xem xót các imuy hiềm có thê xảy ra
trone \ iệc thiet ke cơ sò dừ liệu, xác định một cách khỏnu hinh thức một
số chuàn inực dê chi ra một lược đồ quan hệ là "lốt" htiy "tồi", va dưa ra
một số nguN cMi tác khôni’ hinh thức cho một thiél kế tốt. Sau dó, cliúnu
la dà trinh bà\ niột \ à i khái niệm cho phép thiết kế quan hệ theo cách
trêii-xuồìiy^ bàne cách phân tích các quan hệ một cách riêng rẽ. Ọuá trình
thiết kè nà> dược thực liiộii bànti phân tích và tách thông qua quá trình
chuấn hoíi.
Nhừno \ ấn đề \ ề các bất thiànm cập nhật xảy ra khi có sự dir thừa
xay ra tn m ụ các t Ị u a i ) hệ cũntỉ đã được đề cập đến, Các chuan mực
khônu liinh thức cua các lược đồ quan hệ tốt bao tĩom Iiíiữ imhĩa của
ihiiộc tính rõ rànu và đơn íỉiàn, ít giá trị null trong các m ờ rộng cùa quan
hẹ. MỘI p l i é p lách tốt phái tránh được việc sinh ra các bộ gia khi thực
hiện p!icp nòi.
c hiinu la d.l định ntỉhĩa khái niệm phụ thuộc hàm và tháo lUiận một
sô lính cliat cùa nó. Các phụ thuộc hàm là các nguồn thông tin ngữ nghĩa
CCÍ b á ii v ề c á c l l i u ộ c l í n h c ủ a l ư ợ c đ ồ q u a n hệ. D ự a trèn m ộ t tậ p c á c p h ụ
thuộc hàin cho trước và một tập các quy tắc suy diễn, ta dã biết cách làm
thê nào cic tim thêm các phụ thuộc hàm mới. Các kliái niệm bao clỏnụ và
plui lối lliiếu cù;i niột tập phụ ihuộc hàm dã dược dịiih nghĩa, các thuật
toán tìm phu lồi tliièu cùa một tập phụ thuộc hàm, kièm ira xem hai lập
phụ thuộc liàin có tirơnti đưOTig nhau hay khônti cũntí đã được nghiên cứu.
l'icp theo, chiinu ta đã mô tà quá trình chuẩn hóa để dạt deii các
thiết kc lot, băim cách kiêm tra các quan hộ đối với các kiêu phụ thuộc
hàm khòim moim nuiôn. Cách chiiấn hóa liên tiếp dựa trên khóa chínli
được dịiih I iụ h ĩa trước trong mỗi quan hệ đã được trình bày, vả sau đó
LTÌám nhẹ dòi hoi này bàng việc đưa ra các định nghĩa tồng quát cùa các
dạng chiiấii có lính đến tất cà các khóa dự tuyền của một quan hệ.

187
Phần 5.4 dà trình hày nhiC-u thuậl 1(KU1 (.huàii ho.i. D ó là tliuật toán
tổna liợp quan hệ tạo ra các quan liệ 3N1 lír một lưạc dò quan hẹ vù Irụ.
dựa trên một tập các phụ thuộc hàm di> nLurừi tliiêl ke ca sa dữ liộu Xík
dịnh. Các ihiiật toán lạo ra các quan hộ [K'N1 (hoạc 4N1). bầni', cách
tách khònu inàl inát lièii tiếp các quan hệ kiiônu chiiàii liỏa thành hai
quan hệ thành phan lại mộl thời diêm. Chúiie ta tlã thao luận \ c hai tínli
chất quan trọnụ cua phép tách : tính chai nối khõiiL! mất mát (hoặc khônu
phụ thcni) và tinh chất bao loàn phụ thuộc. MỘI thiicật loán kiếm Ira pliép
tách khônu mât mát và inột thuật toán d(yn uian ỈKvn kiôni tra lính khônu
mất mát cua một phóp tách thànli hai quan hệ cùiig dà dược trinh bàv.
Phân này cũnu chi ra răiií;. việc tỏiiíi hạp các quan hệ ơ clạnu, 3N1' dam
bào cá hai tính chất trẽn là có kha nãnu. còn \ iệc lònu hạp các quan hệ
BC’NF chi cỏ kliã nãim dam bao tinỉi khònu nial mái. kliỏim thể dám hảo
tinh bão toàn phụ ihuộc.
Cuôi cùim, chÚHii ta dã nuhiên cừu các ioại pliụ tliuộc khác ; phụ
thuộc da trị và phụ thuộc nôi. đua ra dịnli Iiiiỉiĩa các clạiig chuân 4, dạng
chuẩn 5 và thuật toán tách các quan hệ \ i phạm tliàiih Cịuan hộ 4NF, 5NF.
Việc phát hiện các phụ thuộc nối rấl klió khărì nên troníí thiốt kế thực
tiễn nmrời ta thinmụ bó qua nó.

CÂU HỎI ÔN TẠP

1. Trinh bày c á c nguyên tắc đối vói việc thiết kể lược đồ quan hệ. Hãy
minh hoạ việc vi phạm các nguyên tắc đó s ẽ có hạị như thế nào ?
2. Phụ thuộc hàm là gì ?
3. Vi s a o chúng ta không thế suy ra một phụ íhuộc hàm từ một trạng
thái quan hệ cụ thể '>

4. Vì s a o c á c quy tắc suy diễn của Amstrong (từ quy íắc 1 đến quy tắc
3) là quan trọng ?
5. Tinh đầy đủ và tính đúng đắn của c á c quy tắc suy diễn Amstrong
là gi ?
6 . Bao đỏng của một tập phụ thuộc hàm la gì
7. Khi nào thì hai tập phụ thuộc hàm ià tLf'ơngđ ư ơ n g ? Làm thế nào
để kiểm tra tính tu ơ n g đ ư ơ n g của chúng.
8. Tập tối thiểu các phụ thuộc hàm là gi Có phài mỗi tập phụ thuộc
hàm có một tập tối thiểu tư ơ n g đu’ơ n g hay không ?
9. Thuật n g ữ quan hệ không chuấn hóa ám chỉ điều gi ?

188
10 Đinh nghĩa các dang chuần 1NF, 2NF, 3NF, BCNF dựa trên khóa
chinh và các dang chuẩn d tỉớ i dang tổng quát Sự khác nhau của
hai đinh nghĩa lả gi
11 Đinh nghĩa dạng chuấn Boyce-Codd Nó khác gì VỚI 3NF Vi s a o nó
đ ư ơ c xem là manh hon 3NF ?
12 Điều kiện bảo toàn thuộc tính trẽn một phép tách là gì ?
13. Tính chất báo toàn phụ thuôc đối vói một phép tách là gì ? Vi sa o
nó là quan trọng
14. Vi s a o chúng ta không thể đ ả m bảo rằng, một phép tách c ác lược
đồ quan hệ không BCNF thành BCNF là bão toàn phụ thuộc ? Hãy
cho một phản ví du,
15. Tính chất nối không mất mát (không phụ thêm) của một phép tách
là gì ? Vì s a o nó là quan trọng ?
16. Giũ'a cá c tính chất bào toán phụ thuộc và nối không mất mát cái
nào là nhất thiết phải thoả m ân Vì sao ?
17. Hây minh hoa quá ttinh tao ra các quan hệ ỏ' dạng chuẩn 1 ? Làm
thế nào đề có dạng chuẩn 1 một cách đúng đắn, tránh đ ư ợ c phụ
thuộc đa trị
18. Đ ịnh nghĩa dạng chuẩn 4 Nó có lợi gi
19. Định nghĩa phụ thuộc nối và d ạ n a chuẩn 5.

BÀI TẠP

1 C hú’ng minh cá c suy diễn s a u đây là đúng :


a) {W > Y, X > Z} i= {W X Y}.
b){X > Y}và Y j Z |={X >Z}
c) {X >Y, X > w . \ N Ì -> Z} 1= {X -> Z}.
d) {X > Y. z > W} 1= {XZ > YW}
e) {X ■> Y, Y > Z} 1= {X > YZ}.
2. Cho luợc đồ quan hê R = {A. B, c , D, E, G, H} và tập phụ
thuộc hàm :
F {A > D, AB > DE, CE - > G, E > H}
Tìm bao đóng c ũ a các vể trái của các phụ thuộc hàm trong F
3 a) Cho lược đồ quan hệ R và tập phụ thuộc hàm :
F = {AB > E, AG -> I, BE > I, E --> G,X3I > H} trên R.
C h ú n g minh rằng AB > GH

189
b) Cho lược đồ quan hệ R và tập phụ thuộc hàm :
F = {AB > c , B > D, CD -> E, CE > GH, G > A}
C hứng minh rằng : AB > E, AB > G.
4. Cho lược đồ quan hệ R(A, B, c, D, E, F, G, H, I, J) và t ậ p phụ
thuộc hàm :
F 1 = {AB > c . A > DE, B F, F > GH, D > U}.
a) Khóa cùa quan hệ là gì Hãy tách quan hệ thành 2NF, s a u đó
thành 3NF.
b) Lảm lại câu a) với tập phụ thuộc hàm s a u :
G 1 = {AB > c , BD -» EF. AD^> GH, A > I, H -> J}
5. Cho quan hệ với lược đồ như sau :
H O Á _Đ Ơ N (M ã_số_H Đ , Mã_số_KH, Tên_KH, ĐỊa_chì_KH,
M ã_số_H. Tên_H, Giá_đơn_vị, Số_lu’ợng_H)
(trong đó : HĐ là hoá đơn, KH là khách hàng, H là hàng)
Biết rằng trong mỗi hoá đơn có thể có nhiều Hàng
a) Hây xác đmh cá c phụ thuộc hàm giữa cá c thuộc tính
b) Xác định khoá của quan hệ.
c) Nếu quan hệ c h ư a phải ờ BCNF, hãy tách quan hệ đ ể có m ộ t tập
quan hệ ở BCNF.
6 . Xét quan hệ R(A, B, c , D, E) và cá c phụ thuộc hàm s a u :
AB > c , CD > E, DE - > B.
AB có phải là khóa d ự tuyển của quan hệ không ? Vì s a o ? Hãy tìm
một khóa của nó.
7. C hứng minh cá c quy tắc suy diễn đối với phụ thuộc hàm đa trị
8 . Cho quan hệ s a u ;
B c Bộ ID

10 b1 Cl #1

10 b2 c2 #2

11 b4 c1 #3

12 b3 c4 #4
1ó b1 c1 #5

14 b3 c4 #6

Những phụ thuộc hàm nào sau đây là đúng ?


A |-^ B, B c, c B, B -> A, c -> A.
Nếu có nhũng phụ thuộc hàm sai, hây giải thích vì sao ?

190
CHƯON<. VI
KHÁI NIỆM VÈ C ơ S ở DŨ’ LIỆU PHÂN TÁN
• m

I rong c h ưan g này. chúim ta xem xét cơ sớ dừ liệu phân tán. Trong
nhữnu năm gần đây, cơ sớ dừ liệu phân tán đà trở thanh một ITnh vực
quan irọng cùa xư lý thônụ tin và đanu dược phát trièn mạnh. Việc cơ sờ
dừ liệu phân tán dược phái triên mạnh là do hai lý do ;
riìứ nhất, cơ sở dữ liệu pỉiân tán loại bỏ được nhiều nhược điểm của
cơ sở dữ liệu tập trunu.
T h ứ h a i, nỏ phù h(,rỊ? tir nh iên h(Tn với các cấu trúc phân tán c ù a các
tô chức. Troim phạm vi giáo trinh này, chủnu ta chi xem xét một số khái
niệm C(y bàn về C(T sơ dừ liệu phân tán dô hiẻu thế Iiào là một cơ sở dữ
liệu phàn tán và tổng quan về cách thiết kế, khai thác nó. Những kiến
thức sâu sác hơn như lÝ tluiyct thiết ke cơ so dữ liộu phân tán. quán trị
ccy sở dữ liệu phân láii,... bạn đọc cỏ ihe tỉm hiểu trong các tài liệu
i n . [3i. 14|.

6.1. CÁC KHÁI NIỆM M ở ĐÂU

6.1.1. Định nghĩa

Cơ sở dữ liệu phàn tán được định nuhĩa nlnr sau ;


\ f ộ l cơ s ờ LỈữ Ìiệìi phân lán là một tập hợp d ừ liệu thuộc vê cừnỊỊ
mật liị' thong một cách Ỉôíỉic. nhiniịỊ đirợc írái ra trên các trạm của một
niạnị^ m á y íính.

Dịnli níihĩa này nhấn mạnh hai khía cạnh quan trọng của một cư sở
dữ liệu phân tán ;
/. rinh p h ú n tím : Dó là việc các dữ liệu không nam trên cìme một
trạm. Vì vậy, chúng ta có tnể phân biệt dễ dàng một cơ sờ dữ liệu phân
tán với một cơ sở dữ liệu tập iruníỉ.

191
2. S ự lífoni^ quan lòịỊÌc : Đó là các dữ liệu có một số tính chầl dê
liên kel cluìnu với nliau. Vi vậy, ta có ihề phân biệt một cơ S(V dữ liệu
phàn tán vái các nie, hoặc các cơ sờ dữ liệu dịa phương năm trên các
trạm khác Iihau cua một mạnu máy tính.
MỘI hệ íỊuưn trị cơ sớ dữ liệu phân lún lù một hệ ihoníỊ phần niẻni
quan trị mộ! C(r s ớ d ữ liệu phân tủn và làm cho việc phàn tán trờ nùn
IrotìiỊ SUÔI d ô i v ớ i n ịỉià r i s ử tiụ n g .
Ví dụ (về cơ sở dừ liệu phàn tán) : Xét một ngân hàng có ba chi
nhánh ở các dịa diêm khác nhau. ĩại mồi dịa điềm, niột máy tính kiêm
soái các thict bị dầu cuối, thu ngân và cơ sở dừ liệu tài khoáii của chi
nhánh dó. Mồi máy tinli cùng với cư sờ dừ liệu tài khoán dịa phưcnm tại
một chi nhánh lạo nên một trạm của cơ sở dừ liệu phàn tán ; các rnáy
tính được nối với nhau bằng một mạng truyền thông. M ạna truyền lhôm»
có thế là một mạng trên diện rộng và cũng cỏ thẻ là một mạng địa
phương {hinh 6 . 1 ).

Hình 6.1. Một c a sờ dữ liệu phàn tán

Một ứníỊ cỉụniỉ cục hộ (Local applicalion) là một Írní> dụnu dược vèu
cầu tại các thiếl bị đầu cuối của một chi nhánh, nó chi truy cập clến cơ sờ
dừ liệu của chi nhánh đó và được máy tính tại chi nhánh xử Iv hoàn :oàn.
Một íaiíỊ dụng toàn cục (Global application) là một ứiiíĩ d ụ n m r u y
cập đến cơ sờ dữ liệu ở nhiều chi nhánh.

192
Vi dụ :
- Unii dụntị vè nợ và có thực iiiệii trên niộl lài kho;in tại một clii
nhánli là một irne dụnu cục bộ.
- l ing dụiiLỉ cliuvèn tiên tu niộl tái khoan (í chi nliánli n;'iy saim mộl
tài khoaii ơ chi Iihánh kliac lá một ửne dụne toàn cục.

6.1.2. ưu điểm của ccy sở dữ liệu phán tán

1. Ọiiáti trị c á c CO’ SO’ d ữ liệu phân tán vói c á c m ứ c tronịí suốt
khác n h au
Mộl cách lý tirớne. một hệ quán trị co S('ir dữ liệii phai tronu suốt
phân lán. nghĩa là chc dàu các chi tiết về viẹc các tlle (bang, quan hệ)
được lirii trữ vật lý (Vđâu ironu hệ thốno,.
Các kiếii troim suốt cỏ thế là :
Ị ) ĩ r o n Ị Ị Sỉio! p h â n lá n h a y t r o n g siío t m ạ n ịỉ FOieu này đề cập tới
\ i ệ c n u ư ừ i SU' d ụ n í z k h ỏ n u c ầ n b i è t clcn c a c c l ú t i ế t t h a o l á c c ủ a niạ n í> .

Tronạ suỏt phàn tán tiirợc chia thànli Ironu suốt dịa dièni \ à tronu suối
tên. T ronu SUÔI địa d i ê m n u h ĩ a là, lệ n h d ê t h ự c h i ệ n m ộ t n h i ệ m VỊI đ ộ c
lập với dịa diêm cua dữ liệu và địa dièni cua hệ ihống mà ở đỏ các câu
lệnh dược đưa ra. 'ĩro n a suôt tòn nuhĩa là. mỗi khi một tên. dược chỉ ra,
các đôi tượna dược dặt tcn co thê dược truv cập mộl cách rò rànii mà
khôim cần cỏ các dặc ta thèm.
2) TronỊ^ SIIÔÍ h a n s a o : Các ban sao dừ liệu c ó thè dư ợc lưu trữ tại
nhiều trạm đè việc lìm kiếm, thực hiẹn và sự tiiì cậv tốt han, 'Pronụ suốt
bàn sao làm cho nííiròi sừ ciụna khôn<> biêl ve sự tồn tại cùa các bán sao.
J) Tronư: snol p h á n đoan : c ỏ hai kiêu phàn đoạn được thực hiện :
- 1 ’hân (íoạn ngaim chia một quan hộ thành các tập hcyp các bộ (các dòrm).
- Phàn cloạn dọc phân chia một quan hệ thành các quan hệ con.
tronu dó mỗi quan liệ con dược xác dịnh bơi một tập hợp con các cột cua
quan hệ ban dâu.
Một Iruy van cua nmrừi sử dụnu phái được chu\cMi dôi thành iiỊiiều
iruy vàn đoạn. Tronu suốt phân đoạn làm cho nụirời sư dụnụ không hiét
\ e sự ton tại của các phân đoạn.

193
2. I ính tin cậy và SiUi sàiiỊỉ (ĨIÌỌC íăn«í lên
I)à\ là liai iru tỉicm quan Irọnu nliảl cua ca sở dĩr liệu phân lán , I ính
lin cậ\ chrợc xác ciỊiiii n!iu' là \á c siiâ( nià một hộ thốnu clanti chạy (khônu
bị dô) lại !Ịiột thời dièin ĩiao dó. 'ĩinh san sànu là xác suâl mà m ột liộ
ihong sẵn sàim lièn tục troníi một kh();inu tliời ỉỉian. Khi dừ liệu \ à pliần
mèin liệ quàn Irị C(y s a dữ liệu duợc phân tán trên nhiều trạm, một trạm
co thê ỉioim. ironu khi do các trạm khác vẫn tiep tục hoạt độim. ( hi dữ
liệu \ à phần nièni liệ quan trị C(í s a clừ liệu tại trạm bị hỏnu là khòiiẹ thê
tru\ cạp duạc. Diêu dó làni cai thiện ca tinh tin cậy vá tinli sẫn sàne.
Việc tạo ban sao một cách dúnti đán tại nhiều irạm có thè làm cho s ự cài
th iệ n tôt iurn. ỉ ronu hệ thoim tập trune. sự hư hỏng tại một trạrn làni ciio
U)án bộ hệ thốrm khôiii^ sẵn sànu đối vứi mọi người sử dụnu. Troiiii một
cơ so dữ liệu phàn tán. ĩiiột sô dừ liệu có thê không chuyên dên được
nuirới dùnu. nhưnii nauái dúnẹ \’ản còn có thê iruv cập dến các phàn
khác cua cơ sơ dữ liệu.

3. Hiệu
• suất đirọc cái thiện • •

ỉ lệ (.Ịuan trị c ơ S(y d ữ liệu ph àn d o ạ n c ơ s ở d ữ li ệ u bănii c á c h u i ừ cá c


ca sa dừ liệu gan \ ới nơi mà nó cân thiết nliât. Việc định vị dừ liộii làm
lỉiani sự cạnh tranh cua CPU và các thiết bị I/O (vào/ra), đonu thời làm
uiatn sụ can trư truy cậo keo theo tronu các vùntí mạng rộnu. Khi inộl C(í
sơ dừ ỉiệu lớn dược phân láii trcMi nhiều trạm, các cơ sớ dữ liệu nho tòn
liii trên mỗi trạrn. Kcl qua là các truy vấn dịa phương và các giao tác truN
cộp các (lừ liệu tại một irạni riC'nu lè có hiệu suấl tốt hơn do c a sờ dừ liệu
ilịa plnrơnu cua IIÓ nho h(yi). s ố các ụiao lác lại mồi trạm ít hcyn sò giao
tác dược dưa ra dối \ ới inộl cơ sơ dừ liệu tập truna. Mơn nữa, tínli song
sonu cua các truv \ ấii có Ihe đạt dirợc băim việc thực hiện nhicLi tru> vân
lại các irạiii khác Ii!iau, lioậc bầnu viộc chia một truy vân thành một sô
các lru\ vấn con thực iiiện một cách soim song. Diều dó làm cho hiệu
siiàt dược cai thiện.

4. I)c m<)' rộng


Troim inôi trirờna phân tán, \ iệc mơ rộnụ hệ ihốnu theo nahTa thèm
\ à o các dữ liệii làm lánti cỡ cua cơ sở (lìr liệu, hoặc ihcMii vào các hộ xù
ly ỉà de hưii nhiều.

194
6.1.3. Các chức năng phụ thêm cùa cơ sò’ dũ’ liệu phân tán

- Sụ- phàĩi tan (lan tlC'n \ iệr tãim dộ pliức tạp tronii thiết kế và cài dặt
hệ ihôuL'. Dê clạt dược các ini (liC'm clirợc liệt kè ơ trên, phân mềm hệ
q u a n trị C(T s a tlữ liệ u pli àn taii ph ai c ó tlic CUIIÍỊ c ấ p n h ữ n g c h ứ c n ă n u
>ati c!â\ íliciii \i'u) cac cliừc iiãim ciia inộl liộ quan trị cơ SỪ dừ liệu
tập trunii.
l) (iiữ dâu vcl cua íỉữ ìicti ; Kha Iiăim này dÙDu dc giữ dấu vết cùa
phàn lan dử liệu, phân dciạn dữ liệu va nhàn bán dừ liệu bang việc mờ
rộni; tu d iè ii C(r S(r clữ li ệ u pliàn lán ( l ) D B M S c a t a l o i ỉ ) .

2) Xỉf /ý in iy vân phún lán : l)à\ là kha năng truy cập các trạm từ xa
\ à tru>èn các truN \à!i \ a (lữ liệu iziừa các trạm khác nhau thồiií; qua
niạnii tru\ èn thònu.
Ọítun /ý ị: ìu(> lac phàn tan : Khả nãne lìàv dìine dô tạo ra nhĩrrm
chièn lirơc ihục hiC'ii clio các liu\ \aii va uiao tác truv cập dữ liệu từ
niiicu trạm \ à làin dônu bộ \ iệi- Iru\ cập dẻn các dữ liệu phàn lán và duy
Iri $ự loàn vẹn cua loàn tliè cơ sư dữ liệu.
4i Ọitun irị các cìữ liệit đirực nhàn han : Kha năng này dùng đe
q u \è t dịnh ban sao nào cua inộl mục dữ liệu dược nhàn bản đè truy cập
\ à dus (rì sự chăc cliăii cua cac ban sao cua một mục dữ liệu được
nliiìn ban.
Phục lìói c<r so’ d ữ íiựit plìãn (án : Khá nănu nàv cho phép phục
hòi cơ SU' dữ liệu từ Irạm hị honu và lừ các kieu hư hỏníỉ mcýi (ví dụ như
lur hoim cua (ỉirànu truyèn).
()) An toìnì : Các tiiao tác phàn tán Ịiliai dược thực hiện với việc quản
trị dũng dãii sự an toàn dừ liệu \ à các quvên Iruv cập của ntỉirời dùng.
('ác chức năng na> tụ chúnt» làin tăim tính phức tạp của liộ quán trị
c o S(í ilữ liệu pliân tán s o vớ i liệ quán trị C(ĩ s ờ d ữ liệu tập truníi. 'ĩrirớc
khi chuim ta có thè tliực hiện (iầy du các ưu diéni của phàn tán. ta cần
l^hai lim cách eiai qiiyct thoii dáiiíi nliat cho các vân dề thiết kê này. Việc
g ia i C|II\ è l c!a> du c á c c h ứ c nănL! p h ụ t h ê m là m ộ t v i ệ c k h ó .

- () mức plian cửnu ( \ ậ t lý), một hộ C(t sơ dừ liệu phân (án dược
phân biệt Vói m ộ t h ệ tập iruim ở c á c s ự kiện sa u d â y :

195
1) Co nhièu máy tíiili, dirực uọi là các trạm hoặc các dính.
) ('ác trạm nay phai dược kct nối bầntỉ một kiều m ạng Iruycn thỏnu
2
nào dó dè Iruyên dừ liệu và các criu lệnh tịiừa các trạm.

6.1.4. Cấu trúc của một cơ sò’ dữ liệu phân tán


Hinh 6.2 clii ra niộl cấu trúc tham kháo cho một c a S(V dữ liệu phàn
tán. C'aii trúc tham khảo này khônu clirực ihực hiện một cách rõ rànu trcMi
tất cà cơ sơ dữ liệu phàn lán. ruy nliièn, các mức cua nó là ihich lìtrp dè
hiếu tố chức cũa bat kỳ cư sờ dừ liộu pliân tán nào. Do vậv. chủnu ta sẽ
phàn lích \ à tìm hiêii tàt ca các thành phần của cấu trúc tham kháo này.

(các tram khác)

Hệ Hệ
QTCSDL QTCSDL
ở trạm 1 ờ trạm 2

CSDL địa C S D Lđ ịa
phương ờ phương ờ
trạm 1 trạm 2

Hình 6.2. cá u trúc tham khảo cho cơ sờ dữ liệu phân tán

1?
1 r o i m hiiih 6 . 2 , m ứ c Irèii cúiií; la lirợc đ ồ l o à n c ụ c ( ( i l o b a l s c h c i n a ) .
I ược dò toan cục xác dịnh tất ca dữ liệu có thê dược chứa íroim ctr sơ dữ
liệu phàii tán như !à cơ sở dừ liệu tập truntỊ. Vì lý «.l() này, lược do loan
cục co tỉiê dịnli nuhĩa cliínli xác llieo cách dịnh nehĩa Iiìột cơ S(T dữ liệu
kliòiitỉ phân tán. 1 uy nhiên, mò liinh dĩr liệu được sư dụim cho định
niihìa một lược do toàn cục pliai thich hợp clio việc ciịiih nụhĩa ánh xạ
tởi các mức khác nhau của cơ sơ dữ liệu pliàn táii. Chinm ta sẽ sử dụnu
rnỏ hình quan hộ cho mục đích nav. Sư dụnu inô liinh nay, iược do loàn
cục chửa dịnli nụhĩa cua niộ! tập quan hệ toàn cục (Global reỉalion)
Mỗi quan hệ toàn cục có Ihê được chia thành nhiều phần khôim
trùnu lC’n nhau đirực izọi là đaụn (Íraíiment). Có nhiồu cách dè thực hiện
ihao tác cliia. N hữnt’ thao tác náy sẽ được mò ta tronu phân sau. Ảnh \ ạ
eiừa eác quan hệ loàn cục và các đoạn được định nahĩa troim lược dô
phàn đoạn ( ỉ raumentation schema), Ánli xạ nàv !à 1 - N. nụhĩa là nhịêii
doạii tươim írnL' với mỗi quan hệ loàn cục, nhirnu chi duy nhai một quan
hẹ toàn cục tưưnu ứng với một doạn. Các (loạn dirợc chi ra h(ĩi !CỈ1 quan
hệ toàn cục và một chi sò (chì số đoạn).

F; (/ụ : í<i chỉ ra đoạn thứ i cua quan hệ loàn cục R.

Các đoạn ià phần Ịôgic cua các quan hệ toàn cục dược dặt tại một
hay nhioLi trạm trên mạnu. l.uọc đồ dịiih vị (Allocation schenia) xac
định vị trí dặt c á c doạn. Ch ú V rang, ánh xạ d ư ợ c đ ị n h nạhĩa trong krợc
dồ (iịnh vị xác định xem liệu một cơ so dữ liệu phàn tan có dư ihìra
(Redundant) hay không dư thừa (Nonredundant). rroníỉ Irườníi ÌKTp đầu
(khônu dư thùa) ánli xạ này U'ì 1 - N, tronu khi ờ trirànu h(Tp tliử hai, ánh
\ ạ này ià 1 - 1 . I ất cá các đoạn tinrnu imt> với inộl quan liệ toàn cục R
\ à cúng dược dặl tại trạm j tạo thành anli vật lý (IMiysical imaiTc) cua
quan hệ toàn cục R tại trạm j. NỈIƯ \ậv , cỏ một ánh xạ 1 - 1 uiữa một
ànli vật lý \ à một cập (quan hệ toan cục, trạm). I'a sử dụnu ký liiệu R' đổ
chi anh vật lý cúa quan hệ toàn CỊIC R tại trạm ị.
Mộl ví dụ của mối ỉièn hệ iiiừa đổi lượiig dược clịnh nulìĩa ớ trên
được thè hiện trong hinh 6.3.

197
Một qu an hệ toàn c ụ c R được chia thành bốn đoạn R | . R->. R ; và R.ị.
Bốn đoạn được định vị một cách dư tlùra tại ba trạm ciia một mạntì niá\
tính, do đó nó xây dựng nên ba ảnh vật lý r '. R',
De biểu diễn một cách đầy dù. chúnu ta sẽ ihani chiếu đến mộl ban
sao cùa một đoạn tại một trạm và ký hiệu nó bàng cách sử dụnu lC*ii quan
hệ toàn cục và hai chi số (một chi số doạn và một chi số trạm).

Ví dụ : Hình 2.2, ký hiệu R 3 chi dốn một bàn sao cùa R->, dược đặt
tại trạm 3.
Cuối cùng chú ý rànu. hai anh vật lý có thê liiốna nhau y hột. '['roim
trưcnm hcĩp này, chúnc ta nói một ánh \ ạ t lý này là bán sao cua một ánh
vật lý khác.

Ví dụ: Trong hinh 2.2. r ' là ban sao cua R‘ .


Ta trở lại với cấu trúc tham kháo cùa hình 6.2. troníì hiiih dã mô tà
những mối liên hệ giữa các đối tưcTim ở ba mức tivn cùnu cúa kiC'n trúc
này. Ba mức đó được dặt dộc lập. Vi vậy, chúnụ không cỏ sự phụ Ihuộc
vào mô hinh dừ liệu cùa hệ quản Irị cơ sở dữ liệu dịa phưcyng. (í niirc
thấp, cần thiết ánh xạ các ánli vật lý vào các dổi tượng do các hệ quán trị
cơ sờ dừ liệu địa phương xứ lý. Ánh xạ này dược gọi là lược íiồ ánh xạ

198
c u c h ọ ( I . o c a l n i a p p i i i ẹ s c l i e m a ) vá pliụ t h u ộ c v à o k iê u c u a liộ tịuuii irị
ccr sa dừ licLi dịa phưcyiií>;. [kri \ậ v , trong Iiiộl hộ ihonu kliòim llitiâii lìhál.
cluintẬ ta có nluìtm kiCni ánh xạ cục hộ khác nhau tại các trạm khác nhau.
K i ê n tiíic n à y c u n u c à p Iiiộl k h u n u q u a n Iiiộm chinii> d ê liièu c a c C(r
S(T dữ liệu pliân tán. lìa mục tièii quan Irọnt? nhat ỉani dộnii, ca ihúc đâ>
c ác d ặ c t r ư n ự c u a k i ê n trúc này là s ự tácii hiệl c ú a p h â n d o ạ n ílừ liệu \ à
dịnh \ Ị dữ liệu, kiêm soiìt dir thửa \ à sụ độc lập \ (Vị các DIiMS (lịa phưaní 2 .
Tucìì hiệt khái niệm phãn cỊoun dữ liệu với khcii niệm dịnìi vi (iữ tìệii :
S ự p liâ n biệt Iiàv c h o p lié p c h ú n i; ta p h â n biệl ỉiai n i ư c d ộ klutc n h a u CIUÌ
lroiii> s u ôt ph ân tán, d ư ợ c uọi ià irotiị:^ SUÔI p h â n đ o ạ n ( 1’raỉiniuntation
traiisparcncN ) va tro n ^ suốt VỊ tri ( l.ocalion transpíìrency). I rong suốt
p h â n ctoạn lá n i ử c c a o n h â t c u a t r o n u SUÔI, h a o u ò n i n u ư ò i s ư d ụ i iu h o ặ c
n u ư ò i lập t r ì n h ử n g ciụntỉ làni \ iệc tr ê n n h ĩ r n u q u a n hẹ l o à n CỊIC. 'ĩroiiíi
siiòt \ Ị tri là n i ử c t r o n íi su ố t t h ấ p licm, dòi hoi im ư ờ i SU’ d ụ n í ỉ h o ặ c n m rờ i
lậ|ì trinh ứnu dụng làm việc trôn nhữnu doạn, thay \ ì tiên các quan hệ
l o à n c ụ c . l u y n h i ê n , a n h ta k h ò n u t h ê biet c á c đ o ạ n d ữ liộu clưạc đ ặ l ư
dàii. Sự tách hiệt ụiữa khái niệm phân doạn \ à dịnh \ ị phù hựp \ Ứ! ihíết
k c c ơ s ờ d ừ !iẹu p h â n tán, bới vi s ự x á c đ ị n h c á c p h ầ n d ữ liệu t h ic h h ạ p
phàn biệt \ ái nliữiiu \'ấn đề dịnh \ ị toi ưu.
Kièuỉ soát thi' thừa : Kièn Irúc tham ehiôu cuim câp một cách kiêm
y
S(>át dư thừa ớ m ú c đ ộ phân doạn. Vi dụ ở hinli 3.2, hai ảnh vật Iv R" và

Iv ' triinu kluVp nhau, niihĩa là cliiiim chửa dừ liẹu cluiim. Việc dịnh nuhĩa
p h à n cloạn thàiili c á c k h o i x à \ d ự t m c u a c á c á n h vậ t lý clio p h é p c h ú n g ta
ihani cỉiieu m ộ t c á c h rõ ràim tới p h ầ n t r ù im n h a u n à v ( đ o ạ n n h â n báii R “ ).
N h ư c h ú n u t;i sẽ t h ấ y , kiern so á i (lư t h ừ a h ữ u ích tr ê n Iihiêu kliía c ạ n h
c u a q u a n Iv ccr S(V d ữ l i ệ u p h à n tán.

/){)C lập với cúc hệ quan trị cơ sớ ílữ liêu địa phiarníỊ : Dạc tíiili này
u ọ i là í r o n ự SI KI Í á n h x ạ đ ị a p l u r t r n ^ . n ó c h o p h é p c h ú n u ta n u h ic n c ứ u

n h i è u v ắ n d ề v ề q u à n trị c ơ s ơ d ừ liệu p h à n tán m à k h ô n u c a n t ín h d e n


các m ô h i n h c ụ th e c á c h ệ q u á n Irị c ơ s ó d ừ liệ u đ ị a p h ư m m . R õ ràim ,
t r o n g n ì ộ l h ệ t h ô n g k h ô n u t h u ầ n n h â t, t r ạ m đ ư ợ c đ ị n h n g h ĩ a b ằ i m c á c h
s ư d ụ n t í c ù n u m ộ t m ô h ỉ n h clữ liệu n h ư là c ác liệ q u à n trị c ơ s ở d ữ liệu
địa phương, do \ ậy giảm độ phức tạp ánh xạ nàv.

199
Một kiêu troiiL: suỗl khác liC'11 cỊuan dC‘ii iroiií.' suôt \ ị tri !à trong SUÔI
nhàn bíìii (Replication transparencỴ). 1 roim suốt nhân bán cỏ nuliĩa la
người sư dụiií; khôiiu hi(^i \ ồ nhữnu ban sao cua các phân đoạn. K.Õ ràníz.
troim suốt clịa dièiii kéti llico Ironu siiot nhân bán. 'I'uy nhiên. Iroim một
vài trườne hợp nhất định niiiròi sư dụnu khỏna có sự tronu SLiòt vị tri.
nhưriíi vẫn cỏ s\r troim siiôt sao lưu (vi anh ta dùim một bàn sao cụ ihẽ
và hệ thonu cỏ nhữim hành dộnu pliù hợp tròn Iihừnu ban sao khác).
Chúng ta kliônc có sụ phàn biệt ^iìra ironu suốt sao lưu và Ironu, SUÒI
vị trí.

6.2. THIẾT KÊ C ơ s ở DỮ LIẸU PHÂN TÁN

6.2.1. Các bước thiết kế cơ sờ dữ liệu phân tán


Một cơ sở dữ iiệu pliãn lán là inột cơ sờ dữ liệu tập trung nhưng
dược phân doạn và dịiih vị tại các trạm cua một m ạng máy lính. Như
vậy, viộc thiết ké một cơ sờ dữ liệu phàn tán bát dầu bằng việc thiết kc
một cơ sơ dữ liệu tập Irunu. Viẹc thiết kế cơ sớ dữ liệu tập trung chung
quỵ là :
1) Thiết kế "lược dồ khái niệm" niô tả cơ sở dữ liệu dược tích hợp
(tức là tất cá các dừ liệu dược các írniỉ dụim cơ sờ dữ liệu sử dụng).
2 ) '1 hiét kc "cư sớ dữ liệu vật lý", tức là ánh xạ "lược đồ khái niệm"
vào các vùnti lưu trữ và xác dịnh các phươníí pháp truy cập thích hợp.
Trong một cơ sớ dữ liẹu phàn tán, hai vấn dề nàv trở thànli thiêt kê
một lược dồ toán cục và thiết ke cư sơ dữ liệu vật lý địa phươnụ, lại mồi
trạm. Các kỳ tliLiật c ỏ thế áp d ụ n <4 dư ợc c h o các van d ê Iiày là c á c kỹ
thuật như troiiíi cư sò dừ liệu tập truim. Việc pliàn lan của cơ sở dữ liệu
thèm vào hai van dổ rn(Vi ;
3) 'I hict kế phân doạii. lức là xác clịnh các quan hệ toàn cục dược
chia thành các doạn như thc Iiào.
4) rhiet kế định vị. tức là xác dịnii cách các đoạn được ánh \ ạ vào
các anh vật lý như thé nào. riieo cách dỏ, \ iệc nhân bán cùa các doạn
cũnu dưc/c xác địiih.
rrong các chương trước, chủrm ta dã imhiCMi cứu cách thiểt kế một
cơ sở dữ ỉiệu tập trung, tức là dã niihiên cứu thiết kế lirực đồ quan niệm

200
va thicl kè C(f sơ dừ liệu vậl lý. 1 'rong chirơim này chíinu la sè imliiên
c ứ u c á c h thict kế phân đ o ạ n v à t h iế l k e dịnh vị.

Mặc dù \ iệc ihièl kế các chirdmu trình irnu dụnụ dược ihực hiệii sau
khi thiet ke luực ílồ, nhiriiíi việc hicu biết các yêu cầu ứnu dụng có ànli
hinrnu (ièn việc tliiẽl kc lược đồ. bởi vi lưọc dồ phai có khá nànLi hồ trợ
các irnụ dụii'.: một cách cỏ hiệu quá. Vì vậv. trony việc tliiêt kố một cơ
sở dừ liệu phàn tán, sự hièu biết du chính xác về các yêu càu ứim dụiiu
là cần ihiếl. 1 ronii các ) èu cầu ửnụ dụns’, chúntí ta dưa vào ;
1 ) 1 rạni nià các ưnụ dụim dược đưa ra từ dó (còn dược ụọi ỉrạ/>! í^oc
â ả ĩi i iíu ihìịỊ Uụníị).

2 ) rần suấl hoạt dộnt’ của các ứnií dụng (tức là số lần kích hoạt ứng
dụnu, ironu một đcm \ ị (hời tiian). ĩ r o n u trưíTntì hợp tônụ quát, các ứnu
dụnu, có thè dược dưa ra tại nhiều trạm, chúrm ta dira ra tần so hoạt động
cua ửiiu iliiiití tại mồi trạm dỏ.
>) Số lirợne. kiếii và phàn lán thống kê cửa các tru> cạp được mỗi
ưim dụnụ ihực liiện đối vứi mồi đoi tượnt’ dĩr liệu dược \ êu câu.

6.2.2. Mục tiêu cua thiết kế cơ sờ dữ liệu phân tán

1 ronẹ thièt kế phàn tán cầii đạt dirọc các mục liêu sau :

1. C ụ c bộ xử lý (Processing Localfy)
Việc phân lán dừ liệu là đc cực đại hoá việc xứ lý cục bộ (địa
phưirim) phù h(7 p với nuuyên lắc dơn tiiàn của viộc tlặl dữ liệu cànti eân
với các ứnu dụiiíí sư dụnu chủng càng tốt. Chúng ta dã chi ra răng, cục
bộ \ u lý là một iroiiíi nliữnt’ mục tiêu chính của một c a S(y dừ liệu phân
tán. ( ách il(rii uian nhat dc xác dịnh quá trinh CỊIC bộ \ ư lý là xeni xét
hai kiêu thain chicu dừ liệu : ihani chiếu "cục bộ" và tham chicu "từ xa".
Rõ ràng là klii dã biốt irạm u,ốc cùa ứnu dụng, tính cục bộ \ à lính tir xa
ciia ci'ic tliam chicu chi phụ thuộc vào sự phân lán dừ liệu.
Viọc thiết kế cư sờ dữ liệu phân lán đè làm cực dại hoá xứ lý cục bộ
(lioặc làm cực liêu các tham chicu tir xa) có thể dược Uụrc hiện bằng
cách tliêm \'áo một số tham chiếu cục bộ và tham cliiếu lừ xa tương ứng
với mồi phân đoạn và định vị đoạn, và chọii giãi pliáp tốt nhai giữa chúng.

201
MỘI m ớ rộtm cua tièii cliiuìn tỏ! ưu dcTii íiian Iiày là khi inột ửnu
dụne ccS cục bộ hoàn toàn. C'liútm t;i sư dụim lliiiật niiừ này dê chi các
inm dụnụ đirợc thực hiệii hoàn toàn lại các irạni t;ôc cua chúng, l íu dicMn
cua cục bộ hoàn loàn khôiiu chi lain uiaiii các truy cập lừ XÍI. má cỏn làm
tănu sự d(yn uian tm nu việc kiC‘m soái sự ihực liiộn cua uim dụna.

2. l ính sẵn sàìiị* sii dụiiịĩ và tính dáiiíi tin cậy (Availabiliíy and
repliahilit>)
( í tròn c h u i m ta dã chi ra ranu. tinh sẵn s à im SIÌ dụiiu v à tính đántz tin
cậy là các ưu diòni cua các hệ thòiit’ phân lan so \ứ i hệ thonu kliòng
phân tán. Tính sẵn sàno, sư dụiií; đòi vơi các ưnư dụnL’ chi dọc dịit mức
c a o bầna c á ch lưu trữ Iiliiêu lián sao cua cìm u một thònu tin. H ệ thònu
phai cò khá Iiăng chuyên sanu inột bàn sao tlia> thè klii bán sao sẽ dược
truy cập dưới các diồu kiện binh thướne là khònu sẵn sàng. Tính đáng
tin cậy cũng dạt dirợc bănu cách lưu trừ nhicu ban sao cùa cùng một
thòng tin, bưi vỉ có ihc tim lại từ sự đỏ vỡ. hoặc sự hư hong vật lý cua
một bán alii bằng cácli sừ dụnu các bàn uhi khác vẫn còn sẵn sàni'.

3. S ự phâii tán CÔIIÍỈ việc (W<)rkloa(l d i s í n b u ũ o n )


Sự phân tán công việc tròn các trạm khác nliau là một dậc trưng rất
quan trọna cua hộ thốiiụ các máy tính phân lán. Nỏ tận dụni’ sức niạnh
của việc sứ dụng niá\ tính tại các trạm khác nhau và làm cực đại mức
sont’ song cua việc thực hiện các ửnu dụim. Do sự phân tán công việc có
thc ánh hướim xấu dcn \ ư lý dịa phưcriiu, việc xcm xét cân băii^ uiữa
chúng tronti thiết kế pliàn tán dữ liệu là việc cân thici,

4. Chi phí lini trữ và tíiih sẵii sànfĩ (Storaf»c costs and availability)
Sự phân tán dừ liệu sẽ Ịihan ánh clii plii \ à liiili sẵn sàng của lưu trừ
tại các trạm khác nliaii. Có ihế có các trạm cliuycp dụnu trong mạng đê
lưu trữ dữ liệu, hoặc nuirợc lại có ihè cỏ các trạm khôntĩ hồ trợ lưu trừ
chúi nào. 'I hinTĩiíi thì ciii phí lưu trừ khônc đánc kè so vái CPU, 1^0 và
chi phí truyền írnụ dụne. nhưna \ iệc uiứi hạn lưu trữ tại mỗi trạm cũng
cần đưực xem xét.
Việc SỪ dụnc tất cá các tiêu cluiẩn (V Ircn (ại ciinu một thời gian là
cực kỳ khó khăn, bời vi diều dó dẫn đến các niô hinli tối ưu phức tạp.

202
I roiií' llìiòt kê i'>an (lau IIÕII \cni xét tièu chuân C|uan lrọ!''iỉ Iihàt. sau (1()
d ụ . i \ á c á c ti òi ì c h u a n ỉsiiác d ô l a m l ô i ưu .

6.2.3. Tiếp cận Trên - Xuống (Top-down) và Du’ó’1 - Lên


(Bottom-Up)
( ó iiaí c a c h t i c p c ặ n tlC‘ ihièt kê inột cơ sơ dừ liệu ịiiiàn tán : liêp cận

top-tl(>\vn \ a ticp cậii b()(l<ini-up. 'I ronu cách liêp cận tOỊi-doun. băt dằu
brmu \ iộc tiìiò! kè niột luạc dò toan cục \ à tiêp (ục bãne việc ihiel kc
phàii cittạn chti c<y s ơ d ữ liệu, tiỗp d c n là dịn h vị c á c doạii tại c á c Irạni,
tạo ra C.ÍC aiih vại ỉ> liưuv cuõi ciinu là "ihiết ko vật Iv" CIKI các dữ liệu
dã dư( 7(.- (.IỊịiIi \ Ị tại các trạm. Cách liep cận này ràl thích họp cIk) các hệ
ihỏnu (ỉirạc phai irièn tir clàii. \ i nó cho phép ihụx' hiện một thiêl kê
liựp 1 \ .

Klii c ơ s o ciù liẹu piiâii tán d ư ợ c ph ái triên n h ư là SỊI’ kct liọp cua
các cir siy dừ liệti daim ỉỏrt lại. \ iộc theo cách tiêp cận lop-d<,)\vn la khónu
dễ TroiiL’ Iruơnu hợịi nà>, cách tiêp cận botloiii-uị) là (iệii lại hơn.
( acli úèp cậiì nà\ dụa Irèn \ iộc tícli Iictị:) các lược dò ciaiiu tôn tại \à o
một luọ'c (lô loaii cục. do' 11 . Việ^: tlìiôt kè cơ sơ dữ liệu phàii lán llico cacli
hoUcni-up tỉòi lioi :
I ) ( họìi mội inò hình cơ sơ dữ liệu chung đê mò tá lirực dô loàii cục
cua a r sư dữ ỉicu.
(. ỉiuveii Iirng lược dò cục bộ vào niỏ hình dữ liệu chuim.
i ii.il họp krọc dô cục bộ vào lược dỏ lỏnu ihỏ cliiinu.

6.2.4. Thiết kế phân đoạn ccy sờ dữ liệu

Sự Ịtliáii tácl) c;ic quan hẹ to;in cục ihaiih nhữnti đoạn cỏ lliỏ dược
tliực liiện b(Vi ÚIIU dụnu hai kièii pliân doạn kliác nhaii : phàn doạn ngantỉ,
(Hori/onlal Íraíiniemation) vả píiãn cloạn dọc (Vcrtical frauiiiC!itiilion)
( húng ta sc xem \c t [)ai kiôu pliAii doạti một cách riêim rõ, sau (ỉo sẽ \ é l
trinyiiụ ỉiợp pliửc lạị:> liưn ứng dụnu ca liai kièu phân doạii này.
V i ệ c pliâii (loan c ơ S(V d ữ liệu p h a i Uiàn t h e o c á c q u y tàc s a u :

kiựn ílày cíii (Completencss coiulition) : 'I at cá dừ liệu cua quan


hẹ toùii cục phai dược ánh \ ạ thanh các doạii (nghĩa là. khỏnu cỏ tnrcniíi

203
hợp một nụic dừ liệu ihuộc vê mõt quan liẹ tt)àii cục kiiònụ !iăin
một phân doạn nào).
Diêu kiện xây dựnịỊ lai íReconslntclion conditioìĩ) Phai luôn luôn
có khà nàim \ â v dựnu lại một quan iiệ toàn cục từ Iilũrnu doạii cùa nỏ.
I lièn nhicn diêu kiện này là cân thièt. riụrc vậy, tronu thực tè chi cỏ các
doạn dirực lưu trừ trén cơ sa dữ Hộu phân tán và quan hệ toàn cục phai
dược xây dựtm thônu qua thao lác xâ> dựng lại neu can Ihiet.
Diều kiện íách rời (Disịonlness conciứion) : Như đã thao ìiiận ơ
phần trước, các doạn phai tách rời sao cho việc nhân hán cua dừ liệu có
thể dược kiêrn soát mội cách rõ ràníí ở imVc định vị. riiy nhiên, điôu kiện
này lá ỉiợp lÝ cliu yếu cho phàn doạn imaim. troim khi dó \ ’ới pliân đoạn
dọc chúim ta sè cho phép diều kiện này bị vi phạm.
(ìiá sứ rănu. chútm la đanu băt dầu với một lược dồ cơ s á dử liệii
quan hệ và phái quyết định chọn phân lán các quan hệ trèn các trạm khác
nhau như the nào, I)é minh hoạ các kỳ thuật, ta sư ciụnti lược đò c ơ sở
dừ liệu quan hộ C Ô N G ! Y.

I. Phân đoạn ngang

Trước khi chúníĩ ta quyết định chọn plìân tán các dừ liệu nhir thê
nào. chúng ta phai xác định dơn \ ị lôíiic cua cơ sờ dữ liệu sỗ dược phân
tán. Các don vị lôtíic dcm t>ian nhất chính ià các quan hệ. N h ư vậy. mỗi
một quan hẹ sẽ dược lưu trữ lại một trạm cụ thè. 'ĩro n u ví dii cùa chúng
ta, cần phái quyết dịnh chọn một trạm dê lưu irừ inột trong số các quan
hệ N liẦ N V nÌN , DƠN VỊ. 1)Ự_ẢN. NỈỈẢN V.IÊN D ự ÁN, và C O N
cua cơ sở dữ liệu CÔNCỈ_rY. ruv nhiên, tronu nhiều trircyng hi.rị-), một
quan hệ c ó the d ư ợ c chia ra thành nhiều d(Tii \ ị l ô g ic nh ò htm c h o SỤ'
pliân tán. Ví dụ. xét co sở dừ liệu C ( ) N ( ì _ r Y và uia ihièt có ba trạm
máy tính, mồi trạm cho niột dơn vị tronụ cônu tv. Chúng ta có thè m uốn
lưu trừ thôim tin liên quan dcn mỗi dcrn \ị tại trạm niá> tính cho đcrn vị
dó. Một kỹ thuật uọi là phân iloạii cỏ tliè dược sừ dụnu dè phân
chia mỗi quan liệ theo d(m vị.
Doạn niỊunị^ cua một quan hệ làmột tập con cúa các bộ trong quan
hệ đó. Các bộ thuộc về doạn naang được chỉ ra bànu một dieu kiện, hoặc
nhiều thuộc tính cũa quan hộ. riiônii ihưừmỉ chi một thuộc lính là có lièn

204
qiUìn. Vi dụ. cluìnỉi la có lliè xác địnli ha doạn nuanụ trên quan liệ
NỈIẢN Vlf;N vái các điồii kiện (Mã_số Ỉ)V = 5), (Mã_số_I)V 4) và
(Mã so 1)V 1 ) nhir sau :
N 1 1Ả N V U 'N > a\u sô NV ■ 5 ( N 1 I À N _ V [ H N )

NIIẢN V ì Í;N4 hm ., >,v ..ì(NHẢN_V1HN)


NMẢN Vll-NI - OMa sõ. N V - |(NHẢN_V1Í'N)
Môt cách Uurnụ tự. cliúnti ta cỏ thê xác dịnh ba đoạn nuang cua
quaii hệ cho quan hệ 1)1; ÁN \(Vi các diều kiện (Mã_số Ỉ)V = 5).
(Mà sổ DV = 4) \ à (Mã_số Í)V' = 1). níihĩa là inồi đoạn chứa các bộ
DỤ AN được kiêm soát bănu một ckrn vị cụ thê. Phân đoạn ngant> chia
một quaii hê theo cliiỏu ngaim hàníi cách nhóm các hànu đè tạo ra các
tập con các hộ. tronu dó inỏi tập con có mộl ý nuhĩa lôgic nhất dịnh. C'ác
đoạn Iiciv sau đó có thê dược aán cho các trạm khác nhau trong hệ thốnu
phân tán.
Chú ý rănu. nioi doạn nuaiií’ tròn một quan hệ R có thè dưực chỉ ra
bànt.’ |-)liép toán ơị^ (R) irone dại sơ quan hẹ. Một tập hợp các doạn

naanu inà đieu kiện cua clìúnu lá C'i, C’t, C|, chửa tất cá các bộ trong
R, nuliĩa là mồi bộ ironu R thoà mãn (C| OR Co OR ... O R C|i) dược íiọi
là mộl ,nJiân đoạn uịiunịi lỉay đu cùa R. I ronu nhiều truờim hợp, một
phân đoạn nuanu đa\ du cũna tách rời ; ní>ỉiĩa là không có bộ nào trong
R thoa man (Cị A N D CỴ). \ iVi i ^ ị. ỉ lai \ í dụ vồ phàn đoạn nuanu trèn
dối \ớ i các quan hệ NI IẢN_V11 N và [)Ụ_ẢN là đầy đủ vá tách rừi. Dổ
xày (lụim lại quan hệ R lù một phân doạn dọc dầy đú, ta cần áp dụng
phép toán IIỌP dòi vai các ctoạn.
17 (Jii :
NnẢN_VIHN - NHẢN_V!ẺN1 u NHÀN_V!ẺN4 u NHÂN_V1HN5
Một triràne liợp riêng cùa phân đoạn ngaim là phân đoạn nuanu dẫn
xuất (l)crivcd hori/uiilal íVaumenttion) áp dụng sự phàn chia cùa quan
hộ chínli cho c á c q u a n h ệ phụ cỏ liên quan dốn quan hẹ chính thông qua
khóa nuoài. Bầnti cácli ấy. các dừ liệu có liên quan giĩra quan hệ chính
v à c á c cỊuan h ệ p h ụ d ư ợ c p h â n d o ạ n t h e o c ù n i i m ộ t c á c h .

205
Vi íUt Xét C|u;in hộ NHẢN VIỈ N Í)Ụ ÁN. la tịiian iiộ plut cua
tỊUíHi hệ Ni lẤN VII,N. ỉa dã co quan hẹ N llẢ N VII N (luiíc pluln doạn
ntu iim tlico M ã sò i ) V ’. l ĩ à y u i ờ m u ô n p h à i i d o ạ n !i!j;anLi s ; i o CỈ 1C1 m ỗ i
doạn ny.inu cii;i quan hộ NIIẢN VIỈÍN I)Ụ ÁN phú ỉurp \ ai các doạii
imane tiarnu inm cua I|uan iiệ N llẢ N VIỈiN. Kiii dó nuu(>! ta tỉuim phcỊi
toan mra nôi. (.lược dịnh nuhìa là : RỈX s = TtK(l<[XlS). \ iVị dièu kiện Mỏi
là klioá neoài cua R bãtií2 khoá cliinh cua s. Cụ tlỉè. ta Ci) cac đoạii cua
NÍIẢN VIÍ-.N DỤ' AN iủ :
M ỈẢ N V irN I)l.' Á N 1 = N H Ả N _V IH N J)Ụ A N D< N I I À N M LNl
N IIÁ N V iH N nụ ẢN4 = N IIẢ N ^ V IÌN D r' ÁN IX N iiẢ N vir\4
NHẢN VIUN [)Ụ^ẢN5 = NMẢN^^VIKNDỤ^^ẢN t X N I l A \ VIÍNS
ỉ*hân cloạii nuanu dần xiiàt cũtm thoa màn b;i qu\ lăc a irêii.

2 . J*hâti (ioạn doc


Mỗi írạin co ihc khônu càn tất ca các thuộc tính của một tịuaii liệ.
diêu d(S chi ra sự cân Ihiêt phai có kicLi phân doạn khác. Phàn cloạn dọc
chia quan hệ theo cliieii clọc banu các cột. Một doạii dọc cua lìiộl quan
hệ clii ụiữ mộl số thuộc lính của quan hệ. Vi dụ, cliuni! ta muốn pliân
doạn quan hệ NI IẢN_VI[vN thành hai doạn dọc. Đoạn tliứ nhất hao uồm
IhôiìLi tin cá nliân ('ĩên, Nuàv_sinh, Dịa chi, (ỉiứi tinh) \ ù doạn tluì hai bao
aòm ihông tin li(3n quan dcn côníí việc (Mã_sò NV, l .ươníi. Mà số NCiS.
Mà_sỏ lìV). Phân doạn dọc này khôim hoàn loàn dũng dán, hơi vi Iièu
liai doạn dược lưu trữ tách rời nhau thi chuiiLí ta không tliè dặl ccK' bộ
nh ân v iè n baii đau trcT lại v ớ i n h a u d o k h ô n u c ỏ n iộ l t h u ộ c tính c h u n g
<
4 Ìữa hai doạn. ViỌc bao hàm khóa chính, hoặc mộl thuộc tíiih khỏa dụ
tuyổn troni> mỗi đoạn dọc sao cho có thế xây clựnụ lại quan hệ cỉằ\ du lir
các doạn. Vì vậy. chúníi ta phài thêm thuộc tính Mã_sô NV \à() (!oai!
thôim tin ca nliiìn.
Một đoụn d ọ c trên một quan hệ R c ỏ thè d ư ợ c clii la háiiL’ 'Ì1 I ('
toán ĩt| (R) troniỉ dại số quan hộ. Một lập hợp c;ic (loạn ('«'.■ <' •

danh sách chicu cua chúriíi 1,Ị, L->..... L„ chứa tal ca cac Ihiun .ir I ' p-
I i l nr ne c h i c h u i m t h u ộ c t í n h k h ó a c h í n h c u a R d ư ạ v a i’
đoạn dọc ĩíiìy du của R. ]'nintz trưừnư hợp nà>. các danli .. cỉiÙM ihoa
niãn hai dieii kiện sau đílv ;

206
- I Ị o I.. o ... ^ ^ l.„ I KK) ;

1 , r ' 1,J \ó'i m o i í ^ j. íroỉiL' (ỉo ! l í K) hi íập liạ p c a c ih u ộ c


líìilì cua R \ a P K { R ) là khỏa ctiiỉìh cua K-
l)è \ â y (lirnu lại (ịiian ỉìệ R lư nìột pỉiãn doạn dọc dầ\ (lu. chúnu ta
áp (ỉụim plìép toán N()l ch(ì các diKìu clọe. lỉai doạn dọc của quan hẹ
N ỈỈẢ N V I 1 ' N \ ới cac daĩìh >aclì chiou í Ị ỊNÍà số N V . l ên, N g à v siiih,

ỉ ) ị a clìK ( iiá i Iinlìl \à I ^ - Ị M a Nỏ N V . I .uxniụ, ìVlíí_số_N Ọ L.


Mà số ỈÌVỊ tạd non iiiột pliâii doạn doe {lâ> (ỉu cua 1;V11M.()Y1 r..
I ỉai (loạn niĩant: khỏnu clâ_\ du cũim klìòng tácii ròi la các đuạii tUrực
xác dịnli trC‘ii cỊuan hệ ()Y1'1. băim các (liều kiện (ỉ ưcTiiti > 5()()00)
và ( M ã s ô Ỉ)V “ 4). ('liún u c ó thè khônL’ chửa tất ca các bộ nhàn viẻn
và chủnti có thê chứa Cik' bô cliuiia. ! lai doạn dọc khỏnu là đa> du là các
doạn duợc xác dịnii bãim các lianti sach (huộc tíiili 1,| " { lê n . f)Ịa_chi|.
L-’ = ỊMà số NV. ỉ èn. I uxrnuỊ ; các danh sách náv vi phạm ca hai dicu
k iệ n c u a m ộ t pỈKÌn d o ạ n d ọ c .

3. I*liâ n doạn hổn họp


( ’húng ta cỏ ihê trộn lẫn hai kicLi phân doạn tạo Ihành một phân
đoạn hỗn hợp. \'í tlụ. cliúim la có thê tò hợp cấic pliân doạn dọc và phàn
đoạn neanu cua quan hộ N llẢ N VMl.N dược cho ờ irèn thành một phàn
đoạn hỗn h ạp chửa sau (loạn, ỉ ronụ iriKvriU hợp nàv quan hệ ban dâu có
thề đưọc xâv ciựnạ lại bằiiu cách áp ciụnsi các phép toán l i ọ p \’à NÒI.
Nói chuiiíi, inột di)ạn cua mội Cịuan hệ R cỏ ílie dược chí ra bẩnt’ một tô
hợp SH1. FC’I - P R ( 1 các pliép (oán 7Ĩ| (a^ (R)). Nếu c = rRlH Ì
(ntíhĩa l;ì tất cá các bộ clcu dược chọn) \ a 1, TT(R), chúim ta nhận
dược một doạn dọc. \Í 1 nêu (■ ^ I R u r: \ a ! I T(R) cluìnu ta nhận dược
niột doạn Iitỉana. ciiõi ciinu, nèii (' i Rl 'l va í, ^ r'[(R ) chúnu la nhận
dược mộl doạn hồiì họp, ( 'hú ý rầ!m một quaiì hệ có thê lỊi' coi như một
doạn vá i c = ỉ'RUr. và 1, - ỉ r(R). S;U! <.!â\. tliuật n m ì đoạn đ ư ợ c dùriíi
đê chi một C|uan fiệ iioậc một ironu các các kiôu đoạn ừ trC*n.
Aíộl liạrc iỉo p hun cíoan cùa một cơ sờ dữ liệu là mộl dịnh nuhĩa của
một lập các doỊin nià nó chửa lầt cá các thuộc tinli và các bộ Irone ca sò
dừ liệu \ à tlioa mãii dièii kiệ‘n lủ loàn bộ cư s a dữ liệu có thè dược \;ìv

207
dựnu lại lìr các doạii băim cách áp dụnu một dãy cac pliép toán I lỌl’ \
NOI nào tlây. Dôi khi việc có lât cá các doạn phai rời nhau imoại trừ sự
lập lại cua khóa chíiih trong các đoạn dọc (hoặc hồn Iu/ịt) cũniỉ có lợi
(niặc dù kliỏim cần thict). ' 1'roim trườnu liỊTp sau, tất ca nhàn ban \ a phàn
tán cua các đoạn dược chí rõ tại một giai doạn tiếp thcd, riC'im biệt vói sự

phân đoạn.

6.2.5. Nhân bản và định vị dữ liệu


Nhàn bán có lợi troim việc ỉàni tănu sự sẵn sànu cua dữ liệu.
rriríVng hựp đặc biệt nhất là nhàn bàn toàn bộ ca sờ dữ liệu tại mỗi irạm
tronu hệ thốnií phân tán. dó !à việc tạo ra một cơ sở dừ iiẹu phàn tán
dược nhân bàn đầy đu. Điều đó có thê cài thiện sự sẵn sàng một cách
danu kê bởi vì hộ Ihống có thể tiếp tục thao tác chừng nào vần còn it
nhât là một irạm. í)ièu dó cũnu làrn cài thiện thao tac rút lliông tin ra dôi
với các truy vấn toàn thế bởi vi kết quà của mộl truy vấn như v ậ \ cỏ thê
nhận được một cách dịa phircmg từ một trạm bất kỷ ; như \ ậ>, một iruy
vấn lấ> ihông tin ra có thế được xử lý tại một trạm địa phưưng mà ờ đó
nó được đưa ra đề xem xét nếu trạm đó chứa mội moclule phục vụ.
Nhược diêm của nhân bản dầv đủ là nò có thê làm chậm các phép loán
cập nhật một cách Irầni trọng bởi vì một cấp nhật lôgic đ an phái được
thirc hiện Irèn mỗi bản sao cúa cơ sở dữ liệu đế ciữ sự nhất quán cùa các
bàn sao. Diều dó là đặc biệt đúng nếu nhiều tồn tại nhiều bán sao cùa cơ
sớ dĩr liệu. Nhàn bản đầy dii iàm cho sự kiểm tra cạnh tranh và các kv
thuật phục hồi đắt hơn nếu không có sự nhân bàn.
I rái ngược vcyi nhân bản dầy đủ là việc khôim có nhàn bán, nghĩa là.
mỗi đoạn được lưu trữ chính xác tại một trạm. Tronu truờní> hợp nàv lât
ca các đoạn phài rời nhau, trừ việc lặp lại các khóa chính tront> so các
đoạn dọc (hoặc hồn hợp). Việc đó cũng còn dược líọi là dịnh vị không
dư thừa.
(ìiữa hai thái cực. chúng ta có một chuồi nhân bản bộ phậiì cúa dừ
liệu, Iiííhìa là một số doạn cua cơ sở dừ liệu có thế đirợc Iiliân bàn còn
các đoạn khác thi khôĩm. số các bản sao của mồi doạn cỏ thổ đi khẩp từ
mộl dcn tổnu số các trạm trotm hộ thống phàn tán. Môt mỏ la cửa việc
nliàn ban các doan uọi là một /ược đo nhún han.

208
Mỗi (t(iạn. lioỊic mỗi baii sao cùa một doạn. phái dược aăn vái inỗị
!rạm cn !iìê tronu: liệ thônu phàn tán. Quá trình đó íiọi lá sự phân lán ilữ
liệii (h(,;u' dịiiỉi \ Ị (ỉữ liệu). Việc lựa chọn các trạm và mức dộ nhân b:>n
nhii *!ìiỉòc \a(í các niỊic dích thao tác và tính san sànti và pliỊi thiiộ'’ \á()
kièii va Iinii lìurivim xuyên của các íiiao lác được đira ra tại mỗi irạtn. Vi
ỉụ, nêu str có inãt dược dôi hỏi cao và các ụiao tác có thc được dặt ra tai
mỗi írani \ á da so các tiiao tác là chí lấy thôn.u tin ra thì một C(y sơ dữ
liên dinrc nhân !ntn đa\ du là niột lựa chọn tốt. ruv nhiên, nếu một sô
’iao i;k i n i \ c ậ p đ è n c á c pliâii dặc hiẹt cu a c ư s ở d ữ iiệu là d ư ợ c đặt ra o
một Iritiii cụ ihè thi tập liạp các đoạn tưcnm írna cỏ thê dược dịnh vị chi
tại ( ác dữ liệu được truv cập ở nhiều trạm có the clirợc nhân
iiíHi ■' ,'.IC dó. Ncu nhicu cập nhậl dược thực hiện thì việc han ché
n!ìàn h: n có ÍỈIL' cỏ lại han. Việc tim ra một lời uiái tối ưu hoặc mộl lơi
uiai ' cho \ ’iẹc dịiih \ Ị dừ' liệu phân tán là một bài toán loi ưu phức tạp.

s.?.6. Vi dụ về phân đoạn, định vị và nhân bản

la xct niột ví (iụ về phân cloạn và phân tán cơ sớ dữ liệu


) 7 '/ (iia iliicl rầnu côim ty có ba trạm máy tính - mỗi một trạm
CỈK'* !n.'; lUrn \ ị. Các trạm 2 và 3 là cho các díTii \'ị 5 \ á 4. Tại moi trạm
riay clì! !iỵ ta chúnu la monụ chờ truv cập thườnụ xuycMi đến ihỏng tin
'^-1 ỈÃ!\ D Ụ _ Ả N dối với các nhân viên làm việc troim các đơn Vị
đỏ \ à C H' lỉo Ciự á n c á c đ ơ n vị d ó k i ể m soát. H ơ n n ữ a , c h ú n g ta ạ iá thiè l
nin<i V:.-ạn’, này truy cập chủ veu den các thuộc tính Họ đệm, l è n .
Mà 'v'. ! larnu. Mã_so_NGS cùa các nhân viên. Trạm 1 đirợc h-y
íãnb d > • ' o n ” !> sư dụnu và truy cập tliônu lin vồ dự án và nliân virr
niõt !ỈìU’àn u xuyC-n, cộim ihòm viộc lưu trữ dấu \ c t cúa thònu 'ií
*' ( ) \ V, Ị,,..,- hiètn.

i i '(; c á c y è u c ằ u dỏ. toàn b ộ C(y s ò (iữ liệu c ó thè lưu trữ ơ trạỉii :
!)ê x;u íliíih các (!oạn dược nhân bán (y các trạm 2 và 3, đâu tièii chÚPi.,
la co ' nhân doạn nẹaim {)ƠN_VỊ khóa cùa nỏ là Mã_số_l)V. Sau đ(
chun?.’ !' dụnu phân đoạn ^^an^ dẫn xuất các quan hẹ NHA N VĨMN
L)l. ■. ! )! >'■! VỊ f)ỈA _ỉ)lI'M các quan hệ dựa trên các khóa neoà! <!c
\'ới T:'! (!an \ ’i.

20'•
Sau đó chủiiu ta có the phàn cloạn dọc các doạn két quá
NUẢN_VIF^N để chỉ chứa các thuộc tínli llợ_dệm, 1'ên, Mã_số_NV,
ỈAKTng, Mã so NGS, Mã số DV. Hình 6.4 chi ra các phàn doạn hồn
h(,rp N l lẢ N _ V i n N 5 và N H Ả N _V IFN 4 chửa các bộ của N H Â N ^ V in N
Ihoà mãn các đieii kiện Mã_so_í)V = 5 và Mã_số_ĐV = 4 tirơnu ứim.
C ác phân doạn nganụ của DỤ ÁN, Í)ƠN VỊ và ĐƠN VỊ DỊA Í)II:M
cũiig dược phân đoạn tưcnig lự bang Mã_số_ỉ)V. Tất các các đoạn dược
lưu trữ tại trạm 2 và trạm 3 là các bản sao bíTÌ vi chúng đã dưực lưu trữ ở
trạĩTi truna tâm (trạm 1).

Ị NHÂN_VÍÊN_5 Mà_sỐ_NV Họ_đệm Tôn Ngày sinh Địa_chỉ Giố'i_tfnh Lu^yng Mả_số_NGS Mâ_số_ĐV

NV001 Lê Vân 12/02/79 Hà NỖI Nam 3000 NV002 5


NV002 Trần Nam 14/02/66 Hà NỘI Nam 4000 NV061 5
Đức
NV016 Nguyẻn Sơn 14/08/73 Hầ Nam 3800 NV002 5
Nam
NV018 Vũ Giang 26/03/83 Nam Nữ 2500 NV002 5
Hương Đ|nh

ĐƠN_VỊ_5 Mâ_sỐ_ĐV ĩẽ n _ Đ V Mà_sỐ_NQL Ngày bát_dẩu

5 Nghiẽn cừu NV002 15/09/2000

ĐƠ N_VỊ_Đ|A_ĐIẾM _5 Mà_sỐ_ĐV Địa_điểm_ĐV


5 Nam Đinh
5 Hà Nội
5 Băc Ninh

DỰ_ÁN_5 Tèn_DA Mả_số_DA Địa_điểm_DA M ã_số„ĐV

DA01 1 Hà Nội 5

DA02 2 Nam Đmh 5

DA03 3 Bắc Ninh 6

n h An _v iẻ n _dự _ ả n _5 Mả số NV Mâ_số_DA số_gi(>


NV001 1 32
NV001 2 7

NV016 3 40

NV018 1 20
NV018 2 20

NVŨ02 2 10
NV002 3 10

NV002 10 10

NV002 20 10

Hình 6.4a

210
NHÃN VIÉN4 Mâ_số_NV Họ ơệm Tén Ngầy_sỉnh Địa_chi Giới tinh Lirơng Mâ_số^NGS Ma..sổ„ĐV

NVŨIO Hoàng I hanh 05'08/79 Nghệ An Nử 2500 NV014 4

NV014 Pham Bâng 26.^06/52 Bác Ninh Nam 4300 NV061 4

NV025 Trần Lê Hoa 1fS/03/80 Phú Thọ Nữ 2500 NV014

ĐƠN_VỊ_4 Mã_số_ĐV Tén_ĐV Mà_sỐ_NQL Ngày__bắt_dảu

4 Hành chinh NV014 24/06/1997

_VỊ„ĐỊA_ĐIÉM _4 Mả^số_,ĐV Địa_điểm_ĐV

4 Hà NỘI

DỰ_ÁN_4 Tén_DA Mà_số DA Địa_diểm_DA Mả_sỐ_ĐV

DA04 10 Hà Nòi 4

DA06 30 Há NỘ! 4

Ũ N _ V ỈẾ N _ D Ự _ Á N _ 4 Mâ_sỔ_.NV M ã _ số _ D A số _ g iờ

NV002 10 10

NV010 30 30

NV010 10 10

NV025 10 35

NV025 30 5

NVOK 30 20

NV014 20 15

b)

Hình 6.4. Định vị các đoạn cho các trạm.


a) Các đoan quan hệ ớ trạm 2 tương ứng với đơn vị 5 ;
b) Các đoạn quan hê ờ trạm 3 tương ứng với đơn vị 4.

Bâ\ giò chủng ta phai phàn đoạn quan hệ N H Â N _V ỈFÍN _nỤ _Ả N


và quyết định những doạn nào eủa NH Â N _V IÊN DỤ’_ ẢN liru trữ tạĩ
các trạm 2 và 3. Chúng ta dối mặt với vấn dề là không có thuộc tính nao
cua N H Ả N _ V I Ẻ N _ ỉ) l) ’_ ÁN chi ra rnột cách trực tiếp dmi vị mà mỗi bộ
thuộc vc. riiật vậy. mỗi bộ tronụ; NHẢN_V1ẼN D ự _ Ả N Hèn quan đôn
một nhân viên e và một dự án d. Chúng ta có thê phân đoạn
NÍỈẢN VIÊN DU ÁN dưa trên đcTTi vị d mà e làm việc cho nó hoặc

211
iu' ỉ ítc n d ơ n vỊ d' k i c m soát dụ* án p. S ự p h ã n doạn Irở n ê n clc d à n ẹ n ố u
rtĩAV:! ĩa CÓ ỉiìột ràỉiu huộc d á \ imliTa là ncu các nhân \'iên chi có Ihc
V ỉcc trcỉi các (lự án dirợc dtyii vi nià nhàn \'icn cỉỏ làm \ iệc cho kicin soat
: Iì\ ỉìhièn kỉínĩìiA cô rànti buộc nào nỉiu vậ> Irone cơ sở clừ liộii của chúĩiL! ta
! roDii irưòim ỈK.TỊ') íià\ chúng ta có \hc phân cloạn Nỉ ỈẢN_V’IÍ:N_Ỉ)1! ÁN
tiụa trỏti don \ ị mà nhàn \ ien làni việc cho nó (diều dó dược bicu Ihi
'ĨÌU ílic u kiện c (xem chủ tiiích a hintì 6.5)) \i\ sau đó phân đoạn thêm
d«ra ircĩì (lơn vị kicin soái các dự áiì nià nỉiâii viên clanu làm việc Ircn (lo
íhiiìlì 6.5).
a) Các nhản viên tro n g đoTi vị 5

Ì G7 Mã_số_NV Mà_số_DA số_giờ

NV001 1 32

NVQ01 2 7

NVOie 3 40

NV 018 1 20

NVỮ18 2 20

NV002 2 10

NV002 3 10

Điều kiện phán đoạn C1= c AND (M ă ,số _ D A IN (SELECT Mâ_sỔ_DA


FROM DU'_ÀN VVHERE M ã_số_ĐV = 5))

I M ã_sổ_NV Mã_số_DA Số giờ

NVŨ02 10 10

Điẻu kiện phân đoan C2 = c AND (Mã__số_DA IN (SELECT Mâ_số_DA


FROM DỰ_ÁN W HERE M â_sổ_ĐV ^ 4))

G3 Mà_số_NV Mã_số_DA số_giờ

NV002 20 10

0;èu kiên phân đoạn C3 ■= c AND (Mã_số_DA ỈN (SELECT Mă_số_DA


FROM DỰ_ÁN VVHERE Mã__số_ĐV D)

Hinh s.5a
b) Các nhán vièn tro n g đcyn vị 4

G4 Ị Mà_số_NV \ Mã_số2DA số_giờ


Điêu kiẽn phàn đoạn C 4 - c ANO (Mã_sổ DA IN (SELECT Má ;.ó HA

FROM 0Ư'__AỈS« VVHERE Mã_sò f)V -

! G5 í'l'íổ_só_A/V Ma_sÓ_DA só_g/ơ

NV010 30 30

NVQ10 10 10
...............
NV025 10 35

NV025 30 ........= .........


NV014 30 20

Điều ktện phân đoạn C5 = c AND (Mã__số_DA IN (SELECT Mả__cò_DA


FROM DỰ_ÁN W HERE Mã_số_ĐV = 4))

G6 Mâ__số_NV Mã^ số_DA i số_giờ

NV014 20 15
, , . . . ....... i_____________ _____________ ii
Điều kiện phân đoạn C6 = c AND (Mâ_sổ_DA IN (SELECT Mã__số__DA
m k AKi VVHERE
FROM DỰ_AN \A/LJCOC Mã_sỏ_ĐV
r^\/ -= 1))
-4\\
c) Các nhân vién trong đơn vị 1

G7 M ã_số_NV Mã_số_DA số _ g iở

Điều kiện phản ớoạn C7= c AND (Má__số__DA IN (SELECT Mâ_số_DA


FROM DỰ_ÁN VVHERE Mà_số_ĐV = 5))

G8 M â „sô _ N \/ Mà_số_DA sổ_giơ

Điều kiện phản đoạn Cõ - c AND (Ma_số_DA IN (SELhC T Mâ_số__DA


FROM DỰ_AN W HERE Mả_số_ĐV ^ 5))

G9 Mã_số__NV Mỗ_số__DA só_giơ

NV061 20 null

Điệu kiện phân đoạn C1= c AND {Mã__số__OA ỈN {SELEC I Mả_&ố_DA


FROM DỰ_AN VVHERE Mã_số_ĐV =

Hình 6.5. Cảc đoạn tách rởi và đủ cùa quan hệ NHÁN_VỈẺN_DỰ_ÁN


a) C á c đ o ạ n c ú a NHAN_VÌÉN_DỰ_ÁN đối VỚ! c á c -'ihàn vién làm việc trong ổ ơ n vị 5
c = [M ả .sô.Đ V IN (SELECT Mà_số_ĐV FROM NHAN_VIÉN WHERE Mâ„số_ĐV = 5)]
b) C á c đ o ạ n c ủ a NHÂN_VIẺN_DỰ_AN đổi vỡí c á c n hản vièn làm việc trong đ a n VI 4,
c = [Mâ_sỐ„ĐV tN (SELECT Mà_số_ĐV FROM NHẢN_ViỀN WHERE Mâ_sổ„ĐV = 4;]
c) Các đoạn của NHÂN_VIÉN_DỰ ÁN đối vơi các nhản vlẽn làm việc trong ổơn VỊ 1.
c = [Mă_sô_ĐV IN (SELECT Mălsỏ_ĐV FROM NHÀN„V1ÉN WHERE Mả_sỐ_ĐV = 1)1

?. Ỉ3
Trong hình 6.5. hợp của các doạn Cil. CỈ2 và G3 cho tất ca Lác hộ
NỈIẢN VỈI-N 1)Ự_ẢN dối với các nhân viên làĩti việc cho don vị 5.
IiKTng tự, hựp cua các doạii (Ì4, Cì5. ( Ì 6 cho tất ca cac bộ
N[1ÂN_V11;N l)Ụ _ Ả N dối với các nhân \ ièn làm việc cho cion vỊ 4.
Mặt khác, hợp cua các đoạn Cil, (Ì4. (Ì7 cho tất ca cac hộ
N!ỈẢN_.VII:N [)l ỉ_ẢN đỗi vái các dự áíi do do d(m \ ’ị 5 kicni soát, t ác
điêu kiện cúa các doạn từ Cìl den G7 dược clii ra trong hình 6.5 . ('ác
quan hộ biêu diễn các kiểu licn két M : N, chẳnu hạn nlur
N1ỈẢN_VIHN DỤ_ẢN. thườnii có nhiều phân đoạn lôgic có thề cò.
Troiiíỉ sự phân tán cua chúng 0 hinh 6.4. cliúng ta chọn đưa vào tàt ca
các doạn có thề nối dược với hoặc là một bộ NHẢN_V1ẺN hoặc m ộ t bộ
DỤ AN ớ các trạm 2 và 3. Như vậy. chiiniỉ ta đặt hợp cua các đoạn (}1,
(Ì2. G3, G4 và G7 ờ trạm 2 và hợp của các doạn G4, G5, G 6 , G2 v à G 8
ơ trạm 3. Chú ý ràna các đoạn G2 và G4 dưạc nhân bàn ở cá hai trạm.
Chiến lược định vị này cho phép nối phép nối giữa các doạn
NHẢN_VIÊN và DỤ’_ ÁN địa phươne ờ các trạm 2 và 3 và doạn
N H Ả N _ V lÊ N _ D ự _ Á N dể tạo nên sự địa phưcyiig đầy đủ. Đ iều này
chứng tỏ vấn đề phân đoạn và định vị cơ sở ciừ liệu đối với các cư sờ dừ
liệu lớn là phức tạp như thế nào.

6.3. CÁC KIỀU HỆ THỐNG PHÂN TÁN DỮ LIỆU

Thuật ngữ hệ quan trị cơ sở dữ liệu phàn tán có thể mô ta nhiêu hệ


thống khác nhau về nhiều phương diện. Việc chíiih yếu là lất cà c á c hệ
thống như vậy có một diêm chung là các dừ liệu và các phần mèm dược
phân tán trên nhiều trạm được nối với nhau dưới dạng một inạng tniyên
thông. Trong phần này chúng ta sẽ tháo luận một số các kiểu hộ q u ản trị
co sở dừ liệu và các tiêu chuẩn và nhân tố làni cho các hệ thông này
khác nhau.
Nhân tố dầu tiên chúng ta xem xét là là cấp thuần nhất của phàn
mềm hệ quản trị cơ sở dữ liệu. Nếu tất cà các scrver (hoặc hệ quàn trị co
sờ dừ liệu địa phương) sử dụng phần mềm như nhau và tất cà các user
(client) sử dụng phần mềm như nhau thi hệ quàn trị cơ sở dữ liệu đirực
gọi là thuần nhất ; ngược lại nó được gội là không thuần nhất. Một nhân
tố nữa liên quan đén cấp thuần nhất là mức tự trị cục bộ. Neu khôaiiỉ có

214
sự cunu câp dôi với Irạm dịa phirơng dê hoạt dộnu uiônu nhu một hệ
qiuỉn trị (lữ liệu dộc lập thi liệ thônu là khỏnụ có tự trị địa phưcrnu. Mặt
khác. Iièu sự lru\' cập trực ticp băni’ các giao tác dịa pliiRrim efên niột
scrvcr là đirực cho phép, thi hệ thông cỏ một mức tự trị dịa Ịihưcniụ
IKIO dó.
Nèu inộl hệ tliốnu khôrm có tự trị dịa phirơnt>, chúníi ta cỏ mội hộ
quan trị cơ sơ dừ liệu "uiốim như" một hệ quàn Irị cư sờ dữ liệu tập triinii
đoi \ ơi imirưi dùim, Chi có inột lược đồ quan niệm, và mọi truy cập dên
hẹ t l ì ố n g đ ư ợ c nh ận t h ỏ íi u q ua m ộ t trạm là m ộ t p h ần c u a hộ q u a n trị c a
S(» d ù liệu. N e u h ệ t h ố n g mức tự trị địa p h i m n g cao nhất, chúng ta c ó
một kiều hệ quan trị cơ sờ dữ liệu được gọi là hệ quản trị cơ sở dữ liệu
liên hcTp (hoặc hệ thốntỉ đa cơ sờ dừ liệu). Trong một hệ thốntỉ như Vcậy,
mồi một server là niột hộ quàn trị cơ sờ dữ liệu tập trung và độc lập, nó
c ỏ c á c User c ụ c bộ, c á c uiao tác c ụ c bộ. v à n g ư ời quản trị hệ thống.

Trong một hệ đa c a sớ dừ liệu không thuần nhất, niộl servcr có thổ


là một hộ quàn trị cơ sở dữ liệu quan hệ, server khác là một hệ qiiàn tri
cơ s á dừ liệu mạng và server thứ ba là hệ quản trị cơ sở dừ liệu dÔ!
tượng hoặc phân cấp ; trong triùyng hợp như vậy cân phái có một ngôn
níỉữ hộ thống chính tắc và đưa vào chưcimg trình dịch ngôn ngừ dể dịch
các truy vấn tìr ngôn ngữ chính tắc sang ngôn ngữ cúa mỗi sorvcr.

6.4. Xử LÝ TRUY VÁN TRONG CÁC cơ sở DỮ LIỆU


PHÀN TÁN

6.4.1. Chi phí truyền dữ liệu của xử lý truy vấn phản tán

Chủng ta đà làm quen vứi việc xử lý và tối ưu một truy van trong hệ
quàn trị cơ sờ dừ liệu tập truiig. Trong hệ thống phàn tán, có nhiều nhân
tố thòm vào làm phức tạp cho việc xử lý truv vấn. Trước tiên là chi phị
truyèn dữ liộu trên niạníĩ. Các dừ liệu có trong các tìlc trung giaii được
truyền sang trạm khác để xử lý tiếp, cũng như các íìle kết quà cuối cùng
cũng có thể phải chuyển đến Irạm mà ờ đó cần kết quà truy vấn. Mặc dù
các chi phí này là không cao, nếu các trạrn được nổi với nhau thông qua
mạiig cục bộ tốc độ cao (high-performance), chúng trở nên có nghĩa
irong các kiểu mạng khác. Như vậy, các thuật toán tối ưu truy vấn của

?.1
lọ q u a n t rị c ơ s ơ d ữ l i ệ u p h â n t á n \CI11 m ụ c t i ê u n i à m s ỗ i r u N Ó i ' t ì ù ỉ i ệ i i

nnu là niột liêu cluiân tòi iru troiiii việc chọn một chiên lirợ^ fìụ;c ìiiỘ!;
tĩuv \ àii phân lán.
C ỉ ú i n ạ ta m ỏ la d i ỏ u d ó v ứ i h a i truv \ ã n vi d ụ clcrii u iiin *. .! M ...'1 .'

các quan iiẹ N liẢ N _ V I Ỉ ’N và 1)()N_VỊ dược phân tán Iiiur sau ■
* ỉ rợm / ;
Ni 1ẢN_V11:N{Ilọ dệni, lẽ n , M ã _ s ố N V . Dịa_clii, íiió i tiiih,. ' uuiiiỉ,

Mã_số_N(iS. Mii sỏ !)V»


Gồm 10.000 bản ghi, mồi ban ghi có dộ dài 100 bvte, troiig đó .
Mã_số_NV chiếm 9 byte ; Mã_số_DV chiếm 4 bvtc ; llọ_dệm chiếm
15 byte và 'ỉ'ên chiêm 15 byte.
• Trạtn 2 :
ĐƠN_VỊ(Mà_số_ĐV, TênJ)V , Mã_số_NQL, Ngáy_bắt dầu)
Gồm 100 bản ghi, mỗi bản ghi có độ dài 35 byle, trong dó ;
Mã_số_ĐV chiếm 4 byte ; l'èn_ĐV chiếm 10 byte ; M ã_số_N Q L chiếm
9 byte.
Giá tliiết không cỏ qiian hệ nào đirợc phân đoạn. Theo sự phàn lán như
vậy. kích thước của quan hệ NHÂN_VIÊN là 100*10000 = !()*’ byte, và
kích Ihirởc của quan hộ DƠN VỊ là 35* 100 = 3500 bytc.
Xét truy vấn ; Với mỗi nhân viên, hãy dưa ra tên \ à lèn đan vị của
nliân viên ấy. Tniy vấn có thè được biếu diễn Iroim dại số tỊuan hệ như sau ;

Q : ^Iiọ dộni, rên, rc'ii i)v(Nl IX! MS SỐJ)V - Miijxì DV I Ml-N' I )


Kêt quà của truy vấn này uồm lOOOU bàn uhi, izia Ihict inỗi một
nhân viên liên kết với mộl dan vị. Mỗi bán I>hi trong kết qua IĨ'U\ vân cỏ
độ dài 40 byte. Truy vấn dược đưa ra tại site 3 (trạm 3), nỏ dược gọi là irạni
kCi qua.
Cỏ ba chiến lược đan ỉỉiàn dể thực hiện truv vân phan tán này.
1) Chuyển cả hai quan lìộ EMPLOYHI- và DF,PARTMl:N r váo
irạin két quá, và thực ỉiiệii phép nối tại trạm 3. '['rong Irirờiiu iiợp Iiày,
số hylc phài chuyến là :
1000000 + 3500 = 1003500 hyte.

216
?ì ( ỉihvcii (ỊUcin liệ ĨÌMIM.OYI^Ỉ dcn trạm 2, tỉiỊrc liiện Ị>iiC|ì Iioi
■;ii ( : a ỉ i ’i 2 ' 1 'JUÌ kCM quíi d è n t r ạ m 3. K í c h t h ư ơ c c ủ a k è t q u a t r u y v à n là
, í ■' ■ ' Ị;ị iííO(!()0 hy te, N h i r v ậ v , s ô b v t c p h a i c ỉ i u \ è i i !ù ;

40()()(J0 I 1000000 bytc.


. Cịiuỉii b.ệ D l i P A R r M E N r dên Irạm i , t h ự c ỉ i ỉ Ci i f ) ỉ i c p n o i

ỉ' •; f ụ n i k è l q u a . 1'roim trườn<> h ạ p n à \ s ỏ I n t e p h a i c h u \ ê i ì la :

40()()00 ^ 3500 = 403500 bytc.


iNcu VlỌc lam c ự c tiêu s ố c h u y ê n d ữ liệ u là tièu cliu ân toi ưu, la sè
cliụn chiên lược 3. Bâv giò xét truy vấn khác : "Với mỗi đơii vị, hãy đưa
ra tên dmi vị và tên cùa người quán lý đơn vị". Điều đó có thể biếu diễn
troim dại sô quan hệ như sau :
■ '^llọ đC-ni. ICn. T C - n _ Đ v ( N H Â N _ V I Ẻ N X]Mă _ _s ố_ NV = Ma_s(j_NQI. O Ơ N _ V Ị )

Một iần nữa, giả sử truy vấn được đưa ra tại trạm 3. Ba chiến lược
tưorit’, tụ thực hiện Q được áp dụng cho Q', trừ việc kết quà của Q' chỉ có
100 ban uhi với uià thiết là một đơn vị có một Iiíĩười quán lý.
- C"hién lược 1 cần chuyển số byte là :
1000000 + 3500 = 1003500 byte.
- C’hicti lược 2 cần chuvền số byte !à ;
1000000 + 4000 = 1004000 byte
- (.'liicn iược 3 cần chuyền số byte là ;
4000 + 3500 = 7500 byte
Mội ỉầìi nữa, chọn chiến lược 3. Các chiến lược irèn là các chiến
!uợc liién nhièii khi mà trạm ket quả (Irạin 3) khác với các trạm chửa các
filc cỏ niậl tione truy vấn. 'l uy nhiên, già sư trạm kết quá là trạm 2 , thi
chuim ta co hai chiốn lược dơn gian sau :
('huyén quan hệ N ỈỈẢ N _V ỈÊ N đến trạm 2, thực hiện truy vấn, và
irìĩiii bay kết qua cho user ở trạm 2. Như vậy, 1000000 bvte phải dưực
chuyến cho cá hai truv vấn Q và Ọ'.
- Chuyèii quan liệ DƠN VỊ đen trạm l, thực hiện truy vấn tại
irạni l và gưi kết quả trớ lại irạm 2 .
! loni’ irirờntí hợp nàv, 40000 + 3500 byte phải chuyển cho truy vấii
Q \ a 40()0 t 3500 byte cho truy vấn Q'.

217
MỘI chien lược phức tạp h(m nhirim đỏi klii làm việc tốt hơti so V(VÌ
các chiếii lược dơn liian, sư dụng một phép toán gọi là nưa noi (Seniiịoin).

6.4.2. Xử lý truy vấn phản tán sừ dụng phép nửa nối


l ư t i r ớ n u d ă n u s a u x ư lý t r u y \'â n p l i à n táii s ư d ụ n ụ p h é p t o a n n ử a
nối là làm uiảni số các bộ uiá trị troiii’ một quan hệ Inrức khi chuyên no
đến trạm khác. MỘI cách Irực quan, tư tircmiỉ là gửi cột nối cua một quan
hệ R dến trạm mà ớ dỏ quan hệ s khác dược dịnh vị ; sau dó cột nà>
được nối với s. Sau dó, các thuộc lính noi cùng với các thuộc líiih dược
đòi hoi Iroiig kết quà dược chiếu ra và dược nhập trớ lại trạm ban dầu và
được nối với R. Như vậy. chỉ có cột nối của R là được chuvển theo mộl
hinVng, và một tập con cùa s với các bộ hoặc các thuộc tính được chuyển
theo một hướng khác. Neu chi một phần nhỏ các bộ trong s iliam gia
vào phép nối, Ihì đỏ là một cách giãi quyết hoàn toàn có hiệu quá đế làm
cực tiểu việc chuyển dữ liệu.
Đề minh họa, xét chiến lược sau đày tiổi với việc Uiực hiện Q và Q' :
1) Chiếu các thuộc tính nối của DEPAR ĩ M E N ỉ' tại trạni 2 và
chuyến đến trạm 1. Với Q, chuyển F = 7T|via số j 3 v(ĐƠN_VỊ), kích thước
của nó là : 4 X 100 = 400 byte. Trong khi đó, với Q', chuyến p’’ =
số NQI (DƠN_VỊ), kích thước của nó là : 9 X 100 byle = 900 byte.
2) Nối íìle được chuyến với quan hệ NI1ÂN_VIẺN ờ trạm 1 và
chuyển các thuộc tính được đòi hòi từ file kết quả dến trạm 2. Với Q,
chuyền :
R = TTms sỏ OV, ilo ilcm. lẽn (F [X] Ma sỏ f)V MJ so nv NHAN_VIIỈN)
kích thước của nó là :
34 X 10000 = 340000 bytc.
'1'rong khi đó, với Q ’ chuyển

R' = ^Ma_ SỐ NỌI,. llụ đím. Icn(f'' txi.via số NỌl, = Ma_số_NV N H A N _ V 1EN)
kích thước của nó là :
39 X ] 00 = 3900 byte.

3) Thực hiện truy vấn bànií cách nối các tìle được chuyển R và R'
với ĐƠN VỊ và trình bày kết quả cho user ơ trạm 2.

218
K!ii sư tlụnu chicii lirợc nàv, la chuyòn 34()00() bytc dòi \a i () và
4800 hMc ilòi voi Q ’. Như vậy, dã giói liạn các bộ \ a các ihuôc lính
dượt' rlnivcn dcn Irạiti 2 inMia hirức 2 , dên các thuộc tính và cáo !>ộ iỉirợc
nôi m(')i ^acli ilụic lò \ cri một bộ 1)(ÍN VỊ troim buớc 3, V(ifi truy \ ầii <),
diều (lo clio la V(VÌ lất ca các hộ NỈỈẢN VIIÍN. Vậy. dn đạt cỉuực sự cai
liC‘n. I uv iiliiC'n. vói Ọ' chi dưa ra v ới ]()() bộ nhàn viC‘n (irêii lOOOO liộ
nhân \'iêii)- n è (licn dạt clìiên lược nảy. niỉirài ía sử dụníi Ịihép loan nưa
nối. Một ịiliép toan lura nối (R t< \ li^)< Ironu đó A và B ià các thuộc linh
p h ù hợỊi m i ề n c u a R v à s tiKnig ứ n e , t ạ o ra kết q u a g i o n g n h ư h i è u t h ứ c
đại số cỊuan liệ tĩk ÍR m \ |ịS). Irorm một môi trườnu phân tán, tronu đó
R và s Iiãni a các trạm khác nhau, phép toán nưa nối thường dược thực
hiện hănu cách : dầu liên chin ển F = 7t(5(S) dến trạm có R và sau dó nối
1' v<Vị R Nhir vậy, đã dẫn dến chiến lược được nói ớ trên.
C'liú ý r ầ n u . Ị i h é p n ư a n ố i k h ò n ụ RÌao h o á n , n g h ĩ a là :

R K s khác với StK R.

6.4.3. Phân tách truy vấn và cập nhật

t roníi inột hệ quàn trị cư sờ dữ liệu không trong suốt, phàn tán, uscr
diễn dạl Iiiộl truv vấn một cách trực tiếp giới hạn cua các đoạn cụ ihể. Ví
dụ, \ c t inộl truy vấn Q khác ; "Dưa ra lên và sỗ <íiờ làni việc theo tuân
đối \ ới mỗi nhàn \ icn làm việc tròn một số dự án được đơn vị 5 kicm
soat” dươc chi ra trcii co s a dữ liệu phân tán trong đo các quan hộ ở
trạm 1 \ à trạm 2 dược- chi ra nliư ờ liinh 6.4 và các quan hệ ciia co sở dữ
liệu (>• trạm 1, Một user đật ra mộl truy vấn như vậv phái chi rỗ nó tham
chiếu các quaii hệ PROJS5 \ à W ( ) R K _ 0 N 5 ở trạm 2 hoặc các quan hộ
P R O . I I ì d và W ()RK ON (X trạm 1. User phải duy trì tính ổn clịnh cúa
các inẫu dừ ỉiệii dược nhân bàn khi cập nhậl một hệ quảii trị cơ sờ liữ
liệu k h ô i m Ironụ SUÔI n h â n hán.

M ặ t k l i á c , m ộ t h ộ q u à n trị c ơ s ở d ừ l i ệ u h ỗ trợ n h â n b à n , Ị)hân đ oạ t i,


p h à n lá i i n i ộ ( c á c h d ẩ y d ù c h o p h é p U se r c h i ra m ộ t t r u y v ấ n ỉ i o ậ c m ộ t
yèu cằu cập nhạt trên lược đồ cơ sở dừ liệu giống như hệ quán trị cơ sớ
dữ liệu là tập trunu. Vứi các truy cập, hệ quàn trị cơ sở dữ liệu có Irách
nhiệni duy trì sự cố kêt giữa các mẫu được nhân bàn bàng cách sir dụng

219
một troiie các tiiuịìl toán kicMii tra cạnh tranh phàn tan. V ó i các Iruy \ãn.
một niodule Ịihãn lách Iruy vấn phai phàn tácli một tniy vân ilianh ca.,
Iruy van con có thê dược thực liiện ứ một Irạin d(rn. ! licin Iiua. ni' .'
cíiién lirợc dé lò tiọp các kêt qua cua các trii_\ \ ấn con dè lạsi Iicn ivJ: .n.
truy \ â n c ũ i m pliai d irợc si n h ra. Klii m à hộ q u a n irị c a s ơ d ử ỉicn a;íi,
dịnli ràim inột mục dược tỉiani chièii den tron.u truv van là (tuợc ÌIỈK!'
haii. nó pliai chọn hoặc cụ thò hóa ban sao troníi khi thực hiên tru> vân.
ỉ)ô xác dịnh baii sao nào chửa các mục dữ liệu dược lliaiii cliicii dừi:
tronu inộl truv van, hệ quan irị cơ sở dữ liệu tham chiêu đòn thòng tin
phân tán, nhân bán và phàn doạn dược lưu trữ trơng calalog hệ quàn li Ị
cơ sớ dừ liệu. Với phàn doạn dọc, danh sách thuộc tinh cho mồi IIIỘI
đoạn được uiĩr troim catalog. Với phân đoạn nuang, điều kiện phân đoạn,
dôi khi còn gọi là bảo vệ (giiard) được giữ cho mỗi doạn. ỉ)ỏ là mội
d i ề u k i ệ n c h ọ n c h i ra n h ữ n g b ộ n à o c ó ở I r o n g d o ạ n ; n ó đ ư ợ c g ọ i là m ộ i

bào vệ bời vì chi có các bộ thoả mãn điều kiện nàỵ là được cho phép lưu
trừ trong đoạn. Với phân đoạn hồn hợp, cả danh sách thuộc lính và diều
kiện bào vệ được lưu trữ trong catalog.
Trong ví dụ trên, điều kiện bảo vệ cho các đoạn ở trạm 1 là 'ĨRUÍ
(tất cả các bộ), và danh sách ihuộc tính là * (tất cả thuộc lính). Với các
doạn được clù ra trong hinli 6.4, chúng ta có các điều kiện bào vộ và các
danh sách thuộc tính như sau :
(a) NMÂN_V1ÊN_5
Danh sách thuộc tính ; lĩọ _ đ ệ m , Tên, Mã_số_NV, Lương,
Mã_số_NGS. Mã_sỔ_i)V
ỉ)iều kiện bào vệ : Mã_số_DV = 5
DƠN VỊ_5
Danh sách thuộc tính : * (tất cá các thuộc tính)
Điều kiện báo vệ : Mã_sổ_ỉ)V = 5
ĐƠN VỊ DỊA Đ1ẼM_5
Danh sách thuộc tính : *
Diều kiện bảo vệ : Mã số Đ V = 5

220
h l ' AN 5
Daiih s:’ich thuộc tính : *
Diều kiC-n bao vệ : Mã số 1)V = 5
V ' ỈAN \'Ỉ1-N J)1,;'_ÁN_5

Danli sách lliLiộc tính : *

Diều kiện báo vệ : Mã_số_NV IN (71VIA.số NV (N! ỈẢN_Vlf’,N_5))

C)R Mã số_I)A IN ( 7r|)|,,„,,Ị-,er (1^1^’ _ÁN_5))


<h) N! l Ả N VIÚN__4

Danli sách thuộc tính : Mọ đệm, rèn. Mã_số_NV, I.ưcnie,


Mã_số_NGS. M ã_số_DV
l^iôu kiện báo vệ : Mã số_ỉ)V = 4
ỉ)(lN _ V ị_ 4
I')anh snch ihuộc tính ; * (tat cà các thuộc tính)
ííicu kiện hão vộ ; Mã_số_D V = 4
i)r)N V Ị j:) Ị A DIFM _4
Danh sách thuộc tính : *
Dièu kiện báo vệ ; M ã_số_D V = 4
!)!/ ẢN_4

Danh sách thuộc lính ; *


!)ieu kiện báo vệ ; Mã_số_f-)V ~ 4
NỊ i ẢN V ! r 'N _ í ) ự _ Ả N _ 4
Danli sách ihiiộc tínli ; *

Dièu kiện bào vệ : Mã_số_NV IN (7r\iij số NV (Nỉ 1ÀN_VIÊN_4))

OR Mã_số_ỉ)A !N ( 7r|>n„|„|,j.| (D Ụ_ẢN_4))


Khi !iẹ cỊiian ti ị cơ sờ dữ liệu phân tách một yêu cau cập nhật, nó có
tliô xác <IỊn!i cloạn nào phái dược cập nliật bãnc cách xem xét các dicu
kiện \ ộ cua nó. Ví dụ, một yêu cầu cùa user chèn vào inộl hộ íỊÌá trị
nnVi ------------ ... 4> vào quan hộ NHẢ N VIỄN phái dược hệ quàn trị cơ
>a d ữ l i ê u p h â n t í c h t h à n h h a i y ê u c ầ u c h è n : y ê u c â u t h ứ n h a t c h è n b ộ

221
gia trị tròn \ a o (ioạn N) ỈẢN_VỈ1'N ở trạm 1. v;i vèu cầu ihư liai chèn hộ
(lưọv chiòu , .... , 4> vào doạn NỉỈẢN__V1! 'N_^4 tr Irạni 3.
Voi việc pliàii tácli truy van. hệ quàn Irị ca sơ tiừ liẹu có ihè xác
dịnh các doạn nao có ihê chửa các bộ dói hoi băng CÍK-ÌI so sanh điOu
kiện Iniy \ ân \ớ i các dièu kiện bao \ ệ. Ví dụ, xcl truy \â n ọ : ''[)u;i ra
ỉiọ dệm. l en \'à Sô_ uiừ làin việc theo tuần dối với niỗi nhãn \ ÌC‘ |1 lam
việc Irèii niộl so dự án dược dơn \'ị 5 kiêm soát", rruy \ aii dirợc clii ra
tronu SỌỈ như sau :
(,) : SI 1,1'(' I Họ dệm. rèn. số _ ụ iờ
l -ROM N’1IẢN_V1[-N NV. D ự _ Á N DA, N l ! Á \ _ V l f N í ) ự AN' \ V I ) A

NVIIHRH Mà >Ố_!) V - 5 A N D D A . M à _ s ổ f)A - N V D A . M à sò DA


A N D N V . M à s ố _ N V - N V D A . M à sô N V ;

(jia sir rãnu truv vân dược dưa ra ở Irạni 2. do là noi kêl qua lrii\
\ a n sẽ t lu ợ c c ầ n den. 1 lệ q u a n Irị c ơ s ở d ữ liệu c ó th c xác ciịnh lừ cỉicu
kiCMi bao vệ trèn Dl.r ÁN_5 và NHÂN_VIFN_ [)l.r_ẢN 5 rãny mọi hộ
thoa n\ãn điêu kiện
(Mà sồ DV - 5) AND (DỰ _ÁN,Mã_sA_lM
NI l ẢN_ Vi r , N_ D ự ẢN. Vl ã số . U A )

cỏ lại irạin 2. Vi vậv nỏ cỏ thố phân tách truv van thanh các li Li\ vấn con
dại sô quan hè nhu sau ;
1 1 <- 7I\iâ sổ NVnH.)_ÁN_5 IXl.M;! sồ HA
sô I)aNHẢN_vỊr;N i:>Ịí_ẢN_5)

I - < - ^M à sA NV. Họ dộin. 'Icn( 1 'I M Ma số NV Mã sổ NV N I lẢ N V lliN ) ;

K Ì:r_ Ọ l)A 71 I I , I c n . s ố , £ i á ( ' i '2 * N H Ả N _ V i r ; N _ l ) ự : A N 5) ;

P!icp lacli này cỏ ihế dược sử clụníỉ dê thực hiện íru\ vấn bĩinu cách
sư dụim cliicn lirợc nira noi. rtệ quán trị cơ sơ dữ liộii bièt lừ các diêu
kiện bao vệ raim D lí_ Ả N chứa một cách chính xác các bộ llioà mãn
(Mã sỗ l)V = 5) và N 1 ỈẢ N _ V IỮ N J)Ự _ Á N _ 5 chứa uu cu các bộ dược
nối vứi I)l i_ẢN 5 ; vì \ ậ v truy vấn con I'l có thế dưực tliực hiện tại
trạm 2. \ à cột dược chiếu Mã_số_NV có thê dược mri dổn trạm 1. 'ĩruy
van con T2 sau đó có thè dược thực liiện lại trạm ! và kct qua có ihè
d ư ợ c e ư i t i ư lại t r ạ m 2 . ư đ ó k ế t q u ả t r u y v ấ n c u ố i cùni!; đ ư ợ c l í n h t o á n

222
\ á dược hiên thị clid Iiịiuới ciùnii. Một cliiên krọc dê chọn kra kliác uứi
truv \ àn (,) dcii trạm 1 chứa tat câ các bộ của cư sở dữ liệu, ở đó nỏ sẽ
dirợc thực hiện một cách cục bộ và từ đỏ kct quá có thô dược uửi trơ lại
dẻn tiạm 2. Bộ tôi ưu truy van sẽ đánh eiá clii phi cua cá liai chién lirợc
và sè chọii c h i ê n lư ợ c n à o c ỏ lỉiá t h â p nhât.

6.5. TỐNG QUAN VÉ KIẾM TRA CẠNH TRANH VÀ KHÒI


PHỤC TRONG CÁC c ơ s ở DỮ LIỆU PHÀN TÁN

Với mục đích kiC'm Ira cạnh iranh và khỏi phục, rất nliiều vàn
đe nav sinh Iroim mói trường hẹ quan iri cơ sơ dữ liệu phân tán mà
k h ô n u c ó trong m ò i irưcTiig hệ quán trị C(y s ơ dữ liệu tập trunii. C á c van
đề dó gồm ;
- I.àm việc với nhiên han Síio của cúc niục d ữ liệu : P h ư ơ n t i pháp
kiềm tra cạnh tranh có trách nhiệm duv trì sự cố kết giữa các bủn sao
náv. Phiríĩnạ pháp hòi phục có trách nhiệm về việc làm cho niột bán sao
phù hợp V(VÌ các bán sao khác nếu trạm lưu trừ ban sao bị hỏntỉ liru trừ
\ à phục hồi lại về sau.
- H ư hònịị cua một Irụm riêníỉ ỉ ỏ ■ Hệ quàn trị QO sờ dữ liệu phân
tán phái licp tục ihao tác với các trạm đaim chạy của nó, nếu có the, khi
một hoặc nliieii trạm riêntỉ Ic bị hỏna.
- Hư ho/ỉí^ cua két nôi mạní^ : í lệ thông phái có khả năng đối phó
việc với sự hư hỏnu cua một lioậc nhiều kết nối truyền thông kct nối các
trạm. Một trường liợp cực doan cua vấn đề nàv là sự phàn chia mạng có
mặt. Nó phân chia các trạm thành hai hoặc nhiều phần, trong đò các
trạm liên Irong một phần chi có thể kết nối với nliau và không kết nổi
được vái các trạm trong các pliân khác.
- Commil p hân tán Vaii dề nàv sinh với việc đệ trình một giao tác
m à C(r SỪ d ừ liệu truy c ậ p d ư ợ c liru trữ trèn nhieii trạm n ế u m ộ t s ố trạm
hư hỏnu, tronu quá trình commit. Giao thức commit hai pha thườntỉ dược
sứ d iu m đế doi p h ó vứi van dê này.

- Tắc nị^hẽn ph â n tản : Tắc nghẽn có thể xày ra tronu nhiều trạm, vì
vậy các kỹ ihuật dê đối phó vứi tắc nghẽn cần phải được m ở rộng đê
quan làni lới nó.

223
6 6. TỔNG KÉT

í rony chinnm nàv cliíing ta đã xem xct một cách tũnu quan \ ồ cư síV
ca bíìii d ì ỉ ư c SU' (.iiin;:
dù' iiệii p h â n t á n v à c h i n g h i ê n c ứ u m ộ t v à i k ỹ t h u ậ t
vai ca s a dữ liệu phân tán. Dè thiết ke một c a sò dữ liộu phan !án !ruov
hct p h à i t h i c t k c i n ộ l c o s ớ d ữ l i ệu t ạ p t r u n u , s a u d ó m á i ÚCII h à p h pỉi;ÌỊi
cioạn và (lịnh vị ca s a dữ liệu đè có một cư sở dừ liệu phân tán. Các k\
ilìuật pỊiâii đoạn và dịnh \'ị tương dối phức tạp. phái lính ctến nhiêu \ c u
tô niìir việc liru trữ. hiệu suất khai thác.... Tronụ clurírn” nòv Ịtì(Ýi chi vlẽ
cập tỉòii khái niệm về phân đoạn và định vị. chưa đi sâu vàíi các kv íhiiậi.
ỉ r o n u c!iư(yní’ n à \ c ũ n u đ ã n ó i đ e n v i ệ c t h ự c h i ệ n c á c l r u \ \ à n \ à tồi ưu,
tuy nhièn ơ dày \ iêc đưa ra cá c triiv vân mới dư ợc thực Ịiịện ironu
kiộn hệ quan trị C(T sa dữ liộu phân tán dám bào tính tro im SLiõt phàn (an
cho ntỉirài sir dụne. nahĩa là nmrời sứ dụntí vièí các tru\ \ àỉi nỉiư t i'nỊj
a i sơ dữ liệu tập truiiíỉ còn việc phân tán và tỉiực hiện truy \ àn la <!;> ỉiệ
qìi án trị C(í s ơ d ừ l i ệ u đ á m n h i ệ m . 'ỈYonsỉ t r ư m i c h ợ p h ệ q u a n irị CÍT S(T (íừ
liệii chưa dám bao tính troim suốt hoàn toàn, việc vict các tru\ vần phàii
tan p h ứ c t ụ p hirn nhicLi, b ạ n đ ọ c c ó t h ế n g h i ê n c ứ u t h ê m q u a c :’k ; U'ú 'ịẹụ
\ i ế l c l i i i y è n v e C(y S(V d ữ ỉi ệi i p h â n tán .

CÂ U HỎI ÔN T Ặ P

■1. Nêii c á c U’U đ iể m c ủ a c ơ s ở dữ' liệu phân tán Vi s a o ?

2 Nêu các chức năng phụ thêm của một hệ quản trị cơ sỏ' du iiêu
phân tán so VỚ! một hệ quản trị cơ sỏ’ dữ liệu tập trung
3 Phân đoạn một quan hệ là gì ? Các kiểu phân đoạn chinh
sao phân đoạn là một khái niệm có ich trong thiết kế co sò dũ i:èu
ph?n lán
4 Nhàn bản clũ’ liệu là gì ? Vì sao nhân bản dữ liệu có lo’i trof ú .ìệ
quản trị c ơ s ớ dũ’ liệu phân tán
5^ Trong thiết kế cơ sở dữ liệu phân tán, định vị cơ sờ dũ liêu nghĩa
ià gi ?
6 Phân ổoan ngang cùa một quan hệ được chỉ ra như thể nào i 3'T'
thế f'ào để xâv dụ ng lại quan hệ từ phân đoan ngarig đ r ; G ..‘ .

'?'?á
7 Phân đoạn doc cúa một quan hè đuợ c chí ra nhu’ thế nào ^ Làm
thế nào để xây dirng iai quan hê tu' môt phân đoạn dọc đầy đủ
8 Giai thich ý nghĩa của các thuât ngũ sau : trong suốt phân tán,
trong suốt phân đoan, trong suốt nhân bản, hê thống đa cơ sỡ
dũ' liệu.
9 Trinh bày các kỹ thuât khác nhau để thục hiên môt phép nối bằng
của hai file đu’Ọ’c đinh V! tai các tram khác nhau Nhân tố chinh nào
có ánh h ư ở n g đến chi phi của viêc truyền d ữ lỉệu
10 Trinh bày phương pháp nửa nối để th ụ c hiện phép nối bằng của
hai file đ u ợ c định VỊ tại các tram khac nhau. Với đièu kiện náo một
chiền lược nối bằng là có hiẽu quà
11 Trinh bày các nhân tố ảnh hướng đến việc phân tách truy ván Các
điều kiên bảo vê va các danh sách thuộc tinh của các đoạn được
s ử dụng trong quá trình tách truy vấn như thế nào ?
12 Việc phân tách môt yêu cầu cập nhật khác với viêc phân tách một
truy vần như thế nào ^ Các điều kiẻn bảo vệ và cá c danh sách
thuộc tinh của các đoan đu ơ c sù dụng như thế nào trong khi phân
tách một yêu cầu cặp nhât

MỌT SỐ BÀI TẠP

1 Xét sự phân tán dũ liệu của CO' sỏ' dũ' iiêu CÔ N G _TY, trong đó các
đoạn đu'ợc đặt tại các trạm như trong vi dụ về phân đoạn và định
VI V ó i mỗi truy vấn s a u đây hãy chỉ ra ít nhất là hai c h i ế n l ư ợ c
phân tách và thực hiện truy vấn VỚI điều kiện nào thì mỗi chiến
lU'Ọ'C c ủ a b ạ n l à m v i ê c tố t

a) VỚI mỗi nhân viên trong đơn vị 5, hây lấy ra tên nhân viên và họ
tên các con của nhân Viên^
b) Đ ư a ra tên c ủ a tất c ả c á c nh ân viên làm việc tai đ ơ n VỊ 5 nhưng
làm viêc trên m ột số dự án không do đơn vị 5 kiểm soát
2 Xét c á c quan hệ sa u đày
SÁC H (M ã_số_sách, Tác_giá_chinh, Chủ_đề, Số_sách_trong_kho,
Giá)
H lẸ U _S Á C H (M ã_số_h;ệu sách. Thành_phố, M ã_vùng, Giá_tri).

225
KHO íM ã_số_hiệu_sách, Mă_số_sách, số_lư ợ ng).
trong đó : Số_sách_trong_kho là tổng số sách trong kho; G iá jr ị ià
tổng số giá trị đối với hiệu sách tinh theo đơn vị nghin đồng.
a) Cho ví dụ về hai vị từ đơn giản có ý nghĩa phân đoạn ncang
quan hệ HIỆU_SÁCH.
b) Phân đoạn ngang suy diễn của KHO d ự a trên phân đoạn của
HIÊU_ SÁCH là như thế nào ?
c) Chí ra các vị từ mà theo đó SÁCH được phân đoạn ngang 'heo
chủ đề.
d) C hỉ ra rằng KHO được phân đoạn tiếp như thế nào từ phân đoạn
theo b) và thêm vào các vị từ trong c).
Xét cơ sò’ dữ liệu phân tán cho một chuỗi hiệu sách với ba irạm
BÁC, TRUNG, NAM. Các lược đồ quan hệ được cho như ờ bài tép 2.
Xét SÁCH được phân đoạn theo Giá như sau :
51 : S Á C H 1 : từ 1 cho đến 20 nghìn.
52 : SÁCH_2 : từ 20,1 nghìn đến 50 nghìn,
5 3 : SÁCH_3 : từ 50,1 nghìn đến 100 nghìn,
. S4 : SÁCH_4 : từ 100,1 nghìn trở lên.
T ưong tự, HIỆU_SÁCH đ ư ợ c phân chia theo mã vùng thành :
HS1 : BAC : Mã vùng từ 1 đến 100.
HS2 : TRUNG : Mã vùng từ 101 đến 200.
HS3 ; NAM ; Mã vùng tù’ 201 đến 300.
Giả sử rằng KHO chỉ được phân đoạn suy diễn dựa trên H IỆ U _ S Á 3 H.
a) Xét truy vấn :
SELECT Mâ_số_sách, Số_sách_trong_kho
FROM SÁCH
VVHERE Giá > 15 and Giá < 55
Giả s ử rằng các đoạn của HIỆU_SÁCH là không nhân bản và ỡ r ợ c
gán dụa trên vùng. Giả thiết thêm rằng SÁCH được định vị như Séu :
BÁC : B1, B4 ;
TRUNG : B3, B2 ;
NAM : B I, B2, B3, B4

226
Giá thiết truy vấn đu’ơc đưa ra ỏ' BAC Các truy vấn con từ xa nào
sẽ được sinh ra ^ (viết bằng SQL)
b) Nếu giá cúa cuốn sách có mã số sách = 1234 được sửa đổi từ
45 thành 55 tại trạm TRUNG, những sứa đổi nàs sẽ được sinh ra 7
Viết bằng SQL
c ) Cho m ột truy v ấ n vi d ụ đ u ’Ọ’c đ ư a ra tại NAM sẽ gây ra một truy
vấn con cho TRUNG
d) Viết m ột truy vấn chứa phép chọn và phép chiếu trên các quan
hệ ớ trên và chỉ ra hai cây truy vấn có thể ký hiệu các cách thực
hiện khác nhau.

227
c H l Ơ NC V ỉ ỉ

CÁC PHƯƠNG PHÁP LƯU TRỮ


C ơ S ở Dữ LỈÉU ở BỒ NHỚ NGOÀI

C’ ác q u a n hệ cu a m ộ t CO' sờ dữ liệ u tliiicT nu d ư ợ c lư u Irũ ' (h irờ n ii t r ụ i


t r ê n b ộ nỉuV I i i i o à i h a i \ i b ộ n h ớ iroiiL! c u a n i á v t í n h c h i l ư u t r ữ c á c d ĩ
liệu tạm tỉiòi. rn>nu chiRTim nà_\ cliúnL’ la nẹhiên cửu một sô plnrơni
pháp lưu irữ các quaii hệ (uọi là các llle cơ sơ dừ liệu) ơ bộ ti!iư ngoài
cũntí như các p!iép toán thao tác mVì các lìlc. c ỏ nhiêu k)ại bộ nhớ imoà
( đ ĩa từ. h ă n u tư,..,), nhirnu troiiíi chưcTim này c h ú n g ta chi liạn c h e VÍU
việc lưu trừ trên đĩa, niộl k)ại hộ nliứ imoài ihòim dụnL’ nhất.

7.1, M Ở Đ Ả U

Tập hợp các dữ liệu tạo nên CCÍ sơ (lữ liệii tin học lióa có thê dirợc
lưu trữ một cách \ ật Iv trèn niột sò phuxyiiíi tiện lưu trữ. Phư(yiiii tiện hri:
trữ m á y íinli lạ o nên m ộ t phàn c a p lưu irữ bao c ồ m hai loại c h í n h ;

- Lini írữ chinh ; Loại náy hao ụồm các phươim tiện cỏ tlic thao tac
nhanh một cách trực tiếp bánu hộ \ ử lý trunụ tâni cùa máy tính (C'Pl’
như là hộ nhớ troim cua m;'iv tính và các bộ nhớ cash. Lưu trừ chínl
thuờnu cung cầp một truv cập nhanh nlurnạ khả năim lưu trừ hạn che.
- ỉ ini tnl'Ịilĩii . 1 o ạ i này bao c ỏ m các dĩa lừ, các đĩa cỊuanu \’à brini
từ. ( ’ác phirơnu tiện nà> thườim cỏ kha nãntỉ kýn. eiá hạ. \ à cuim cấỊ
m ộ t t r u y c ậ p d c n d ữ liệu c h ạ m h(ni s o \ ứ i c á c p h ư ơ n í i t i ệ n l ư u t r ữ c h í n h
Các dừ liệu tronu lưu trữ phụ khòntĩ dược CPU xứ lý mộl cách trực tièp
niiiốn (lược \ ư !> trirớc tièn chúna phíii dirợc sao chép \'ào bộ nhớ chínli.

7.1.1. Phân cấp bộ nhớ và các công cụ lưu trữ

ờ imrc bộ nh(V cliiiih, phàn cấp bộ nliớ bao gồm : fíộ nhớ cash, đó li
bộ lìhớ RAM tình. Bộ nhớ cash thườniỉ đirợc CPU sử dụim dè làm tăii!
việc tlnrc liiện các cliưan.e trìnli. Mức tiếp theo cùa lưu irữ chính 1;

228
DKAM ( d > n a n i i c R A M ) , n ó cu n tì c a p \ iiim la m v iệ c c h i n h clid C P U đ è
l ưi i t r ữ c á c chi r i Tni Ị t r i n h v à c á c tiũ' ỉ i ệ u . t h ư à n i ỉ ( l ư ợ c í>ọi la b ộ n h ở
chính. l)ii diỏin cua DRAM la ụiá ỉiạ, nlurọc dièni cua no là niàt tliônụ
tin khi mất (iiện ( vi)laliliiy) \ à tổc dộ chậm hưii so \<íị RAM lĩnh.
() imìc ỉuu trữ phụ. phàn câp bao uôm các dĩa từ (íiỏiri dĩa cừnu, đĩa
C 'l),cá c dĩa n iỏ n i). bã im Iir \ ;ì một sù thiẽt hị nluV nuoài kiiac, K h a n à iig
lưu trù dirọc đo bănu kilohytc. nicuab\ te. tzịízabv!e, tcrah\ te.
('ác ciurcrn!’ trình trii iitiỊi \ á thực hiện tronu DRAM. Nói chung,
các ccy S(r dữ liệu ih ir a n g được lưu ii ĩr ơ bộ Iihứ n íio à i \ à k h i càn. các
p l i ầ n c u a c<r s ư d ữ l i ệ u s ẽ d ư ợ c d ọ c \ à o h o ặ c d i r ợ c u h i r a tvr c á c v ù n g
đệm (buHcr) trong bộ nhớ chíiih.

7.1.2. Lưu trữ ccy sở dữ liệu


'1'hônu thưưim các c ơ s ơ dừ liệu ỉiru irữ một số lơn các dừ liệu phải
t ồ n t ạ i l à u q u a c á c c h u k ỳ t h ơ i líiai! d à i . C ' á c d ừ l i ệ u d ư ợ c tru_\ c ậ p v à
d ư ợ c \ i r Iv n l i i è u iầii t r o n ư c l u i k ỳ n à \ . D i ê u d ó t r á i v ứ i k l i á i n i ộ m c â u
trúc d ữ liệ u tạin thời c h i lố n tại niộ l thời uian hạii c h é Iroiig kiii thực ỉiiộn
c h ư ư i m trinh, l l à u het c á c ccr s ơ d ừ liệu dirợc lưu t i ừ t hưcnm trực ư b ộ
n h ớ I i g o à i d o c á c !ý d o s a u :

^ Nói chunụ. các cơ sở dừ iiệu la quá lớn. khỏng thè ỈLIU trữ toàn bộ
vào bộ n h ớ chính.

- Các tinh huống uây ra \ iệc iTiầt dữ liệu liru trừ ơ trên bộ nliớ imoài
lá ít x a y ra t h ư ờ n g x u v ê n h ơ n s o v ó i b ộ n h á c h í n h ,

- (ìiá iưu trừ theo từníí đcni \ Ị dữ liệu ơ irôn bộ nhớ lìụoài re hcni
tròn bộ nliớ chínli.

7.2. CÁC CÒNG CỤ LƯU TRỮ PHỤ

N l u r d ã I h ấ v ở t r ê n , c ó n l i i ề u CÔHÍI CỊI l ư u t rừ p h ụ d é iiru t rữ c ơ s ở


dữ liệu. Đĩa lừ !à công cụ phô biến Iihất. '1'ronií phần nàv chúng ta chi
xét d è n c á c dĩa.

7.2.1. Mô tả phần cứng của đĩa

C a c d ĩ a l ừ d ư ợ c s ử d ụ i m d ê k ru t r ữ m ộ i s o lớn c á c d ừ liệu. D tn i vị
cơ bàn nhàt cua dữ !iệu trên dĩa là bit. Batm cách từ hóa trên mặl đĩa

229
llico một cách nào dà> iiiiiKyi ta có tliê tàin cho nó biêu diỗii cac uiá trị
bit 0 hoặc 1. i)e mã hỏa thônu, tin. các bit dưực nhóm lại ihàtih các byic,
có kích cõ là 8 hit. Khá nãii” cua dĩa là số các byte có thê liru trừ lUrực.
Dĩa được uọi là niột nựil neu nó chi cliứa ihôntỉ tin IrcMi một mặt. h;ii
mặt nếu cà hai inặt cìiim dưực sử dụim. ỉ)c tánu khá năim lưu trừ, các dìa
được nhóm lại thành một bộ dĩa. Các thôim tin dược lưu trữ trèn cỉ7a
trong các vòtm tròn dồnự tàm có dưừníí kính khác nliau. Mồi vòng lịọi là
một rãnh (track). Với các bộ cíĩa, các vòng cùnií dirờnti kínli trèn các bề
mặt khác nhau gọi là một trụ (cylinder). Một đTa cỏ thể có hàng trăm
hoặc hàng nghin rãnh, mỗi rãnh chứa từ hàna chục đến vài trăm Kbytc.
Vi một track thưcTiig chứa một sô lớn thông tin nên nó dược chia thànli
các khối nhó htyn hoặc các cuim (sector). việc phân chia một rãnh thành
các sector dược mã cứng trẽn bề mặt đĩa và khônu thể thay đôi dược.
Việc phân chia một rãnh thành các khối dĩa có kích cờ như nhau
(hoặc các trang) được hệ điều hành thiết lập troníĩ khi khởi tạo dĩa. Kích
ihước của khối được cố dịnh khi khởi tạo và khỏng thồ thay đổi. Thir(yng
các khối đĩa nàni trong khoànu 512 đến 4096 byte. Các khối dược phân
cách bằng một chỗ gián đoạn (uap) eiữa các khối, chỗ đó chứa một
thông tin kiểm tra được mã hóa được viết khi khởi tạo đĩa. Thông tin này
được dùng đề xác định khối nào trên rãnh là tiếp theo chồ gián đoạn.
Một đĩa là một thiết bị dược đánh dịa chi truy cập ngẫu nhiên. Việc
trao đôi dừ liệu giữa bộ nhớ chính và đĩa xày ra theo đcyn vị của các khôi
dĩa. Địa chi cứnc của một kỉioi, gồm một lô hợp của sô mặt dĩa, chi sỏ
r ã n h ( b ê n t r o n g m ặ t đ ĩ a ) , v à c h i s ố k h ố i (bcMi t r o n u r ã n h ) , đ ư ợ c c u n g c ấ p
cho phần cứng vào/ra. Dịa chi của buíTer (một vùnt> liên tiếp dành sẵn
trong bộ nhớ cliính clc lưu trừ một khối) cũim cỉirực cuim cấp cho thiêt bị
phần cứng vào/ra. Với một lcMih read, một khối từ dĩa được sao chép vào
trong butĩer, với một lệnh write. nội dung của buíTer được sao chép vào
trong khối đìa. Dôi lúc, nhiều khối liên tiếp uợi là cụm (clusler) có thê
được trao đồi như là một đơn \ ị.
C ơ cấu phần cứng dùng đề đọc và ụhi một block gọi là dầu đọc/ghi.
nó là một bộ phận của một liệ thống gọi là ổ đĩa.
Một bộ kiểm tra đĩa, được nhúng vào trong ồ đĩa, kièm tra ô đĩa và
giao tiếp nó với hệ thống máy tính.

230
7.2.2. Đặt các bản ghi file lên đĩa

1. Các bản Ịịhi và các kicu bản ỉ>hi


C’ác dữ liệu thường dược kru trữ dưứi dạnu các ban ulii. Mỗi bán
uhi bao uôin một tập các giá trị dữ liệu có IìCmi quan vói Iihau (các ilcrn),
t r o n g đ ó m ồ i g i á trị d ư ợ c t ạ o n e n t ừ m ộ t h o ặ c n h i ề u b> l c tir(7n<> ứ n g v ớ i
một trirờim cụ thể cùa bản ghi. Các bản lihi thirừnu dùnu đê ITÌỎ ta các
thực thể và các thuộc tính của chúntĩ. Một tập hợp các tên trườnu và các
kiêu dữ liệu tương ứng cúa chúng tạo nên một định imhĩa kiêu ban ghi
hoặc khuôn dạng bản ghi. Kiểu dữ liệu uắn với mỗi IrưcVnc chi ra kicu
dữ liệu mà trường dó có thể lấy. Các kiêu dữ liệu của các trườnt’ thường
ỉà một trong các kiêu đừ liệu chuấn dược sỉr dụnu tronu lập trìnli
(inleuer, long integer, Aoating poinl, string oí'character, boolean) và đòi
khi dùng kiéu ngày (date) và thời gian (time). Trong các ứng dụng cơ sơ
dữ liẹu hiện nay, cần thiết phái mờ rộng các mục dữ liệu kru trữ chứa
các dối tirợiig không có cấu trúc lớn biêu diễn hình ảnh, àm thanlì, văn
bân.... đó là BLOB (Binar> I.arae Obịect). Một dữ liệu BLOB tliường
được lưu trừ trong một vùng dùntí chunu (pool) của các khỏi đìa lách rời
với bán ghi của nó và có một con trỏ chỉ đến khối đirực chứa trong
bản uhi.

2. Các file, các bản ghi có độ dài cố định và các bản ghi có độ
dài thay đổi
Một íìle là một dãy các ban ízhi. 'Ĩrontĩ nhiều trườnii hợp, tat cà các
ban ghi troniỉ một tìle là cùng một kièu. Neu mồi bán tĩhi trong lìle có
cùng một kích cỡ chính xác thì ni e đó gọi là được tạo nèn từ các bản ghi
có độ dài cố dịnh. Neu các bản ghi troniỉ nie có kích cỡ khác nhau thi
íìlc dược gợi là tạo nên từ các bàn ghi có độ dài thay đôi. Một nie cỏ thể
có các bàn ghi có độ dài thay đỗi do nhiều lý do :
~ Các bân ghi tìle có cùng kiểu bản íihi nhưng inộl hoặc nhiều
trường có kích c ỡ thay đồi. (Ví dụ trườiig Tên trong các bàn ghi ve
ntíirời).
- Các bản ghi file có cùng một kiểu bản ghi nhưng một hoặc nhiều
trường có giá trị đa trị đối với các bàn ghi riêng ỉè ; các trường như vậy

231
uọi là các trưcVim lặp lại \ à nlìom lỊÌủ trị clio tnrờim tlnàrnụ được uọi là
nhỏm lặp lại.
- Các ban uhi filc C(') cunu inột kiêu han uhi nliimg inột hoặc nhiều
irircTng là iLiy y : imliĩa là chúim cỏ thê co các aiá trị nlurnii không phai
tất ca các ban ulii dèii cỏ (ciic Irườnu tù_\’ ý)
- l'ile chửa các bàn uhi ihuộc nliiều kiêu bán ghi và vì vậv cỏ kich
cỡ ihay dôi,
Neu mồi ban uhi có các inrờim như Iihau và độ dài các trường là cô
d ị n h th i h ệ t h ố n í ’ c ỏ t h ê x á c d ị n li \ ị trí h \ ic x u ấ t p h á t c ủ a m ỗ i i r i r ừ n i i

liên quan dền vị trí xual phai của ban uhi. ÍDièu dó làm cho các clurơng
trình truy cập đến các 11 !c như \ ậy dề dịnh \ ị các ụiá trị trường.
ỉ)è Ý rànu, imười la có thè biòu diều rnộl lìlc có các bàn ghi có dộ
dài thay dôi như là một nic có các ban uhi cò dộ dài co định. Ví dụ,
trong trưừnụ hợp các trirờntỉ tìi\ ý chúne ta có thê cỏ niỗi một trường
bên troiiỉi mồi ban uhi lĩle nhiniii chứa một uiá trị rồng đặc biệt nêu
trường kliôim có íỊÌá irị. Với các trirờiiụ lặp lại, chúriíỉ ta có thể sử d ụng
số vị trí tronu mồi ban uhi bàim sổ iớn nhất các giá trị mà trường đỏ có
Ihé lấy.
Với các truxniu có dộ dài tha> dòi. mồi ban ghi có một giá trị cho
mỗi trưcnm nhirim cluìim ta khônu biết dộ dài chinh xác của một vài giá
trị irườnu. t)c xác dịiih các byle bên tronu một bàn íihi cụ thể bièii diễn
mỗi trirờim chúiiu la cỏ ilic sư dụnu cac ký lự dau imăn (như ?, % hoặc $) -
chúne kliông xuấl hiện ironii uiá trị trưưim “ de xác định các trưmig có
độ dài thav dôi hoặc chiinu ta cỏ thê lưu Irĩr dộ dài trong các bytc cùa
triÙTiiu tronu ban uhi (Vtrước uiá trị trườne.
Một nie các bán uhi \ ới các trườim tùy ý cỏ tiiè được dịnh dạntỉ Iheo
nliicu cách. Ncu so các trưàiiu đoi V(VÌ một kiêu bản tihi là Imi nhưng sô
các trirtnm xuất hiện chínỉi xác trong ban ehi là bé chúntỉ ta có the dưa
vào trontỉ mỗi ban ízhi một (lã\ cáo cập <tòn triròim, í;iá trị irư(Vim> thay
v i c h í n h c á c u i á trị trirờn!4. l i a k i ò i i k ý lỊi’ d ấ u n u ă n d ư ợ c s ứ d ụ n g : d â u
ntiăn I>iữa tôn triànm và i>iá trị trinViìu ; dấu ní>ãn uiĩra trưcTnỉí này v à
trirừng khác, \'à dáu imãn tíiĩra các ban ahi. Một lựa chọn thực tê li(rn là
sử tiụim các cập <kièu trưímu, eiá trị trưìm<j,> thay cho các cặp <tên
trườnu, íỊÌá trị trirừng>.

232
Một trưtniu lặp lại cần một ký tự dấu ngăn dể phân cách các eiá trị
iặp cua IrưừiiL’ \ á Iiìột kv tự dau ngăn khác đế chi việc kốt tliúc trường.
Cuoi cùnu, \ ói các lìlc chứa các bản ehi thuộc các kiêu khác ahau, mỗi
báii L’lii dược hãl dầu băn<i clii dần kiểu báii ghi.
Cliúim ta de nhận thav !à các clurcyng trình xir K các tlle với Cík bàn
glii có dụ dài thay clỏi - thưìmu là một phần của hệ thống fiỉe và dược
chc cỉàu dôi \ ới nmrời lập trinh thônc thường - thườnu phức tạp lum dối
\ở i các ban uhi có dộ (iùi cố định, ư đó vị trí xuất phát và kích cờ cua
MÌOÌ tnrờiiu dược hiêt trirớc và co dịnh.

4. IMiâii khối bán ghi và cách tổ chức kéo dài và không kén dài
Các han uhi cua một nie phải được cấp cho các khối đĩa bởi vi một
khối lá (krn \ ị dữ liệu trao dôi uiữa đĩa và bộ nhớ tronu. Khi kích cỡ cùa
khôi là lớn hon kích cỡ bán ghi, một khối sẽ chứa nhiều bản ghi mặc dù
một vài 1'ilc cỏ thc có các bán '4 I1 Ì ral lớn và không thê vừa với một khối.
Ciin sư kích cỡ cua khối là B byte. Với một fìle có các bàn uhi có độ dài
cô dịnh V(Vi kieh cỡ R b>te. vái B >= R, chúnu ta có thê đặt bfr =- [ B/RỊ
ban ụhi \ ào inộl khối. ([B 'R | là uiá trị nguyên kVii nhat nhò hơn B/R).
( iiá trị cua bíV dược tìọi là hệ số phân khối. Nói chunu, B không chia hết
cho R một cách chinh xác nên chúna ta có một so vị trí khòna sư dụng
irorm khối lii B - (biv * R) bvle.
Dè sư dụim khônu gian khòiig sư dụng chúnỵ la có thổ lưu trừ một
píiần cua ban uhi (rcMi một khối và phần còn lại trên khối khác. MỘI con
tro ở cuối khỏi ihứ I i l i ấ t chi đcMi khối chửa phần còn lại của ban ghi troiig
irirờiiu liựp nó khôni^ được chứa trong khối tiếp theo. Cách 10 chức này
đưực uọi lá kéo dài, bơi vì các han ghi có thổ kéo dài hơn một khối. Khi
một hàn lihi là !(Vii iiơn một khoi chúng ta phài sử dụng tồ chức kéo dài.
Ncu cúc bán uhi khòim dirực clio pliép vưin quá giới hạn cua khối thi
cách lô chức dỏ dược gọi Icà không kéo dài. Nó thườnụ dược dùng vói
các ban ụhi có B > R bởi vi IIÓ làm cho mỗi ban ghi bất dầu tại một nai
bicl irưức a troHL! khối, làm đơn gián việc xừ lý bàn ghi. Với các ban ghi
cỏ dộ dài thay dòi có thc sử dụng cà lồ chức kéo dài hoặc không kéo dài.
Nèu bán ulii trung binh là lớn ihi tốt hơn là sử dụng tổ chức kéo dài để
làm uiani khônu gian lãng phí trong mỗi khối. lỉình dưới đây mò tả lổ
chức kéo dài và không kéo dài.

233
a)

Khối Bản ghi 1 Đàn ghi 2 Bản ghi 3

Khối í + 1
Bản ghì 4 Bàn ghi 5 Bản ghi 6

b)

Khối i
Bản ghi 1 Bản ghi 2 Bản ghi 3 Bản ghi 4 p

^r
Khối í +1
Bản ghi 4 (tiếp) Bản ghi 5 Bản ghi 6 Bản ghi 7 p

Hinh 7.1. Hai kiểu tổ chức bản ghi : kéo dài và không kéo dài

Với các bàn ghi có độ dài thay đôi khi sử dụng tô chức kéo dài, rnồi
khối có thê chứa một số khác nhau các ban uhi. 'lYong trirờiig h(Tfp này,
hệ số phân khối bfr biêu diền số trung bình các bán uhi trên một khối đối
với nie. Chúng ta cớ thể sừ dụníì bfr dê tính số các khối b cần cho một
file có r bản ghi :
b = [(r /b ữ ) ] khối, trong đó r(x) I là làm tròn cua X đến số nmivên
tiếp theo.

7.2.3. Phản phối các khối file trên đĩa

Có nhiều kv thuật cliiiấn đê phân phoi các khối íìlc trên đĩa. Troim
phân phoi liên tục. các khối file dược phân phối vào các khối đĩa liên
tiếp. Diều đỏ làm cho việc dọc toàn hộ tìlc banti cách sử dụng bộ đệm
đôi, nhưng nó làm cho việc mớ rộng íìle khó khăn, '['ríinu phân phối móc
nổi, mỗi khối filc chứa một con trỏ trò đến khối nic tiếp theo. Điều đó
làm cho viộc m ở rộntỉ tìle dỗ dànu nhưng làm cho việc dọc toàn bộ íìle
chậm. Một tổ hợp cả hai phưmig pháp phân phối các cụm (cluster) khối
đĩa liên tiếp và các cụm được móc nối. Các cụm đôi khi còn được gọi là
các đoạn file hoặc các phạm vi (extent). Một khà nănu khác là phân phối
chi số. trong đó một hoặc nhiều khối cliỉ số chứa các con trỏ đến các
khối llle hiện tại. Thường người ta sir dụng tồ hợp cùa các kỳ thuật trèn.

234
1. Dầu íìlc
Một (.lâu lìlc hoặc một IIIÔ la íllc chứa ihỏnu liu vè một nic can cho
cac chuưiiL’ iniih hệ ihỏiiL’ dê triiv cập dèn các bai) uhi nic. Dàu íìlc hao
L’òm tỉiôiiỊi íiii dê xác dịỉili (lịa chi cua các khôi lìle cũim nliư các niô ta
clịiih (.iạDíi ban ulii. nu có ihê bao eõm các dộ dài trirừnii và ihử tự’ cua
các IrưàiiL’ bên một ban <>hi dôi vái các bàn uhi khỏng kc(» dài co
i l ộ d à i c ổ clịiili \ à c á c n i à k i è u t r i r ờ n u . các ký lự n g ă n \ à cá c tn à kiỏu doi

\ó i các han elìi có độ dai iha> dôi.


Dè lim kiỏni một han uhi trên dĩa. một hoặc nhiêu khỏi dược sao
chép vào \ ùiig dệiiì bộ nhớ chính. Sau dó các chinTim trinh lim kicm ban
ghi lu)ặc các hán uhi mv)nu muốn bên tronu vùnL’ dệni bàng cách sử
clụim thònu lin tronu dầu nio. Nếu địa clii của khối chứa ban uhi mong
imiốn la kỉiôim dược biết, các chirơnu trinh tìm kiem pliai thực hiện một
lim kicin tLiNốn tinh liiônu qua các khối tlle. ĩ ừ n u khoi tĩlc sẽ được sao
clicp VcU) pliòng đựi \ à dược tim kiêm cho dên khi Iiào tim tlià> bàn uhi
hoặc tắt ca các khôi ỉllc dà dược tìm kiêtn khòim thành còno. Diêu đó có
thè tòn thời uian dòi \ ới các tìle lớn, Mục đích cùa việc tô chức tìlc tòt
là dịnh \ ị kliốị íìie cluVa ban uhi monụ muốn với một sỏ các dịcli clni> ên
k!iối tỏi ihièu.

2. C á c p h é p toán í rên các' íìle


C'ác phcp toán trẽn các íllc thườnu được nhom thànli các phép loán
c á c p h é p to án lil> ih ô n u tin ra (r c lr ie v c ) và c á c p h é p toán c ậ p Iihậl
(iiỊHÌalej. C á c ịilìép l o a n lay i h ô i m tiiì ra k h ỏ n ụ l à m th;i\ d ô i d ừ liệ u n à o
<y Ironu IIIc nià chi dịnh vị mộl số bàn ííhi sao cho các uiá trị irưừnụ cua
nó có thè d u ự c xcni xét vá xứ lý. Các phép toán cập nhật làm thav dôi
lllc băim MỘC c h c n hoặc x o á các bàn ghi hoặc bàntí việc sửa dỏi các uiá
ii Ị IriKĩiiíi. i ro n u ca h;ú Irirừnu lurp, c h ủ im ta pliái lựa c h ọ n in ột h o ặ c
nhicu han ghi đê lãv ra. loại bo hoặc sửa đôi dựa trên một diêu kiện chọn
(lioặc đicu kiện lọc). ĩiỏ chi ra các tiêu chuàn mà ban elii hoặc các bản
L’íii iiKinu muôn pluii ihoíi mãn.
Xét mộl lìle NIỈÂN_VIHN với các trưcmu Hợ_đệm, Tên, Mã_số_NV.
1 ư(7im. Nuhc imhiệp \ à ỉ)(Tn_vị. Một diều kiện chọn đơii íiián có thế chứa
niột so sánh bần e trèn một uiá trị trưcmu nào đó, ví dụ, (Mã_số_I)V =
'123456789') hoặc (D()N_VỊ = 'Nghiên cửu'). Các diều kiện phức lạp

235
liưn có lliê chứa các kiếu pliép loan so sanh khác, clníim hạn như > lioăc
>= ; một vi dụ là (I.ươim >= 3()()0). Nói chune, dièu kiện chọn là inòl
hiêii thức lòuic tu> V trên các trirờiiụ cua nic.
Các phép toán tỉm kiéni trên các íìlo nói chuim dựa trên các điéu
kiện chọn dưn gián. Một điồLi kiện chọn phức tạp pliái dược hệ quán trị
cơ sớ dử liệu (hoặc tmười lập trinh) phàn tích dê rút ra một điêu kiộn don
gian có thè sử dụnu đè dịnh vị các ban ulii trên đĩa. Sau đỏ mỗi báii lihi
được dịnh vị sẽ dược kiêm tra xem nó có thoà mãn diều kiện lựa chọn
đầv đủ hay khôtm. V'í dụ. chúnu ta có thê rút ra điồu kiện đơn gian
(DƠN_Vị = 'Nghiên cứu') từ diều kiện phức tạp {(Lương >= 3000) AND
(D()N_VỊ = 'Nghiên cứu') ; mồi bản ghi thoà mãn (DƠN_VỊ = 'Nghiên
cínt') được định vị và sau đó được kiềm tra đê xcin nó có thoa mãn điều
kiện (Lirơni> >= 3000) ha> khôim.
Khi có nhiều bán tzlii nie thoa mãn một điêu kiện chọn, bản ghi dàu
liên - đối với dãy vật lý của các bản uhi file- được định vị đầu liên và
được xem là bán ghi hiện tại. Các phép toán tim kiếm lièp theo băt dầu
từ hàn íihi này và định vị bán ghi ticp theo ơ trong íìle thoá mãn diều
kiện này.
Các phép toán hiện nay dế định vị và truv cập các bán iihi íìle thay
dôi tử hệ thống nàv saiiụ hệ thống khác. Sau đây, chúnu ta trình bày niộl
tập h(.rp các phép toán dại diện, rhông ihườnu. các chưcTng trinh mức
cao cliẳng hạn như các chươiiíì trinh phần niêm của hệ quản trị cơ sở
dừ liệu, truy cập các bản ghi bằim cách sử dụng các lệnh này, vi vậy
đôi khi chủníi ta tham khảo đến các hiến cliưcyiiu Irình trong các mô tà
dưới đây :
- Opeii : Chiiân bị nie dè đọc hoặc tihi. Chi dịnh các bufì'cr thích
hợp (thường ít nhất là 2) de lưu trừ nie từ đĩa và lấy ra dầu iìle. Dặt con
tró nie đểu đoạn đầu cùa file.
- Reset : Đặt con trỏ íìle cùa một ílie mở vào đoạn dầu của nie.
- f'ind ( h oặ c ỈAicate) : rim kiem bán ghi dầu tiên Ihoá m ãn diều
kiện tim kierii. Chiiycn khối chứa han íihi dỏ vào trong buíĩer của bộ
nhở troim (nếu nỏ chưa có sẵn a dày). Con tro nic chi dến bán ỉzhi irong

236
bulTcr và nỏ trơ tliành ban tỉhi hiện tại. Dôi khi, các dộntỊ tìr khác dirợc
s ứ ciụnu d c c h i ra c o p h a i b a n uhi d ư ợ c d ịn h vị sẽ d ư ợ c rút ra h o ặ c c ậ p

nhật hay kliôniỊ.


- Read (lioặc (ìct) : Scio chép ban uhi hiện tại từ hutTcr vào inột biến
ehirơniị trinh tronu clnrcrnu Irinh cùa nmrài sư dụnụ. Lệnh này cũnụ có
thè đây C(in trò han L'hi hiện tại đến bán uhi tiếp theo (y troim lìle, nó cỏ
thè cần cho việc dọc khồị tìle kliác lừ ctĩa.
- í ind Ncxt : 1'ịni ban uhi tiếp Iheo Irong ílle thoa mãn điều kiện
lìm kiéni. ( 'h u \ố n kliỏi chưa bàn iỉhi đỏ vào Irone butTer cua bộ nhớ
chính (nêu nỏ chưa có s?in CKđ â \ ). Ban ghi được dịnh \ ị troim biitTcr và
trcr thành ban uhi hiện tại.
- Delete : [.oại bo ban uhi hiện tại và sửa dôi fìle trên đĩa đê phan
anh \ iệc loại bo.
- Moditv : Sini dòi một số uiá trị trườim dối với bản líhi hiện tại và
sira dôi fìle trên dĩa dè plian anh việc sưa đôi.
- Insert : C'hén lnột liaii íihi mới vào tronụ file bằng cách địiih vị
khối mà ở dó ban uhi sẽ dược chèn vào. chuyên khối đó vào trong buffer
bộ nhớ chính (nếu nỏ cliưa có sẵn ớ đâv). íihi han uhi vào trontỉ buíTcr,
và ghi hulTcr vào đĩa dc phan ánh việc chèn.
- Close ; lloàn tliành việc truy cập nie bầnu cách giãi phóng các
buíTcr và thực hiện các thao tác dọn dẹp cần thièt
" Các phép loán trên (trừ Open và Close) được gọi là các phép toán
một lần một bán uhi (rccord-at-a-timc) hời vi mồi phép toán áp dụng cho
một ban ulii dưn.
Tronu các hệ thốim CCÍ sỡ dừ liệu, các phép toán phụ thêm mức cao
một lần mội tập liợp (sel-at-a-tiiiìc) có thc được áp dụng cho mội nic. Ví
dụ vè các phép toán dó như sau ;
- I'ind All : í)Ịnli vị lất cac các hàn chi trong tìlc thoá mãn điều kiện
tìm kiêm.
- f'ind Ordered : Lấy ra lất cả các bàn ghi trong tìle theo mội thứ tự
được chi ra nào đày.

237
- Reori>anize ; lìắl đầu tiến trinh lô chứ c lại. Như chúnư ta dà nhii
thay, inộl vài sụ tô chức file đòi hỏi một sự tỏ cliửc lại (lịnh kỳ. Một \í
(lụ là săp xèp lại các bán uhi cũa ílle bănt» cách sã|i xèp thư tir cua cliúiu
thi’o một trirừniỉ cự tliê.
Chúng ta cằn cliú V den sự khác nhau <>irra các thuật !ií>ữ tõ chức
íllo (lìlc oruani/.ation) \ à phirưnu pháp truy cập (access mciliod). Một i3
chức nic ám chi dcn sự tô chức các dữ liệu cua llle tliànli các ban ulr,.
các khối, \ à các cấu trúc truy cập ; điều đó bao gôni cách nia các ban ul'.i
vá các khôi dược đặt vào các phương tiện lưu trữ \ à ciưực kêt nòi. Mặt
khác, niộl phương pháp truy cập cunt; cấp một niióm các phép loiin -
như được liệt kê ớ trên - có the áp dụim cho một nie. Nói chunu. có thẻ
áp clụne nhiều phư(.Tnu pliáp truy cập cho một lô chức nic. Một sò
phirơne pháp truy cập có thế chì áp dụng cho các lìlc được lố chức ihco
một cách nào d(S. Ví dụ, chúim ta khôim thê áp dụnu một pliirane pháp
iruy cập chi sô cho một fllc kliôna có chi sô.

3. Các fìle vói các bản ghi không sap thứ lụ (heap tìles)

1 'roni' kiêu tô cliửc cơ sớ nhất và dcrn uián nhat này, các bàn ghi
đirực dặl vào trontí ílle theo thứ tự cliúnạ dược chùn vào. như vậ>' các
bàn uhi mới được đặt vào cuối fì!e. Cách tồ chức Iihư vậv được gọi là
nie đống (heap) hoặc lìle chồng (pile).
Việc chèn vào một bản t>hi mới là rất hiệu qua : Khối đĩa cuối cùnu
cùa lìle dược sao chép vào vùng đệm ; bán ghi mới dược thòm vào ; và
sau dó khối dirợc tihi trở lại và đĩa. Địa chi cua khối filc ciioi cùnu dược
lưu trữ tronu dầu íìle.
Việc tìni kicm một bản uhi bàng cách sử dụnu một diều kiện tim
I- iếm nào đó cần một tìm kiếm tuyến tính qua lầii iirợl tìnm khối nie. dó
là một thu lục lốn kéin. Nếu chi có một hàn ghi thoà mãn diều kiện tìm
kiem, ihi tinh trunu binh, một chưcTnií Irinh sẽ dọc vào bộ nhớ và tìm
một nưa các khoi nie trước khi tìm ra bản ghi. Vứi một lìle có b khối,
clicu dó đòi hỏi tim kiếm trung binh (b/2) khôi. Neii khônụ có bân íihi
nào hoặc cỏ nhieu han uhi thoả mãn diều kiện tìni kiem, chuxniu trình
phài đọc và tini kiêm tất cả b khối cùa nie.

238
f)è loại bo tnột han glii, clnrtyiií’ trinh dàu liên phủi tim ra khôi của
nó. s;ì(i cliép klìôi \a (i bulTcr sau dó loại hò bàn uhi ra khói buíTcr và
cuôi cùne uhi kliôi ti(T lại va(> dĩa. Dièu đó đè lại một vị trí không sư
dụrií.' iroim khôi dĩa. Việc loại ho một sô lứii ban uhi tlieo cách này tạo ra
một khỏim ụiaii liru tnì trốnu. MỘI kỳ thuạt khác dược sử dụng cho viộc
loại bo han uíii !a có một b \tc lioặc bit phụ. gọi là cái dánh dấu xoá
(delction n ia rk e i). dược lưu trừ \(TÌ mồi ban uhi. Một bàn uhi được xoá
bănu cách gán clu) cái dánli (lau xoá một ụiá trị nào dấv. Một uiá trị khác
cùa cái đánh dâu chi ra một ban íihi có uiá trị (chưa bị xoá). Các chưtyiig
Irình tim kiem chi \ c m xét các han ehi có uiá trị tronu một khối khi diều
khicn sự tim kièni cua clnìtm. Ca hai kỹ thuật xoá này đòi hói việc tô
chức lại lìle một cách dịnli kỳ dè phục hôi lại khônu i;ian khônu được sử
dụim cua các han tỉhi bị xoá. 1'roim quá trình tổ chức lại. các khối íllc
đượe truv cộp liên iiê|) và các bàn alii đirợc nén lại bầrm cách loại bỏ các
bản ulii bị xoá. Sau sự tô cliửc lại như vậy, các khối được làm đầy một
lần nữa, Một kha nàni’ khác là sư dụnu khoanu trong cùa các ban t>hi bị
x o á k h i c I i Cm i \'ủ ( i c á c h a n íih i in ớ i m ặ c d ù d iề u d ó đ ò i h o i m ộ t tín h to á n

phụ ciê iỊÌữ dấu vết cua các vị trí tronu.


Chúntỉ la có thè sir ciụnu tố chúc kéo dải hoặc không kéo dài đối với
một íìle khỏiiụ tliứ lự. \ à no co thê dược sư dụnụ với các bán í>hi có dộ
dài thav đòi hoặc có dộ dài cò dịnh. Việc sửa đồi mộl bán ghi có độ dài
thav đòi có thô dôi hỏi loại bỏ bàn izhi cũ và chèn vào một bản ghi dã
dược sưa đôi bởi \ ì han ỉihi duực sưa dôi có thể khônu dặt vừa vào vị trí
CĨI của nó trên (lĩa.
ỉ)è dọc tầi cá các bàn ulii theo thứ tự cùa các giá trị của một trường
nào dó, chủnii ta tạo ra một han sao được sap xếp của nie. s ẩ p xep là
một phép toán dát dổi vói niội nie dTa l(Vn, và sử diiim các kỳ thuật đặc
biệt d ô i v ớ i sap \ c p Iig ('à i.

!)òi với một íìle cua cac ban ulii cỏ dộ dài cố dịnli sir dụng các khối
khône kéo dài va (iịnh vị liên tiếp, \ iẹc truy cấp dến một bàn íỉhi bất kỷ
theo vị tri cúa nỏ (T tronu tìlc là de dànu. Ncu các hán uhi cua nie dược
đánh số 0 , 1 . 2 , r -- 1 và các bàn íihi tronụ mồi một khối được dánh so
0 , 1 , 2 ..... bf'r - 1. tronu đó biV là hệ số khối, thì bàn ghi thứ i của tìle
dược xếp vào kliòi L(i'hfr)J \ à là bàn ghi thứ (i mod bfr) trong khối đó.

239
Một nic như vậy thườniĩ dược gọi là íìlc trực tiôp, hoặc lìlc lir(rnọ dổi,
bởi \i các bán uhi có Ihể dược truy cập một cách trực tièp bíine vị trí
lirưnu đỏi cua chúne. Việc truy cập một bán ụhi banu \ Ị trí cua !io khônu
dịnh vị một bán uhi dựa trôn mội diồii kiện lim kicm. l'u\ nhièr, nó
làni dễ việc \ à y dựng các dường dẫn trên lìlc như là các chi nụiL' sẽ nói
vê sau.

4. C ác filc vói các bản ghi có thử tự (các fiic đirọc sắp xếp)
Chúntĩ ta có thê sáp xep thứ tự vậl lÝ các bàn íihi cua mộl lìlc trC'n
đìa dựa trên các uiá trị cùa một tro n g các trirừng cua nỏ - gọi là tnràni!
sẩp xếp. Dieu dó dẫn dến một nie được sắp xêp hoặc iìlc luàii tự. Neu
trường sắp xép cũng là tiirờntt khoá của lìle thi irưmiu dược uọi là khoá
sẳp xep của tìle.
Các hàn i;hi dược sap xếp có một số ưu đicMii so \ ứi các íĩlc khòim
có thứ lự. Trước hết, việc đọc các bản uhi theo thứ lự cua các iíiá trị
khoá sáp xếp trở nên vô cùng hiệu quà, bời vì khôim dòi hoi một sụ săp
xếp nào. Thử hai, việc tim bán ghi tiếp theo bàn uhi hiện tại theo ihứ tir
cúa khoá săp xép thirờim không đòi hòi các truy cập khôi bò sung vi ban
ghi tiếp theo là ở troim cùng một khối V(ýi bản ghi hiện tại (irừ khi báii
lihi h i ệ n tại là b á n lihi c u ố i c ù n g t r o n e k h ố i ) . T h ứ ha, v i ệ c s ừ cÌỊinti i n ộ i

điều kiện tim kiếm dựa trên giá trị của một trườiia khoá sấp xếp tạo ra
một truy cập nhanh hcyn khi sử dụng kỳ thuật tìm kiếm nhị phân, niiặc dù
nó thườnt; khônti dược sừ dụng cho các lìle đĩa. Một tim kiòm nhị phân
dối với các lì le dĩa có tlié dược làm trên các khối hơn là trên các ban ghi.
Già sứ rằnu lìle có b khối được đánh số 1, 2,..., b ; các bán glii đưực săp
xếp theo ihứ tự tăng dần cúa Irirờng khoá sẳp xếp cua chúng \ à chủng ta
tim kièm một bản ghi cỏ giá trị trircnig khoá săp xếp là K. Gia sư răng
các địa clii đĩa cùa các khối ílle là có sẵn trong dầu íìle. tim kiếm nhị
phân có thế mô íá hàim thuật toán 7.1. Một tìm kiếm nliị phân thirứnu
truy cập loí2,2 (b) khối, mặc dù bản ghi được tim ra hoặc không - dỏ là
một sự cãi thiện so với các tim kiếm tuần tir, ờ đó trung binh có (b/ 2 )
khối dược truy cấp klii bản ahi được tim ra và b khối được truy cập khi
bản ỉzhi khônu được tim thấy.

240
AI,(ì( )R1 TI IM 7.1. Tim kiếm nhị phân trên khoá sắp xếp cùa cua một lìle ttĩa.
I< I ;u b ; (* b là số khối tlle**)
whilc (ii > = l ) do
begin
i (I + u) d i v 2 ;
Dọc khối i cùa file vào troim biitĩer ;
if K < (giá trị trư ờng khoá sẳp xép ciia bàn ghi đầu tiên trong khối i)
then 11 i- I
elsc if'K > (giá trị trường khoá săp xếp cúa bàn ” hi cuối cùng trong khối i)
then I i+1
clse i f bàn ghi với giá trị trườnu klioá sắp xếp = K ià ở trong biitTer
then goto tìmđược
else goto không tini dược ;
cnd ;
goto không tim được ;

Việc sắp xếp thứ tự khôim cLine cấp lợi thế nào cho truy cập ngẫu
nhiên hoặc có thứ tự của các ban ghi dựa trên các giá Irị của các trưcmg
không tiirợc sắp xếp khác của tìle. Tronu Iihừng iriàmg hợp này chúng ta
làrn niột tim kiếm tuyến tính cho truy cập imẫu nhiên. Dê truy cập các
bàn ulii iheo thứ tự dựa trên một trưàní> khôim dược sắp xếp, cần phái
tạo ra một bản sao được sắp xếp khác - theo thir lự khác - của tìle.
Việc chèn vào và loại bỏ các bàn ghi là những thao tác đăt giá đôi
với một nie dirợc sắp xếp bới vì các bàn uhi phái duy trì thứ tự vật lý.
Dề chèn vào một bản ghi. chúng ta p)hải tỉm vị trí dúng của nó ớ trong
lìỉc, dựa trên giá trị trường sáp xốp của nó và sau đó lạo khoáng trống
trong tìle dể chèn bàn ghi vào vị trí đó. Vói một fìle UVn điều đó có thê
rất tốii thời gian bởi vì, tính trurm binh, một nửa các bản ghi của tì le phai
được dịch chuyển để tạo khoảng trống cho hàn ghi mới. Diều đó cỏ
ntihĩa là Iiiột nửa các khối nie phai dược đọc và ghi lại sau khi các bàn
uhi được dịch chuyến tronii clìúnu. Với phép xoá. vấn dề đcTii gián hơn
néu sir dụim các cái dánh dấu xoá và sự tố chức lại định kỳ.
Một lựa chọn đế làm cho việc chèn hiệu qua hơn là lưu trữ một vài
khoảng trống không sứ dụnu tronu mỗi khối cho các ban ghi mới. ['uy
nhiC'u, mỗi khi khônu gian nàv được sừ dụng hốt, vấn dè ban dâu lại nôi

241
lên. Một phư(yng pháp khác llurờnu được dùng là tạo ra một lìk’ khôniĩ
dược săp xêp tạm iliừi uọi là một ílle tràn (overílovv’) hoặc tìle Iiiao tác
(transaction). Với kỹ tluiật này, (ìle dược sắp xếp hiện tại clirực gọi lá íìle
chính hoặc flle chú. Các bàn tĩhi mới được chèn vào cuối của lĩlc tràn
hơn là vào vị trí đứnu của nỏ trong file chính. MỘI cách định kỳ. ỉìle tràn
được sắp xếp va đirực trộn với íìle clni trong khi tổ chức lại llle. Việc
chèn Irờ nên rất hiệu quá nhưnu íìiá của độ phức tạp tăne lên irong thuật
toán tiin kiếm. File tràn phái được tim kiếm bàng một tim kiem tuvến
tính nếu sau tim kiếm nhị phân bản Í2;hi không được tim thấy trong ílle
chính. Với các ứii” dụniỉ không đòi hòi thông tin mới nhất, các bàn ghi
tràn có thế dược bò qua tronii khi tini kiêm.
Việc sứa dổi một giá trị trường của một bản ghi phụ thuộc vào hai
sự kiện : ( 1 ) điều kiện chọn đê định vị bàn chi và ( 2 ) trường sẽ dược sửa
đồi. Nếu diều kiện chọn chứa trưcniíi khoá sẳp xếp, chúnu ta có thé định
vị bản ghi bãnu cách sử dụniỉ một tim kiếm nhị phân ; ngược lại cluìnu
ta phái làm một tim kiếm tuyến tính. Một trường không sắp xếp có thê
được sưa đòi banu cách thav dôi bán ghi và ehi lại nó vào cùng một vị tri
vật lý trên đĩa - với giá thiết các bản ííhi có độ dài cố định. Việc sứa đổi
một trirừnu săp xêp nuhĩa là bản tíhi có thể thay đổi vị trí của nó trong
tìlc, nó đòi hói \ iệc loại bỏ bán ghi cũ sau ghi chồn vào bán ghi đã được
sưa dồi. Việc đọc các bán uhi íìle theo thứ tự cùa trường sắp xếp là hoàn
toàn hiệu quả nếu chúnu ta bò qua các bàn ghi trong tìle tràn bời vi các
khối có thể được đọc một cách liên tiếp bằng cách sử dụng phòng đợi
đúp. Để đưa vào các bản ghi trong fíle tràn, chúng ta phải trộn chúng
vào các vị trí dúnu cúa chủng ; trong trường hợp này, trước tièn chúng ta
tồ chức lại lìic và sau đó đọc các khối của nó một cách tuần tự. Dẻ tổ
chức lại lìlc, trước tiC'ii sắp xếp các bàn ghi trong íìle iràn và sau đó trộn
chúna với hàn uhi chú. C'ác bán ghi được đánh dấu dối với phép xoá
được loại ho troim khi tổ chức lại.
Các nie dược sáp xêp ít khi được sir dụng trong các ứng dụng cơ sớ
dừ liệu nèu không sử dụng có một đường dẫn truy cập phụ, gọi là chi
mục chính ; điều đó tạo ra một file chi mục tuần tự, nó sỗ cải thiện thời
gian truy cập ngầu nhiên trên trườne khoá sấp xếp.

242
5. ( ác kỹ t h u ậ t h ă m
MỘI kiốu tô chức lĩle ctiính khác dựa tròn việc băm, nó cung cấp
mộl truy cập rất nhanh đến các bán tỉhi trôn một sổ diều kiện tim kiếm,
l ô chức này tlnrừng được eọi là một nie băm. Điều kiện tìm kiếm phải
là một điêu kiện bànt’ trôn một trường đơn gọi là trưOTg băm của fìle.
l'rc)iií> hầu hết triÙTng hợỊ-), t n à m u băm cũng là trường khoá cùa file,
trong trưừng h(,rp này nó dược cọi là khoá băm. Tư tưcVng đằng sau việc
băm là cung cấp một hàm h, gọi là mộl hàm băm hoặc là một hàm ngẫu
nhiên, được áp dụnụ đè băm giá trị của trường của một bán ghi và sinh
ra địa chi của khối đĩa trong dó lưu trừ bàn chi. Một tìm kiếm bên trong
khối có thể được thực hiện trong buíĩer của bộ nhớ chính. Đối với
hàu héi các ban ghi, chúnạ ta chỉ cần một truy cập khối đcm để rút ra bản
íihi đó.
Băm cũng được sir dụiiíi như là một cấu trúc tim kiếm trong bên
trong một chươnu trinh khi một I ih ó i n bán ghi được truy cập bằng việc
sư dụim giá trị của một trưcynti. ĩr o n g phần này chủng ta nghiên cứu hai
phircnìtỉ pháp băm : băm tronu (cho các file bên trong) và băm ngoài
(cho các file trên đĩa). Các phuOTg pháp dó gọi là phương pháp băm
tĩnli, neoài ra còn có các phưcmạ pháp khác tĩọi là băm động. Fìạn đọc sẽ
tìm hiểu các ph ưo ng pháp băm động trong các tài liệu khác.
a) Băm trong

Vói các fi!e tronu, việc băm thường được thể hiện như là một bảng
băm thòng qua việc sử dụng một mảng các bàn ghi. Giả sử rằng chi số
màim chạy từ 0 đến M ~ 1, khi đó chúng ta có M vị trí có địa chi tương
írnụ với các chỉ số niảní'. Chủng ta chọn một hàm băm chuyến đổi giá trị
trưàiiíi băm thành một số ni;uycn uiữa 0 và M - 1. Một hàm băm phố
bien là hàm h(K) = K mod M, nó trà lại phần dư của giá trị trường băm
nguyên K sau khi chia cho M ; sau đó ciá trị này được sử dụng cho địa
chi bán chi.
Các giá trị Irườiig băm không nguyên có thể được chuyển đổi thành
các số nguyên trước khi hàm băm được áp dụng. Với các chuỗi ký lự,
mã số (ASCII) liên kết với mồi ký tự có thể được sử dụng trong phép
biến đổi, cháriíỉ hạn bằng cách nhân các eiá trị mã đó. Với một trường

243
băm mà kiéu cua nó lâ một chuỗi 20 ký tự. thuật toán 7.2(a) cỏ ihò đ.rạc
sư dụiiụ dê tính địa clii băm. Chútm ta uià thict rầim hàm codc trà lại niã
số của một ký tir và cliúnu ta dược cho một uiá trị trưmm băm K tt.ưộc
kiều K : arrayl I..20] oTchar (tronc Pascal).

A L G O R ri HM 7.2 ; lỉai thuật toán băm dơn uián.


(a) Áp dụnu hàin băm inod cho một chuỗi ký lự K.
(b) Giai quvết va chạm băm 2 đánh địa chi mở.
I huật toán cụ thể :
(a) tem p 1;

tbr i < - 1 to 20 do tenip <■- tem p * c o d e {K |i]) m od M ;

địa chi băm tem p mod M ;

(b) i địa chi b ă iĩ i( K ) ; a <— i ;

i r v ị tri_ i_ d iJ_ b ị_ ch ie m then

bcgin i (i + I ) mod M ;

\vh ile (i a) and vị trí i_đâ bị ch icin

do i <“ (ị 1) Iiìod M ;

it '( i = a) then m ọi vị trí_đa đầy

clse địa chí băm m ới i ;

end ;

Có thế sử dụng các hàm băm khác, v ấ n dề với liầu hếl các lìàni băm
la chínm không đam bao các uiá trị khác nhau sẽ băm thành các địa chi
khác nhau, bai vi trong khòiií; eian trưànLỉ băm, sò các lỊÌátrị có thê mà
một truờim băm cỏ tliê làv tlnràn<z kVn iian không uian địa chí ; so các
dịa chi có sẵn cho các ban izhi nhiều. I làm băm ánh xạ khòiiụ uiaii
(rirờim bãm vào khòim uian địa chi.
Một va cliạm (collision) xuất hiện khi giá trị Irưừiitỉ băm cua mội
ban <ahi sẽ dược chèn bám vào một địa chi dã chửa sằn một han ízlii khác.
Tronụ tinh cánh dó, chủne ta phái chèii bàn ụhi mới váo một vị trí khác
tiào dỏ. bơi \ ì dịa clií hăm cùa nỏ dã hị cliicni. 1 'iên trin h dò tim một \ ị
tri khác dược uọi là uiai qiivèt va chạm. Cô nhieii cách đè uiái quyel va
chạm, phần (b) của thuật toán trên là một tronu các cách dỏ.

244
h) B ă m n g o à i đ ố i với cá c fiỉe cíĩa
Viẹc băm cho các íllc dĩa dược uọi là băm nạoài. Dê phù hợỊ") với
các dặc trưne cùa !iru trù’ đĩa. khônu gian địa chì đích được làm thành
cac tliune (bucket), mồi íhùim chứa nhiêu ban uhi. Một thùiig hoặc là
IIIỘI khối dĩa, lioặc là một cụm gom nhiều khối liên tiêp. ỉ làm băm ánh
xạ niộl klioá ihành inột chi số thùnu liên quan. Một báng dược lưu Irừ
tronu dầu lìlc chuN cn dôi chi số thùrm thành địa chỉ khối đTa tưcmg ứng.
Vấn dề va chạm ít nuhiêm trọng h(m đối với các thùng, bới vì có
thè băin \ ào cùim một thùiií’ một số bàn tzhi chứa trong thùng mà không
uâ\ ra vấn de. ĩ u y nhicn, chúntz ta cũng phải dề phòng Irưcmg hẹrp mội
thúim dà đây và một ban uhi mới được băm vào thùng đó. ỈDê làm diêu
dó co thè sư dụnu một biến the cua móc nối. tronu đỏ một con trò được
du\ tri tronu inồi ihùng tro dến niộl danh sách móc nối các bản ghi tràn
cho thùnu. Các con tró tronu danh sách móc nối là các con trỏ bàn ghi.
chúHíi bao uồm một địa chi khối và một vị trí ban ghi có liên quan ở
trone khối.
KỸ thuật băm cutiíí cấp truv cập nhanh nhát có thê đê rút ra một bàn
ghi bất kv khi cho í;iá trị trirừng băm cíia nó. íỉầu hết các hàm băm lốt
khônu uiữ các bản uhi iheo thứ tự cùa các giá trị trường băm, nhưng một
số hàm !àm điều đó. các hàm đó gọi là hàm băm duv trì thứ tự (order
preservint: hash lunction).
I ,irợc
• đồ băm dược
• niò lá được
• tĩọi
• là băm tĩnh,' bời vì một
• số M cô
định cát; thùng dược sứ dụnu. Điều đó có thể không thuận tiện cho các
nic dộnu. Giá sứ rằng, dùim M thùng cho không gian địa chi và giả sử m
là số lớn nhất các bán ahi có the chứa được trong một thùng. Khi đó, sỗ
có nhiều nhát là (ni X M) các bàn ghi chứa được trong không gian sứ
clụntĩ. Nẻu số các hàn íihi sán xuất ra là nhò hơn (m X M), nghĩa là còn
nhiều khôim gian trốnu không sử dụng. Mặt khác, nếu số các bản ghi
tăng vượt quá (m X M ). sẽ xáy ra nliiều va chạm, và việc lây các bàn ghi
sỗ chậm, vi các danh sách ban ghi bị tràn. Trong mọi trướng hợp, phái
lha\ dôi số các khối M sư dụnti, sau dó sử dụng một hàm băm mới (dựa
Irèn giá Irị mới cùa M) đé phân phối lại các bán ghi. Các tồ chức lại này
có ihc tốn nhièu thời gian đối vói các file lơn. Các lổ chức nie động mới

245
dựa trên việc băm cho phép số các thùna tliay dồi linh dộng chi với một
tổ chức lại địa phircyntỉ.
Khi sử dụng băm ngoài, việc tim kiếm niột bán íịhi theo một gia irị
cúa một trưcmg nào đó khác với trưènm băm là đẳl, giống như trường
hợp cùa một íìle kỉiông có thứ tự. Việc loại bỏ bàn ghi có thể dược thực
hiện bằng cách loại bỏ bàn ghi ra khỏi thùng cua nó. Nếu thùng có một
xích tràn, ta có thể chuyển một trong số các bán ghi tràn vào thùng đê
thay thế bản ghi bị loại bỏ. Nếu bản ghi sẽ bị loại bò có săn trong dãy
tràn, chúng ta đơn giản loại bò nó ra khỏi danh sách móc Mối. Để ý rằng,
việc loại bỏ một bản ghi tràn kéo theo việc phải giữ dấu vết của vị trí
rỗng trong danh sách tràn. Diều đó được làrn một cách dễ dàng bằng
việc duy trì một danh sách móc nối các vị tri không sứ dụng tràn.
Việc sửa đổi một giá trị trường cúa bản ghi phụ thuộc vào hai sự
kiện : ( 1 ) điều kiện tim kiếm để định vị bán ghi và ( 2 ) trường sỗ được
sừa đổi. Nếu điều kiện tim kiếm là một so sánh bàntĩ trên trường băm,
chúng ta có thể định vị bản ghi một cách cỏ hiệu quà bằng việc sử dụng
hàm băm. Ngược lại, phái thực hiện tìm kiếm tuần tự. Một trường không
băm có thể được sửa đổi bàng cácli thay đổi bán ghi và ghi lại nó vào
trong cùng một thùng. Việc sử dổi trường băm có nghĩa !à bản ghi có thê
chuyển đến một thùng khác, nó đòi hỏi sự loại bỏ bản ghi cũ, tiếp theo là
chèn bản ghi được sửa đổi.

7.2.4. Các cấu trúc chỉ mục (index) đối với các file

Trong phần này, giả thiết rằng, một nie đã tồn tại với tổ chức chính
nào đấy như không có thứ tir (unordered), có thứ tự (ordered), hoặc tổ
chức băm giống như trinh bày ở phần trước. Chúng ta sỗ mô tà các cấu
trúc tniy cập phụ bô :;ung gọi là các chi mục, chúng được sử dụng đô
làm tàng tốc độ lấy ra các bản ghi, đáp írrnỉ các điều kiện tìm kiếm nào
đó. Các cấu trúc chi mục thường cung cấp các đường truy cập phụ,
chúng cung cấp các cách lựa chọn truy cập các bản ghi mà khônii thực
hiện di chuyển vật lý các bàn ghi trên đĩa. Chúng làm cho có thể truy cập
hiệu quà đến các bàn ghi dựa trên các trư(Vng chi mục dược sứ diing để
xây dựng chỉ mục. v ề cư bản, một trường bất kỳ cùa file có thể được sử
dụng để tạo ra một chỉ mục và nhiều chí mục trên các trường khác nhau.

246
có Ihê dược xày dựng trẽn cùng một ille. Có thề có nhiêu loại chi mục,
mỗi loại dùng mọt cấu trúc dừ liệu cụ thế đe làm tănu tốc độ lim kiếm.
ỉ)ế tìm inột bản ghi, hoặc các bàn ghi tronụ nic dựa trên một tiêu chuấn
chọn nào đó trên một trưcmg chi mục, trước tiên nmròi la truy cập chi
nụic, nó chỉ đén một, hoặc nhiều bản ghi trong file nià ừ đỏ các bàn ghi
yêu cầu được định vị. Đa số các kiều chỉ mục ihông thường dựa trên các
ni e có thử tự (các chỉ mục mức đơn), và cấu trúc dữ liệu cây (đa chỉ số,
cây B ). Các chi mục cũng có thể được xây dựng dựa trên băm, hoặc các
cấu trúc dừ liệu tim kiếm khác.

I . C ác kiểu chỉ m ục cỏ t h ứ tự m ứ c đơn


(iia sử một tìle với một bản ghi cho trước, bao gồm nhiều trường
(hoặc thuộc tính). Một cấu tríic truy cập chi mục thường được định nehĩa
Irên một trường đơn của một file gọi là trường chỉ mục (hoặc thuộc tính
chi mục). Chi mục thường lini trữ giá trị của trường chí mục, cùng với
danh sácli các con trỏ tất cả các khối đĩa chứa các bán ghi với giá trị
trưòmg đó. Các giá trị trong chí nụic được xếp thứ tự, sao cho có thể thực
hiện một tim kiếm nhị phân trên chi mục. p’ile chỉ mục nhỏ hơn file dữ
liệu. Vì vậy, việc tim kiếm CỈIỈ mục sừ dụng một tìm kiếm nhị phân là có
hiệu quá và hợp lý.
Có nhiều kiều chi mục sắp thứ tự. Một chi mục chính dược chỉ ra
trên triàTng khoá sap xếp của một nie các bản ghi được sắp xếp. N hớ lại
ràng, một trưcTng khoá sắp xếp dược sử dụng để sắp xếp một cách vật lý
các bán ghi cùa íìle trên đĩa ; và mỗi bản ghi có một giá trị duy nhất cho
trirờiig đó. Nếu trường sắp xếp không phải là trườiig khoá, nghĩa là nếu
nhiều bản ghi irong file có cùng một giá trị cho trường sắp xếp, thì một
một kiểu chi mục khác, gọi là một chỉ mục cụm có thể được sừ dụng. Đe
ý rằng, một tlle có thể có nhiều nhất một trường sáp xếp vật lý. Vi vậy,
nỏ có thệ có nhiều nhất là một chi mục cliính, hoặc một chi mục cụm
chứ không phải là cả hai. Kiểu chi mục thứ ba, gọi là chỉ mục phụ, được
chi ra Ircn một trường không được sắp xếp cùa một nie. Một tlle có thể có
nhiều chi mục phụ, để phụ thêm vào phương pháp truy cập chính của nó.
a) Cức c h ỉ m ụ c c h ín h
Một chi mục chính là một íĩle được sẳp xếp, có các bản ghi độ dài
cố định với hai trirờng. Trường đầu tiên có cùng kiểu dữ liệu với trường

247
khoá sắp xếp. uọi lá khoá chính cùa file dữ liệu ; trirờng thứ hai là một
COII tro chi đ e n k h ố i đ ĩ a ( m ộ t d ịa chi k h ố i ) . Một bản í»hi t r o i m n i e chi
mục iưcniíi ínm \ớ i niột khỏi trontỉ lìlc dừ liệu. Một bán ghi troim tìlc chi
mục cỏ dạim <K(i). P(i)>. trong dỏ K(i) là giá trị cúa trường khoá chính
cua bàn chi dầu tiên troim khối và P(i) là một con trỏ chỉ đen khối đó.
Vi dụ : Gia sư ta co ílle N1IÀN_V1ÊN {Mọ_đệm, Tên, Mã_sỐ_NV.
Lương,..., Mã_số_ĐV). Cíia sứ íìlc được lưu trữ trên bộ nhớ ngoài theo
phirơní> pháp lìle được sấp xốp và trirờniz sẳp xếp là Tên (hiền nhiên
phái uia thiết !à các nhân \ iên có tên khác nhau). Như vậy, săp xếp cua
tìle trên bộ nhớ ngoài có dạng như sau (hình 7.3).
File dữ liệu
Trường khoấ

Tén Họ đệm Mă_số_NV Mă_^sỐ_ĐV

An ị
File chỉ mục ì
1
Anh
Giá in khoá
của neo khổi Con trỏ knối

~ !i
An / Ảnh
Ba
Cần " ' ..........
\
Đa

Ban

Cam
Văn

'
Cằn

cằu

Châu

Văn

Việt

Hình 7.3. tổ chức file được sắp xếp và file chỉ mục tương ứng

248
Khi dó ba bàn ghi đầu tiên của fiie chỉ mục sẽ có dạng
■'K( I ) = 'An', P( 1) = địa chi của khối 1>
• K(2) - 'Ba', !’(2) = dịa chi của khối 2>
<K(3) = 'Cần', P(3) = địa chi cua khối 3>
Ban ulii đầu lièn trontỉ inồi khối của nie dừ liệu dược eọi là bàn ghi
neo (anchor record) cúa khối, hoặc đơn giàn gọi là neo khối.
Các chi mục có thé được đặc trưng bới dày hoặc thưa. Một chi mục
dàv có một ban uhi cho một ạiá trị khoá (và như vậy là cho mỗi bán ghi)
cua nie dữ liệu. Một chi mục thưa có một ban tỉhi chi mục cho một vài
giá irị tìrn kiếm. Nhir vậy, một chi mục chính là một chi mục thưa, bời vi
nó chừa một ban ghi cho mồi khối đĩa file dừ liệu chứ không phái là cho
mỗi uiá trị tim kiếm.
v ề cơ bán, filc chi mục cho chi mục chính cần ít kliối hơn tìle dữ
liệu do hai lý do. Thứ nhất, số các bàn ghi trong nic chi mục íth an số
các ban ghi trong file dữ liệu. Thứ hai, mồi bàn ghi trong nic chi mục
thirờnc có kích cỡ bé hcTTi bàn ghi trong nie dừ liệu, bưi vi nó chi có hai
trường. Vi vậy. trong một khối có thể chứa nhiều bán ghi chi mục hơn
các ban ghi dữ liệu. Một tìm kiếm nhị phân trên nie chi iTiục dòi hỏi số
các truy cập khối lì hơn tìm kiếm nhị phân trên nie dữ liệu.
Một bàn ghi có giá trị khoá chính là K nằm trong khối cỏ dịa chi là
P(i), Ironu dỏ K(i) <= K < K(i + 1). Khối thử i trong file dừ liệu chứa lẩl
cả cac dịa clii như vậy. Đè lấy ra một bản ghi, cho trước giá irị K cùa
trưừng khoá chính của nó. Chủng ta thực hiện một tìm kiếm nhị phân
trên filc chi nụic dế tim ra lối vào chỉ mục i thích hợp. sau đó lấv ra khối
tlle dừ liệu có dịa chi là P(i). Ví dụ sau đây minh hoạ sự tiết kiệm có thổ
dạt dược khi sử dụnu một chỉ mục chính đê tìm kiếm một bàn ghi.
Vi ilụ ì : Giả sứ chúng ta cỏ một íìle có thứ tự, V(ýị r = 30.000 bản ghi
lưu trữ trC'11 một đĩa. với kích thước khối B = 1024 byle. Các bàn ghi tìle
cỏ kicli thước cố định, không kéo dài, với độ dài bán ghi R= 100 byle.
1 lệ số k h ố i c h o í ì l e s ẽ là bfr = L (B /R )J = L(10 2 4 / 1 0 0 j = 10 bàn g h i/ k h ố i.
Số cac khối cần cho iìle là b = r(r/bfr)1 == r(30.()00/10l = 3000 khối. Một
tim kiềm nhị phàn trên tìle dữ liệu sẽ cần gần riog 2 b l = r(log 2 3 0 0 0 ) 1= 12
íru> cập khối.

249
Bày giờ già sừ răntỉ. trưímg khoá săp xêp cua tì le là V, với kích
thước 9 byte ; một con irỏ khối là p, với kích thước 6 byte và đã xây
dựng một chi mục chính cho tìle. Kích thước cúa mỗi bàn ghi chi mục là
Rj = 9 + 6 = 15 byte. Vì vậy. hệ số khối cho chỉ mục là

brĩi = L ( B / R ì ) J = L( 1024/15)J = 68 bản ghi/khổi.

Tổng số các bàn ghi chi mục rj bằng số các khối trong file dữ liệu
(3000). Vậy sổ các khối chi mục là bj = r(rj/b frj)1 = f(3000/68l = 45 khối.
Để thực hiện một tìm kiếm nhị phân trôn file chỉ mục sẽ cần
log 9bj 1 = f(log 2 4 5 ) 1 - 6 truy cập khốỉ. Để tim một bàn ghi bằng cách sử
dụng chí mục, cần thêm một truy cập khối đến íìle dữ liệu, vậy cần
6 + 1 = 7 truv cập khối. Đó là một sự cải thiện so với tim kiếm nhị phần
trên file dữ liệu, nó cần đến 12 truy cập khối.
Vấn đề chính với chi mục chính, cũng như đối với íìle sắp thứ tự là
việc chèn và xoá các bản ghi. Với chỉ mục chính, vân đê là phức tạp, bới
vi nếu chúnc ta có ý định chèn một bản ghi vào vị trí đúng của nó trong
file dữ liệu, chúng ta không chỉ dịch chuyển các bản ghi để tạo ra
khoàng trống cho bản ghi mới, mà còn thav đổi một vài bàn ghi chi mục
(vì việc dịch chuyển các bàn ghi sẽ làm thay đổi các bán ghi neo của một
số khối). Việc sừ dụng một ílle tràn như đã nói ở trên có thể làm giảm
bớt vấn đề này. Một khá năng khác là sử dụng mộl danh sách móc nối
các bân ghi tràn đối với mỗi một khối trong nie cơ sở dừ liệu. Điều này
tương tự như phưmig pháp xử lý với các bản ghi tràn đã m ô tả với kỳ
thuật băm. Các bản ghi bên trong mồi khối và danh sách móc nối tràn
cùa nó có thể được lưu irừ để cải thiện thời gian lấy thông tin ra. Việc
xoá bản ehi được thực hiện bằng cách sử dụng cách đánh dấu xoá.

2. Các chỉ muc


• cum

N ếu các bản ghi của một nie được sắp xếp vật lý trên một trường
không khoá, chúng không có một giá trị riêng biệt cho mỗi bản ghi, thi
trường đó gợi là trường phân cụm. Ta có thể tạo ra một kiểu chi lĩiỊic
khác, gọi là chỉ mục cụm, để làm tăng tốc độ lấy ra các bản ghi có giá trị
như nhau đối với trường phân cụm. Kiểu này khác với chi mục chính, vì
chỉ mục chính dòi hỏi trường xếp thứ tự cùa íìle dữ liệu có một giá trị
riêng biệt cho mỗi bản ghi.

250
Một chi mục cụm cũng là một íìle có thứ tự gồm hai trường. Trường
ihứ nl)c4t có cùng kieu với trường cụm của nie dữ liệu ; trường thứ hai là
một con trò khối, Có một lối vào trong chi mục cụm cho mồi giá trị phân
hiệt cua trinVrig cụm, chứa giá trị và một con trỏ chi đến khối đầu liên
trong nie dừ liệu có một bản ghi với giá trị đổi với trường cụm của nó.
Ví dụ, xét nie NI ỈÂN VIÊN như ở trên và giả sử trưcmg cụm là
Mã_sô_ĐV, Mã số DV không phải là trường khoá của N H Â N VIÊN
nên sẽ có CÍÍC giá trị irùng lặp. Khi đó file dữ liệu và fi!e chỉ mục cụm có
dạng như sau (hinh 7.4).
File dữ liệu
(Trường cụm)
M ẫ„số„ĐV Họ_đệm Tên Lương
1
1

2 *

3
Fiỉe chỉ mụ 3
Giầ írỊ Con trò
trưởng cụm k."ìổi
L_... „
1
2
ĩ - - ~ y
4 y
5

8 - . ^

6
6
8
8
8

Hình 7.4 : File dữ liệu và fjle chì mục cụm

251
Đe ý ràng, việc chèn và xoá các ban uhi vẫn tỉây ra \ ấ n dề, bởi vi
các bản ghi dừ liệu được sáp xếp vật lý. Dê làin giàm bớt vấn đề chèn,
tiện lợi nhất là dành một khối (hoặc một cụm các khối Hèn tiếp) cho mỗi
giá trị cùa trưcVng cụm. mọi ban ehi với uiá trị đó dược dặt troim khối
(hoặc cụm khối) đó. Điều đó iàm cho viẹc chèn và xoá thuận tiện hơn.

3. C á c chỉ m ụ c phụ (secondar>' indexes)


Một chỉ mục phụ cũim là tnột fìle có thứ tự với hai trirOTiíx. Trưcmg
thử nhất có cùnti kiêu dữ liệu như là một irưàng khôim sắp xếp lìào dó
cùa íìle dừ liệu. Trường thứ .hai, hoặc là một con trò khối, hoặc là một
con trò bản ghi. Có thề có nhiêu chi mục phụ cho cùniĩ một íìlc.
Trước tiên, xem xét một cấu trúc lru> cập chi mực phụ trên mộl
trường khoá có một giá trị phân biệt cho mỗi bản ghi. Một trircmg như
vậy đôi khi được gọi là khoá phụ. 'lYoim trirừníỉ họp này, có một han ghi
chi mục cho mỗi bân ghi trong file dừ iiệu. nó chứa giá trị cùa khoá phụ
cùa bàn ghi và một con tro, hoặc chi đến khối chứa bản ghi, hoặc chi đèii
chính bản ghi. Một chi mục như vậy gọi là dày (dcnse).
Tiếp theo, chúng ta tham chiếu đến hai uiá trị trường của bản ghi chi
mục i như <K(i), P(i)>. Các bản ghi được sáp thứ tự theo giá trị của K(i).
Vì vậy, có thể thực hiện bằng tim kiếm nhị phàn. Bởi vi, các bản ghi của
íìle dừ liệu không được sáp vật lý theo thử tự của trường khoá phụ, nên
không thể sử dụng các đầu khối. Vì vậy. niột bàn ghi chi mục được tạo
ra cho mồi bản ghi trontỉ íìle dữ liệu hcni là cho mồi khối giông như
trong trường hợp chi mục chính. lỉinh 7.5 minh hoạ mộl chỉ ỉn iic phụ.
trong đó các con trỏ P(i) trontỉ các bàn ghi chi inục là các con trỏ khối,
chứ không phải là con trỏ bàn ghi. Một khi khối thích hcTp được cỉuiycn
vào bộ nhớ chính, một tim kicni bàn ghi lìiong imiốn bên trong khối sẽ
được thực hiện.
Một chi mục phụ thiùmg cần nhiều kliỏim gian lưu trừ, và thời gian
tìm kiếm dài hmi so vứi một chi mục chính, bởi vì nó có nhiều lối vào
hơn. Tuy nhiên, việc cải thiện tronạ thời uian tìm kiếm một bàn ghi bất
kỳ đ ố i với m ộ t chì niỊic phụ thi ỉ(Vn hcm n h icL i so v ới m ộ t chi mục chính,
bởi vì chúng ta phải thực liiện một tìm kiếm Uiyen tính tròn Hlc dữ liệu
nếu chi mục phụ không lồn tại. Với một chi mục chính, có thề sử dụng

252
mộl um kiếm nhị phân trên nic chính nuay cá khi không có chi mục. Ví
clụ sau dâ\ minh hoạ sự cái tliiện \ ồ số các iruv cập khối.
File dữ liệu
Trướng chi mục
(trường khoá phụ)

9
File chi mục
5
(<K(|), P(i)>
Giâ tri (ruờng 13
chỉ mực
8

6
15
3
ị 17

" ‘ 1 16 ^
I '• ----- ^
2

r...... ..... X........ . ...


r 1 2 4 ......
! 10
1

20
i
Ị 1

4
23
18
22
V 14
23
“ 24
--------- 12
7
19
22

Hình 7.5. Chi mục phụ dày (với các con trò khối)
trên m ột trư ờng khoá khòng được sắp xếp cùa m ột file

253
Ví (ỉụ ; Xét íìle ờ ví dụ 1 với r = 30.000 bản ghi. dộ dài cố dịnh
có kích thước 100 byte, được lưu trừ trên đĩa với kích thưác khối
B = 1024 byte. File có b = 3000 khối. Để làm một tim kiếm tuyến tính
trên ílle, trunu bình ta cần b/2 = 3000/2 == 1500 iruy cập khối. Giả sử
ràng, ta xây dựng một chi mục phụ trên một triròng khoá không sáp thứ
tự của nie với V = 9 bvte, và một con trỏ khối 6 bvte. N h ư vậy, mộl bàn
ghi chỉ mục là p = 15 byte, hệ số khối cho chi mục bffj = 1024/15 = 68
bản ehi/khối. Trong một chi mục phụ dày như vậy, tồng số các lối vào
chi mục n là bàng số các bàn ghi cùa Tile dữ liệu, tức là 30.000. s ố các
khối cần cho chi mục là bj = (rj /bfrj) = 30.000/68 = 442 khối.

Một tìm kiếm nhị phân trên chỉ mục phụ này cần log 2 bị = ỈO U 2442 = 9
truy cập khối. Để tim kiếm một bản ghi bằntỊ cách sừ dụng chi mục, cần
thèm một truy cập khối đối với íìle dừ liệu. N hư vậy, tổng số là 10 truy
cập khối, đây là một sự cải thiện lÓTi so với 1500 truy cập khối nếu tìm
kiếm tuyến tính.
C húng ta cũng có thể tạo ra một chi mục phụ Irên một trường không
klioá cùa file. Trong trường hợp này, nhiều bản ghi trong ílle dữ liệu có
ihể có cùng một giá trị cho trường đánh chi mục.

7.2.5. Các chỉ mục nhiều mức

Các lược đồ chi mục mô tả ở trên chứa một file chi m ụ c cỏ thứ tự.
Một tim kiếm nhị phân được áp dụng cho chỉ mục để định vị các con trỏ
đến một khối đĩa, hoặc một bản ghi (hoặc các bàn ghi) trong tìle có mộl
g i á trị t r ư ờ n g c h i m ụ c CỊI t h ể . M ộ t t ì m k i ế m nh ị p h â n đ ò i h ò i x ấ p x i

log 2 bi truy cập khối đối với một chi mục (có bj khối, niỗi bước cùa thuật
toán làm giảm phần cùa nie chỉ mục mà ta sỗ tiếp tục lìm kiếm theo hệ
số 2). Tư tường đằng sau một chi mục nhiều mức là làm giảm phẩn chi
mục sẽ tiếp tục tìm kiếm theo hệ số bfrj. Bfrj là hệ số khối của chi mục
và nó lớn hơn 2. N h ư vậy, không gian tìm kiếm được giảm di rất nhanh.
Giá trị cùa bfrj được gọi là hệ số phân đầu ra (ían-out) cùa chi mục nhiều
cấp, k ý k i ệ u là fo- Việc tìm kiếm một chi mục n h iều cấp đ ò i hoi xắp XI

(logiobị) truy cập khối, nó là một sổ nhỏ hơn tim kiếm nhị phân nếu
fo > 2.

254
Một chi mục nhiều mức, xem một nic chi mục như là một nic có thứ
tự víVi mộl giá trị phân biệt cho mồi K(i). File chi mục đó dược gọi là
mức đầu tiên (hoặc mức cơ sở) của chì mục nhiều mức. Như vậy, ta có
ihê tạo ra một chi mục chính cho mức đẩu liên. Chí mục đối với mức
dầu Liên này dược gọi là m ức thứ hai của chi mục nhiều mức. Vi mức
ihír hai là một chi mục chính, chúng ta có thổ sử dụng các neo khối sao
cho mức thứ hai có một bản ghi cho mồi khối của mức đầu tiên. H ệ số
phân khối btVj cho mức thứ hai và cho tất cả các mức tiếp theo, giống
như hộ số phân khối cho chi mục mức đầu tiên (bởi vi tất cả bàn ghi chì
mục là cùng một kích thước ; mỗi bàn ghi có một tíiá trị trườnu và niột
địa chí khối). Ncu như mức đầu tiên có ri bản ghi và hệ số phân khối đối
với chi mục bfr| là lo thì mức đầu tiên cẩn Ị (r|/t,j1 khối, đó cũng là số các
bàn ghi ĨT cần thiết ở mức thứ hai cùa chỉ mục.
Chủng ta có thé lặp liến trinh nàv cho mức thứ hai. Mức Ihir ba là
chi mục chính cho mức thứ hai, có một bản ghi cho mỗi khối mức thứ
hai. N h ư vậy, số các bàn chi mức 3 là 1'3 = r(r->/fo)l. Đê ý rằng, chúng ta
đòi hòi mức thử hai chi khi mức thứ nhất cần nhiều hơn một khối đĩa.
Tương tự, đòi hòi mức thứ ba chì khi mức thứ hai cần nhiều hơn một
kliối. Quá trinh trên được lặp lại cho đến khi tất cà các ban ghi cùa một
mức chi mục t nào đó vừa vào một khối. Khối ở mức t này được gọi là
mức chi mục đinh. Mỗi niức làm giảm số các bàn ghi của mức trước đó
một hệ số fo. Vì vậy, có thể sứ dụng công thức 1 < (r|/(fo/)) để tính t.
N h ư v ậ y , m ộ t c h i inỊic n h i ề u m ứ c v ớ i ri b ả n g h i m ứ c đ ầ u t i ê n s ẽ c ó x ấ p

xi t mức, tront* đó t = [(logcníri)) I.


I ược đồ nhiều mức mô tà ở đâv có thể được sử d m g trên kiếu chỉ
mục bất kỳ (chi mục chính, chi mục cụm, chỉ mục phụ) khi chi mục mức
thứ nhất của nó có các giá trị khác nhau cho K(i) và các bàn ghi độ
dài cố định. Hình 7.6 mô tà chì mục nhiều mức được xây dựng trên chi
mục chính.
y í dụ 3 : Xét một ví dụ minh hoạ việc cải thiện số các truy cập khối
khi sư dụng chỉ mục nhiều mức đề lìm kiếm một bản ghi. Giả sử ràng,
chi inục phụ ờ ví dụ 2 được chuyển đổi thành chỉ mục nhiều cấp. C hún g
ta đà tính hệ số phân khối của chi mục bfrj = 68 bản ghi chì mục trên

255
một khối và dó cũng là hệ số đầu ra r,) cho chi mục nhiều mức. s ố các
kliối mức dau liên b| = 442 khối cũnu đã dược tính, s ố các khối ơ niirc 2
sẽ là bi = [(bi/lo) I = [(442/68)1 = 7 khối, số các khối ớ mức 3 sẽ là
1^3 “ (b 2 /íb) 1= 1(7/68)1 = 1. Như vậy. mức ba là mức dinh cùa chi mục
vả t =3. f3è truy cập đến bán ghi bàng việc tim kiếm chi mục nhiều cấp,
ta phái truy cập một khối tại mỗi mức cộng với một khối từ tì le dữ liệu.
Như vậy, cần t + 1 = 3 + 1 = 4 truy cập khối. Trong khi đỏ. ờ ví dụ 2 với
việc sừ dụng chí mục mức đcm và tìm kiểm nhị phân phài cẩn đốn 10
truy cập khối.
Người ta cũng có thế xâv dựne một chi mục chính nhiều múc không
dày đặc. Bạn đọc có thê tìm hiếu thêm trong các tài liệu khác.
Tồ chức file thường sừ dụng trong xử lý dữ liệu quán lý là niột nie
có thứ tự, với một chỉ mục chính nhiều mức trên trườim khoá dược sắp
xếp cúa nó. Tồ chức như vậy dược lỉọi là íìle tuần tự có chỉ mục.
Như chúng ta biết, một chi mục nhiều mức lám giảm số lần truy cập
khối khi tìm kiếm một bán ghi với giá trị trường chi mục cho trước. Tuy
nhiên, vẫn gặp khó khăn với việc chèn hoặc xoá chi mục, bởi vì tất cà
các mức chi mục là các file có thứ tự. Sau đây chúng ta sẽ nghiên cứu
một số chi mục nhiều mức động, được cài đặt bang việc sử dụnu các cấu
trúc dừ liệu gọi là B-trecs và B^-tree. Các cách tồ chức chỉ mục này tạo
tiện lợi hơn troiiíỊ việc chèn và xoá chi mục.

7.2.6. Các chỉ mục nhiều mức động sử dụng B-cây (B-tree)
và B^-cây (B^-tree)

rrước hốt chúng ta định imhĩa một số thuật ngữ. B-tree và B*-tree
là các triròng hợp riêníí của một cấu trúc dữ liệu lĩọi ià cây (tree). Một
cày được tạo thànli từ các đinh. Có một đinh đặc biệt gọi là đinh gốc.
Mỗi dinh trong cày, niĩoại trừ dinh gốc có một dinh cha và nhiều (nhiều
hơn 0) dinh con. Đình gốc không có đinh cha. Một đinh kliônii có đinh
con nào được uọi là đinh lá. Một dính không phái là dìiili lá được uọi là
đinh trong. Mức của một đinh luôn luôn kVn hem mức đinh cha cùa nó
một dơn vị. núrc của đinh ụoc là 0. Một cây con của một đinh bao uòm
dinh đó và tàt cà các đinh con, cháu của nó (tức là iiỗm các dinh con cùa
nó, các đinh con của các dinh con của nó,...). Dịnh nt»hĩa dệ quv cùa cày

256
con là : Một cày con bao gồm một đinh n và các cây con cùa tất cá các
đinh con của n. Hình 7.7 mô tà một câv khôiií; cân bằnu.
File dữ liệu
Trường
khoá chinh

“T "

Mức ĐAU TIÉN

2 ỵ
8 /
15
24

M ỨC THỨ
HAI (ĐÌNH)

'
35 39
39 41
44
44
51
46
2
35 51
55 \ 52
85 N

55
63
71
NN
80

85

Hỉnh 7.6. Chỉ mục chính hai mức (giống tổ chức ISAM)

16'- NMhCSDL 257


Hinh 7.7. cấu trúc dữ liệu cây

Troim cà> trên, dinh liỏc là A \'à cac dinh con cua nó là B, 1).
Các đinh I (ì, Cl. 1!. K là các dinh lá.

1. C'ác cây lim kiếm và các B-cây


a) C ây tìm k iế m
MỘI cày lìm kicni cấp p la một cây, sao cho mỗi một đinh dhira
nhiều nhất p - 1 ụiá IrỊ tim kiếm và p con trỏ iheo thứ tự <P ị, K |. 1’2. K 2 ,
Pq--1. Kq- I, ỉ\j>, tronu dó C| < p ; niỗi 1^ là m ộ t c o n trỏ trỏ dcn im ộ t

dinh con (hoặc là một con trò nuil) ; và niỗi Kj là một niá trị tìm kièmi từ
mộ.t tập có íliứ lự các giá trị. rất cá các uiá trị lìm kiếm được ụiá lỉiiốit là
duy nhất íimhTa là kliác nhau lừnu dôi một). Có hai ràng buộc tại imọi
t h ờ i d i ê m t r ẽ n c à \ Iini k i c m :

1. lỉèii í r o n u m ỗ i d i n h . K i <' K 2 < ... •' K,|.|

2. Với mọi uiá írị X tronii cây con dược i’i chi đen, ta cỏ Kị.| <X K|
( \ó i 1 • i • q) ; X ■' Kị (\ớ i i = i ) và K , 1 < X ( \ớ i i = q).

258
Khi tim kiếm niộl giá trị X, ta di lỉieo con tro p; tỉieo các cỏim ihức
t r o n g đ i ề u k i ệ n 2 ư trôn. I l ì n h 7, 8 chi III inột c à y l i m ki cni cà p p 3 và

các uiá trị tìm kiem là các số nuuyèn. ỉ)ẽ ý rãnu, mộl \;ii con tro 1’, trong
một dinli có thê là các con trỏ inill.
ChúniỊ ta có thể sứ dụng một cây tiin kiếm như !à niộl ca cấu đê lìm
kiếm các bán uhi trong một íìle trên dĩa. C'ac giá trị trong cây có thè là
c á c g i á t r ị c ủ a m ộ t t r o n g c á c t r ư ờ i m c u a l l l e . i!ỌÌ l à t r i r ừ n e l i m k i è n i ( d ỏ
cũng chính là trường chỉ mục nếu có một chi mục nliiều mức hirứnu dẫn
việc tìm kiêm). Mỗi một giá trị khoá tronu cây duợc liên kcl \ ới một con
trỏ đến bản uhi tronu íĩlc dừ liệu cỏ uiá trị đó. CTine cỏ thè con trò chi
dến khoi đĩa chứa bán ghi đó. Ban thân cây lim kicm có thc dược lưu trữ
trên cỉĩa bàng cách gán mỗi đinh cày cho mội khôi dĩa. KỈII một bán uhi
được chèn vào, chúng ta phai cập nhật cà> tim kicni bănu cách chèn \ à o
một mục troní" cây chứa íĩiá trị trườim tỉm kiêm của haii íihi mới. \ à một
con trỏ đến ban ghi mới.
C’húnu ta cần có các thuật toán dê chen và \ o á các giá irị lìm kiêm
vào (và ra khỏi) cây tìm kiếm mà \ ẫn íhi\ trì hai ràn <4 buộc ơ trêii. NÓ!
chunu, các thuật toán này khỗrie dam hao rănu, inột câv íìni kiein là cân
băng. NghTa là, tấl cả các dinh lá cua nó ơ cùnu một múc. C’ày trong
hình 7.7 lủ không cân bàng, bòi vi nó có các dinh lá õ các mức 1, 2 và 3.
Giữ cho cày tim kiếm cân bằng là ràl cần thiếl, bới \ i nó dám bào rãng,
không có các đinh ờ mức rấl cao (đòi hói nhieu iruy cập khối trontỉ khi
tìm kiếm cày). Một vấn đề khác \ ứ i câ} tim kiếm là việc xoá bỏ bán ghi,
có ihề làm cho một số đinh trong cây hầu nhu rỗne. Diều đó làm lãng
phí kl^ôníi gian lưu trử, và làm tãnụ so mức cua cây. B-cây nhằm vào hai
vấn dề nàv, bahg cách chi rõ các ràng buộc thêm trên câ> lìm kiC‘ni.
b) B -c â y
li-cây có các ràng buộc thêm, nó dam bào cho cây luôn luôn được
cân bằng và không gian bị lãriíi phí do phép xoa (nêu cỏ) khônu quá lớn.
Các thuật toán để chèn và xoá trư nên phức tạp liơn đế duy trì các ràng
buộc này. Tuy nhiên, hầu hết các phép chèn và xoá là các tién trinh đtm
giản, c h ú n g clìỉ trở nên phức tạp trong các hoàn cành đặc biệt. Khi dịnh
chèn vào một dính đã đầy, hoặc xoá khói mộl đinh iàm cho nó vưi đi quá

259
một nứa. Ilinh thức hơn, một B-cây cấp p, khi dược sử dụng như là mộl
cấu trúc truy cập trên một trườnií khoá dề tim kiếm các bàn ghi trong
một file dữ liệu, có thế dược định nghĩa như sau :
1. Mồi đinh trong cúa B-cày có dạng :

< p , . < K | . l \ i > , P 2, < K 2 , I \ 2 > . - < K q-l, P q-|>, Pq>

trong đó q < p. Mỗi Pị là một con trỏ càv - trỏ đến một đỉnh khác trong
B-càv. Mỗi p,i là một con trỏ dữ liệu - trỏ đến bản ghi mà giá trị trường
khoá tim kicm của nó bằnu với Kị (hoặc chỉ đến khối íile dữ liệu chứa
bàn ghi dó).

2. liên IroniỊ mồi dinh, K| < K 2 < ... < Kq_|


3. Với tất cà các tziá trị tarcyim khoá tìm kiếm X trong cây con được
Pj chi đến, ta có :

Kị_i < X < Kị, với 1 < i < q ; X < Kị, với i = 1 ; Kj_| < X, với i = q.
4. Mồi đỉnh có nhiều nhất là p con trỏ cày.
5. Mồi đinh (trừ đinh gốc và các đinh lá) có ít nhất là r ( p / 2 ) l con trò
cây. Đỉnh gốc có ít nhất là hai con tró cây (trừ khi nó là đinh duy nhất
trong cây).
6. Một đinh với q con trỏ câv (q < p), có q - 1 giá trị trường khoá
tìm kiếm (và như vậy có q - 1 con trỏ dữ liệu).
7. Tấl cà dỉnh lá ở cùna một mức. Các đmh lá có cùng cấu trúc như
các đỉnh con ngoại trừ tất cả các con trò cây Pj của chúng là null.
Hình 7.9 (b) minh hoạ một B-cây cấp 3. Chú ý rằng, tất cả các giá trị
tim kiếm K trong B-cây là duy nhất. Bời vi. ta đã giả thiết rằng, cây
được sử dụng nlur một cấu trúc truy cập trên một trường khoá. Nêu
chúng ta sừ dụni; B-cây trên mộl trường không khoá, cần phải định
niihĩa các con trỏ nic Pri chi den một khối, lioặc một cụm khối chứa các
con trò đến các bán ghi của lì le.
Một B-cây bắt đầu với một đỉnh gốc đơn (nó cũng là một đỉnh lá) ở
mức 0. Mồi khi đinh tiốc là đầy, với p - 1 giá trị khoá tim kiếm, chúng
ta chèn iTiục khác vào trong cây, dinh gốc chia (hành hai đinh ở m ức 1.

260
Chì cỏ uiá trị ở giữa được giữ lại trong đinli uốc, các giá trị còn iại được
chia đều giữa hai đinh khác. Khi một dinh không pliái dinh uốc là dầy,
một mục m ái dược chèn vào nó, đinli này sẽ được chia làrn hai dinh ừ
cùnụ mức. mục ở aiừa sẽ chrợc chuvcn đến đinh cha cùng với hai con trỏ
chi đên các đình được chia mới. Ncu đinh cha là đầy, nó cvlng dược phân
chia. Việc phâii chia có thể truyền đến đinh gốc, tạo ra một mức mới nếu
gốc được phân chia,
a)

b)

: con trò cây : 0 : con trỏ dữ liệu.

Hình 7.9. Các cáu trúc B-cây


a) M ột đỉnh trong B -cây VỚI q - 1 giá trị tìm kiếm,
b) M ột 8 -c â y cấp p = 3. C ác giá trị đ ư ợ c chèn váo theo thử tự 8, 5, 1, 7, 3, 12, 9, 6

Ncu việc loại bỏ một giá trị gâv ra một đinh là đầy ít hcTn một nửa,
nó dirạc kết hcTỊ? với các đỉnh lân cận với nó, điều đó cũng có thế truyền
mọi cách đến đinh gốc. N h ư vậy, việc loại bỏ có thể làm giảm số các
mức của câv. lìàng phàn tich và mô phóng, người la đã chỉ ra rằng, sau
nhiều phép chèn là loại bò ngẫu nhiên trên một B-cây, các đinh là đầy
khoàng 6 9% khi số các giá trị trong cây ồn định. Diều đó cũng dúng với

261
B -cây. Nèu diều dó xàv ra, việc phân chia \ a tò họỊi cua dinh sẽ ít khi
xảy ra. Như vậy. việc chèn và líTại bỏ tro nên hoàn toàn có hiệu q u ả. Nếu
số các giá trị tăng lên. cây dược niư rộng, mặc dù việc phàn c h i a CÍK’
đinh cỏ thè xảv ra. Vi vậv, một số phép chén sẽ tốn nliiều thời liiíui hon.
Ví dụ sau đây chi ra cách tính càp p cua một lỉ-cây lưu trừ trên cĩìa.
Vi dụ 4 . Ciiá sir ràng, trircyriu tim kiéni là V = 9 byte, kích t h ư á c của
khôi đĩa là B = 512 b 3 'te. một con trỏ dữ liệu ià p, = 7 byte, niột c o n tro
khối làp = 6 byte. Mỗi dinh cúa ]ỉ-cây cỏ thê có nhiều nhất là pc o n tro
cây. p - 1 con tró dừ liệu và p - 1 trirờnu khoá tìm kiếin. rấl cá :nhừnL'
dừ liệu đó phai vừa với một khối đĩa đơn, nếu mỗi đỉnh cúa íí - c â y là
tưtmg ínm với một khối dĩa. Như vặv, ta pliai cỏ :
( p X P) + ( ( p - 1) X (l>r - V ) ) < B

(p X 6) - ((p - 1) * (7 ^ 9)) < 5 1 2

( 22 X p) < 512
Chúng la cỏ tlic chọn p là một uiá Irị lớn thoả m ãn bất đãniỉ t hức cv
trên. Chọn p = 23. Nói chuníí, một đinh ciia lì-cây cỏ thế chứa thô'ng tin
phụ thèm cần cho các thuật toán thao lác cây. chănu hạn, như số cáic mục
q trong một đinh và một con trỏ chi dến dinli cha. Vì vậy, trước kh i thực
hiện tính toán trcn cho p. phải làm giáiii kích cỡ khối cho tất c à các
thông tin.
Ví dụ sau đây minh hoạ việc tính các khni và các ĩnửc cho một B-cây.
Ví dụ 5 : Già sử ràng, trường tìm kieni cửa ví dự 4 là một t-.rường
klioá, không được sấp thứ tự. ta xây dựng ỉì-cây trèn trường này. ( jiả sir
mỗi dinh cùa B-cây dầy 69%. T ính tiuim bình, niỗi dinh sẽ có
p X 0,69 = 23 X 0.69.

hoặc ííần 16 con trỏ. Vi vậy, có 15 uiá trị truừng khoá tim kiếrn. Hệ sỗ
đầu ra trunu bình r„ = 16. 'ĩa có ttié bắl đầu tại uốc, thấy ngay t r u n g bìnli
có bao nhiêu tiiá trị và con trò có thể ton tại tại mỗi inức tiếp theo :
Gốc : 1 đinh 15 mục 16 con trỏ
Mức 1 : 16 dinh 240 mục 2 5 6 COII trỏ
Mức 2 : 256 dính 3840 mục 4096 con trò
Mức 3 : 4096 dinh 61440 mục

262
1'ại mỗi inức. (íiih sô các niục, hầim cách nhân số các con trò ờ niức
trước vói 15 (dó là sô truim bình các !nục tại mỗi dinh). Như vậy. về
trunu bình một [Vcâ\ mức 2 có 3H40 240 • 15 4095 mục. một B-câv
mức 3 có 65535 mục.
ỉ)ôi khi B-câ> dược sir dụnu như các tỏ chức illc chính, ỉrono,
trirờniỉ hcrp dó, toàti bộ ban uhi dirợc lưu trừ tronu các đính cua B-câ>,
thav vi chi liru irũ các mục nho h(yn khoá lìin kiếm, con trỏ bán íihi ItVii
hơn. Cách này làm \ iộc lôt \ ới các íìlc có sỏ hán chi nho và kích thước
cua các ban uhi bé. Nuirực lại. hộ số phàn đau ra trurm binh và số các
mức Ira ncMi quá lớn đê cho phép truv cập cỏ hiệu qua.

2. lì "-cây
I lầu hết các thế hiện cua chi mục nhiều mức độiig sư dụnu một biến
thê cúa cấu trúc dữ liệu fỉ-cây. uọi là B -cày. ĩro n g B-cây. mồi uiá trị
cua trư àn e tim kiêm \ u à t hiẹn mộl lân lại một mức nào dó tronu câv
cùnii vói một con tro dữ liệu. 'I ronu íỉ -cây. các con trỏ dừ liệu chi được
lưu trừ a các dinh lá cua cày. N h ư vậy. cau trúc của dinli lá khác với cấu
trúc uua các dinh tronu. C’ác đinh lá có mạt mục cho mỗi giá trị của
trirờne tìm kiếm, cùng với một con tro dữ liệu chỉ đẻn bán íĩhi (hoặc chi
đcn khối cliứa han uhi do) Iieu trưừnu tim kiếm là trườne khoá. Với một
trirờmi lim kietii khônu pliai là trườnu klioá. con tro chi đến một khối
chứa các con Irỏ chi đến các bán lihi của nie dữ liệu, tạo ra một mức phụ
ẹián ticp.
Các đinh lá tronu B -cây tliườim kết nối với nhau để cung cấp một
iruy cập có thử tự trèii trườnụ lini kiếm đoi với các bủn ghi. Các đinh lá
nàv tươnu, tự như mức daii tiên của một chi mục. Các dinh trong cùa
lì -cày tirơnụ ứim \ ởi các niửc kháe nhau cùa một chi mục nhiều mức.
MỘI so các uiá trị irưànư tìm kièni tù' các dinh lá dược lặp lại tronu các
dính iroim cua B -cày clC' hưónu claii \ iộc lim kiêm.
C’ầu trúc cùa các (!inh tronu của inột B -câv là như sau :
!) Mỗi diiih ironu cỏ dạiiíi ;

< P i . K , . P 2 . K . ...... i V i . K „ . , . [ \ , >

trona d ó CỊ < p và mỗi P| là con trỏ câv.

263
2) Bên trong mỗi đinh trong ; K | < K 2 <...<Kq.|.
3) Với tất cả các tỉiá trị trường tim kiếm X trontí cày con duĩcc chi
đến bằng Pị cluìng ta có :

Kj_| < X < K|, với 1 < i < q ; X < Kj, với i = 1 ; và Kj_ị < X, vái ii = q.
4) Mỗi dinh trong có nhiều nhất là p con trò cây.
5 ) M ồ i đ in h t r o n g , n g o ạ i trừ đ in h g ố c , c ó ít n h ấ t r ( p / 2)1 c o n trò cày.

Đinh gốc có ít nhất là hai con trỏ cây nếu nó là một đinh troiig.
6) Một đinh trong, với q con trỏ (q < p) có q - 1 giá trịtriưtmg
tim kiếm .

Cấu trúc cùa một đỉnh lá trong B -câv cấp p là như sau :
1) Mồi đinh lá có dạng

P r l^ ’ ”^^2, P|-2^,..., <Kq_|, prq-l^'. P|1C\1

t r o n g đ ó q < p, m ỗ i Pri là m ộ t c o n trỏ d ừ liệ u , Pnext c h ỉ đ ế n đ m h lá tiếp

theo QÙa B -cây.

2) Bên trong mỗi đinh lá : K| < K 2 < ... < Kq_i, q < p.

3) Mỗi Pri là một con trỏ dữ liệu trỏ đến bản ghi mà giá trị trurờng
tim kiếrn của nó là Kị ; hoặc trỏ đến khối file chứa bàn ghi ; hoặc trỏi đến
một khối các con trỏ bàn ghi trỏ đến các bản ghi m à 2 ,iá trị trường, tim
kiếm của chúng là Kj nếu trirờiig tim kiếm không phải là một khoá).

4) Mỗi đỉnh lá có ít nhất r(p /2 )l giá trị.


5) rấ t cà các đỉnh lá ờ cùng một mức.
Các con Irỏ trong các đinh trong là các con trỏ cây, trỏ đến các Ikhối
là các đỉnh cây. Trong khi đó, các con trỏ trong các đinh lá là các com trỏ
dữ liệu, trỏ đến các bàn ghi ; hoặc các khối cùa file dữ liệu, ngoại trừ con
trỏ í^nc\t (con trò cây trỏ đến đỉnh lá tiếp theo). Eìằng cách xuấl pháit từ
đỉnh lá bên trái nhất, có thể đi qua các đinh lá như là một danh sách imóc
n ố i ( b ằ n g c á c h s ử d ụ n g c á c c o n trò Pnext)- Đ i ề u đ ó c u n g c ấ p m ộ t truy cậ p
có ihứ tự đến các bản ghi dữ liệu trên trường chi mục. Có thể thêm vào
m ộ t c o n trỏ Pprcvious- V ớ i m ộ t B - c â y trên m ộ t t a r ờ n g k h ô n g k h o á , m ột

264
niức pliụ gián tiếp là cần thiêt, sao clio các con trò là các con tro khối,
chi dén các khôi chứa tập hợp các bán ehi. chi deii các bán ghi hiện tại
troỉiii llle dừ liệu. lỉcyi \ì, mỗi han ulii troiiíỉ các dinli Irong cua B -cây
hao 11(1111 các iiiá trị tim kiì'ni \à các con Iro cảv, nià kliỏim có các con
tro dữ liệu. Một dính trong cua B -câ\ có ihẽ cliứa nhiêu báii uhi h a n là
một cltiih ironu tưcniíi tự ciia lỉ-câv . Như vậy. cùnụ một kích thước khối
(đinh) càp p dối với 13 -cây sẽ lóii hưn đối vói B-cây (như minh hoạ
Irong ví dụ 6 dưới đ â \ ). Í3iều dó có thố dần đén các mức của B -câv lì
hiTii. \ à c ả i t h i ệ n thừi u i a n ti n i k i ê m ( v i c á c c ấ u trúc d ỏ i v ớ i d i n h t r o n g

\ à đ i n h la c u a B -cây là khác nlìau (cãp p có t h è khác n h a u )) . Sử dỊiiiíỉ, p

d ế k ý h i ệ u c ấ Ị ) d ố i \ (Vị c á c d i n h t r o n u . Pia d è k v h i ệ u c ấ p c u a c á c đ i n h lá.

P n l à Siỗ i á n n h a t c á c c o n t r o d ừ l i ệ u tr o n í.’ m ộ t d i n h lá.

aj

))

con trỏ
K2 P,2 K, p.. K Pr q 1
next
đến đình
ỉá tiếp
theo

con trrỏ con trỏ con trỏ con trỏ


dử 1ỉệ‘u dử bệư dử ỉiệu đử lièu

H in h 7.10. Các đinh của B *-c â ỵ


a ) Đỉnh trong của B*-cây VỚI q 1 giâ trị tìm kiếm ;
b) Đỉnh lá của B*-cây với q - 1 giá ín tim kiếm và q ~ 1 con trỏ dữ ỉiệu,

Ví iciiụ 6 : Dè tínli cấp p của một FỊ -cây, giá sứ rầng, trường khoá tim
icm C(ó dộ dái V = 9 byle. kich ihirởc khối B = 512 byte, một con trỏ
àỉi uhii có cỉộ dài 7 byte, một con tro khối có độ dài p = 6 byte giong

265
như troriíi ví dụ 4. MỘI đình trong cùa B^-cây có thể có đến p con trỏ
cày, và p - I giá trị trưcyng tìm kiếm ; phải đặt vừa vào một khối đcrn.
Như vậy, ta có ;
(p X I’ ) + ({p - I ) X V ) < B

(p X 6) + ((p - 1) X 9) < 512

(15 X p ) < 5 2 1 .
Ta có thè chọn p là giá trị lớn nhất thoà mãn bất đẳng thức trên,
p = 34. Giá trị này IcVn h(yn giá trị 23 đối với B-cây, tạo ra một hệ số
phân dầu ra lớn hơn. và có nhiều mục trong mồi đinh trong của B -cây
hơn so với số mục trong các đinh trong của B-cây. Các đinh lá của
B -cây sẽ có cùng giá trị và số con trò (trừ các con trỏ là các con trỏ dừ
liệu và một con trỏ khối). Như vậy, cấp Piá đối với các đinh lá có thể
được tính như sau :

(Piá X (Pr + V)) + p < B

(Piá>:(7 + 9)) + 6 < 5 1 2

( 16 X Piá) < 506

T ừ đó suy ra rầng, mỗi đỉnh lá có thể luxj trữ tới Piá = 31 tổ hợp giá
trị c o n trỏ d ữ liệu (v ớ i g iả thiết c á c c o n trỏ d ừ liệu là c á c c o n trỏ bản ghi).

Cũim nlnr với B-cây, có thể cần thông tin phụ thêm trong mỗi đỉnh
đc cài đặt các thuật toán chèn và loại bỏ. Thông tin này bao gồm : kiểu
cùa đinh (đính trong hay đinh lá), sổ q các mục hiện tại trong đinh, các
con trò dến dinh cha và các đinh anh em. Như vậy, trước khi tính toán
n h ư trê n c h o p v à Pi.'i cầ n phải g iả m kích th ư ớ c khối đi m ộ t lư ợ n g cần

thiết cho thònu tin đó.

Ví dụ sau minh hoạ việc tính số các mục trong một B^-cây nhir
thế nào.
17 dụ 7 : Già sử rằng, ta xây dựng một B^-cây trến trirờng của ví
dụ 6. Dc tính số gần đúng các mục của B^-cây, giả sử rằng, mỗi đinh
đầy 69%. v ề trung binh, mỗi đỉnh trong sẽ có 34 X 0,69, hoặc gần 23
c o n tro v à 2 2 g i á trị. M ồ i đ i n h lá s ẽ l ư u trừ 0 , 6 9 X Piả, h o ặ c g ầ n 21 c o n

266
Irỏ han ghi dừ liệu. Một lỉ -cây sẽ cỏ số trunu binh các mục tại mồi mức
r ih ư s a u ;

( ìốc : ! dìnli 22 mục 23 con trỏ


Mức 1 : 23 dinh 506 mục 529 con trỏ
Mức 2 : 529 dinh 1163Sniục 12167 con tro
Mức lá : 12167 dinh 255507 con tro bán tihi
V(Vi kích thước khối, kích thước con tro và kích thước cua trườnu
tim kièni cho trước như trèn. tính trunu bình một B -cây ba mức lưu trữ
tói 255507 con trỏ ban uhi. So vởi mục của B-câv tươnu ứni>
tronu ví dụ 5. con số này kVii han nhicu.
Các th u ậ t toán Tint kiếm. Chèn, Lo ại hà với B -cây :

Sau dày chúnu ta ntỉhiên cứu các thuật loán thực hiện việc tìm kiêm,
chèn và knú bò các ban ghi dữ liệu đối với B -câv.
1) Tun kiểm : 'l'ir tirớnii cua việc tim kiếm một ban uhi với ụiá trị
triùmt; klioá lìm kiếm K bàng cách sử dụnii B -cày như sau :

- Xuất phát từ dinh íiốc của cây.


- Nêu đinh íiỏc cũníỉ là dinh lá (niihĩa là cây chi í>ôm một đỉnh), thì
tim kiếm luẩn tự ; troim đỏ, nếu cỏ niộl mục <Kj, P|-j> sao cho K = K| thi
theo con tro Pri đê di dến bản ghi phai tim, neii không có Kj như vậy.
!VÌỘC tim kiếm khônu thành c >nẹ.
- Ncu dinh íiổc khônt; phài đinh lá, tlii so sánh K với các K| Ironíỉ
đinli dè xác dịnh đinh con có chứa giá trị tim kiỏm. Nêu K < K| thi theo
con trỏ câv P| dể đi xiiốnti dinh con ; nếu Kị -i < K < Kj*|, thi tỉico con
tro cây P| dê di xuốnu đinh con ; nếu Kq_i < X, thì theo con trò cây I\j đc
Kuổm: dinh con. I.ặp lại quá trình trên cho dốn khi đi đến dược một
đinh lá.

- rim kiêm luẩn tự trong đỉnh lá ; Nêu có Kị thoá mãn Kj - K, thì


Hieo c o n tro d ữ liệu Pri d ể d ^ đ ế n bán eh i d ữ liệu cần tìm ; n ếu k h ô n c c ỏ

K| như vậy, thi việc tim kiếm là không thành côim.

267
ThìiậỊ to á n ỉìh ư s a i i :

iì < kỉìối cỉìứa đinii gốc cùa B -cày ;


rcac/ khoi n ;

n /ỉĩỉc (n khỏtig phai là dinh lá của lĩ -cãv) do

q số các co n trỏ cáv tronti đình n ;

// K <= ii.Kị (*n.Kị la giá trị tìm kiếm thứ i trong đinh n*)

ỉìien n <-- n.Pị (* n.l^i là con trỏ cây thứ i trong dỉnh n

elsc ịf'K > n.Kq.ị


ihcn n n.Pq
ưlse hciĩin

tim kicin dinli 11 đối với m ục i sao cho n.Kị^i < K < n.Ki :

II <- n.Pị
e n il;
n'(ỉ(I khối n
end ;

T iiiì khối II doi với mục (Kj Pj-i), với K "= Kj ; (* tìm đinh lá *)
// tìm íliảv

ỉỉìen đọc khỏi n ic d ữ liệu với địa chi P(-i và lấy bàn ghi ra
cLsc ban uhi với giá trị írư ỏ n g tim kiem K k h ô n g có ở trong file d ừ liệu.
2) Chèn : Tư tiranu cua thuật toán clièn các bản ghi troniĩ mộ!
íV -câ\ ỉ i h i r Síiu :

- ỉ ) ầ u ticn íÌỊnh goc ià đinh duy nhất trong cây (nó cùng là một
đinh lá).
- Ncu lá chưa dầy ihì chèn vào đó, nghĩa ỉà tạo ra một mục gồm :
khoá lìm kiéni cúa bàn íihi, con trỏ chi đến bản ghi đó ờ íronu đinh lá.
~ Khi mộl dính lá là đầv, một ĩnục mới được chèn vào, dinh bị tràn,
cần phai dược phân chia. j mục đầu tiên, với ị = [((Pịá + 1V21 irong đinh
han dầu dược uiừ lại trong dinh đó, các mục còn lại được chiiyén đen

268
một
• dinli lá ?nới (iiá trị
• tim kiem .* tỉiír •ị duợc nhân bán ironu
c. dinh Irorm
V
cha. và một con trỏ phụ chi đên điiilì IIKTÌ sẽ dược tạ o ra troiiu dinh clia.
C'ác uiá IrỊ dó pliài được chèn vào dinh cha theo thú lự dúnu cúa cliung.
Nỏu tlinh Iront; cha dầy, giá trị múi sẽ làm cho nó bị traii. Vi \ậ> . no
phai ciirạc chia ra các mục troim dinh tronii cho đên Pj (con tro thử i) sau
khi chèn giá trị và cơn tro mứi. troim do j = L((p " I )'2j (lirực giữ !ại.
1'ronu khi dó, eiá irị tim kiếm thử ị dược cluiyèn dcỉì đinh cha chứ
khôim phai nhân bán. Một dinh trone niới sẽ kru giũ cac Iiụic tĩoiig diiih
từ P | , 1 cho đến hết. Sự phân chia này có thê truyền đến dirờiiu cho việc
tạo ra mộl dinh nốc mới. và như \ ậ \ tạo ra một mức inởi CÌÌO B -cây.
Ví dụ sau đâv minh hoạ Ihuật toán chèn các bản íilii trong một
lỉ -cây bậc p ^ 3 và Pi§ = 2 (hình 7.11).

Đỉnh gốc 8 0

Chèn vào 1. đỉnh bị tràn, tách ra

Chèn vào 7, chèn vào đỉnh con bên phải, Đỉnh nảy chưa đầy. chẻn 7 vào vị Irí cùa nó.
Chồn vào 3. chèn vảo đỉnh con bên trái. Đỉnh này cũng bị tran, nỏ được chia ra :

Chèn vào 12. chèn vảo đỉnh con bèn phẻi. Đỉnh đầy. phái íâch ra ;

269
3 8
r' N

1 0 3 0 5 0 7 0 8 0 12 0

Chèn vào 9, chèn vào đỉnh lá bèn phải nhất. Đinh chưa đầy, chèn bình thường

Hinh 7.11. Ví dụ minh hoạ thuật toán chèn

3) Loại há : Tư tưởng của việc loại bò ra k h ỏ i íỉ -cây như sau :


K hi m ộ t m ụ c bị lo ạ i b ỏ , n ó th ư ờ n g bị loại b ỏ ra k h ỏ i m ộ t đ in h lá.
N c u n ó c ó m ặt Iro n g m ộ t đ in h tron g, n ó c ũ n g phải bị loại b ỏ ra k h ỏ i đình
đó. 'ĩ r o n g tr ư ờ n g h ợ p , n ó c ó m ặ t ờ đ ỉn h tro n g , g iá trị b ê n trái n ó tro n g
đinh lá phải thay thế nó trona đinh trong (bởi vì bâv giờ giá trị đó là mục
b ên p hải nhất t r o n g c â y c o n ) . V i ệ c loại b ò c ó th ể g à y ra g iả m s ố c á c m ụ c

270
xuống dưới số tối thiểu (nghĩa là dưới một nứa). I rontí trưìmíí hạp dó,
tìm một đinh lá anh em (một đinh lá ntỉay bên phải, hoặc nuay bèn trái
đinh đó) và phân phối lại đinh và các đinh anh em của nó, sao cho ca hai
đều đầy ít nhất là một nửa ; ngược lại, đinh được trộn với dinh anh em
cùa nó và số đình lá sẽ được giám xuống. Một plurơnu pháp thông
ihưímg là phân phối lại các mục với đinh anh em bên trái ; nếu diều dó
không thể làm được với đỉnh anh em bên phái ; nếu diều dỏ cũnu không
được, thì ba đình được trộn lại thành hai đinh. Trong trưèmg licrỊ5 như
vậy, việc thiếu hụt cỏ thể truyền đên các đỉnh bên trong, bới vi sô các
con trỏ cây và giá trị tim kiếm giảm đi 1. Điều đó có thể ỉan Iruyền và
làin giảm các mức của cây.
Ví dụ sau đây (hình 7.12) minh hoạ thuật toán loại bò :

Cây ban đầu :

7 V

1 \ 9
N
\

1 0 5 0 6 0 12 0

Loại bỏ 5 :

271
Loại bò 9 : Gây ra việc giảm Trộn vởi đỉnh bên trái, vẵn giảm dưới mừc, lảm giảm mừc
của cáy

1 6

+
Hình 7.12. Một ví dụ loại bỏ khỏi B -cáy

7.3. TỔNG KẾT

Trong chưcmg này, chúiií> la đã nghiên cứu một số plìirơng pháp tỏ


chức các Hle trên bộ nhớ ngoài. Các phương pháp mà chủng ta nghiên
cứu là tìle hcap, lì!e được sắp thử tự theo inột trườnti, phưcmu pháp íô
chức theo liàni băm (lĩnli). ổ mỗi phirơní> pháp, chúnu ta đã dưa ra cách
thực hiện các phép toán cập nhật các !ìlc và phân tích ưu, tihược dicin
cua tửng phirirnụ pháp.
Việc tìm kiếm các bán ízlii của íìlc dữ liệu sẽ nhanh hem. nêu cỏ sự
hỗ trợ của các file chì mục. Chúng ta cũng đã dè cập đến một số loại nic
chi mục : chi mục chính, chi mục phụ, chi mục nhiều mức và hai trưmig
hợp rièim của chi mục nhiều mức là B-cây và B^-cây. Trontỉ mồi loại
nie chi mục, chúng ta dã dưa ra các vi dụ minh hoạ, nêu rõ lợi thê tìni
kieiiì so với việc không có chi mục.

272
( ’o n nliicii pliuxrnii p h a p lô c h ử e lllc, c ù i ì g n h ư c á c c a c l ì x â ) dựiìu,
lllc chi nuic, do diẽu kiện hạn chc, bạn (ỉọc cỏ ihê lự tirn hicii ihtMìi íroiìg
cá c íòi liệu kỉìãc.

CÂU HỎI ÔN TẠP

1 Đinh nghla cac thuật ngũ’ sau ; trường chỉ mục, trường khoá chính,
trưong phàn cụm, trưòng khoá phụ. neo khối, chỉ mục đày đặc, chì
rnuc khỏng dày đ ặ c (thưa).
2 S ự khác nhau giũ'a cá c chỉ mục phân cụm, chỉ mục phụ, chi mục
chinh là gi ? N hũng sự khác nhau này có ảnh hưởng như thể nào
tó! cach cai đặt c á c chỉ mục đó ? Chì mục nào là dáy đặc, chì mục
nào là không '>
3. Vi sao có nhièu nhất là một chỉ m ục cụm, hoặc một chỉ m ục chính
trẽn một file, n h ư n g có nhiều chỉ mục phụ ?
4 Cní muc nhiều m ứ c cải thiện tính hiệu qu ả của việc tìm kiếm một
file ch? mục nhu' thế nào ?
5. C âp p của một B-cây ià gi ? Mô tả cấu trúc của các đỉnh của B-cày
6. C ấ p p của một B*-cây là gì ? Mô tả cấu trúc của các đỉnh trong và
cá c đỉnh lá cúa B"-cây.
7. B-cây khác với B'-cây như thế nào ? Vi s a o cây th ườ n g đ ư ợ c
xem n h ư là môt cấu trúc truy cập đến íile d ữ liệu ?

BÀI TẠP

1 Xét một đĩa với kích thước khối B = 512 byte, một con trỏ khối
p dài 6 byíe , m ộ t con trỏ bản ghi Pr d à i 7 b y te ; m ộ t file
NHÂN_VIÊN cỏ r = 30000 bản ghi, với độ dài cổ định, Mỗi
bản ghi có các trường sau đây ; Tên (30 byte), Mã_số_NV
(9 byte), Mã_số_ĐV (9 byte), Đja_chỉ (40 bỵte), Số_điện__thoại
(9 byte), Ngày_sinh (8 byte), Giới_tính (1 byte), Mã_nghè
(4 b yte ), L ư ơ n g (4 b yte , số th ự c ) ; 1 b y te phụ th ê m đ ư ợ c sử
dụnq như là cái đánh dấu xoá.
a) Tính kích thước bản ghi R Iheo byte.
b ) T ỉn h hệ số k ế t kh ố i bfr và số c á c kh ố i fi!e b (g iả th iế t tổ
chức không kéo dài),

273
c) Giả thiết rằng, file được sắp xếp theo trường khoá
Mã_số_NV và chúng ta muốn xây dựng một chỉ mục chính
trên Mâ_số_NV. Hãy tính :
- Hệ số kết khối chỉ mục bír, (đó cũng là hệ số phân đoạn
đầu ra chỉ mục fo)
- Số các mục chỉ mục mức đầu tiên và số các khối chỉ
mục mức đầu tiên
- Số các mức cần thiết nếu chúng ta làm nó trờ thành chỉ
mục nhiều mức
- Tổng số các khối đòi hỏi bời chỉ mục nhiều mức
d) Giả sử rằng, file không được xếp thứ tự theo trường khoá
Mã_số_NV và chúng ta muốn xây dựng một chỉ mục phụ
trên Mã_số_NV. Hãy làm lại các tinh toán như đối với
phần c với chỉ mục phụ và so sánh với chỉ mục chính.
e) Giả sử rằng, file không được sắp xếp thứ tự theo trường
không khoá Mã_số_ĐV và chúng ta muốn xây dựng một
chỉ mục phụ trên Mã_số_ĐV. Giả sử có 1000 giá trị khác
nhau của Mâ_số_ĐV và các bản ghi cùa NHÂN_VIÊN
được phân chia trong số các giá trị đó. Hây tính :
- Hệ số phân khối chỉ mục bfrị.
- Số các khối cần thiết bời mức gián tiếp lưu trữ các con
trỏ bản ghi.
- Số các mục chỉ mục mức đầu tiên và số các khối chi
mục mức đầu tiên.
- Số các mức cần thiết nếu chúng ta làm chúng thành chỉ
mục nhiều mức.
f) Giả sử rằng, file được sắp xếp theo trường không khoá
Mã_số_ĐV và chúng ta muốn xây dựng một chỉ mục cụm
trên Mă_số_ĐV, nó sừ dụng các neo khối (mỗi giá trị mới
của Mâ_số_ĐV bắt đầu ở đầu một khối mới). Giả sử có
1000 giá trị khác nhau của Mã_số_ĐV và các bản ghi
NHÂN_ViÊN được phân chia trong số các giá trị đó
Hãy tính :
- Hệ số khối chỉ mục bfrj.

274
- s ố c á c m ụ c c h ỉ m ụ c m ứ c đ ầ u tiê n và số c á c kh ố i c h í
mục mức đầu tiên.
- S ố các mức cần th iế t nếu c h ú n g ta làm nó th à n h c h ỉ
mục nhiều mức.
~ T ổ n g số c á c kh ố i đ ư ợ c đòi hỏi bở i c h ỉ m ụ c n h iề u m ứ c,
g) Giả sử rằng, file không được sếp thứ tự theo trường khoá
Mã_số_NV và chúng ta muốn xây dựng một cấu trúc truy
cập B^-cây Hãy tính :
- C á c c ấ p p và Piá c ủ a B ^-cây.

- S ố các khối mức lá cần thiết nếu các khối đầy khoảng 69%.

- Số các mức cần thiết nếu các đỉnh trong cũng đầy 69%
(làm tròn).
- Tồng số các khối cần thiết được đòi hỏi bời B^-cây.
- Số các truy cập khối cần thiết để tìm kiếm và lấy ra một
bản ghi từ fịle bằng cách sử dụng B""-cây với
Mâ_số_NV cho trước.
e) Lặp lại phần g nhưng với B-cây
2. Một file PART với Part# là trường khoá, với các giá trị của
Part# như sau : 23, 65, 37 60, 46. 92, 48, 71, 56, 59, 18, 21,
10, 74. 78, 15, 16, 20, 24, 28, 39, 43, 47, 50, 69, 75, 8, 49, 33,
38. Giả sử rằng, các giá trị trường tìm kiếm được chèn vào
theo thứ tự đâ cho trong một B^-cây có cấp p = 4 và P|á = 3.
Hãy chỉ ra cây được phát triển như thế nào và hình dạng của
cây cuối cùng.
3. Làm lại bài tập trên với B-cây cấp p = 4.
4. Giả sử rẳng, các giá trị trường tìm kiếm sau đây được loại bỏ
khỏi B^-cây theo thứ tự : 65, 75, 43, 18,20, 92, 59, 37. Hãy
chỉ ra cây được rút lại như thế nào mỗi khi loại bỏ một giá trị
và hình dáng cuối cùng cùa cây.
5. Lặp lại bài tập trên với B-cây.

275
TÀI LIỆU THAM KHẢO

[1] R am ez Elmasri, S ham kant B. N avathe.


Pundamentals of database- system.
A ddison - VVesley, 2000.
[2] H ector G arcia-M olina, Jeffrey D Ullm an, Jennifer VVidom
Database Systems : The Complete Book.
Prentice Hall, 2002.
[3] G eorges Gardarin.
Base de données Obịet & relationnel.
Eyrolles, 2001.
[4] Peter Rob, Carlos Coronel.
Database Systems Design, Implementation and Managerrent.
Wadsworth Publishing Company, 1993
[5] M. T am er ồ z s u , Patrick Va!duiez.
Principles of Distríbuted Database Systems.
Prentice Hall International, Inc., 1991.
[6] G ary VV.Hansen, Jam es V .H ansen.
Database Management and Design.
Prentice Hall,1992.
[7] Steíano Ceri, G iuseppe Pelagatti.
Distnbuted Databases - Principle and Systems.
McGravv - Hill Book C om pany. 1984

276
Mục lục

Lồ'l NỒI ĐAU........................ ........................................................................... 3

Chương I. CÁC KHÁ! NÍẸM c ơ BÁN


1 1, HỆCO’ SỞDỨ'LlEEU..........................................................................................6
1.1. Cơ sở dữ' liệ u ........................................................................................ 6
12 Các tinh chất của một cơ sờ dữ liệu..................................................... 6
1.3, Hệ quản tn cơ sở dữ liệu......................................... .................. 7
1.4. Các đặc trung cứa giảí pháp cơ sớ dữ liệu........................................... 8
15. Các khả nâng cùa một hệ quán tn cơ sở dữ liệu................................ 10
,1.6. Vi dụ về một cơ sờ dữ liệu.................................................................. 12
1,2. NGƯỜI Sử DỰNG HE c o s ớ DŨ’ LIÊU.........................................................14
1 2.1 N g ư ờ i q u ả n tn h ẻ c ơ sở dũ' liêu (Database A d m in is tra to r - D B A ) .... 14
1.2 2. Người thiết kế cơ sờ dữ liệu (Database Designer)............................. 14
1,2.3. Người sử dụng (End User) ................................................................. 15
1.2 4 Người phân tích hê thống và lập trình ứng dụng................................ 15
1.2.5- Nlgười thiết kế va cái đàt hệ quán ín cơ sỡ dữ liệu............................. 15
1.2 6. Người phát triến công cu ..................................................................... 16
1 27. Các thao tác vièn và người bảo t r l...................................................... 16
13. MÔ HÌNH Dữ LiỆU, LƯỌ'C Đ ồ VÀ THẺ HIÊN................................................16
1.3^1. Các loại mô hình cơ sờ dữ li ệ u ........................................................... 17
1.3.2. Lược đồ vá trang thái cơ sờ dữ liệu ................................................... 18
1.4 KIẾN TRÚC HÊ cơ sở DŨ’ LIẼU VÁ Độc LẲP DỮ' LIỆU .............................19
1.4.1, Kiến trúc ba lược đ ồ .............................................................................19
1.4 2. Sự độc iập dữ liệ u ................................................................................21
1 5, NGÔN NGỮ C ơ Sỏ' DỬ’ LIỆU VÀ GIAO DIỆN.............................................. 22
1.51. Các ngôn ngữ hệ quản tn cơ sờ dữ liệu............................................. 22
1.5 2. C á c lo ại giao d iê n hệ q u ả n trị cơ sở dũ' liệ u .................................................. 2 3
1 6. MÔI TRƯỜNG HỆ c ơ s ở Dư LIỆ U ................................................................. 24
1.61. Các môđun thành phần của hê quản trị cơ sờ dử liệu........................ 24
1.6.2 Các tiện ích của hệ cơ sở dũ’ liệu .................................... .................. 27
1.6.3. Các công cụ, môi trường ứng dụng, các phương tiện truyền tin ..... 27
1 6.4, Phân loại các hê quản trị cơ sờ dữ' liệu............................................. 28
CÂU HỎI ỔN TAP................................................. ....................................................29

Chương II. MÔ HÌNH THỰC THÉ - LIẾN KẾT


2 1 Sử DUNG MỔ HÌNH QUAN NIÊM BAC CAO CHO VIỆC THIÉT KÉ
CƠ SỚ DŨ’ LIỆU.......................................................... .....................................30
2 2. CÁC THÀNH PHÀN cơ BẢN CỦA Mổ HINH LIÉN k é t - THỰC THÉ......32
2.2.1, Thực thẻ và thuộc tinh......................................................................... 32
2.2.2. Kiểu thực thề, tập thực thẻ, khóa và tập giá t r ị................................... 34
2.2.3. Kiẻu liên kết, tập liẻn kết vầ cấc thẻ hiên............................................ 37

277
2 2.4 Cấp liên kết, tên vai trò và kiểu liên kết đệ quy...................................38
2 2.5 Các ràng buộc trên các kiểu liên k ế t.................................................... 39
2 2 6. Thuộc tinh của các kiểu lién kết................................................ 41
2 2 7 Các kiểu thực thẻ yếu..........................................................................42
2 3 THIẾT KÉ MÔ HỈNH ER................................................................................. 43
2 4 KHAI n iệ m V é Mô h In h t h ự c THÉ liê n Ké t Mớ Rộ n g .........................48
2.5. TỒNG KẾT....................................................................... ............................... 49
CÂU Hồi ÔN TẠP.................................................................................................... 50
BẢI TA P .................................................................................................................... 51

Chương III. Mỏ HÌNH QUAN HỆ


3.1. CAC KHÁI NIỆM CỦA MÔ HỈNH QUAN HỆ.....................................................55
3.1.1. Miền, thuộc tinh, bộ và quan h ệ ........................................................55
3.1 2. Câc đặc trưng cùa các quan h ệ ....................................................... 58
3 2 CÁC RÀNG BUỘC QUAN HỆ,L ư ợ c Đồ c ơ s ở DỮ LIỆU QUAN HẸ........60
3 2 1 Các ràng buôc mièn............................................................... ..............60
3.2.2. Ràng buộc khoá và ràng buộc trên các giá trị khống xác định (null). 60
3.2.3. Cơ sờ dữ liệu quan hệ và lược đồ cơ sờ dử liệu quan h ệ ................ 62
3.2.4 Toàn vẹn thực thẻ, toàn vẹn tham chiếu và khoá ngoài.................... 64
3.3. CHUYÉN ĐỒI M ồ HỈNH ER THÀNH MÔ HỈNH QUAN HỆ .......................... 66
3 3 1. Các quy tác chuyển đ ỏ i.......................................................................67
3.3 2 Chuyển đỏi mô hình cụ thẻ.................................................................. 71
3 4 TỔNG KÉT..........................................................................................................71
CÂU Hỏi ÔN TAP..................................................................................................... 72
BÀI TẠ P .................................................................................................................... 72

Chương IV. CÁC PHÉP TOÁN TRÊN MÔ HÌNH QUAN HỆ


VÀ NGÓN NGỮ SQL
4.1. CÁC PHÉP TOÁN TRÉN MÔ HÌNH QUAN HỆ................................................ 73
4 11. Các phép toán cập nhật................... ................................................... 73
4 1.2 Các phép toán đại số quan hệ............................................................. 76
4 1.3 Một số ví dụ về truy vấn trong đại số quan h ệ .................................... 89
4.2. NGÔN NGỮ SQL...............................................................................................91
4.2.1 Câu lệnh định nghĩa dữ liệu, các ràng buộc và lược đồ trong SQL. 92
4.2 2. Các truy vấn cơ bản trong ngôn ngữ S Q L..........................................99
4 2.3 Các truy vấn nâng cao........ .............................................................. 110
4 2 4. Câu lệnh INSERT, DELETE, UPDATE trong ngồn ngữ S Q L........ 124
42 5 Khung nhìn (view) trong ngôn ngữ SQL............................................ 128
42 6 Các ràng buộc tổng quát thông qua câu lệnh CREATE ASSERTION ,132
42 7 Một số tính năng khác cùa ngôn ngữ SQL...................................... 133
4 3 VAN ĐÉ T ôi ư u t r u y VAN............................................................... 133
43 1 Các bước xử lý truy vấn và ván đề tối ư u......................................... 133
4.3 2. Các phép biến đổi tương đương của đại số quan h ệ ....................... 135
4 4. TỔNG KÉT ....'................................... .......... ......................................... 139
CẢU HỎI ÔN TAP.................................................................................................... 142
BÀI TAP................................................................................................................... 143

278
Chương V. LÝ THUYẾT THIẾT KẾ c ơ s ở DỮ LIỆU QUAN HỆ
5.1. CAC NGUYÊN TÁC THIÉT KÉ L ư ợ c Đ ồ QUAN H Ệ ................................... 146
5 11 Ngữ nghĩa của các thuộc tính quan h ệ ............................................ 146
5 12 Thông tin dư thừa trong các bộ vâ SỤ' dị thường cập nhật..............147
5 13 Các giá tn không xác định trong các b ộ ........................................... 149
5 14 Sinh ra các bộ giả............................................................................. 149
5.2. CÁC PHỤ THUỘC H ÀM ................................................................................ 150
5 2 1 Định nghĩa phụ thuộc hàm ............................................................... 151
522 Các quy tắc suy diễn đối VỚI các phụ thuộc hàm............................. 153
523 Bao đóng của tập phụ thuộc hầm và bao đóng của tập thuộc tính
dưới một tập phu thuộc hàm ............................................................. 155
524 Bao đống va khóa ' ....................................................................... 158
525 Sự tương đương của các tâp phụ thuộc hàm.................................. 159
5.2 6, Cấc tập phụ thuộc hàm tối thiểu........................................................ 160
5 3 CÁC DANG CHUAN d ự a t r ê n k h ó a C H IN H............................................. 162
5.3.1. Nhập môn về chuẩn hoá................................................................... 162
532 Dạng chuẩn 1 ................................................................................... 164
533 Dạng chuẩn 2 ................................................................................... 165
5.3.4. Dạng chuẩn 3 ................................................................................... 166
535 Dang chuẩn Boyce-Codd.................................................................. 167
5 4. CÁC THUẠT TOÁN THIÉT KÉ c ơ s ở DỮ LIỆU QUAN HỆ
VÀ CAC DANG CHUẮN CAO HƠN.................................... ......................... 168
54 1 Định nghĩa tổng quát các dạng chuẩn..............................................169
5 4 2, Phép tách các lược đồ quan h ệ ........................................................171
5 4.3, Các phụ thuộc hàm đa trị và dạng chuẩn 4 ...................................... 180
5,4 4. Các phụ thuộc nối và dạng chuẩn 5 ................................................. 185
5.5, TỒNG KÉT..'........................... ....................................................................... 187
CÂU HỎI ỔN TAP...................................................................................................188
BẢI TẠP .................................................................................................................. 189

Chương VI. KHÁI NIỆM VÈ c ơ sở DỮ LIỆU PHÂN TÁN


6 1. CÁC KHÁI NIỆM MỞĐẢU..............................................................................191
6 11 Đinh nghĩa........................................................................................ 191
6.1.2 ưu điểm của cơ sở dữ liệu phân tán................................................ 193
6.1.3. Các chức năng phụ thêm của cơ sờ dữ liệu phân tán...................... 195
6.1 4 Cấu trúc cùa một cơ sờ dữ liệu phân tán......... ................................ 196
6 2. THIÉT KÉ CO' s ở DỮ LIỆU PHÂN TÁN......................................................200
6.2.1 Các bước thiết kế cơ sở dữ liệu phân tán.......................................... 200
6.2 2.
Mục tiêu cùa thiết kế cơ sờ dữ liệu phân tán .................................... 2C1
6.2,3Tiếp cận Trên - Xuống (Top-down) và Dưới - Lên (Bottom-Up)... 203
6 2 4.
Thiết kế phân đoạn cơ sở dữ liệ u ....................................................203
6.2 5.
Nhân bản và định vị dữ liệu.............................................................208
6.2.6. Vỉ dụ về phân đoạn, định vị và nhân bản .........................................209
6.3. CÁC KIÉU HỆ THỐNG PHAN TÁN DỮ LIỆU............................................. 214
6 4 Xử LÝ TRUY VAN t r o n g c á c c ơ s ớ d ữ liệ u p h â n t á n .................. 215
6 4 1. Chi phí truyền dữ liệu của xử lý truy vấn phân tán.......................... 215

279
6 4 2. X ử lý tru y vấ n p h â n tấ n sử d ụ n g phé p n ử a n ố i........................ . 218
6,4,3 Phân tách truy vấn và cập nhật......... .................................................219
6 5 TỒNG QUAN VÉ KIÉM TRA CẠNH TRANH VA KHÔi PHỰC TRONG
CÁC CO' S ỡ Dũ' LIÊU PHÂN T Á N ............................ .................... 223
6.6 TÔNG KÉT..................................................................................................... 224
C ẢU H Ỏ IỒ N TAP............................................................................ .........224
MỘT SỔ ĐÀI TAP ................................................................................................... 225

Chương VII. CÁC PHƯƠNG PHẬP Lưụ TRỬ c ơ s ờ DŨ' LIẸU


ở BỌ NHỚ NGOÀI
7 1 Mớ ĐAU......................................................... 228
711 P h â n c ấ p bộ n h ở và c á c cô n g cụ lưu t r ữ ................ .................... 2 2 8
7 12. Lưu trữ cơ sở dữ liệu.........................................................................229
7 2 CÁC CÔNG CỤ LƯU TRỮ PHU....................................................................229
7.2 1 Mô tá phần cứng của dĩa................................. -229
7 2.2 Đât các bản ghi file lên đ ĩa ................................................................. 231
7 2.3 Phân phối các khối file trẻn đ ĩa ..........................................................234
7 2.4 Các cấu trúc chi mục (index) đối với các file ..................................... 246
7I 2.5 C ác chỉ m ục nhiều m ứ c .................................................... ............254
72.6. Các chỉ mục nhiều mức động sửdụng B-cây (B-tree) và B*-cây
(B"4ree). ’ ........................... ............................................................... 256
7 3, TỒNG KẾT.............................................................................. 272
CÂU HỎI ÔN TẠP................T.................................................................................273
BÀI T A P ............................................................................................................... 273
TẢI LIEU THAM K H Ả O ........................................................................................ 276

GIÁO TRÌNH NHẬP MÒN HỆ cơ sở DỮ LIỆU


Mã sổ: 7 H 6 6 2 y 9 - DAỈ
In 1.500 bản (QĐ : 09). khổ 16 X 24 cm. In tại Xi nghiệp In ACS Việt Natri
Địa c h ỉ; Km 10, Phạm Vần Đống - Dươiiíi Kinh - í liii PỉuMie
Sỏ' ĐKKH xuất bản : 04 2009/CXB/212 2117/GD.
In xong và nộp lưu chiểu tháng 2 năm 2009.

You might also like