26
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

Cd 2 CSDL nang cao

Embed Size (px)

Citation preview

Page 1: Cd 2 CSDL nang cao

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

Page 2: Cd 2 CSDL nang cao

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

Page 3: Cd 2 CSDL nang cao

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)

Page 4: Cd 2 CSDL nang cao

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

Page 5: Cd 2 CSDL nang cao

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¸.

Page 6: Cd 2 CSDL nang cao

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;

Page 7: Cd 2 CSDL nang cao

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

Page 8: Cd 2 CSDL nang cao

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}.

Page 9: Cd 2 CSDL nang cao

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.

Page 10: Cd 2 CSDL nang cao

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;

Page 11: Cd 2 CSDL nang cao

11

XÐt vÝ dô

GIAOVIEN

LOP MONHOC

DAY

Thoigian

(0, n)

(1, n) (1, n)

Id_gv Hoten

Id_lop Id_monhoc Sotiet

Page 12: Cd 2 CSDL nang cao

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)

Page 13: Cd 2 CSDL nang cao

13

ChuyÓn ®æi m« h×nh ER thµnh m« h×nh h íng

®èi t îng

Page 14: Cd 2 CSDL nang cao

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.

Page 15: Cd 2 CSDL nang cao

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

Page 16: Cd 2 CSDL nang cao

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>);

Page 17: Cd 2 CSDL nang cao

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)

Page 18: Cd 2 CSDL nang cao

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)

Page 19: Cd 2 CSDL nang cao

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)

Page 20: Cd 2 CSDL nang cao

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>);

Page 21: Cd 2 CSDL nang cao

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)

Page 22: Cd 2 CSDL nang cao

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.

Page 23: Cd 2 CSDL nang cao

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)

Page 24: Cd 2 CSDL nang cao

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)

Page 25: Cd 2 CSDL nang cao

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

Page 26: Cd 2 CSDL nang cao

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.