Chuyển đổi mụ hỡnh EER sang mụ hỡnh quan hệ

Một phần của tài liệu Tìm hiểu các phụ thuộc bao hàm trong mô hình quan hệ và ứng dụng vào việc chuyển đổi sang mô hình EER (Trang 36 - 46)

Cho đến nay đó cú nhiều hệ thống thụng tin, đặc biệt là cỏc CSDL quan hệ, được thiết kế xuất phỏt từ mụ hỡnh EER. Theo cỏch này, người ta xem quỏ trỡnh thiết kế một CSDL phải trải qua ba giai đoạn. Đầu tiờn là giai đoạn thiết kế mụ hỡnh khỏi niệm, tiếp đến là giai đoạn thiết kế mụ hỡnh logic, và cuối cựng là giai đoạn thiết kế CSDL vật lý. Việc chuyển đổi một mụ hỡnh EER thành mụ hỡnh quan hệ là thuộc giai đoạn thiết kế mụ hỡnh logic từ một mụ hỡnh khỏi niệm.

Để làm cơ sở cho việc chuyển đổi mụ hỡnh quan hệ sang mụ hỡnh EER được bàn đến trong chương sau, một phương phỏp chuyển đổi truyền thống từ mụ hỡnh EER sang mụ hỡnh quan hệ được đề cập đến trong phần này. Phương phỏp này thường được sử dụng để thiết kế cỏc CSDL quan hệ trong giai đoạn thiết kế logic với mụ hỡnh khỏi niệm ban đầu là mụ hỡnh EER.

Kết quả của việc chuyển đổi này là tập cỏc quan hệ và cỏc khoỏ chớnh của chỳng. Ngoài ra, nhằm chi tiết hoỏ cỏc kết quả đầu ra của thuật toỏn chuyển đổi, cũng như xỏc định rừ ngữ nghĩa mối quan hệ giữa cỏc quan hệ (cỏc bảng) bờn trong mụ hỡnh quan hệ thu được, chỳng tụi cũn quan tõm đến việc xỏc định rừ thụng tin về tập cỏc khoỏ ngoài trờn mỗi quan hệ kết quả, đồng thời thực hiện việc hỡnh thức hoỏ thuật toỏn chuyển đổi này thụng qua một số định nghĩa, ký hiệu quy ước và cỏc thuật toỏn tựa Pascal.

Cỏc quan hệ thu được cú thể xem là kết quả của một ỏnh xạ từ cỏc tập thực thể và cỏc mối quan hệ tương ứng. Thuật toỏn thực hiện việc ỏnh xạ từ mụ hỡnh EER vào mụ hỡnh quan hệ trải qua cỏc bước: chuyển đổi cỏc tập thực thể mạnh, chuyển đổi cỏc tập thực thể yếu, chuyển đổi mối quan hệ nhị nguyờn 1-1, chuyển đổi mối quan hệ nhị nguyờn 1-nhiều, chuyển đổi mối quan hệ nhị nguyờn nhiều-nhiều, chuyển đổi mối quan hệ đa nguyờn, chuyển đổi thuộc tớnh đa trị, và chuyển đổi mối quan hệ is-a.

Trước tiờn, ta quy ước một số ký hiệu như sau:

EER: mụ hỡnh EER mà ta muốn thực hiện việc chuyển đổi (đầu vào của thuật toỏn)

DB: tập cỏc quan hệ trong mụ hỡnh quan hệ (đầu ra của thuật toỏn)

UR: tập tất cả cỏc thuộc tớnh của quan hệ R

E: tập tất cả cỏc thuộc tớnh đơn trị của tập thực thể E

R: tập tất cả cỏc thuộc tớnh (đơn trị) của mối quan hệ R

PKR: khoỏ chớnh của quan hệ R

KE: tập cỏc thuộc tớnh khoỏ của tập thực thể E

pkW: khoỏ bộ phận của một tập thực thể yếu W

FKR: tập tất cả cỏc khoỏ ngoài của quan hệ R

min(E; R), max(E; R): cỏc chỉ số cực tiểu và cực đại của bản số trờn cung nối tập thực thể E với mối quan hệ R

Ngoài ra, để chỉ FK là một khoỏ ngoài của quan hệ R (hay FK FKR) tham chiếu đến khoỏ chớnh của quan hệ R’, ta sử dụng ký hiệu: FKPKR’. Tờn cỏc thuộc tớnh cú trong FK cú thể khỏc so với tờn cỏc thuộc tớnh cú trong PKR’, nhưng FK cần thoả món đồng thời hai điều kiện sau:

(1). Cỏc thuộc tớnh trong FK cú cựng miền trị với cỏc thuộc tớnh trong PKR’; (2). Giỏ trị của FK tại một bộ t thuộc R chỉ cú thể là null hoặc bằng giỏ trị của

PKR’ tại một bộ t’ nào đú thuộc R.

Cỏc điều kiện trờn của khoỏ ngoài FK đặc tả một ràng buộc toàn vẹn tham chiếu giữa hai quan hệ R R’.

Lưu ý rằng, để chỉ ràng buộc toàn vẹn tham chiếu này, đồng thời tờn cỏc thuộc tớnh cú trong FK phải trựng tờn với cỏc thuộc tớnh tương ứng cú trong PKR’, ta ký hiệu:

FKPKR’

Thuật toỏn chuyển đổi từ mụ hỡnh EER thành mụ hỡnh quan hệ trải qua cỏc bước sau.

Bước 1. Chuyển đổi cỏc tập thực thể mạnh

Tương ứng với mỗi tập thực thể mạnh E trong EER, ta tạo ra một quan hệ R

chứa tất cả cỏc thuộc tớnh đơn trị của tập thực thể đú. Đối với mỗi thuộc tớnh đơn trị và phức hợp trờn E phải được chuyển thành cỏc thuộc tớnh đơn trờn R. Chuyển đổi này nhằm cho phộp biểu diễn mỗi thực thể của E bởi một bộ của quan hệ R. Ta cú:

UR = E. Ngoài ra, chọn PKR là một trong những thuộc tớnh khoỏ của E. Nghĩa là:

PKR = k, với k KE. Như vậy, ta cú thuật toỏn chuyển đổi cỏc tập thực thể mạnh là như sau.

Thuật toỏn 2.1. Chuyển đổi cỏc tập thực thể mạnh

+ Vào: Cỏc tập thực thể mạnh E thuộc EER

+ Ra: Cỏc quan hệ R thuộc DB và cỏc PKRtương ứng

+ Phương phỏp: (adsbygoogle = window.adsbygoogle || []).push({});

1. DB:= ;

2. for mỗi tập thực thể mạnh E trong EER do

3. Tạo ra một quan hệ R với UR = E; 4. Chọn PKR = k, với k KE;

5. DB := DBẩ {R}; 6. endfor;

Bước 2. Chuyển đổi cỏc tập thực thể yếu

Với mỗi tập thực thể yếu W của tập thực thể chủ E trong EER, ta tạo ra một quan hệ R chứa tất cả cỏc thuộc tớnh đơn trị của W (cỏc thuộc tớnh phức hợp cũng được chuyển thành cỏc thuộc tớnh đơn) cộng với cỏc thuộc tớnh khoỏ ngoài của R tham chiếu đến khoỏ chớnh của quan hệ R’ tương ứng với tập thực thể chủ E. Tức: UR = WF, với: F FKR: FPKR’. Chọn PKR là hợp của khoỏ bộ phận của W với PKR’. Hay: PKR

= pkWF.

Một cỏch tổng quỏt, nếu một tập thực thể yếu W cú thể cú nhiều tập thực thể chủ thỡ thuật toỏn chuyển đổi cỏc tập thực thể yếu là như sau.

Thuật toỏn 2.2. Chuyển đổi cỏc tập thực thể yếu

+ Vào: Cỏc tập thực thể yếu W thuộc EER

+ Ra: Cỏc quan hệ R thuộc DB và cỏc PKR, FKR tương ứng

+ Phương phỏp:

1. for mỗi tập thực thể yếu W trong EER do

2. Xỏc định cỏc tập thực thể chủ của W, giả sử là E1, E2, ..., Ek;

3. Xỏc định R1, R2, ..., Rk lần lượt là cỏc quan hệ tương ứng với cỏc tập thực thể chủ E1, E2, ..., Ek;

4. Tạo ra một quan hệ R với k

i i W R F U 1  ẩ   trong đú: i R i R i FK :F PK F   ; 5. Chọn k i i W R pk F PK 1  ẩ  ; 6. Chọn FKR {Fi|i1,2,...,k}; 7. DB := DBẩ {R}; 8. endfor;

Bước 3. Chuyển đổi mối quan hệ nhị nguyờn 1-1

Với mỗi mối quan hệ R là mối quan hệ nhị nguyờn 1-1 trong EER, ta xỏc định cỏc quan hệ S S’ tương ứng với cỏc tập thực thể E E’ tham gia vào mối quan hệ

R. Khi đú, tuỳ thuộc vào sự tham gia của E E’ đối với mối quan hệ R là toàn bộ hay cục bộ (chỉ số cực tiểu của bản số tại cung nối tương ứng trong sơ đồ EER là 1 hay 0) mà ta cú cỏc chọn lựa cỏch thực hiện khỏc nhau cho việc chuyển đổi.

Thuật toỏn 2.3. Chuyển đổi mối quan hệ 1-1

+ Vào: Cỏc mối quan hệ 1-1 trờn EER

+ Ra: Cỏc quan hệ thuộc DB kốm khoỏ chớnh, khoỏ ngoàitương ứng với mỗi quan hệ

+ Phương phỏp:

1. for mỗi mối quan hệ R là quan hệ 1-1 trong EER do

2. Xỏc định cỏc tập thực thể E E’ tham gia vào mối quan hệ R; 3. Xỏc định cỏc quan hệ S S’ tương ứng với cỏc tập thực thể E E’; 4. if min(E; R)= 1 then

5. US:= US ẩRF, với FFKS: FPKS’;

6. FKS := FKSẩ {F};

7 Ghi nhận đặc tớnh unique cho khoỏ ngoài FFKS;

8. else (adsbygoogle = window.adsbygoogle || []).push({});

9. US’:= US’ẩRF’, với F’ FKT: F’ PKS; 10. FKS’ := FKS’ẩ {F’};

11. Ghi nhận đặc tớnh unique cho khoỏ ngoài F’FKS’;

12. endif;

13. endfor;

Bước 4. Chuyển đổi mối quan hệ nhị nguyờn 1-nhiều

Với mỗi mối quan hệ R là mối quan hệ nhị nguyờn nhiều-1 trong EER, ta xỏc định quan hệ S tương ứng với tập thực thể tham gia vào mối quan hệ R ở “phớa nhiều” (cung nối tập thực thể này với R cú chỉ số cực đại của bản số là 1), và S’ là quan hệ tương ứng ở “phớa 1” (cung nối tập thực thể này với R cú chỉ số cực đại của bản số là n).

Thuật toỏn 2.4. Chuyển đổi mối quan hệ 1-nhiều

+ Vào: Cỏc mối quan hệ 1-nhiều trờn EER

+ Ra: Cỏc quan hệ thuộc DB kốm khoỏ chớnh, khoỏ ngoàitương ứng với mỗi quan hệ

+ Phương phỏp:

1. for mỗi mối quan hệ R là quan hệ 1-nhiều trong EER do

2. Xỏc định cỏc tập thực thể E (“phớa nhiều”) và E’ (“phớa 1”) tham gia vào mối quan hệ R;

3. Xỏc định cỏc quan hệ S S’ tương ứng với cỏc tập thực thể E E’; 4. US:= US ẩRF, với FFKS: FPKS’;

5. FKS := FKSẩ {F}; 6. endfor;

Bước 5. Chuyển đổi mối quan hệ nhị nguyờn nhiều-nhiều

Ta cú thuật toỏn thực hiện bước chuyển đổi này như sau.

Thuật toỏn 2.5. Chuyển đổi mối quan hệ nhiều-nhiều

+ Vào: Cỏc mối quan hệ nhiều-nhiều trờn EER

+ Ra: Cỏc quan hệ thuộc DB kốm khoỏ chớnh, khoỏ ngoàitương ứng với mỗi quan hệ

+ Phương phỏp:

1. for mỗi mối quan hệ R là quan hệ nhiều-nhiều trong EER do

2. Xỏc định cỏc quan hệ S S’ tương ứng với cỏc tập thực thể tham gia vào mối quan hệ R;

3. Tạo ra một quan hệ mới T với UT = RFF’ với FFKT: FPKSF’FKT: F’ PKS’;

4. Chọn PKT = FF’; 5. Chọn FKT = {F, F’}; 6. DB := DBẩ {T}; 7. endfor;

Nhận xột: Lưu ý rằng việc chuyển đổi mối quan hệ phản xạ R (hai vai trũ) trờn cựng một tập thực thể E là một trường hợp đặc biệt của cỏc mối quan hệ nhị nguyờn (1-1, 1- nhiềunhiều-nhiều). Cụ thể, gọi S là quan hệ tương ứng với tập thực thể E. Khi đú, nếu mối quan hệ phản xạ R là mối quan hệ 1-1 hoặc 1-nhiều, thỡ một khoỏ ngoài của S

tham chiếu vào chớnh khoỏ chớnh của S sẽ được bổ sung, cựng với tất cả cỏc thuộc tớnh đơn trị của mối quan hệ R. Và nếu mối quan hệ phản xạ R là mối quan hệ nhiều-nhiều

thỡ một quan hệ mới T được tạo ra. Cỏc thuộc tớnh trong T gồm hai khoỏ ngoài của T

cựng tham chiếu (theo vai trũ) đến khoỏ chớnh của S, và tất cả cỏc thuộc tớnh đơn trị của mối quan hệ R.

Bước 6. Chuyển đổi mối quan hệ đa nguyờn

Xột mối quan hệ R là mối quan hệ đa nguyờn bậc k (k > 2) giữa cỏc tập thực thể (adsbygoogle = window.adsbygoogle || []).push({});

E1, E2, ..., Ek, với giả thiết rằng chỉ số cực đại của bản số thuộc cung nối mỗi tập thực thể Ei (với i = 1, 2,.., k) và mối quan hệ R đều là n. Ta lần lượt xỏc định cỏc quan hệ S1,

S2, ..., Sk tương ứng với cỏc tập thực thể E1, E2, ..., Ek. Từ đú tạo ra một quan hệ mới T

nhằm biểu diễn mối quan hệ R. Cỏc thuộc tớnh trong T bao gồm: tất cả cỏc thuộc tớnh đơn trị của mối quan hệ R, và cỏc khoỏ ngoài của T lần lượt tham chiếu đến cỏc khoỏ chớnh của S1, S2, ..., Sk. Ta cú: k i i R T F U 1  ẩ   , trong đú: i S i T i FK :F PK F   , với i = 1, 2,..., k.

Việc chọn PKT là tuỳ thuộc vào cỏc ràng buộc hàm trờn mối quan hệ R. Giả sử ta xỏc định được tập F cỏc ràng buộc hàm trờn mối quan hệ đa nguyờn R, và K là một khoỏ của R. Khi đú, khoỏ chớnh của T được xỏc định bởi hợp tất cả cỏc Fi, với

i = 1, 2,..., k,sao cho tập thực thể Ei tương ứng phải thuộc K. Tức: 

K E i T i F PK   . Lưu ý rằng, nếu F =  thỡ K = {E1, E2, ..., Ek} và PKT = k i i F 1  .

Thuật toỏn 2.6. Chuyển đổi mối quan hệ đa nguyờn

+ Vào: Cỏc mối quan hệ R trờn EER là cỏc mối quan hệ bậc k (k > 2) thỏa tập cỏc ràng buộc hàm F

+ Ra: Cỏc quan hệ T thuộc DB kốm khoỏ chớnh, khoỏ ngoàitương ứng của T

+ Phương phỏp:

1. for mỗi mối quan hệ R là quan hệ đa nguyờn trong EER do

2. Xỏc định cỏc quan hệ S1, S2, ..., Sk tương ứng với cỏc tập thực thể E1, E2, ..., Ek tham gia vào mối quan hệ R;

3. Tạo ra một quan hệ mới T với k

i i R T F U 1  ẩ   trong đú i S i T i FK :F PK F   , với i=1,2,..., k;

4. Tỡm K = Key(; F) là một khoỏ của mối quan hệ R; (với  = {E1, ..., Ek}) 5. Chọn  K E i T i F PK   ; 6. Chọn k i i T F FK 1   ; 7. DB := DBẩ {T}; 8. endfor; Ta cú thể giải thớch việc chọn  K E i T i F PK   . Thật vậy, vỡ bất kỳ ràng buộc hàm X Y trờn mối quan hệ R (với X, Y là tập con của {E1, E2, ..., Ek}), sẽ kộo theo quan hệ T phải thoả phụ thuộc hàm  

Y E i X E i i i F F    , nờn nếu R thoả K  thỡ

  k i i K E i F F i 1  . Nhưng do k i i F 1 

là một siờu khoỏ của T, vậy 

K E i i F  là một siờu khoỏ tối thiểu của T.

Nhận xột: Từ kết quả trờn, cho thấy rằng khoỏ chớnh của quan hệ T là tập con của tập tất cả cỏc khoỏ ngoài trờn T. Hay: PKT k

i i F

1

Bước 7. Chuyển đổi thuộc tớnh đa trị

Với mỗi thuộc tớnh A là thuộc tớnh đa trị trong EER, thuật toỏn chuyển đổi thuộc tớnh đa trị A thành quan hệ tương ứng từ đõy ta cú thể xõy dựng thuật toỏn chuyển đổi như sau:

Thuật toỏn 2.7. Chuyển đổi thuộc tớnh đa trị

+ Vào: Cỏc thuộc tớnh đa trị trờn EER

+ Ra: Cỏc quan hệ thuộc DB kốm khoỏ chớnh, khoỏ ngoàitương ứng

+ Phương phỏp:

1. While tồn tại thuộc tớnh đa trị A trong EER chưa được chuyển đổi thành quan hệ tương ứng do (adsbygoogle = window.adsbygoogle || []).push({});

2. Chuyendoithuoctinhdatri(A);

3. endwhile;

Trong đú, thủ tục Chuyendoithuoctinhdatri được xõy dựng như sau:

Procedure Chuyendoithuoctinhdatri(A);

1. if A là một thuộc tớnh của tập thực thể E thuộc EERthen

2. Xỏc định quan hệ R thuộc DB biểu diễn tập E; 3. if A là thuộc tớnh đơn then

4. Tạo quan hệ mới R’ cú UR’ = A FPKR’ = UR’, với FFKR’:

FPKR;

5. endif;

6. if A là thuộc tớnh phức hợp cú tập cỏc thuộc tớnh đơn trị và đơn là X và thuộc tớnh khoỏ là K then

7. Tạo quan hệ mới R’ cú UR’ = X FPKR’ = K F, với FFKR’: FPKR;

8. endif;

9. Chọn FKR’ = {F}; 10. DB := DBẩ {R’};

11. endif;

12. if A là một thuộc tớnh của thuộc tớnh phức hợp B then

13. if tồn tại quan hệ R thuộc DB biểu diễn thuộc tớnh B then

14. if A là thuộc tớnh đơn then

15. Tạo quan hệ mới R’ cú UR’ = A FPKR’ = UR’, với FFKR’: FPKR;

16. endif;

17. if A là thuộc tớnh phức hợp cú tập cỏc thuộc tớnh đơn trị và đơn là

X và thuộc tớnh khoỏ là K then

18. Tạo quan hệ mới R’ cú UR’ = X FPKR’ = K F, với

FFKR’: FPKR;

19. endif;

20. Chọn FKR’ = {F};

21. DB := DBẩ {R’};

22. endif;

23. if khụng tồn tại quan hệ R thuộc DB biểu diễn thuộc tớnh B then

24. Chuyendoithuoctinhdatri(B)

25. endif; (adsbygoogle = window.adsbygoogle || []).push({});

26. endif;

end;

Thuật toỏn chuyển đổi này là một mở rộng của thuật toỏn chuyển đổi cỏc thuộc tớnh đa trị được bàn đến trong khi cỏc thuộc tớnh đa trị và phức hợp cú thể lồng nhau.

Nếu gọi n là số cỏc tập thực thể trong EER, và m là số tối đa cỏc thuộc tớnh đa trị cú trong một tập thực thể, thỡ độ phức tạp tớnh toỏn của thuật toỏn này được xột

Một phần của tài liệu Tìm hiểu các phụ thuộc bao hàm trong mô hình quan hệ và ứng dụng vào việc chuyển đổi sang mô hình EER (Trang 36 - 46)