Tải bản đầy đủ (.doc) (31 trang)

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT TOÁN APRIORI VÀ ÁP DỤNG TÌM LUẬT KẾT HỢP TRONG CƠ SỞ DỮ LIỆU SIÊU THỊ

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 (522.88 KB, 31 trang )

Giáo viên hướng dẫn:PGS.TS. Đỗ Văn NhơnHọc viên
thực hiện:Vũ Xuân VinhMã số học
viên:CH1301117Lớp:Cao học khóa 8
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
LỜI
MỞ
ĐẦU
Khoảng hơn một thập kỷ trở lại đây, lượng thông tin được lưu trữ trên các thiết bị
điện tử không ngừng tăng lên. Sự tích lũy dữ liệu này xảy ra với một tốc độ chóng mặt.
Trang 1
Tháng 10, 2014
THUẬT TOÁN APRIORI VÀ ÁP DỤNG TÌM LUẬT KẾT HỢP
TRONG CƠ SỞ DỮ LIỆU SIÊU THỊ
BÀI THU HOẠCH MÔN THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT
VẤN ĐỀ
ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Người ta ước đoán rằng lượng thông tin trên toàn cầu tăng gấp đôi sau khoảng hai năm và
theo đó số lượng cũng như kích cỡ của các cơ sở dữ liệu cũng tăng lên một cách nhanh
chóng. Nhu cầu được đặt ra là liệu chúng ta có thể khai thác được gì từ lượng dữ liệu
khổng lồ và tưởng chừng như vô nghĩa đó? Phương pháp khai phá dữ liệu (data mining)
ra đời như là một hướng giải pháp hữu hiệu cho câu hỏi trên.
Khai phá dữ liệu bao gồm rất nhiều những kỹ thuật phân tích dữ liệu bên trong như:
luật kết hợp, phân loại dữ liệu, gom nhóm dữ liệu, lập mô hình, dự báo…nhưng quan
trọng nhất vẫn là phương pháp tìm luật kết hợp để tạo ra các tri thức hữu dụng. Ví dụ
như chúng ta có thể dự đoán được những sản phẩm nào sẽ được mua cùng nhau trong
một thời gian cụ thể đối với hệ thống siêu thị hay dự đoán thị trường đối với lĩnh vực


kinh doanh chứng khoán…
Trong phạm vi bài tiểu luận này, em sẽ trình bày một cách tổng quát về cơ sở lý
thuyết của phương pháp tìm luật kết hợp, ứng dụng và cải tiến thuật toán Apriori và đồng
thời áp dụng những lý thuyết đó để xây dựng nên một ứng dụng nhỏ để minh họa cho
phương pháp tìm luật kết hợp đó.
Qua đây, em cũng xin được gửi lời cảm ơn chân thành đến giảng viên Đỗ Văn Nhơn,
người không những tận tâm truyền đạt những kiến thức nền tảng cơ bản về môn học mà
còn giúp em có được cơ sở vững chắc để phục vụ cho việc nghiên cứu sau này.
Trang 2
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
MỤC LỤC HÌNH ẢNH
Hình 1: Quá trình phát hiện tri thức từ cơ sở dữ liệu 6
Hình 2: Minh họa các bước chạy thuật toán Apriori 17
Hình 3: Sơ đồ so sánh Apriori và AprioriTid 21
Hình 4: Sơ đồ mối quan hệ giữa các bảng 22
Hình 5: Giao diện chương trình tìm luật kết hợp trong siêu thị 24
Hình 6: Giao diện kết quả chương trình tìm luật kết hợp trong siêu thị 25
Hình 7: File excel cho hóa đơn 26
Hình 8: File excel cho chi tiết hàng hóa 26
Trang 3
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
MỤC LỤC
LỜI MỞ ĐẦU 1
MỤC LỤC HÌNH ẢNH 3
1.1 Giới thiệu 4
1.2 Mục đích và nhiệm vụ của đề tài 5
2.1 Tổng quan về khai phá dữ liệu 5
2.1.1 Khái niệm 5

2.1.2 Quá trình khám phá tri thức trong CSDL 6
2.1.3 Các kỹ thuật khai phá dữ liệu 7
2.2 Luật kết hợp trong khai phá dữ liệu 10
2.2.1 Khai phá luật kết hợp 10
2.2.2 Lý thuyết về luật kết hợp 11
2.3 Thuật toán tìm luật kết hợp Apriori 16
2.3.1 Mô tả thuật toán: 16
2.3.4 Ưu điểm và khuyết điểm của thuật toán Apriori: 19
3.3.5 Cải tiến thuật toán: 19
3.1 Phát biểu bài toán: 23
3.2 Phân tích bài toán 24
3.3 Các bảng cơ sở dữ liệu 25
3.4 Giao diện chương trình 27
TÀI LIỆU THAM KHẢO 30
CHƯƠNG 1 TỔNG QUAN
1.1Giới thiệu
Trong những năm gần đây, với sự phát triển công nghệ thông tin chúng ta thấy một
thực tế là con người có trong tay một lượng dữ liệu rất lớn nhưng với những kỹ thuật khai
thác cũ như SQL dường như đã không còn phù hợp nữa, nó dần nhường chỗ cho những
kỹ thuật tiên tiến hơn mà cụ thể là khai phá dữ liệu (data mining). Khai phá dữ liệu đã trở
thành một trong những lĩnh vực chính được các nhà khoa học quan tâm nghiên cứu bởi
khả năng áp dụng cao trong thực tiễn cuộc sống. Nó được áp dụng rộng rãi trong nhiều
Trang 4
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
lĩnh vực như: tài chính, thị trường chứng khoán, thương mại, giáo dục, y tế… với nhiều
hướng tiếp cận như: phân lớp/ dự đoán, phân cụm, tìm luật kết hợp …
Trong phạm vi tiểu luận này, em xin trình bày vấn đề tìm luật kết hợp trong cơ sở dữ
liệu siêu thị dựa trên thuật toán Apriori, cách đánh giá và cải thiện cho thuật toán này
cũng như thiết kế và cài đặt một ứng dụng nhỏ để biểu diễn cho thuật toán.

1.2Mục đích và nhiệm vụ của đề tài
Nghiên cứu khai phá dữ liệu và ứng dụng luật kết hợp (Associatin Rule) để hỗ trợ cho
việc ra quyết định phục vụ cho công tác quản lý kho hàng của siêu thị dựa trên luật kết
hợp.
Nghiên cứu thuật toán Apriori và tìm cách cải thiện thuật toán nhằm xây dựng ứng
dụng đơn giản để khai phá luật kết hợp.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1Tổng quan về khai phá dữ liệu
2.1.1 Khái niệm
Vào cuối những năm 1980 khái niệm khai phá dữ liệu (Data Mining) ra đời. Nó bao
hàm một loạt các kỹ thuật nhằm phát hiện ra các thông tin có giá trị tiềm ẩn trong các kho
dữ liệu. Về bản chất, khai phá dữ liệu liên quan đến việc phân tích các dữ liệu và sử dụng
các kỹ thuật để tìm ra các tri thức hữu dụng.
Trang 5
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã dùng khái niệm “Phát hiện tri
thức” trong cơ sở dữ liệu (Knowledge Discovery in Database – KDD) để chỉ toàn bộ quá
trình phát hiện các tri thức hữu dụng từ các kho dữ liệu lớn. Do đó khai phá dữ liệu chỉ là
một phần trong khái niệm “Phát hiện tri thức” ấy. Tuy nhiên nó cũng chính là một bước
đặc biệt quan trọng trong toàn bộ quá trình, sử dụng các giải thuật đặc trưng để chiết xuất
ra các giá trị tiềm ẩn từ kho dữ liệu.
Hiện nay khai phá dữ liệu được ứng dụng vào rất nhiều lĩnh vực cụ thể khác nhau
như: y tế, dầu khí, khí tượng, kinh doanh, y học, tài chính và thị trường chứng khoán, bảo
hiểm
2.1.2 Quá trình khám phá tri thức trong CSDL
Khám phá tri thức trong CSDL (KDD) là lĩnh vực liên quan đến các ngành như: thống
kê, học máy, CSDL, thuật toán, trực quan hóa dữ liệu, tính toán song song và hiệu năng
cao …
Mục đích của quá trình khám phá tri thức là rút ra tri thức từ dữ liêu trong CSDL lớn.

Quá trình KDD là quá trình gồm nhiều giai đoạn và lặp đi lặp lại, mà trong đó sự lặp lại
có thể xuất hiện ở bất cứ bước nào.
Quá trình đó gồm các bước như sau:
a) Làm sạch dữ liệu (data cleaning): loại bỏ nhiễu hoặc các dữ liệu không thích
hợp.
b) Làm giàu dữ liệu (data enrichment): tích hợp dữ liệu từ các nguồn khác nhau
như: CSDL, Kho dữ liệu, file text
c) Chọn lọc dữ liệu (data selection): chọn những dữ liệu liên quan trực tiếp đến
nhiệm vụ sẽ được thu thập từ các nguồn dữ liệu ban đầu.
d) Chuyển đổi dữ liệu (data transformation): dữ liệu sẽ được chuyển đổi về dạng
phù hợp cho việc khai phá bằng cách thực hiện các thao tác nhóm hoặc tập hợp.
Trang 6
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
e) Khai phá dữ liệu (data mining): là giai đoạn quan trọng nhất, trong đó các
phương pháp thông minh sẽ được áp dụng để trích xuất ra các mẫu dữ liệu.
f) Đánh giá mẫu (pattern evaluation): đánh giá sự hữu ích của các mẫu biểu diễn tri
thức dựa vào một số phép đo.
g) Biểu diễn dữ liệu (knowlegde presentation): sử dụng các kỹ thuật trình diễn và
trực quan hoá dữ liệu để biểu diễn tri thức khai phá được cho người sử dụng.
Hình 1 – Quá trình phát hiện tri thức từ cơ sở dữ liệu(Nguồn: Internet)
2.1.3 Các kỹ thuật khai phá dữ liệu
a) Phương pháp suy diễn và qui nạp: Một cơ sở dữ liệu là một kho thông tin nhưng
các thông tin quan trọng hơn cũng có thể được suy diễn từ kho thông tin đó. Có
hai kỹ thuật chính để thực hiện việc này là suy diễn và quy nạp.
 Phương pháp suy diễn: Nhằm rút ra thông tin là kết quả logic của các thông
tin trong cơ sở dữ liệu. Phương pháp suy diễn dựa trên các sự kiện chính xác
để suy ra các tri thức mới từ các thông tin cũ. Mẫu chiết xuất được bằng cách
sử dụng phương pháp này thường là các luật suy diễn.
Trang 7

Làm giàu dữ liệu
Làm sạch dữ
liệu
Chọn lọc dữ liệu
Chuyển đổi dữ liệu
Khai phá dữ liệu
Đánh giá mẫu
Biểu diễn dữ liệu
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
 Phương pháp quy nạp: Phương pháp quy nạp suy ra các thông tin được sinh ra
từ cơ sở dữ liệu. Có nghĩa là nó tự tìm kiếm, tạo mẫu và sinh ra tri thức chứ không
phải bắt đầu với các tri thức đã biết trước. Các thông tin mà phương pháp này đem
lại là các thông tin hay các tri thức cấp cao diễn tả về các đối tượng trong cơ sở dữ
liệu. Phương pháp này liên quan đến việc tìm kiếm các mẫu trong CSDL. Trong
khai phá dữ liệu, quy nạp được sử dụng trong cây quyết định và tạo luật.
b) Phương pháp cây quyết định và luật:
 Cây quyết định: Cây quyết định là một mô tả tri thức dạng đơn giản nhằm
phân các đối tượng dữ liệu thành một số lớp nhất định. Các nút của cây được
gán nhãn là tên các thuộc tính, các cạnh được gán các giá trị có thể của các
thuộc tính, các lá mô tả các lớp khác nhau. Các đối tượng được phân lớp theo
các đường đi trên cây, qua các cạnh tương ứng với các giá trị, thuộc tính của
đối tượng tới lá.
 Tạo luật: Các luật được tạo ra nhằm suy diễn một số mẫu dữ liệu có ý nghĩa về
mặt thống kê. Các luật có dạng Nếu P thì Q, với P là mệnh đề đúng với một
phần trong CSDL, Q là mệnh đề dự đoán.
Cây quyết định và luật có ưu điểm là hình thức mô tả đơn giản, mô hình suy
diễn khá dễ hiểu đối với người sử dụng. Tuy nhiên, giới hạn của nó là mô tả
cây và luật chỉ có thể biểu diễn được một số dạng chức năng và vì vậy giới hạn
về cả độ chính xác của mô hình.

c) Phương pháp mạng Neural:
Mạng Neuron là tiếp cận tính toán mới liên quan tới việc phát triển cấu trúc toán học
và khả năng học. Các phương pháp là kết quả của việc nghiên cứu mô hình học của hệ
thống thần kinh con người.
Mạng Neuron có thể đưa ra ý nghĩa từ các dữ liệu phức tạp hoặc không chính xác và
có thể được sử dụng để chiết xuất các mẫu và phát hiện ra các xu hướng quá phức tạp mà
Trang 8
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
con người cũng như các kỹ thuật máy tính khác không thể phát hiện được. Khi đề cập đến
khai thác dữ liệu, người ta thường đề cập nhiều đến mạng Neuron. Tuy mạng Neuron có
một số hạn chế gây khó khăn trong việc áp dụng và phát triển nhưng nó cũng có những
ưu điểm đáng kể.
d) Phương pháp tìm luật kết hợp:
Phương pháp này nhằm phát hiện ra các luật kết hợp giữa các thành phần dữ liệu
trong cơ sở dữ liệu. Mẫu đầu ra của giải thuật khai phá dữ liệu là tập luật kết hợp tìm
được. Ta có thể lấy một ví dụ đơn giản về luật kết hợp như sau: sự kết hợp giữa hai thành
phần A và B có nghĩa là sự xuất hiện của A trong bản ghi kéo theo sự xuất hiện của B
trong cùng bản ghi đó: A => B.
Việc phát triển một thuật toán phải phát hiện luật này trong cơ sở dữ liệu lớn là không
khó. Tuy nhiên, vấn đề là ở chỗ có thể có rất nhiều luật kiểu này hoặc là ta chỉ biết một
tập nhỏ dữ liệu trong cơ sở dữ liệu lớn thoả mãn tiền đề của luật. Ví dụ chỉ có số ít người
mua sách tiếng anh mà mua thêm đĩa CD. Số lượng các luật kết hợp trong một số cơ sở
dữ liệu lớn gần như vô hạn. Do vậy thuật toán sẽ không thể phát hiện hết các luật và
không phân biệt được luật nào là thông tin thực sự có giá trị và thú vị.
Vậy chúng ta đặt ra câu hỏi là luật kết hợp nào là thực sự có giá trị? Chẳng hạn ta có
luật: Âm nhạc, ngoại ngữ, thể thao => CD, nghĩa là những người mua sách âm nhạc,
ngoại ngữ, thể thao thì cũng mua đĩa CD. Lúc đó ta quan tâm đến số lượng trường hơp
khách hàng thoả mãn luật này trong cơ sở dữ liệu hay độ hỗ trợ cho luật này. Độ hỗ trợ
cho luật chính là phần trăm số bản ghi có cả sách âm nhạc, ngoại ngữ, thể thao và đĩa CD

hay tất cả những người thích cả ba loại sách trên.
Tuy nhiên giá trị hỗ trợ là không đủ. Có thể có trường hợp ta có một nhóm tương đối
những người đọc cả ba loại sách trên nhưng lại có một nhóm với lượng lớn hơn những người
thích sách thể thao, âm nhạc, ngoại ngữ mà không thích mua đĩa CD. Trong trường hợp này
tính kết hợp rất yếu mặc dù độ hỗ trợ tương đối cao. Như vậy chúng ta cần thêm một độ đo
Trang 9
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
thứ hai đó là độ tin cậy (Confidence). Độ tin cậy là phần trăm các bản ghi có đĩa CD trong số
các bản ghi có sách âm nhạc, thể thao, ngoại ngữ.
Nhiệm vụ của việc phát hiện các luật kết hợp là phải tìm tất cả các luật dạng X => B
sao cho tần số của luật không nhỏ hơn ngưỡng Minsup cho trước và độ tin cậy của luật
không nhỏ hơn ngưỡng Minconfi cho trước. Từ một cơ sở dữ liệu ta có thể tìm được hàng
nghìn và thậm chí hàng trăm nghìn các luật kết hợp.
2.2Luật kết hợp trong khai phá dữ liệu
2.2.1 Khai phá luật kết hợp
Được giới thiệu từ năm 1993, bài toán khai thác luật kết hợp nhận được rất nhiều sự
quan tâm của nhiều nhà nghiên cứu. Ngày nay việc khai thác các luật như thế vẫn là một
trong những phương pháp khai thác mẫu phổ biến nhất trong việc khám phá tri thức và
khai phá dữ liệu.
Mục đích chính của khai phá dữ liệu là các tri thức được kết xuất ra sẽ được sử dụng
trong dự báo thông tin trợ giúp trong sản xuất kinh doanh và nghiên cứu. Trong hoạt
động sản xuất kinh doanh, ví dụ kinh doanh các mặt hàng tại siêu thị, các nhà quản lý rất
thích có được các thông tin mang tính thông kê như: “90% phụ nữ có xe máy màu đỏ thì
dùng nước hoa hiệu Chanel” hoặc “70% khách hàng mua bia sẽ mua thêm nước ngọt”.
Những thông tin như vậy rất hữu ích trong việc định hướng kinh doanh. Vậy vấn đề đặt
ra là liệu có tìm được các luật như vậy bằng các công cụ khai phá dữ liệu hay không ?
Điều đó hoàn toàn có thể, đó chính là vấn đề khai phá luật kết hợp.
Giả sử ta có một CSDL D. Luật kết hợp cho biết phạm vi mà trong đó sự xuất hiện
của tập các mục S nào đó trong các bản ghi của D sẽ kéo theo sự xuất hiện của một tập

những mục U cũng trong những bản ghi đó. Mỗi luật kết hợp được đặc trưng bởi một cặp
tỉ lệ. Mỗi tỉ lệ hỗ trợ được biểu diễn bằng tỉ lệ % những bản ghi trong D chứa cả S và U.
Trang 10
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Vấn đề khám phá luật kết hợp được phát biểu như sau: Cho trước tỉ lệ hỗ trợ
θ
và độ
tin cậy
β
. Đánh số tất cả các luật trong D có các giá trị tỉ lệ hỗ trợ và tin cậy lớn hơn
θ


β
tương ứng. Giả thiết D là CSDL giao dịch và với
θ
=40%,
β
= 90%. Vấn đề phát
hiện luật kết hợp được thực hiện như sau: Liệt kê, đếm tất cả những quy luật chỉ ra sự
xuất hiện một số các mục sẽ kéo theo một số mục khác. Chỉ xét những quy luật mà tỉ lệ
hỗ trợ lớn hơn 40% và độ tin cậy lớn hơn 90%. Ta hình dung rằng, một công ty bán hàng
qua mạng, các khách hàng được yêu cầu điền vào các mẫu bán hàng để công ty có được
một CSDL về các yêu cầu của khách hàng. Giả sử công ty quan tâm đến mối quan hệ
“tuổi, giới tính, nghề nghiệp và sản phẩm”. Khi đó có thể có rất nhiều câu hỏi tương ứng
với luật trên. Ví dụ trong lứa tuổi nào thì những khách hàng nữ là công nhân đặt mua loại
mặt hàng gì, như là áo dài là nhiều nhất, thỏa mãn một ngưỡng nào đó.
2.2.2 Lý thuyết về luật kết hợp
A. Một số khái niệm cơ bản

Kí hiệu I = {i1, i2, …, im} là tập các thuộc tính được gọi là các mục dữ liệu. D là cơ
sở dữ liệu của tập các giao tác, mỗi giao tác T là một tập mục con của tập mục I, T
i


I.
Mỗi giao tác T
i
có một định danh duy nhất gọi là TID (Transaction Identification).
X={i1, i2,…,ik}

I được gọi là một tập mục hay một tập k-mục nếu nó chứa k mục. Một
giao tác T được gọi là chứa tập mục X chỉ khi X

T. Mỗi giao tác là một bộ <TID, I>, I
là tập mục.
Luật kết hợp là một mối liên hệ điều kiện giữa hai tập các hạng mục dữ liệu X và Y
theo dạng sau: Nếu X thì Y, và ký hiệu là X ⇒ Y. Ta có luật kết hợp X ⇒ Y, nếu X ⊂ I,
Y ⊂ I và X ∩ Y = ∅. Chúng phụ thuộc vào 2 đại lượng cơ bản là độ hỗ trợ (S) và độ tin
cậy (C).
Trang 11
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
a) Độ hỗ trợ (Support): Độ hỗ trợ của một luật r = X

Y là tỉ số phần trăm của
số giao tác trong D có chứa X

Y. Kí hiệu Supp(r).
Supp(r) thể hiện phạm vi ảnh hưởng của luật trên toàn bộ cơ sở dữ liệu. Ngưỡng

nhỏ nhất của độ hỗ trợ gọi là minsupp
Supp(r)=
)(
)(
DCard
YXCard ∪
(%) 0

Supp(r)

1
Với:
Card(X

Y): tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải.
Card(D): tập tất cả các dòng trên CSDL.
b)Độ tin cậy (Confidence): Độ tin cậy của một luật r = X

Y là tỉ số phần trăm
của số giao tác trong D chứa X

Y với số giao tác trong D có chứa tập mục X. Kí hiệu
Conf(r).
Conf(r) thể hiện tính chính xác, tính đúng đắn hay khả năng tin cậy của luật trong
phạm vi ảnh hưởng của luật (được xác định bởi Supp(r)). Ngưỡng nhỏ nhất của độ tin cậy
gọi là minconf
Conf(r) =
(%)
)(
)(

XCard
YXCard ∪
0

Conf(r)

1.
Với:
Card(X

Y): tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải.
Card(X): tổng số dòng chứa vế trái của luật trên CSDL.
c)Large ItemSet: Tập các hạng mục dữ liệu (ItemSet) có độ hỗ trợ (Supp) lớn
hơn hay bằng giá trị của ngưỡng nhỏ nhất (minsupp).
Trang 12
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
d)Small ItemSet : Tập các hạng mục dữ liệu (ItemSet) có độ hỗ trợ (Supp) nhỏ
hơn giá trị của ngưỡng nhỏ nhất (minsupp).
 Tóm lại: Với L là một Large ItemSet, A là một tập con khác rỗng của L, nếu tỉ lệ
phần trăm giữa Support của L so với Support của A lớn hơn hay bằng độ tin cậy nhỏ nhất
(minconf) thì ta có luật kết hợp A ⇒ (L\A).
B. Một số tính chất liên quan đến các hạng mục phổ biến
• Tập mục phỗ biến
Tính chất 1 (Độ hỗ trợ của tập con):
Với A và B là tập các mục, nếu A

B thì sup(A)

sup (B)

Điều này rõ ràng vì tất cả các giao tác của D hỗ trợ B thì cũng hỗ trợ A.
Tính chất 2:
Một tập chứa một tập không phổ biến thì cũng là tập không phổ biến.
Nếu một mục trong B không có độ hỗ trợ tối thiểu trên D nghĩa là sup (B) < minsup
thì một tập con A của B sẽ không phải là một tập phổ biến vì support(B)

support(A) <
minsup (theo tính chất 1).
Tính chất 3: các tập con của tập phổ biến cũng là tập phổ biến
Nếu mục B là mục phổ biến trên D, nghĩa là support (B)

minsup thì mọi tập con A
của B là tập phổ biến trên D vì support(A)

support(B)> minsup.Một số hướng tiếp cận
trong khai phá luật kết hợp
• Các tính chất của luật kết hợp:
Tính chất 1:(không hợp các luật kết hợp)
Nếu có X

Z và Y

Z trong D thì không nhất thiết X

Y

Z là đúng
Xét trường hợp X

Z =

θ
và các tác vụ trong D hỗ trợ Z nếu và chỉ nếu chúng hỗ
trợ mỗi X hoặc Y, khi đó luật X

Y

Z có độ hỗ trợ 0% s
Tương tự: X

Y

X

Z

X

Y

Z
Tính chất 2: không tách luật
Trang 13
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Nếu X

Y

X thì X


Z và Y

Z chưa chắc xảy ra.
Ví dụ trường hợp Z có mặt trong một giao tác chỉ khi cả hai X và Y cũng có mặt, tức
là sup(X

Y)=sup(Z), nếu độ hỗ trợ của X và Y đủ lớn hơn sup(X

Y), tức là
sup(X)>sup(X

Y) và sup(Y)>sup(X

Y) thì hai luật riêng biệt sẽ không đủ độ tin cậy.
Tuy nhiên đảo lại: X

Y

Z

X

Y

X

Z
Tính chất 3 (Các luật kết hợp không có tính bắc cầu)
Nếu X


Y và Y

Z, chúng ta không thể suy ra X

Z
Ví dụ: giả sử T(X)

T(Y)

T(Z), ở đó T(X),T(Y),T(Z) tương ứng là các giao dịch
chứa X, Y, Z và độ tin cậy cực tiểu minconf.
conf(X

Y)=conf(Y

Z)=minconf thế thì: conf(X

Y)=minconf2 < minconf vì
minconf < 1, do đó luật X

Z không đủ độ tin cậy
Tính chất 4 :
Nếu A

(L-A) không thỏa mãn độ tin cậy cực tiểu thì luật
B

(L-B) cũng không thỏa mãn với các tập mục L,A,B và B

A


L
Vì supp(B)

sup(A) (theo tính chất 1) và định nghĩa độ tin cậy, chúng ta nhận được:
conf(B

(L-B))=
)sup(
)sup(
B
L


)sup(
)sup(
B
L
< min conf
Cũng như vậy: Nếu có (L-C)

C thì ta cũng có luật (L-D)

D, với D

C và D

φ
.
Bởi vì D


C nên (L-D)

(L-C) do đó sup(L-D)

sup(L-C)
C. Một số hướng tiếp cận trong khai phá luật kết hợp
Hướng khai thác luật kết hợp cho đến nay đã được nghiên cứu và phát triển theo
nhiều hướng khác nhau. Có những ý tưởng nhằm cải tiến tốc độ thuật toán, có những đề
xuất nhằm tìm kiếm luật có ý nghĩa hơn.
Luật kết hợp nhị phân là hướng nghiên cứu đầu tiên của luật kết hợp. Hầu hết các
nghiên cứu ở thời kỳ đầu đều về liên quan đến luật kết hợp nhị phân. Trong dạng luật kết
hợp này, các mục, thuộc tính, chỉ được quan tâm là có hay không xuất hiện trong giao tác
Trang 14
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
của CSDL chứ không quan tâm về mức độ xuất hiện. Ví dụ như trong hệ thống tính cước
điện thoại thì việc gọi 10 cuộc điện thoại với 1 cuộc được xem là giống nhau. Thuật toán
tiêu biểu nhất khai phá dạng luật này là thuật toán Apriori và các biến thể của nó. Đây là
dạng luật đơn giản và các luật khác cũng có thể chuyển về dạng luật này nhờ một số
phương pháp như rời rạc hóa, mờ hóa… Một ví dụ cho dạng luật này : “gọi liên tỉnh =
‘yes’ AND gọi di động = ‘yes’  gọi quốc tế = ‘yes’ AND gọi dịch vụ 108 = ‘yes’, với
độ hỗ trợ 20% và độ tin cậy 80%”.
Luật kết hợp có thuộc tính số và thuộc tính hạng mục: các thuộc tính của các cơ sở dữ
liệu thực tế có kiểu rất đa dạng, như số nhị phân, giá trị định tính, định lượng… Để phát
hiện luật kết hợp với các thuộc tính này, các nhà nghiên cứu đã đề xuất ra một số phương
pháp rời rạc hóa nhằm chuyển dạng luật này về dạng nhị phân để có thể áp dụng các
thuật toán đã có. Một ví dụ về dạng luật này “phương thức gọi = ‘Tự động’ AND giờ gọi
IN [’23:00:30… 23:00:59]” AND Thời gian đàm thoại IN [‘200…3000’]gọi liên tỉnh =
‘có’, với độ hỗ trợ là 23.45% và độ tin cậy là 80%”.

Luật kết hợp tiếp cận theo hướng tập thô: tìm luật kết hợp dựa trên lý thuyết tập thô.
Luật kết hợp nhiều mức : cách tiếp cận theo luật này sẽ tìm kiếm thêm những luật có
dạng “mua máy tính PC  mua hệ điều hành AND mua phần mềm tiện ích văn phòng
Microsoft Office”. Như vậy dạng luật đầy là dạng luật tổng quát của dạng luật sau và
tổng quát theo nhiều mức khác nhau.
Luật kết hợp mờ: với những hạn chế còn gặp phải trong quá trình rời rạc hóa các
thuộc tính số, các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục các hạn
chế trên và chuyển luật kết hợp về một dạng tự nhiên hơn, gần gũi hơn với người sử dụng
một ví dụ của dạng này là: “thuê bao cá nhân = ‘yes’ AND thời gian đàm thoại lớn AND
cước nội tỉnh = ‘yes’  cước không hợp lệ = ‘yes’, với độ hỗ trợ 4% và độ tin cậy 85%”.
Trong luật trên, điều kiện thời gian đàm thoại lớn ở vế trái của luật là một thuộc tính đã
được mờ hóa.
Trang 15
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Luật kết hợp với thuộc tính được đánh trọng số: trong thực tế, các thuộc tính trong
CSDL không phải lúc nào cũng có vai trò như nhau. Có một số thuộc tính được chú trọng
hơn và có mức độ quan trọng cao hơn các thuộc tính khác. Ví dụ khi khảo sát về doanh
thu hàng tháng, thông tin về thời gian đàm thoại,vùng cước là quan trọng hơn nhiều so
với thông tin về phương thức gọi. Trong quá trình tìm kiếm luật, các trọng số sẽ được gán
cho thời gian gọi, vùng cước các trọng số lớn hơn thuộc tính phương thức gọi. Với luật
kết hợp có thuộc tính được đánh trọng số, chúng ta sẽ khai thác được những luật hiếm
(tức là có độ hỗ trợ thấp, nhưng có ý nghĩa đặt biệt hoặc mang rất nhiều ý nghĩa).
Luật kết hợp song song: bên cạnh khai thác luật kết hợp tuần tự, các nhà làm tin học
cũng tập trung vào nghiên cứu các thuật giải song song cho quá trình phát triển luật kết
hợp. Nhu cầu song song hóa và xử lý phân tán là cần thiết bởi kích thước dữ liệu ngày
càng lớn hơn nên đòi hỏi tốc độ xử lý cũng như dung lượng bộ nhớ của hệ thống phải
được đảm bảo.
2.3Thuật toán tìm luật kết hợp Apriori
2.3.1 Mô tả thuật toán:

Bước 1 : k:=1, tạo C1 = tập tất cả các itemsets có 1 phần tử từ tất cả các giao tác.
Đọc cơ sở dữ liệu để tính độ hỗ trợ thỏa mãn (support >= minsup) trên C1 từ đó rút ra
được tập L1.
Bước 2 :
For (k = 2 ; Lk-1 khác rỗng ; k++)
{
• Tạo ra tập Ck, là tập các itemsets ứng viên có (k-1) phần tử, tạo ra từ
tập Lk-1.
Trang 16
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
• Duyệt qua tất cả các giao tác để tính số lần xuất hiện của các
itemsets trong Ck
• Tìm Lk, Lk là một tập con của Ck có chứa k phần tử với số đếm >=
minsup.
}
Bước 3 : Tạo tập LargeItemSet = L1 v L2 v v Lk
Bước 4 : Tạo các luật hợp từ tập LargeItemSet :
for each itemset l của LargeItemSet
for each s (tập con khác rỗng) của l
if confidence=count(l)/count(s) >= minconf then
xuất kết quả : s -> (l-s)
2.3.2 Minh họa thuật toán Apriori
Với minsup = 2, minconf = 50%
• Giải thích ký hiệu :
+TID : chỉ số định danh các giao tác của một itemset.
+ items : tập các mặt hàng
+ itemset : tập các mặt hàng ứng viên
+ sup : độ hỗ trợ tối thiểu
+ Ck tập các ứng viên với kích cỡ k được tạo ra bằng cách kết hợp Lk-1 với chính

nó.
+ Lk : tập phổ biến với kích cỡ k.
Trang 17
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Hình 2 – Minh họa các bước chạy thuật toán Apriori.
Qua minh họa khi chạy thuật toán Apriori như trên ta thấy, khi không còn tập mục
phổ biến nào được tìm thấy nữa thì thuật toán dừng lại và tập L3 là tập kết quả nhận
được.
2.3.3 Ứng dụng thực tế thuật toán Apiori vào hệ thống siêu thị:
Đầu tiên thực hiện duyệt tất cả các hóa đơn ta có được các giao tác tương ứng là các
giao tác của thuật toán, biết được tên các mặt hàng, số lượng các mặt hàng, tất cả các tên
mặt hàng này được chuyển đổi thành dạng key – value trong cấu trúc từ điển
(Dictionary<int, string>) cho tiện trong việc tính toán và truy xuất, chẳng hạn, mặt hàng
“Nước ngọt” lưu trong Dictionary sẽ là 1 – “Nước ngọt”…
Ở bước một của thuật toán ta đi tìm tập L1, tập mỗi mặt hàng phải có độ hỗ trợ lớn
hơn hoặc bằng độ hỗ trợ tối thiểu (Minsup) của người dùng nhập vào. các tập mục còn lại
của C
1
là các tập 1-Itemset (L
1
) phổ biến. Sau đó kết nối L
1
với L
1
để được tập các tập 2-
Itemset C
2
. Duyệt CSDL xác định độ hỗ trợ của các tập mục trong C
2

. Duyệt C
2
Loại bỏ các
tập mục có độ hỗ trợ < Minsup, các tập mục còn lại của C
2
là tập các tập 2-Itemset (L
2
) phổ
Trang 18
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
biến. L
2
lại được sử dụng để sinh ra L
3
và cứ tiếp tục như vậy cho đến khi tìm được tập mục
k-Itemset

mà L
k
= ∅ (tức là không có tập mục phổ biến nào được tìm thấy) thì dừng lại. Tập
các tập mục phổ biến của CSDL là: ∪
k
i-1
= L
1
Để tăng hiệu quả của thuật toán trong quá trình sinh các tập mục ứng cử, ta sử dụng
tính chất của tập mục phổ biến để làm giảm số lượng tập các tập ứng cử, không phải là
tập phổ biến được sinh ra. Tính chất đó là: Tập các tập con khác rỗng của tập mục phổ
biến đều là tập mục phổ biến.

2.3.4 Ưu điểm và khuyết điểm của thuật toán Apriori:
Thuật toán kinh điển Apriori tìm tập mục phổ biến thực hiện tốt bởi rút gọn kích
thước các tập ứng cử nhờ kỹ thuật tỉa. Tuy nhiên, trong tình huống mà số các giao tác
nhiều, hoặc với độ hỗ trợ cực tiểu thấp, các thuật toán Apriori gặp phải 2 vấn đề làm ảnh
hưởng tới tốc độ :
• Vấn đề khi số lượng các tập ứng cử cực lớn. Ví dụ: nếu có 10
4
tập phổ biến
1-itemset thì thuật toán Apriori sẽ phải tạo ra 10
7
các ứng cử 2 – itemset; để
khám phá được một số mẫu phổ biến kích thước 100, chẳng hạn tập
{a
1
,a
2
, ,a
100
} thì nó cần tạo ra 2
100
≈ 10
30
các ứng cử .
• Vấn đề phải truy suất xuống cơ sở dữ liệu nhiều lần để kiểm tra tập rất lớn
các ứng cử thỏa độ hỗ trợ tối thiểu. Số lần duyệt CSDL của thuật toán
Apriori bằng độ dài của mẫu phổ biến dài nhất tìm được. Việc này làm ảnh
hưởng tới hiệu suất máy tính. Thuật toán Apriori chỉ thích hợp cho các
CSDL nhỏ, với các CSDL lớn thì thuật toán thực hiện kém hiệu quả.
3.3.5 Cải tiến thuật toán:
Có thể sử dụng một số thuật toán để cái tiến thuật toán Apriori như thuật toán

AprioriTid, FP-growth, Direct Hashing and Pruning…Trong bài viết này sẽ đề cập thuật
toán AprioriTid.
Trang 19
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Khác với thuật toán Apriori, thuật toán AprioriTid chỉ quét cơ sở dữ liệu một lần, do
đó tập ứng viên Ck kích cỡ k có thể nhỏ hơn cơ sở dữ liệu. Nếu một giao tác không chứa
k – itemset ứng viên, khi đó nó sẽ được loại ra khỏi tập Ck. Với k có kích cỡ lớn, mỗi tập
mục có thể nhỏ hơn một giao tác. Giao tác có thể chỉ chứa một vài ứng viên. Một tập mục
bao gồm tất cả các k – itemset chứa trong giao tác. Tuy nhiên thuật toán này có một điểm
bất lợi là khi kích cỡ k nhỏ, mỗi tập mục có thể lớn hơn số giao tác tương ứng.
• Trình bày thuật toán AprioriTid:
Giải thích ký hiệu :
C^
k
: tập mục lưu trữ, mỗi thành viên của C^
k
có dạng <TID, { X
k
}, với X
k là
tập k-
itemset, thể hiện một giao tác t có mã là TID.
Trang 20
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014

k
k
kk

t
^
kt
t
kt
^
k-1
^
k
k-k
k-1
^
1
;L Answer
minsup}|c.countC { c L
;t.TID,CCthenφ)(C
c.count
Cc
items};oft.set1])c[k(c
itemsoft.setc[k]|(cC {c C
Centries t
;C
)(L C
); k 2; L( k
;database DC
itemsets} {large 1- L
=
≥∈=
>=<+≠
++


−−∈−−∧
−−∈−∈=

=
=
++≠=
=
=
end
end
end
if
;
do candidates forall

begin do forall
;genapriori-
begin do For
1
1
φ
φ
• Đánh giá tốc độ của thuật toán Apriori và AprioriTid
Để đánh giá về tốc độ của thuật toán Apriori và AprioriTid, ta lấy kết quả từ một dự
án Quest của trung tâm nghiên cứu IBM Almaden. Kết quả được thực hiện trên tập dữ
liệu đầu vào :
Kích thước trung bình của các giao tác là 10
Kích thước trung bình của tập phổ biến tối đại là 4
Số giao tác là 100.000

Độ hỗ trợ tối thiểu là 0.75%
Trang 21
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Hình 3 – Sơ đồ so sánh Apriori và AprioriTid
Kết quả cho thấy ở giai đoạn đầu Apriori hiệu quả hơn AprioriTid về mặt thời gian,
tuy nhiên AprioriTid nhanh hơn Apriori ở những giai đoạn sau. Lý do ở những giai đoạn
sau, thuật toán AprioriTid chỉ cần quét các tập ứng viên
kC
đã cố định trong bộ nhớ do
nó tạo ra; trong khi thuật toán Apriori phải thực hiện lại việc quét xuống cơ sở dữ liệu.
CHƯƠNG 3 CÀI ĐẶT CHƯƠNG TRÌNH VÀ THỬ NGHIỆM
Xây dựng chương trình tìm luật kết hợp trong kho dữ liệu siêu thị,chương trình đựa
viết trên ngôn ngữ lập trình C#. Về mặt dữ liệu để chạy thử, nhập liệu vào file Excel,
gồm 2 file : Hoadon.xls, file này chưa thông tin về hóa đơn, mỗi dòng trong file này có
thể coi làm một giao dịch của thuật toán, ứng với mỗi dòng này ta sẽ có một hoặc chiều
chi tiết hóa đơn liên quan tới các mặt hàng đã được đặt mua. File ChitietHD.xls, file này
chứa thông tin chi tiết hóa đơn, có mối quan hệ nhiều – một với file.
Trang 22
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
3.1 Phát biểu bài toán:
Siêu thị Big C kinh doanh tất cả các mặt hàng tiêu dùng, sản phẩm công nghiệp và cả
các thiết bị công nghệ cao,… phục vụ nhu cầu đời sống hàng ngày và hoạt động sản xuất
kinh doanh.
Siêu thị có các bộ phận sau:
1. Bộ phận nhập hàng
2. Bộ phận kho hàng
3. Bộ phận hướng dẫn viên
4. Bộ phận thu ngân

5. Bộ phận dịch vụ
Người tiêu dùng muốn trở thành hội viên trong siêu thị cần phải có giấy phép đăng ký
kinh doanh bất cứ một lĩnh vực hay dịch vụ nào đó. Khi mang giấy phép kinh doanh và
chứng minh nhân dân đến, nhân viên trong siêu thị sẽ cấp cho khách hàng một tấm thẻ,
trên đó lưu các thông tin: số hiệu thẻ, tên hội viên, lĩnh vực kinh doanh và ảnh. Các thông
tin về khách hàng sẽ được lưu vào trong CSDL.
Khi khách hàng muốn vào siêu thị mua hàng hóa, phải xuất trình thẻ của mình cho
kiểm soát viên. Do vậy hệ thống quản lý trong siêu thị hoàn toàn có thể kiểm soát lượng
hội viên ra vào. Trường hợp có người đi kèm thì khách hàng phải đảm bảo là đi cùng
nhau.
Khách hàng có thể tự do lựa chọn mặt hàng cần mua theo tên hàng hóa, đơn giá đã có
in sẵn trên các mặt hàng và đặt vào trong giỏ hàng. Có thắc mắc gì có thể hỏi trực tiếp
nhân viên chăm sóc khách hàng.
Khi chọn xong hàng hóa, khách hàng đẩy xe đến bộ phận thu ngân. Tại đây khách
hàng xuất trình thẻ cho nhận viên thu ngân đựa vào máy đọc nhận dạng. Các hàng hóa
được cập nhật vào hệ thống tính toán thông quan máy đọc mã vạch. Các tính toán tổng
cộng trên hóa đơn được thực hiện tự động và được lưu vào trong CSDL.
Trang 23
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
Với cách quản lý như trên, siêu thị hoàn toàn có các tổng kết đánh giá về thông tin
như: sức mua của khách hàng (theo nghề nghiệp, theo địa bàn, theo thời gian…). Từ đó
có thể có các chiến lược kinh doanh cho phù hợp.
Bài toán phát hiện luật kết hợp trong mua bán các mặt hàng tại siêu thị như sau : với
hóa đơn nhận được có các thông tin: số hóa đơn, mã số khách hàng, địa chỉ, ngày giờ.
Các thông tin tiếp theo có liên quan đến hàng hóa như: mã hàng hóa, tên hàng hóa, số
lượng, đơn vị tính, đơn giá, giá trước thuế, % VAT, tiền thuế VAT, thành tiền. Cuối hóa
đơn có các thông tin tổng hợp như: tổng tiền thanh toán có VAT, tổng tiền VAT, số tiền
phải thanh toán, tiền giảm giá, quá tặng, tiền khách hàng trả, tiền trả lại khách.
Từ các dữ liệu thu được, các nhà quản lý rất cần có các thông tin dự đoán, thống kê:

• Sức mua sắm của khách hàng theo nghề nghiệp, khu vực dân cư
• Chu kỳ mua sắm theo thời gian như vào các ngày nghỉ, ngày lễ sức mua tăng
hơn bình thường.
• Sự kết hợp của các mặt hàng khác nhau trong cùng một lần mua hàng.
Trên cơ sở đó, các nhà quản lý sẽ có các phương án kế hoạch như tuyển dụng, đào tạo
nhân viên để đáp ứng nhu cầu, phân công công việc hợp lý cho nhân viên, có kế hoạch
cung ứng các loại mặt hàng phù hợp với nhu cầu và sắp xếp hợp lý các mặt hàng có mối
liên kết với nhau…
3.2Phân tích bài toán
Muốn có được các thông tin trên, nhưng do dung lượng quá lớn, nên dùng các phương
pháp thống kê cổ điển thì sẽ không thể kết xuất ra được. Do vậy cần dùng các kỹ thuật
khai phá dữ liệu – sử dụng luật kết hợp.
Trong chương trình, chỉ quan tâm đến các dữ liệu thuộc CSDL bán hàng trong siêu
thị. Sử dụng thuật toán Apriori tìm ra sự kết hợp giữa các mặt hàng khác nhau trong một
giao dịch của khách hàng khi đến siêu thị. Trong đó:
Giai đoạn tiền xử lý: giai đoạn này nhằm thiết lập các đối tượng dữ liệu từ dữ liệu
trong CSDL khách hàng. Dữ liệu được tiền xử lý đưa về dạng text, các thuộc tính được
Trang 24
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
2014
ánh xạ bời các số tự nhiên, nghĩa là đánh số thứ tự các thuộc tính từ 1 đến hết. Tìm tập
mục phổ biến và luật kết hợp dựa trên các số thứ tự này, kết quả được ánh xạ ngược trở
lại lên các mục.
Giai đoạn khai phá: đây là quá trình thực hiện thuật toán Apriori áp dụng đối với dữ
liệu cung cấp sau giai đoạn tiền xử lý.
3.3Các bảng cơ sở dữ liệu
Sơ đồ mối quan hệ giữa các bảng chính :
Hình 4 – Sơ đồ mối quan hệ giữa các bảng.
Tổng quan về sơ đồ mối quan hệ giữa các bảng :
Mối quan hệ giữa bảng khách hàng và hóa đơn là một nhiều, ngược lại bảng hóa đơn

với khách hàng là nhiều một. Vì mối quan hệ giữa bảng hóa đơn và mặt hàng là nhiều –
Trang 25
KhachhangmaKH :
bigint
tenKH : nvarchar
cmnd : varchar
sdt : varchar
diachi : text
email: varchar
HoadonmaHD :
bigint
maKH : bigint
ngay : datetime
tongTien : numberic
ChitietHoadonid :
bigint
hdId : bigint
soluong: int
tongTien : numberic
Mathangid : bigint
chitietHDId :
bigint
tenHang:nvarchar
gia : numberic
1…n
1
1…n
1
1
1…n

×