BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2
NGUYỄN NĂNG HƢNG
VỀ CÁC PHỤ THUỘC HÀM XẤP XỈ
TRONG MÔ HÌNH DỮ LIỆU DẠNG KHỐI
LUẬN VĂN THẠC SĨ MÁY TÍNH
HÀ NỘI, 2014
LỜI CẢM ƠN
Tôi xin chân thành cảm ơn và tri ân sâu sắc đến PGS.TS. Trịnh Đình Thắng
đã tận tình hướng dẫn, giúp đỡ tôi trong quá trình nghiên cứu, hoàn thành
luận văn.
Tôi xin chân thành cảm ơn Trường Đại học Sư phạm Hà Nội 2 quý
Thầy Cô giáo Lãnh đạo và các giảng viên, cán bộ của trường đã tạo điều kiện
thuận lợi cho tôi học tập, nghiên cứu và bảo vệ luận văn.
Cảm ơn gia đình và những người thân đã ủng hộ, động viên, khích lệ,
chia sẻ với tôi trong suốt quá trình học tập, nghiên cứu.
TÁC GIẢ LUẬN VĂN
NGUYỄN NĂNG HƢNG
LỜI CAM ĐOAN
Tôi xin cam đoan Luận văn: “Về các phụ thuộc hàm xấp xỉ
trong mô hình dữ liệu dạng khối” là công trình nghiên cứu của riêng
bản thân.
Các số liệu trong luận văn là trung thực, được trích dẫn và có tính
kế thừa, phát triển từ các tài liệu, tạp chí, các công trình đã nghiên cứu, ở
trong nước và trên thế giới.
Xây dựng chương trình tính toán phụ thuộc hàm xấp xỉ trong mô
hình dữ liệu dạng khối là chương trình do tôi tự viết. Không sử dụng một
mã nguồn mở nào có sẵn.
TÁC GIẢ
NGUYỄN NĂNG HƢNG
MỤC LỤC
Trang phụ bìa
Lời cảm ơn ........................................................................................................ i
Lời cam đoan ................................................................................................... ii
Mục lục ............................................................................................................ iii
Danh mục các ký hiệu, các chữ viết tắt ........................................................ vi
Danh mục các bảng ....................................................................................... vii
Danh mục các hình vẽ, đồ thị ...................................................................... viii
MỞ ĐẦU ........................................................................................................... i
CHƢƠNG 1: MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ........................... xiv
1.1 Thuộc tính, quan hệ, đại số quan hệ.................................................. xiv
1.1.1. Thuộc tính và miền thuộc tính............................................................. xiv
1.1.2. Quan hệ, lược đồ quan hệ ................................................................... xiv
1.2. Các phép toán đại số quan hệ ............................................................ xvi
1.2.1. Phép hợp ............................................................................................. xvi
1.2.2. Phép giao ............................................................................................ xvi
1.2.3. Phép trừ.............................................................................................. xvii
1.2.4. Tích Đề-các ........................................................................................ xvii
1.2.5. Phép chiếu ......................................................................................... xviii
1.2.6. Phép chọn............................................................................................ xix
1.2.7. Phép kết nối.......................................................................................... xx
1.2.8. Phép chia............................................................................................. xxi
1.3. Phụ thuộc hàm ..................................................................................... xxi
1.4. Bao đóng ............................................................................................. xxiii
1.4.1 Bao đóng của tập phụ thuộc hàm. ..................................................... xxiii
1.4.2 Bao đóng của tập thuộc tính đối với tập các phụ thuộc hàm ............ xxiii
1.5. Khoá của quan hệ .............................................................................. xxiii
1.6 Phụ thuộc hàm và lớp tƣơng đƣơng ................................................. xxiv
1.6.1 Sự phân hoạch.................................................................................... xxiv
1.6.2 Phân hoạch mịn hơn .......................................................................... xxvi
1.6.3 Một số tính chất của phụ thuộc hàm và lớp tương đương ................ xxvii
1.7 Phụ thuộc hàm xấp xỉ ...................................................................... xxviii
1.8 Bao đóng của tập phụ thuộc hàm xấp xỉ ........................................ xxxiii
1.9 Khoá xấp xỉ ....................................................................................... xxxiii
1.10 Một số Tính chất của phụ thuộc hàm xấp xỉ trên lƣợc đồ quan hệ [9] xxxv
CHƢƠNG 2: MÔ HÌNH CƠ SỞ DỮ LIỆU DẠNG KHỐI ............... xxxviii
2.1. Khối, lƣợc đồ khối ......................................................................... xxxviii
2.2. Lát cắt ............................................................................................... xxxix
2.3. Đại số quan hệ trên khối ....................................................................... xl
2.3.1. Phép hợp ............................................................................................... xl
2.3.2. Phép giao ............................................................................................. xli
2.3.3. Phép trừ................................................................................................ xli
2.3.4. Tích Đề các .......................................................................................... xli
2.3.5. Tích Đề các theo tập chỉ số .................................................................. xli
2.3.6. Phép chiếu ........................................................................................... xlii
2.3.7. Phép chọn............................................................................................ xlii
2.3.8. Phép kết nối........................................................................................ xliii
2.3.9. Phép chia............................................................................................ xliv
2.4. Phụ thuộc hàm .................................................................................... xliv
2.5. Các tính chất của phụ thuộc hàm trên lƣợc đồ khối. ...................... xlv
CHƢƠNG 3: PHỤ THUỘC HÀM XẤP XỈ TRONGMÔ HÌNH DỮ LIỆU
DẠNG KHỐI ............................................................................................... xlix
3.1 Phụ thuộc hàm xấp xỉ trong mô hình dữ liệu khối .......................... xlix
3.2 Mối quan hệ giữa phụ thuộc hàm xấp xỉ trên khối và phụ thuộc hàm
xấp xỉ trên lát cắt........................................................................................liii
3.4 Một số tính chất ..................................................................................... lvi
3.5 Cài đặt ..................................................................................................... lx
KẾT LUẬN ................................................................................................... 54
TÀI LIỆU THAM KHẢO ............................................................................ 55
PHỤ LỤC ....................................................................................................... 58
DANH MỤC CÁC CHỮ VIẾT TẮT
Từ viết tắt
Tiếng Anh
Tiếng Việt
CSDL
Database
Cơ sở dữ liệu
FDs
Functional Dependencies
Các phụ thuộc hàm
AFDs
Approximate Functional
Dependencies
Các phụ thuộc hàm xấp xỉ
DANH MỤC CÁC BẢNG
STT Tên bảng
Trang
1
Bảng 1.1:Biểu diễn quan hệ r
6
2
Bảng 1.2: Bảng dữ liệu sinh viên
6
3
Bảng 1.3: Biểu diễn các quan hệ r, s và quan hệ r× s
9
4
Bảng 1.4: Bảng dữ liệu quan hệ
16
5
Bảng 1.5: Bảng dữ liệu thuộc tính giá trị số
21
5
Bảng 3.1: Bảng biểu diễn khối dữ liệu
48
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
STT
Tên hình vẽ
Trang
1
Hình 2.1: Biểu diễn khối nhân viên NV(R).
30
2
3
HHình 3.1: Biểu diễn khối sinhviên1
Hình 3.2: Khối dữ liệu
41
48
MỞ ĐẦU
1. Lý do chọn đề tài
Để xây dựng được một hệ thống cơ sở dữ liệu tốt, người ta thường sử
dụng các mô hình dữ liệu thích hợp. Đã có một số mô hình được sử dụng
trong các hệ thống cở sở dữ liệu như: mô hình thực thể - liên kết, mô hình
mạng, mô hình phân cấp, mô hình hướng đối tượng, mô hình dữ liệu datalog
và mô hình quan hệ. Trong số các mô hình này, có ba mô hình dữ liệu hay
được sử dụng là mô hình phân cấp, mô hình mạng và mô hình quan hệ. Đối
với ba mô hình này, mô hình quan hệ được quan tâm hơn cả, bởi vì nó được
xây dựng trên cơ sở toán học chặt chẽ. Tuy nhiên, do các quan hệ có cấu trúc
phẳng (tuyến tính) nên mô hình này chưa đủ đáp ứng đối với các ứng dụng
phức tạp, các cơ sở dữ liệu có cấu trúc phi tuyến tính.
Trong những năm gần đây, việc nghiên cứu nhằm mở rộng mô hình dữ
liệu quan hệ đã được nhiều nhà khoa học quan tâm. Theo hướng nghiên cứu
này một mô hình được xem là mở rộng của mô hình dữ liệu quan hệ đã được
đề xuất đó là mô hình dữ liệu dạng khối. Tuy nhiên mô hình này mới xây
dựng nên chưa hoàn thiện và hiện đang được quan tâm nghiên cứu, xem [7],
[8], [9], [12] và các tài liệu dẫn trong đó.
Với mong muốn tìm hiểu sâu hơn về những kiến thức đã học, mối quan
hệ và những ứng dụng của mô hình dữ liệu dạng khối, đặc biệt là các phụ
thuộc hàm xấp xỉ, tôi chọn đề tài “Về các phụ thuộc hàm xấp xỉ trong mô
hình dữ liệu dạng khối” để nghiên cứu.
2. Mục đích nghiên cứu
Nghiên cứu các tính chất của phụ thuộc hàm xấp xỉ trong mô hình
dữ liệu dạng khối nhằm góp phần hoàn chỉnh lý thuyết mô hình dữ liệu
dạng khối.
3. Nhiệm vụ nghiên cứu
Tìm hiểu về phụ thuộc hàm xấp xỉ, nghiên cứu các tính chất của phụ
thuộc hàm xấp xỉ trong mô hình dữ liệu dạng khối. Đồng thời nghiên cứu mối
quan hệ giữa phụ thuộc xấp xỉ trên khối và trên lát cắt.
4. Đối tƣợng và phạm vi nghiên cứu
Phụ thuộc hàm xấp xỉ trong mô hình dữ liệu dạng khối.
5. Phƣơng pháp nghiên cứu
- Tìm hiểu tài liệu: Các bài báo đã được đăng và sách đã in liên quan
mật thiết đến phụ thuộc hàm xấp xỉ trong mô hình dữ liệu dạng khối
- Sử dụng các phương pháp phân tích tổng hợp các tài liệu và những
thông tin liên quan đến đề tài, kết hợp các nghiên cứu đã có trước đây của tác
giả trong nước cùng với sự chỉ bảo, góp ý của thầy hướng dẫn để hoàn thành
nội dung nghiên cứu.
6. Những đóng góp mới của đề tài
7. Cấu trúc của luận văn
Luận văn gồm: Lời mở đầu, ba chương nội dung, phần kết luận và tài
liệu tham khảo.
Chƣơng 1 Trình bày các khái ,..., n}}, x id ;
Y {x(i ) | i B, B {1,2,.., n}}, x id
Z {x(i ) | i C, C {1,2,.., n}}, x id
Khi đó nếu X Y trên r thì X x Z x Yx Z x trên rx
Chứng minh:
Thật vậy
Theo giả thiết ta có X Y trên r. Vì r là khối đồng nhất nên theo tính
chất phụ thuộc hàm trên khối đồng chất đã được chứng minh
X x Yx trên rx
Mặt khác áp dụng tính chất 2 ta suy ra
X x Z x Yx Z x trên rx với x id
Vậy từ X Y trên r thì X x Z x Yx Z x trên rx (đpcm)
Tính chất 4: Tính bắc cầu
n
Cho lược đồ khối R = (id; A1A2,…., An), X ,Y , Z id (i ) , r(R) là một
i 1
khối đồng chất trên R
Nếu f : X 1 Y , g : Y 2 Z trên r
Khi đó ta có X 1 2 Z trên r
Chứng minh:
Thật vậy
Theo giả thiết ta có
f : X 1 Y g3 ( X Y ) 1
Theo định nghĩa
g3 ( X Y ) 1
max{| s | s r , s | X Y }
1
|r|
r '1 r sao cho r‟1 thỏa mãn X Y
Tương tự từ giả thiết
g : Y 2 Z g3 (Y Z ) 2
Theo định nghĩa
g3 (Y Z ) 1
max{| s | s r , s | Y Z }
2
|r|
r '2 r sao cho r‟2 thỏa mãn Y Z
Từ đó
r ' r '1 r '2 r‟ thỏa X Y và Y Z
Áp dụng tính chất bắc cầu r‟ thỏa X Z
g 3 ( X Z ) 1 2
Vậy X 1 2 Z trên r (đpcm)
3.5 Cài đặt
Mô tả bài toán:
Input : Cho lược đồ khối R = (id; A1,A2,...,An), r(R) là một khối trên R,
Ai , Aj {A1, A2 ,.., An } , i, j {1,2,.., n} .
Output: Tính độ đo lỗi của phụ thuộc hàm Ai Aj trên lát cắt id,
id = {1,2,..,n} và trên khối r
Chúng tôi đi tiến hành cài đặt thuật toán để tính độ đo lỗi của phụ thuộc
hàm trên ngôn ngữ C# của bộ lập trình Visual Studio 2005, CPU core 2 dual
1.73 GHz, bộ nhớ Ram 512.
Mô tả thuật toán
Procedure Tính toán phân hoạch lát cắt (i = {1,2,…,n} )
for each At, Auidi do
for each X i At do
n = số_phân_hoạch(Xi);
for i = 1 to n do
H[i] = count( i );
for i = 1 to n do do
Begin
p(i) = H[i]/|r|;
e = e + p(i) * log 1/(p(i);
End;
return e;
for each X Ll do
for each A X ∩ C+(X) do
if e( X
\ {A} A) then
output X \ {A} → A
remove A from C+(X)
End
Minh họa với cơ sở dữ liệu cụ thể như sau:
Id
A
B
C
D
1
Thanh pho
Ngo Phuong Anh
Cao
thap
1
Thanh pho
Nguyen Dieu Linh
Cao
Trung binh
1
Nong thon
Le My Linh
Trung binh
Trung binh
1
Thanh pho
Nguyen Thuy Linh
Cao
Trung binh
1
Nong thon
Pham Minh Ngan
Thap
Cao
1
Nong thon
Ha Van Nam
Trung binh
Kem
2
Thanh pho
Tran Thị Hong Phan
Trung binh
Cao
2
Nong thon
Nguyen Thanh Tra
Kem
Trung binh
2
Thanh pho
Nguyen Thi Trang
Kem
Cao
2
Nong thon
Kieu Ngoc Linh
Cao
Trung binh
2
Thanh pho
Le My Linh
Cao
Trung binh
2
Nong thon
Nguyen Thuy Linh
Cao
Trung binh
Bảng 3.2: Thực nghiệm với bảng dữ liệu minh họa
Kết quả thu được:
Độ đo lỗi của phụ thuộc hàm A D trên lát cắt 1: 0.5
Độ đo lỗi của phụ thuộc hàm AD trên lát cắt 2: 0.1666
Như vậy : Phụ thuộc hàm AD trên khối là phụ thuộc hàm xấp xỉ và
độ đo lỗi của phụ thuộc hàm xấp xỉ AD là 0.5
Giao diện của chương trình:
KẾT LUẬN
Quá trình nghiên cứu đề tài “Về các phụ thuộc hàm xấp xỉ trong mô
hình dữ liệu dạng khối”, luận văn đã đạt được một số kết quả như sau :
- Luận văn trình bày phụ thuộc hàm, phụ thuộc hàm xấp xỉ trong mô
hình dữ liệu quan hệ. Sử dụng lớp tương đương để tính độ đo lỗi g 3 của phụ
thuộc hàm trong mô hình dữ liệu quan hệ
- Luận văn trình bày về mô hình dữ liệu dạng khối là mở rộng của
mô hình dữ liệu quan hệ, trình bày phụ thuộc hàm trong mô hình dữ liệu
dạng khối và các tính chất phụ thuộc hàm trong mô hình dữ liệu quan hệ
- Trình bày phụ thuộc đa trị, phụ thuộc đa trị xấp xỉ trong mô hình dữ
liệu dạng khối
- Trình bày phụ thuộc hàm xấp xỉ trong mô hình dữ liệu dạng khối
được mở rộng từ mô hình dữ liệu quan hệ bằng 2 cách mở rộng và các tính
chất của nó.
- Cài đặt chương trình tính phụ thuộc hàm xấp xỉ trong mô hình dữ
liệu dạng khối. Chương trình có thể sử dụng để chạy được những bộ dữ
liệu rất lớn.
Hướng nghiên cứu tiếp theo
Dựa trên các nghiên cứu về phụ thuộc hàm xấp xỉ trong mô hình dữ
liệu dạng khối chúng tôi sẽ nghiên cứu thuật toán khai phá các phụ thuộc hàm
xấp xỉ trên khối với ngưỡng phụ thuộc cho trước.
TÀI LIỆU THAM KHẢO
1.
Nguyễn Xuân Huy (2006), Các phụ thuộc logic trong cơ sở dữ liệu,
Nhà xuất bản Thống kê, Hà Nội.
2.
Trịnh Đình Thắng (2011), Mô hình dữ liệu dạng khối, Nhà xuất bản
Lao động.
3.
Vũ Đức Thi (1997), Cơ sở dữ liệu- Kiến thức và thực hành, Nhà xuất
bản Thống kê, Hà Nội.
4.
Nguyễn Tuệ (2008), Giáo trình cơ sở dữ liệu, Nhà xuất bản Đại học
Quốc gia Hà Nội.
5.
Trịnh Đình Vinh (2011), Một số phụ thuộc dữ liệu trong cơ sở dữ liệu
dạng khối, Luận án Tiến sĩ Toán học.
6.
Lê Tiến Vương (1997), Nhập môn Cơ sở dữ liệu quan hệ, Nhà xuất bản
Khoa học và kỹ thuật, Hà Nội.
7.
Nguyễn Đăng Khoa, Vũ Huy Hoàng (2004), “Phụ thuộc hàm suy rộng
trên cơ sở lý thuyết tập thô”, Tạp chí Tin học và Điều khiển học, T. 20, S. 1,
tr. 91 - 98.
8.
Nguyễn Minh Huy (2011), “Phụ thuộc hàm xấp xỉ và ứng dụng trong
khai phá dữ liệu”, Luận văn thạc sĩ.
9.
Ronald S.King, “Discovery of Functional and Approximate Functional
Dependencies in Relational Databases”, Journal of applied mathematics and
decision sciences, pp.49-59.
10.
Aravind
Krishna
Kalavagattu,
MiningApproximate
Functional
Dependencies as Condensed Representations of Association Rules, Arizona
State University, 2008.
11.
Dalkilic,
M.M.,
Robertson,
E.L.:
Information
Proceedings of ACM PODS. (2000), pp. 245–253.
Dependencies,
12.
Giannella, Chris and Robertson, Edward, On Approximation
Measures for Functional Dependencies, Information Systems Archive,
29(6), pp. 483-507, 2004.
13.
Han J., and Kamber M., Data Mining Concepts and Techniques,
Morgan Kanuf- mann, 2000.
14.
Hong Yao, Howard J. Hamilton, Cory J. Butz, FD_Mine: Discovering
Functional Dependencies in a Database Using Equivalences, Second IEEE
International Conference on Data Mining, 2002.
15.
Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom,
Database Systems: The Complete Book, Prentice Hall Publisher, 2000.
16.
Huhtala, Y., Karkkainen, J., Porkka P., and Toivonen, H., TANE: An
Efficient Algorithm for Discovering Functional and Approximate
Dependencies, The Com-puter Journal, 42(2), pp. 100-111, 1999.
17.
Jalal Atoum, Mining Approximate Functional Dependencies from
Databases Based on Minimal Cover and Equivalent Classes, European
journal of scientific research, 33 (2), pp. 338 – 346, 2009.
18.
Kivinen, J., and Mannila, H. Approximate Inference of Functional
Dependencies From Relations. Theoretical Computer Science, 149, pp.
129-149, 1995.
17. Kwok-Wa Lam, Victor C.S.Lee, Building Decision Trees Using
Functional Dependencies, Processdings, of the International Conference on
Information Technology: Coding and Computing (ITCC’04), 2004.
18. L.B. Cristofor, A Rough Sets Based Generalization of Functional
Dependencies, Umass/Boston, Dept. of Mathand Comp. Sci. Technical
Report, May 8, 2000.
19. Q. Wei, GQ. Chen, Efficient Discovery of Functional Dependencies with
Degrees of Satisfaction, International journal of intelligent systems, Vol. 19,
2004.
20. Ronald S. King, James J. Legendre, Discovery of Functional and
Approximate Functional Dependencies in Relational Databases, Journal of
applied mathematics and decision sciences, 7(1), pp. 49 - 59, 2003.
21. Stéphane Lopes, Jean-Marc Petit, and Lotfi Lakhal, Efficient Discovery
of Functional Dependencies and Armstrong Relations, EDBT 2000, LNCS
1777, pp. 350 - 364, 2000.
PHỤ LỤC
double tinh_phuthuochamxapxi()
{
double tong_phan_hoach = 0;
double sobanghi = 0;
int[] a = new int[100002];
int vt, j, dem = 0, k, dem_1 = 0, max = 0;
string tam = "";
for (int i = 0; i <= 100000; i++) a[i] = 0;
for (int i = 0; i <= lbX.Items.Count - 1; i++)
{
vt = 0;
dem = 0;
for (j = 0; j <= lbX.Items[i].Text.Length - 1;
j++)
if (lbX.Items[i].Text[j] == ' ')
{
dem++;
tam = lbX.Items[i].Text.Substring(vt, j vt);
vt = j;
a[Convert.ToInt32(tam)] = 1;
}
sobanghi = sobanghi + dem;
int p;
dem_1 = 0;
max = 0;
for (j = 0; j <= lbY.Items.Count - 1; j++)
{
int dem_tam = 0;
vt = 0;
for (k = 0; k <= lbY.Items[j].Text.Length 1; k++)
if (lbY.Items[j].Text[k] == ' ')
{
tam = lbY.Items[j].Text.Substring(vt,
k - vt);
p = Convert.ToInt32(tam);
vt = k;
if (a[p] == 1)
{
dem_tam++;
dem_1++;
a[p] = 2;
}
}
if (dem_tam > max) max = dem_tam;
if (dem == dem_1) break;
}
tong_phan_hoach = tong_phan_hoach + max;
}
return 1 - (tong_phan_hoach / sobanghi);
}
public void phanhoach(string x, ListBox lb)
{
lb.Items.Clear();
int i;
string s = "";
string[] x1 = new string[100];
int sophantux1 = 0;
char[] x2 = new char[100];
int sophantux2 = 0;
for (int j = 0; j <= x.Length - 1; j += 2)
{
sophantux2++;
x2[sophantux2] = x[j];
}
int vt;
for (i = 0; i <= ListBox1.Items.Count - 1; i++)
{
sophantux1 = 0;
vt = 0;
for (int j = 0; j <=
ListBox1.Items[i].Text.Length - 1; j++)
if (ListBox1.Items[i].Text[j] == '+')
{
sophantux1++;
x1[sophantux1] =
ListBox1.Items[i].Text.Substring(vt, j - vt);
vt = j + 1;
}
s = "";
string xau_select = "";
xau_select = xau_select + x2[1] + " = " + "'" +
x1[1] + "'" + " COLLATE SQL_Latin1_General_CP1_CS_AS ";
for (int j = 2; j <= sophantux1; j++)
xau_select = xau_select + " and " + x2[j] + "
= " + "'" + x1[j] + "'" + " COLLATE
SQL_Latin1_General_CP1_CS_AS ";
string connectionstring =
ConfigurationSettings.AppSettings["connectioninfo"];
SqlConnection connection = new
SqlConnection(connectionstring);
connection.Open();
string select = "select stt from dulieukhoi where
id=" + latcat + " and " + xau_select;
SqlCommand comm = new SqlCommand(select,
connection);
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
s = s + reader[0].ToString() + " ";
lb.Items.Add(s);
connection.Close();
}
}
void tinhsocotcosodulieu()
{
string connectionstring =
ConfigurationSettings.AppSettings["connectioninfo"];
SqlConnection connection = new
SqlConnection(connectionstring);
connection.Open();
string select = "select count(*) from
information_schema.columns where table_name = 'dulieukhoi'";
SqlCommand comm = new SqlCommand(select, connection);
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
socotcosodulieu = Int32.Parse(reader[0].ToString());
connection.Close();
}
void hienthi_thongtintinhtoan()
{
tb_ketqua.Controls.Add(new LiteralControl("
"));
Label lb = new Label();
lb.Text = "Nhập tập thuộc tính vế trái";
lb.Font.Bold = true;
lb.Font.Size = FontUnit.Parse("13pt");
lb.ForeColor = Color.RoyalBlue;
tb_ketqua.Controls.Add(lb);
tb_ketqua.Controls.Add(new
LiteralControl(" "));
tb_ketqua.Controls.Add(vetrai);
tb_ketqua.Controls.Add(new LiteralControl("
"));
Label lb1 = new Label();
lb1.Text = "Nhập tập thuộc tính vế phải";
lb1.Font.Bold = true;
lb1.Font.Size = FontUnit.Parse("13pt");
lb1.ForeColor = Color.RoyalBlue;
tb_ketqua.Controls.Add(lb1);
tb_ketqua.Controls.Add(new
LiteralControl(" "));
tb_ketqua.Controls.Add(vephai);
tb_ketqua.Controls.Add(new LiteralControl("
"));
Label lb2 = new Label();
lb2.Text = "(Các thuộc tính nhập cách nhau bởi dấu
cách)";
lb2.Font.Italic = true;
tb_ketqua.Controls.Add(lb2);
tb_ketqua.Controls.Add(new LiteralControl("
"));
Label lb_gioithieu = new Label();
lb_gioithieu.Font.Italic = true;
lb_gioithieu.Font.Bold = true;
lb_gioithieu.Font.Size = FontUnit.Parse("13pt");
lb_gioithieu.Text = "id : Lớp(1: Lớp k31, 2: Lớp
k32); A: Khu vực; B: Tên sinh viên; C: Điểm môn Văn; D: Điểm
môn Chính trị";
tb_ketqua.Controls.Add(lb_gioithieu);
tb_ketqua.Controls.Add(new LiteralControl("
"));
tb_ketqua.Controls.Add(new LiteralControl("
"));
}
void hienthi_ketquatinhtoan()
{
//tb_ketqua.Controls.Add(esynol);
tb_ketqua.Controls.Add(new LiteralControl("
"));
Button bt = new Button();
tb_ketqua.Controls.Add(bt);
bt.Text = "Hiển thị kết quả";
bt.Command += new CommandEventHandler(Button1_Click);
Label lb = new Label();
lb.Text = "Độ đo lỗi của phụ thuộc hàm";
lb.ForeColor = Color.RoyalBlue;
lb.Font.Italic = true;
lb.Font.Bold = true;
lb.Font.Size = FontUnit.Parse("13pt");
tb_ketqua.Controls.Add(lb);
}
void xulygiaodien_phai()
{
hienthi_cosodulieu();
hienthi_thongtintinhtoan();
hienthi_ketquatinhtoan();
tb_right.Controls.Add(tb_hienthithongtin);
}
void xulygiaodien_trai()
{
tb_left.Width = Unit.Pixel(chieu_ngang_trai);
Menu menu = new Menu();
MenuItem mi2 = new MenuItem();
mi2.Text = "Chỉnh sửa cơ sở dữ liệu";
mi2.NavigateUrl = "~\\hung\\thaotac_dulieukhoi.aspx";
MenuItem mi3 = new MenuItem();
mi3.Text = "Chạy thử chương trình";
mi3.NavigateUrl = "~\\hung\\afd_dulieukhoi.aspx";
menu.ForeColor = Color.FromName("#520060");
menu.Font.Size = FontUnit.Parse("13pt");
menu.StaticMenuItemStyle.Height = Unit.Pixel(40);
menu.StaticHoverStyle.ForeColor = Color.Sienna;
menu.Items.Add(mi2);
menu.Items.Add(mi3);
tb_left.VerticalAlign = VerticalAlign.Top;
tb_left.Controls.Add(menu);
}
void xulygiaodien_tren()
{
Label lb = new Label();
lb.Text = "PHỤ THUỘC HÀM XẤP XỈ TRONG MÔ HÌNH DỮ LIỆU
KHỐI - .Net";
lb.ForeColor = Color.RosyBrown;
lb.Font.Bold = true;
lb.Font.Size = FontUnit.Parse("14pt");
tb_banner.Controls.Add(lb);
tb_banner.Width = Unit.Pixel(800);
tb_banner.Height = Unit.Pixel(80);
}
void xulygiaodien_duoi()
{
Label lb = new Label();
lb.Text = "Email: ";
lb.Font.Italic = true;
lb.ForeColor = Color.Blue;
tb_footer.Controls.Add(lb);
tb_footer.HorizontalAlign = HorizontalAlign.Right;
}
protected void Page_Load(object sender, EventArgs e)
{
xulygiaodien_trai();
xulygiaodien_phai();
xulygiaodien_tren();
xulygiaodien_duoi();
int i;
for (i = 1; i <= socotcosodulieu - 1; i++)
{
chuyendoi[i] = (char)(i + 64);
}
}
void hienthi_thuoctinh(string x, string xau)
{
ListBox1.Items.Clear();
int i = 0;
string s = "";
string connectionstring =
ConfigurationSettings.AppSettings["connectioninfo"];
SqlConnection connection = new
SqlConnection(connectionstring);
connection.Open();
string select = "select distinct " + x + " from
dulieukhoi where id =" + latcat
;
SqlCommand comm = new SqlCommand(select, connection);
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
s = "";
for (i = 0; i <= xau.Length / 2; i++)
s = s + reader[i].ToString() + "+";
ListBox1.Items.Add(s);
}
connection.Close();
}
void laysolatcat()
{
string connectionstring =
ConfigurationSettings.AppSettings["connectioninfo"];
SqlConnection connection = new
SqlConnection(connectionstring);
connection.Open();
string select = "select max(id) from dulieukhoi";
SqlCommand comm = new SqlCommand(select, connection);