
153
e) Qui tắc 5
Đưa kết hợp không phân cấp (n:m) về kết hợp phân cấp (1:n) : Thay thế các kiểu kết hợp
có bản số (*−n) và (*−n), nghĩa là quan hệ n:m, bởi một kiểu thực thể và hai kiểu kết hợp. Tạo
khóa mới cho kiểu thực thể mới và xác định các bản số của hai kiểu kết hợp mới này.
Một trong hai bản số cực đại phải là 1, nghĩa là kiểu kết hợp phải tương ứng với một PTH
giữa các khóa và hai thực thể.
Trong ví dụ ở qui tắc 4, kết hợp TIẾN HÀNH phải được thay thế bởi một kiểu thực thể và
hai kiểu kết hợp.
f) Qui tắc 6
Trong trường hợp giữa hai kiểu thực thể có nhiều kiểu kết hợp, thêm vào trong các kiểu
thực thể được tạo ra ở qui tắc 5, một kiểu thuộc tính là ghép của các khóa của các kiểu thực thể
liên quan.
Ví dụ : trong ví dụ hình 52 chương 4, giữa hai kiểu thực thể CÁNHÂN và CĂNHỘ có các
kiểu kết hợp SỡHữu, Thuê và ỞTại. Riêng kiểu kết hợp ỞTại là không phân cấp. Áp dụng hai
qui tắc 5 và 6 để nhận được sơ đồ như sau :
Trong mô hình dữ liệu, chủ sở hữu và người thuê nhà (CÁNHÂN) đều đồng nghĩa với số
chứng minh nhân dân (SốCMND).
g) Qui tắc 7
Vẽ đồ thị phụ thuộc hàm nối các khóa của các kiểu thực thể và tìm kiếm các PTH bắc cầu
có thể tồn tại trong đồ thị. Loại bỏ các bắc cầu và thay đổi lại sơ đồ E-A nếu cần.
h) Qui tắc 8
1
−
2 1
−
n
ThựcHiện
BÁCSỸ
MãBS
TênBS
MỔ
MãCaMổ
ThờiGianMổ
BÁCSỸ
MãBS
TênBS
MỔ
MãCaMổ
ThờiGianMổ
THỰCHIỆN
MãSốTH
1−2 1−1 1
−
1 1
−
n
(a)
(b)
0−n 0−n
CÁNHÂN
SốCMND
HọTên
SỡHữu
Thuê
0−n
0−n
1−1
1
−
1
0−1
1−1
CĂNHỘ
NghiệpChủSố
ĐịaChỉ
ỞTẠI
CưTrúSố
SốCMND
NghiệpChủSố

154
Tạo một lược đồ quan hệ cho mỗi một kiểu thực thể. Khóa của quan hệ là khóa của kiểu
thực thể. Các thuộc tính của quan hệ tương ứng với các kiểu đặc tính của kiểu thực thể.
Như vậy, ví dụ cho ở qui tắc 6 cho ta các lược đồ quan hệ sau :
CÁNHÂN (SốCMND, HọTên, ...)
CĂNHỘ (NghiệpChủSố, ĐịaChỉ, ...)
ỞTẠI (CưTrúSố, SốCMND, NghiệpChủSố, ...)
i) Qui tắc 9
Loại bỏ các khóa đơn đồng nghĩa được tạo ra từ các kiểu khóa tổ hợp và kiểm tra quan hệ
nhận được ở dạng 2 NF và 3 NF. Sử dụng phương pháp phân chia nếu cần cho những quan hệ
như ở dạng chuẩn 2 NF và 3 NF, sau đó sữa đổi lại mô hình E-A.
III.Sử dụng các ngôn ngữ lập trình
Các ngôn ngữ lập trình hay hê quản lý tệp là công cụ phần mềm thế hệ ba.
Hê quản lý tệp đảm đương mối liên hệ giữa các tệp dữ liệu và cách tổ chức chúng trên một
thiết bị nhớ (mức vật lý) trong hệ điều hành đang sử dụng. Các tệp dữ liệu có thể được tạo ra
bởi NSD, bởi chương trình hay bởi một HQLCSDL và/hoặc bởi một công cụ tạo sinh ứng
dụng (mức logic),.
Ví dụ về “Khu du lịch Non nước” đã xét ở chương trước có thể được phát triển trong một
HQLCSDL quan hệ. Tuy nhiên, do MHYNDL đã xây dựng trước đây không quá phức tạp,
khối lượng dữ liệu không quá lớn, các chức năng cần xử lý không quá nhiều và tương đối đơn
giản, ta có thể sử dụng một hệ quản lý tệp.
Ta chọn FoxPro, do đây là một phần mềm (phổ biến ở Việt nam) nằm giữa các ngôn ngữ
thế hệ ba và các HQLCSDL quan hệ thuộc thế hệ 4. Sử dụng FoxPro, ta thấy được tính tuần tự
có chỉ mục của hệ quản lý tệp này, tương tự DBase.
III.1.Chuyển đối MHYNDL thành mô hình logic dữ liệu
Trước khi chuyển đổi MHYNDL thành mô hình logic dữ liệu (MHLGDL), ta cần tìm hiểu
cách thể hiện các tệp dữ liệu của FoxPro.
III.1.1. Các tệp dữ liệu của FoxPro
Mỗi tệp dữ liệu (DBF − DataBase File) gồm hai yếu tố : bản thân DBF và một (hoặc nhiều)
tệp chỉ mục (Index File) tương ứng. Tệp chỉ mục không là tất yếu, cũng không bắt buộc phải
có. Nếu như tệp chỉ mục không được tạo ra thì bản thân DBF được tổ chức theo kiểu tuần tự.
Có hai kiểu chỉ mục thường sử dụng :
Chỉ mục đơn hay chuẩn (standard index), tương tự khái niệm khoá : ứng với một giá trị chỉ
mục duy nhất thì xác định được giá trị của một dữ liệu khác.
Chỉ mục kết hợp (compound index) là ghép của nhiều chỉ mục đơn (đính mục).
Mỗi DBF gồm các bản ghi (Record). Mỗi bản ghi gồm các trường (Field) là dữ liệu cơ sở,
không chứa các cấu trúc con. Các trường dữ liệu tạo thành bản ghi là các thuộc tính của một
thực thể,. Mỗi thuộc tính là đích của một PTH mà chỉ mục đơn (hay khóa của thực thể) là
nguồn.

155
Sau đây là một MHYNDL trước khi chuyển :
III.1.2.Chuyển đổi MHYNDL
⎯→
MHLGDL
Để đơn giản hóa việc chuyển đổi, trước tiên ta chuyển MHYNDL đã cho thành mô hình
nhị nguyên, một mô hình chỉ gồm các kết hợp phân cấp hai chiều.
a. Chuyển đổi thành mô hình nhị nguyên
Các kết hợp không phân cấp phải được đơn giản hóa (hay được cá thể hóa). Trong ví dụ
MHYNDL trên đây, chỉ có kết hợp Thuê là không phân cấp, phải được đơn giản hóa.
MHYNDL sau khi chuyển đổi thành mô hình nhị nguyên :
0 − n
1 − 1
CIF
0
−
n
NGÀY
NgàyThuê
THỂTHAO
TênThểThao
ĐơnVịTính
GiáTiền
0 − n 0 − n
Thuê
SốĐơnVị
CHỖ
ChỗSố
DiệnTích
SốNgMax
LƯUTRÚ
LưuTrúSố
TênKhách
NgàyĐến
NgàyĐi
SốNgười
KIỂU
KiểuChỗ
GiáNgàyNgười
CIF
1 − 1 1
−
n

156
Như vậy, kết hợp Thuê đã được đơn giản hóa và được thay thế bởi :
Thực thể THUÊ có khóa là khóa của kết hợp Thuê, là do ghép các khóa của các thực thể
tham gia vào kết hợp này.
Kết hợp Thuê là ba chiều nên phải tạo ra ba CIF giữa thực thể mới THUÊ và các thực thể
LƯUTRÚ, THỂTHAO và NGÀY.
KIỂU
KiểuChỗ
GiáNgàyNgười
CHỖ
ChỗSố
DiệnTích
SốNgMax
CIF
1 − 1 1
−
n
LƯUTRÚ
LưuTrúSố
TênKhách
NgàyĐến
NgàyĐi
SốNgười
0
−
n
1 − 1
0 − n
1 − 1
NGÀY
NgàyThuê
CIF
CIF
1 − 1 1
−
n
CIF
1 − 1
0 − n
CIF
THỂTHAO
TênThểThao
ĐơnVịTính
GiáTiền
THUÊ
LưuTrúSố +
TênThểThao +
NgàyThuê
SốĐơnVị

157
Ta nhận thấy rằng mô hình chỉ còn lại các CIF, và đó là mô hình nhị nguyên.
b. Nguyên tắc chuyển đổi các thực thể thành các tệp
Mỗi thực thể được tạo thành hai tệp dữ liệu là DBF và tệp chỉ mục của nó. Các thuộc tính
của thực thể tạo thành các trường tin của DBF. Khóa có vai trò là giá trị chỉ mục đơn của tệp
chỉ mục. Tuy nhiên, mô hình logic các tệp sẽ không đầy đủ nếu mối liên hệ giữa các thực thể
(CIF) không được chuyển đổi.
c. Nguyên tắc chuyển đổi các mối liên hệ giữa các thực thể
MHYNDL
Mô hình logic các tệp
Các tệp cơ sở dữ liệu (DBF) :
Các tệp chỉ mục (IDX) :
Mối liên hệ CIF giữa hai thực thể được chuyển đổi như sau : tệp ĐƠNĐHÀNG được thêm
dữ liệu KHSố là khóa của thực thể KHHÀNG. Trong trường hợp xây dựng tệp chỉ mục kết hợp
CMĐĐHKH thì KHSố sẽ là khoá của tệp chỉ mục này, vì từ đó có thể :
− Tìm lại các thông tin về một khách hàng từ một đơn đặt hàng,
d.
−
Tìm lại tất cả các đơn đặt hàng của một khách hàng (từ khách hàng số).
chỉ mục đơn
1 − 1 1
−
n KHHÀNG
KHSố
HọTênKH
ĐƠNĐHÀNG
SốĐĐH
NgàyĐĐH CIF
CMĐĐH
SốĐĐH
CMKH
KHSố
ĐƠNĐHÀNG
SốĐĐH
KHSố
NgàyĐĐH
KHHÀNG
KHSố
HọTênKH
CMĐĐHKH
KHSố
chỉ mục đơn
chỉ mục kết hợp