Upload
hoang-chi-dung
View
461
Download
3
Tags:
Embed Size (px)
Citation preview
1
M« h×nh ER §Ò xuÊt bëi P. Chen (1976) BiÓu diÔn d íi d¹ng s¬ ®å (s¬ ®å
ER) C¸c thµnh phÇn chÝnh:
TËp thùc thÓ Mèi quan hÖ: is-a, ph¶n x¹, nhÞ
nguyªn, ®a nguyªn
2
M« h×nh ER cho phÐp sö dông c¸c thuéc tÝnh ®a trÞ vµ phøc hîp.
C¸c thuéc tÝnh phøc hîp cã trong mét tËp thùc thÓ lµ cã thÓ lång nhau.
C¸c tËp thùc thÓ thuéc d¹ng chuÈn PNF (tån t¹i thuéc tÝnh kho¸ vµ c¸c thuéc tÝnh phøc hîp ®Òu cã kho¸ bé phËn).
Mét sè quy íc
VÝ dô vÒ m« h×nh ER
DAY
NGUOI
GIAOVIEN SINHVIEN
LOP
HOCTAI
ID_NGUOI HOTEN NGAYSINH
LUONG
TRINHDO_NGOAINGU
NGOAINGU TRINHDO
DIEM_TB
TENLOP
ID_LOP
(1,n) (1,n)
(1,n) (1,1)
MONHOC
ID_MON SOTIET
THOIGIAN
(1,n)
CHUNHIEM (0,1)
(1,1)
Rµng buéc hµmRµng buéc hµm gi÷a c¸c tËp thùc thÓ trong mét mèi quan hÖ ®a nguyªn
§ îc x©y dùng t ¬ng tù nh rµng buéc phô rµng buéc phô thuéc hµmthuéc hµm trong m« h×nh quan hÖ:
Mét sè kh¸i niÖm trong m« h×nh
quan hÖ
C¸c kh¸i niÖm t ¬ng øng xÐt trªn mét mèi quan hÖ ®a nguyªn cña m« h×nh ER
L îc ®å quan hÖ R Mèi quan hÖ ®a nguyªn R
Thuéc tÝnh cña R TËp thùc thÓ tham gia vµo mèi quan hÖ R
Quan hÖ trªn R (tËp c¸c bé)
TËp c¸c thÓ hiÖn cña mèi quan hÖ R
Thµnh phÇn cña mét bé trong mét quan hÖ: gi¸ trÞ cña mét thuéc tÝnh
Thµnh phÇn cña mét thÓ hiÖn trong mèi quan hÖ R: thùc thÓ (®Þnh danh ®èi t îng)
Rµng buéc phô thuéc hµm trong l îc ®å quan hÖ R
Rµng buéc hµm gi÷a c¸c tËp thùc thÓ tham gia vµo mèi quan hÖ ®a nguyªn R
5
... h×nh thøc ho¸ c¸c kh¸i niÖm
ThÓ hiÖn cña mèi quan hÖ R: t = (e1, e2, ..., ek) R víi e1, e2, ..., ek thuéc c¸c tËp thùc thÓ E1, E2, ..., Ek
ChiÕu cña mét thÓ hiÖn trªn tËp X: ký hiÖu t[X], víi X (víi = {E1, ..., Ek})
Rµng buéc hµm gi · c¸c tËp thùc thÓ tham gia vµo mèi quan hÖ R: XÐt X, Y {E1, ..., Ek}, X Y nÕu: t1, t2 R : t1[X] = t2[X] t1[Y]= t2[Y]
Kho¸ cña mét mèi quan hÖ ®a nguyªn: X ® îc gäi lµ kho¸ cña R nÕu tháa m·n hai ®iÒu kiÖn sau:(1). R tháa rµng buéc hµm X (hay X lµ siªu kho¸)(2). Kh«ng tån t¹i tËp X X sao cho X lµ siªu kho¸.
6
ThuËt to¸n t×m mét kho¸ cña mèi quan hÖ R
+ Vµo: Mèi quan hÖ ®a nguyªn R trªn = {E1, ..., Ek} tho¶ F (tËp c¸c rµng buéc hµm trªn mèi quan hÖ R)
+ Ra: Mét kho¸ K cña mèi quan hÖ R+ Ph ¬ng ph¸p: Function Key(, F);1. K := ;2. for mçi tËp thùc thÓ E trong do3. if R tho¶ K{E} then4. K := K{E}5. endif;6. endfor;7. return K;
7
XÐt vÝ dô tr íc ...
GIAOVIEN
LOP MONHOC
DAY
Thoigian
(0, n)
(1, n) (1, n)
Id_gv Hoten
Id_lop Id_monhoc Sotiet
Gi¶ sö cã mét rµng buéc hµm {MONHOC, LOP} {GIAOVIEN}
K = {MONHOC, LOP} lµ mét kho¸ cña mèi quan hÖ DAY
8
Hai tÝnh chÊt TÝnh chÊt 1. XÐt mèi quan hÖ ®a nguyªn
R trªn = {E1, ..., Ek}, khi ®ã: chØ sè cùc ®¹i cña b¶n sè thuéc cung nèi E vµ R b»ng 1, khi vµ chØ khi E lµ mét kho¸ cña R (hay: E ).
TÝnh chÊt 2. XÐt mèi quan hÖ nhÞ nguyªn R gi÷a hai tËp thùc thÓ E1 vµ E2, khi ®ã: mèi quan hÖ R lµ mèi quan hÖ nhiÒu-nhiÒu, khi vµ chØ khi kho¸ cña R lµ = {E1, E2}.
9
T¸ch mét mèi quan hÖ ®a nguyªn thµnh c¸c mèi quan hÖ nhÞ nguyªn
ThuËt to¸n. + Vµo: Mèi quan hÖ R gi÷a c¸c tËp thùc thÓ E1,
E2, ..., Ek. B¶n sè ®Ýnh kÌm trªn mçi cung nèi c¸c tËp Ei vµ R lµ (mini, maxi), víi i = 1, 2,..., k (k 2).
+ Ra: Thay R bëi k mèi quan hÖ nhÞ nguyªn Ri gi÷a c¸c tËp thùc thÓ Ei vµ tËp thùc thÓ E (lµ tËp thùc thÓ biÓu diÔn mèi quan hÖ ®a nguyªn R), víi i = 1, 2, ..., k.
10
Ph ¬ng ph¸p ph©n t¸chProcedure Phan_tach_MQH_da_nguyen;1. Mèi quan hÖ R ® îc thay bëi tËp thùc thÓ E cã cïng
tËp c¸c thuéc tÝnh (mét thÓ hiÖn (e1, ..., en) R cho t ¬ng øng víi mét thùc thÓ e E);
2. For i := 1 to k do3. X©y dùng mèi quan hÖ Ri gi÷a tËp thùc thÓ Ei víi tËp
thùc thÓ E, sao cho øng víi mçi thùc thÓ e E biÓu diÔn thÓ hiÖn (e1, ..., en) R (víi ej Ej vµ j = 1, ..., k) cho t ¬ng øng mét thÓ hiÖn (e, ei) Ri (víi ei Ei);
4. G¸n b¶n sè cña cung nèi Ri vµ Ei lµ (mini, maxi);
5. G¸n b¶n sè cña cung nèi Ri vµ E lµ (1, 1);6. Endfor;End Chuyen_doi_MQH_da_nguyen;
11
XÐt vÝ dô
GIAOVIEN
LOP MONHOC
DAY
Thoigian
(0, n)
(1, n) (1, n)
Id_gv Hoten
Id_lop Id_monhoc Sotiet
12
... kÕt qu¶ cña viÖc ph©n t¸ch
GIAOVIEN
LOP MONHOC
GIANG
Thoigian
(0, n)
(1, n) (1, n)
Id_gv Hoten
Id_lop Id_monhoc Sotiet
LICHDAY
(1, 1)
BOTRI GOMCO
(1, 1) (1, 1)
13
ChuyÓn ®æi m« h×nh ER thµnh m« h×nh h íng
®èi t îng
14
Ph ¬ng ph¸p thùc hiÖn viÖc chuyÓn ®æi trong nghiªn cøu nµy
Mçi tËp thùc thÓ cña m« h×nh ER chuyÓn ®æi thµnh mét líp ®èi t îng cã cïng tªn vµ cïng tËp thuéc tÝnh. C¸c thuéc tÝnh ®a trÞ vµ phøc hîp cña m« h×nh ER ® îc chuyÓn thµnh c¸c thuéc tÝnh ®a trÞ (sö dông tõ kho¸ set) vµ phøc hîp (sö dông tõ kho¸ tuple) cña m« h×nh h íng ®èi t îng.
X©y dùng c¸c quy t¾c chuyÓn ®æi c¸c mèi quan hÖ: is-a, nhÞ nguyªn, ph¶n x¹, ®a nguyªn.
X©y dùng thuËt to¸n chuyÓn ®æi. ViÖc x¸c ®Þnh c¸c ph ¬ng thøc cho mçi líp ®èi t
îng ® îc thùc hiÖn sau ®ã bëi ng êi thiÕt kÕ hÖ thèng CSDL.
Quy t¾c 1. (Quy t¾c chuyÓn ®æi mèi quan hÖ is-a) NÕu tËp thùc thÓ A lµ cã mèi quan hÖ is-a víi tËp thùc thÓ B th× líp A sÏ kÕ thõa tÊt c¶ c¸c thuéc tÝnh trong líp B (tøc: líp A lµ líp con cña líp B).
VÝ dô:
M« h×nh ER
Class NGUOI properties Id: String; Hoten: String; Tuoi: Integer;End NGUOI.
Class NHANVIEN inherits: NGUOI; properties Luong: Integer;End NHANVIEN.
M« h×nh h íng ®èi t îng
M« h×nh quan hÖNGUOI(id, hoten, tuoi)NHANVIEN(id, luong)
NGUOI
NHANVIEN
is-a
id
hoten
luong
tuoi
C¸c quy t¾c chuyÓn ®æi
16
Quy t¾c 2. (Quy t¾c chuyÓn ®æi mèi quan hÖ nhÞ nguyªn kh«ng cã thuéc tÝnh)
NÕu hai tËp thùc thÓ A vµ B cã mèi quan hÖ R, ngoµi c¸c thuéc tÝnh trong tËp thùc thÓ A vµ B, mçi líp A vµ B ® îc bæ sung thªm thuéc tÝnh R (ta quy íc mèi quan hÖ nhÞ nguyªn vµ thuéc tÝnh mèi quan hÖ t ¬ng øng ® îc ®Æt cïng tªn). XÐt hai tr êng hîp sau:* Tr êng hîp 1: NÕu chØ sè cùc ®¹i cña cung nèi A vµ R lµ 1, th× thuéc tÝnh R trong líp A sÏ ® îc khai b¸o:
<Tªn thuéc tÝnh R>: <Líp B>;* Tr êng hîp 2: NÕu chØ sè cùc ®¹i cña cung nèi A vµ R lµ n, th× thuéc tÝnh R trong líp A sÏ ® îc khai b¸o:
<Tªn thuéc tÝnh R>: set(<Líp B>);
VÝ dô: (Mèi quan hÖ 1-1)M« h×nh ER M« h×nh h íng ®èi t îng
Class TRUONGKHOA properties Id_tk: String; Hoten: String; Tuoi: Integer; Quanly: KHOA;End TRUONGKHOA.
Class KHOA properties Id_k: String; Tenkhoa: String; Sodienthoai: String; Quanly: TRUONGKHOA;End KHOA.
M« h×nh quan hÖ TRUONGKHOA(id_tk, hoten, tuoi)
KHOA(id_k, tenkhoa, sodienthoai, id_tk)
TRUONGKHOA
KHOA
quanly
id_tk
hoten
tenkhoa
tuoi
id_k
sodienthoai
(1,1)
(1,1)
VÝ dô: (Mèi quan hÖ 1-nhiÒu)M« h×nh ER
GIAOVIEN
KHOA
thuoc
id_gv
hoten
tenkhoa
tuoi
id_k
sodienthoai
(1,1)
(1,n)
M« h×nh h íng ®èi t îng
Class GIAOVIEN properties Id_gv: String; Hoten: String; Tuoi: Integer; Thuoc: KHOA;End GIAOVIEN.Class KHOA properties Id_k: String; Tenkhoa: String; Sodienthoai: String; Thuoc: set(GIAOVIEN);End KHOA.
M« h×nh quan hÖ GIAOVIEN(id_gv, hoten, tuoi, id_k)
KHOA(id_k, tenkhoa, sodienthoai)
VÝ dô: (Mèi quan hÖ nhiÒu-nhiÒu)
M« h×nh h íng ®èi t îng
Class GIAOVIEN properties Id_gv: String; Hoten: String; Tuoi: Integer; Giang: set(MON);End GIAOVIEN.
Class MON properties Id_m: String; Tenmon: String; Sotiet: Integer; Giang: set(GIAOVIEN);End MON.
M« h×nh ER
M« h×nh quan hÖ GIAOVIEN(id_gv, hoten, tuoi)MON(id_m, tenmon, sotiet)GIANG(id_gv, id_m)
GIAOVIEN
MON
giang
hoten
tenmon
tuoi
id_m
sotiet
id_gv
(1,n)
(1,n)
20
Quy t¾c 3. (Quy t¾c chuyÓn ®æi mèi quan hÖ ph¶n x¹)
XÐt mét tËp thùc thÓ A cã mèi quan hÖ R vµo chÝnh tËp A (R kh«ng cã c¸c thuéc tÝnh ®Ýnh kÌm). Gäi r lµ mét trong hai vai trß cña mèi quan hÖ ph¶n x¹ nµy. Khi ®ã, tªn cña vai trß r sÏ ® îc dïng ®Ó biÓu diÔn thuéc tÝnh mèi quan hÖ trong líp A t ¬ng øng. Cô thÓ:* Tr êng hîp 1: NÕu vai trß r cã chØ sè cùc ®¹i lµ 1, th× bæ sung thuéc tÝnh mèi quan hÖ trong líp A víi khai b¸o:
<Tªn vai trß r>: <Líp A>;* Tr êng hîp 2: NÕu vai trß r cã chØ sè cùc ®¹i lµ n, th× bæ sung thuéc tÝnh mèi quan hÖ trong líp A cã khai b¸o:
<Tªn vai trß r>: set(<Líp A>);
VÝ dô: (Mèi quan hÖ ph¶n x¹)
M« h×nh h íng ®èi t îng
Class NGUOI properties Id: allID; Hoten: String; Tuoi: Integer; Con: set(NGUOI); Cha, Me: NGUOI;End GIAOVIEN.
M« h×nh ER
M« h×nh quan hÖ NGUOI(id, hoten, tuoi, id_cha, id_me)
NGUOI
Sinh
id
hoten
tuoi con (0,n)
cha, me (1,1)
22
Quy t¾c 4. (Quy t¾c chuyÓn ®æi mèi quan hÖ nhÞ nguyªn cã kÌm thuéc tÝnh)
NÕu hai tËp thùc thÓ A1 vµ A2 cã mèi quan hÖ R lµ mèi quan hÖ cã kÌm c¸c thuéc tÝnh, th× ngoµi hai líp A1 vµ A2 t ¬ng øng ta cÇn bæ sung thªm líp míi C ®ãng vai trß trung gian. Cô thÓ:
- Líp A1 ® îc bæ sung thuéc tÝnh R1 cã khai b¸o:
<Tªn thuéc tÝnh R1>: <Líp C>; nÕu max(A1; R) = 1, hoÆc:
<Tªn thuéc tÝnh R1>: set(<Líp C>) nÕu max(A1; R) = n.
- Líp A2 ® îc bæ sung thuéc tÝnh R2 cã khai b¸o t ¬ng tù líp A1.
- Líp C bao gåm c¸c thuéc tÝnh sau: C¸c thuéc tÝnh cña mèi quan hÖ R, vµ hai thuéc tÝnh R1, R2 cã khai b¸o:
<Tªn thuéc tÝnh R1>: <Líp A1>;
<Tªn thuéc tÝnh R2>: <Líp A2>;
L u ý: Quy t¾c chuyÓn ®æi mèi quan hÖ ph¶n x¹ cã kÌm thuéc tÝnh ® îc thùc hiÖn t ¬ng tù quy t¾c trªn.
M« h×nh quan hÖGIAOVIEN(id_gv, hoten, tuoi)KHOA(id_k, tenkhoa, sodienthoai)GVIEN_KHOA(id_gv, id_k, tongsotiet)
M« h×nh h íng ®èi t îng
Class GIAOVIEN properties Id_gv: allID; Hoten: String; Tuoi: Integer; Giang1: set(GVIEN_KHOA);End GIAOVIEN.Class KHOA properties Id_k: allID; Tenkhoa: String; Sodienthoai: String; Giang2: set(GVIEN_KHOA);End KHOA.Class GVIEN_KHOA properties Id_gvien_khoa: allID; Tongsotiet: Integer; Giang1: GIAOVIEN; Giang2: KHOA;End GVIEN_KHOA.
VÝ dô: M« h×nh ER
GIAOVIEN
KHOA
giang
hoten
tenkhoa
tuoi
id_k
sodienthoai
id_gv
tongsotiet
(1,n)
(1,n)
24
Quy t¾c 5. (Quy t¾c chuyÓn ®æi mèi quan hÖ ®a nguyªn)
NÕu k tËp thùc thÓ A1, ..., Ak (k > 2) cã quan hÖ víi nhau th«ng qua mèi quan hÖ ®a nguyªn R bËc k, th× ngoµi k líp A1, ..., Ak ta sÏ bæ sung thªm líp míi C ®ãng vai trß trung gian. Cô thÓ:- Mçi líp Ai ® îc bæ sung thuéc tÝnh Ri cã khai b¸o:
<Tªn thuéc tÝnh Ri>: <Líp C>; nÕu max(Ai; R) = 1 hoÆc khai b¸o: <Tªn thuéc tÝnh Ri>: set(<Líp C>); nÕu max(Ai; R) = n (víi i = 1, 2, ..., k).- Líp C bao gåm c¸c thuéc tÝnh sau: C¸c thuéc tÝnh cña mèi quan hÖ R, vµ c¸c thuéc tÝnh Ri cã khai b¸o:
<Tªn thuéc tÝnh Ri>: <Líp Ai>; (víi i = 1, 2, ..., k)
25
VÝ dô: (mèi quan hÖ ®a nguyªn)
GIAOVIEN
LOP MONHOC
DAY
Thoigian
(0, n)
(1, n) (1, n)
Id_gv Hoten
Id_lop Id_monhoc Sotiet
26
.... kÕt qu¶ chuyÓn ®æi thµnh m« h×nh h íng ®èi t îng
Class GIAOVIEN properties Id_gv: String; Hoten: String; Giang: set(LICHDAY);End GIAOVIEN.
Class LOP properties Id_lop: String; Botri: set(LICHDAY);End LOP.
Class MONHOC properties Id_monhoc: String; Sotiet: Integer; Gomco: set(LICHDAY);End MONHOC.
Class LICHDAY properties Thoigian: String; Giang: GIAOVIEN; Gomco: MONHOC; Botri: LOP;End LICHDAY.