ĐẠI HC QUC GIA THÀNH PH H CHÍ MINH
TRƯỜNG ĐẠI HC CÔNG NGH THÔNG TIN
KHOA H THNG THÔNG TIN
Lp: HTTT02
BÁO CÁO MÔN THIT K CSDL
GIÁO VIÊN HƯỚNG DN:Phan Nguyn Thy An.
Trương Quang Khánh. MSSV: 07520175
Nguyễn Tùng Sơn. MSSV: 07520305
Quốc Vương. MSSV: 07520423
TP.HCM, tháng 12 năm 2009
2
I. Các thuật toán cài cài đt trong chương trình:
1. Cu trúc d liu:
Tt c các thành phn AttSet (tp thuc nh), AttSetList (danh sách các tp
thuc tính), FD (ph thuc hàm), FDSet (danh sách các ph thuc m hay tp ph
thuộc hàm) đều được t chức dưới dng mng Boolean vi chiu dài tối đa là 255. Tt
c các phép toán liên quan đến quan h như: hợp, tr, giao, so sánh bng, xét con...
và các thuật toán đu được xây dng da trên cu trúc d liu dng này.
2. Các thut tn:
2.1. Thut toán m bao đóng:
+Input:
_Tp thuc tính cn tìm bao đóng (a).
_Tp ph thuc hàm dựa trên đó để tìm bao đóng (fSet).
_Chui string là chui cha tt c các tp thuc tính ca quan h (u).
+Output:
_Tp thuộc tính bao đóng (X’).
Tên hàm y dựng tương ng: Public Function closure(ByVal a As
AttSet, ByVal fSet As FDSet, ByVal u As String) As AttSet
+Thut toán:
_B1: Gán X’=A (vi A là tp thuc tính cn m bao đóng).
_B2:
3
Do { X=X’
Vi mi ph thuc hàm (PTH) p->q thuc fSet
{If (p là con có th bng vi X’)
X’=X’ hp vi {q}
}
}while(X’ không bng U và X không bng X’)
_B3: Tr v X’.
2.2. Thut toán kim tra ph thuc hàm thành viên:
+Input:
_PTH cn kim tra thành viên (f).
_Tp PTH dựa trên đó để kim tra thành viên (fSet).
_Chui string là chui cha tt c các tp thuc tính ca quan h (u).
+Output:
_Giá tr True/False.
+Tên hàm xây dng ơng ng: Public Function FDMember(ByVal f As
FD, ByVal fSet As FDSet, ByVal u As String) As Boolean
+Thut toán:
_B1: Vi mi PTH p->q trong fSet
{Nếu tn ti p = vế trái ca f và q = vế phi ca f
Tr v True.
}
_B2: Nếu vế phi ca f không thuc tp u
4
Tr v False.
_B3: Đặt Temp = fSet – f
left = vế trái ca f
right = vế phi ca f
Nếu right là con của bao đóng của left da trên tp PTH Temp
Tr v True
Ngược li
Tr v False
2.3. Thut toán m khóa:
+Input:
_Tp PTH dựa trên đó để tìm khóa (fSet).
_Chui string là chui cha tt c các tp thuc tính ca quan h (u).
+Output:
_Danh sách các khóa ca quan h (Key).
+Tên hàmy dựng tương ứng: FindKey(ByVal fSet As FDSet, ByVal u
As String) As AttSetList
+Thut toán:
_B1:
Gán các tp thuc tính sau:
Trái: Tp cha tt c các thuc tính nm bên vế trái ca tt c các PTH trong fSet.
Phi: Tp cha tt c các thuc tính nm bên vế phi ca tt c các PTH trong fSet.
Gc = Trái-phi
5
Treo = u-(Trái hi Phi)
Trung gian = Trái giao Phi
_B2:
Đặt danh sách khóa cn tìm Key, khóa tm thi K, danh sách khóa tm thi là
KeyTemp
_B3:
K = Gc hi Treo
If bao đóng của K = u
Thêm K vào Key
Tr v Key
Ngược li làm B4
_B4:
Tìm tt c các tp con khác rng ca tp Trung gian
Vi mi tập con a đó
{ If bao đóng của (a hi vi K) = u
Thêm (a hi K) vào KeyTemp
}
_B5:
Vi mi tập ka sK đã thêm vào KeyTemp
{ If không tn ti tp nào trong KeyTemp là con không bng sK
Thêm sK vào Key
}