Tải bản đầy đủ (.pdf) (76 trang)

Về các phụ thuộc hàm xấp xỉ trong mô hình dữ liệu dạng khối

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 76 trang )

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, Auidi 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 AD trên lát cắt 2: 0.1666


Như vậy : Phụ thuộc hàm AD 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ỉ AD 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);


×