CHƯƠNG 6 XÂY DỰNG MÔ HÌNH LOGIC DỮ LIỆU
III. S ử DụNG CÁC NGÔN NGữ LậP TRÌNH
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.
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
1 − 1 CIF 1 − n
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ị
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,
−
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
e. Chuyển đổi MHYNDL thành MHLGDL các tệp
Thực thể KIỂU DBF Tệp chỉ mục
KIỂU CMKIỂU Các trường :
KiểuChỗ GiáNgàyNgười
Khoá chỉ mục đơn : KiểuChỗ
Thực thể CHỖ DBF Tệp chỉ mục
CHỖ CMCHỖ
Các trường : ChỗSố
Khoá chỉ mục đơn : ChỗSố
KiểuChỗ CMCHỖKIỂU
DiệnTích SốNgMax
Khoá chỉ mục kết hợp : KiểuChỗ
Thực thể THUÊ DBF Tệp chỉ mục
THUÊ CMTHUÊ
Các trường : Khoá chỉ mục :
LưuTrúSố TênThểThao NgàyThuê
LưuTrúSố TênThểThao NgàyThuê
ghép các khoá SốĐơnVị
Khoá chỉ mục của tệp THUÊ do các khoá LưuTrúSố, TênThểThao và NgàyThuê ghép lại để từ đó xác định giá trị của dữ liệu SốĐơnVị.
Thực thể NGÀY
Thực thể NGÀY không cần chuyển thành DBF vì chỉ có mỗi dữ liệu NgàyThuê nên NgàyThuê cũng đồng thời là khoá chỉ mục của nó.