1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu

68 1,1K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 755,5 KB

Nội dung

Tổ chức việc tích lũy và xử lý dữ liệu một cách khoa học đòi hỏi con người sử dụng một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bịlưu trữ thông tin thứ cấp như băng

Trang 1

MỤC LỤC

Chương 1 GIỚI THIỆU ĐỀ TÀI 2

I Bối cảnh của đề tài: 2

II Giới thiệu chung về đề tài: 5

III Công cụ: 5

Chương 2 LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU 5

I Một số khái niệm: 5

1 Thuộc tính (Attribute): 5

2 Quan hệ: 6

3 Lược đồ quan hệ (Relation shema): 6

4 Khóa – Siêu khóa: 6

5 Phụ thuộc hàm: 7

6 Ràng buộc toàn vẹn: 7

II Ràng buộc toàn vẹn và phụ thuộc hàm: 8

1 Ràng buộc toàn vẹn: 8

2 Phụ thuộc hàm: 12

3 Hệ tiên đề Amstrong: 13

4 Phủ và phủ tối tiểu: 16

5 Các dạng chuẩn của lược đồ quan hệ: 18

III Chuẩn hóa quan hệ: 22

1 Các tiêu chuẩn của quá trình chuẩn hóa: 22

2 Các phương pháp chuẩn hóa một lược đồ CSDL: 23

IV Đồ thị quan hệ: 26

1 Dẫn nhập: 26

2 Một số khái niệm trong lý thuyết đồ thị: 27

3 Đồ thị con đường truy xuất: 28

V Tổ chức dữ liệu: 29

1 Tập thuộc tính: 29

2 Phụ thuộc hàm: 30

3 Tập phụ thuộc hàm: 30

4 Quan hệ: 30

Trang 2

5 Lược đồ quan hệ: 30

6 Node: 31

Chương 3 CÀI ĐẶT MỘT SỐ THUẬT TOÁN 31

1 Thuật toán tìm bao đóng: 31

2 Thuật toán tìm tất cả các khóa của quan hệ: 33

3 Kiểm tra phụ thuộc hàm tương đương: 35

4 Tìm phủ tối tiểu của một tập phụ thuộc hàm: 37

5 Xác định dạng chuẩn: 40

6 Chuẩn hóa: 45

7 Biểu diễn một cấu trúc CSDL quan hệ sang lược đồ quan hệ: 49

Chương 4 GIỚI THIỆU CHƯƠNG TRÌNH 51

I Các chức năng của chương trình: 51

II Giới thiệu chương trình: 52

1 Giao diện chính của chương trình: 52

2 Các chức năng trên thanh Menu: 52

Chương 5 TỔNG KẾT VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 58

1 Những chức năng chương trình đã làm được: 58

2 Hướng phát triển: 58

Tài liệu tham khảo: 58

Chương 6 PHỤ LỤC 58

I Giới thiệu về NET: 58

II Ngôn ngữ C#: 60

1 Sơ lược về C#: 60

2 Nạp chồng phương thức: 61

3 Một số kiểu dữ liệu: 62

Trang 3

Chương 1 GIỚI THIỆU ĐỀ TÀI

I Bối cảnh của đề tài:

Trong đời sống, mọi hoạt động của con người đều liên quan đến dữ liệu.Ngay cả một bài toán nhỏ cũng cần đến dữ liệu, nhưng không nhất thiếtphải quản lý dữ liệu này theo các phương pháp khoa học Do khả năng tổnghợp của người xử lý, các dữ liệu được lấy ra, được xử lý mà không vấp phảikhó khăn nào Tuy nhiên khi bài toán có kích thước lớn hơn hẳn và sốlượng dữ liệu cần phải xử lý tăng lên thì e rằng tầm bao quát của con ngườibình thường khó có thể quản lý hết được Ấy là chưa kể đến một số loại dữliệu đặc biệt, chúng đòi hỏi được quản lý tốt không phải vì kích thước mà vì

sự phức tạp của bản thân chúng Do đó, nhu cầu tích lũy và xử lý các dữliệu đã nảy sinh

Tổ chức việc tích lũy và xử lý dữ liệu một cách khoa học đòi hỏi con người

sử dụng một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bịlưu trữ thông tin thứ cấp (như băng từ, đĩa từ …) để có thể thỏa mãn yêucầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiềuchương trình ứng dụng với nhiều mục đích khác nhau Hệ thống đó đượcgọi là cơ sở dữ liệu

Trong những năm gần đây thuật ngữ “CƠ SỞ DỮ LIỆU” (CSDL) đã trởnên khá quen thuộc không chỉ với những người làm Tin học mà còn đối với

cả những người làm trong nhiều lĩnh vực khác như Kinh tế, Quản lý Doanhnghiệp … Các ứng dụng của tin học vào công tác quản lý ngày càng nhiềuhơn và càng đa dạng hơn Có thể nói hầu hết các lĩnh vực kinh tế, xã hội,giáo dục, y tế … đều đã ứng dụng các thành tựu mới của Tin học vào phục

vụ công tác chuyên môn của mình Chính vì lẽ đó mà ngày càng nhiềungười quan tâm đến lĩnh vực thiết kế và xây dựng các CSDL Và có thểthấy mục tiêu chính của việc thiết kế CSDL là làm thế nào chuyển đổi cácnhu cầu lưu trữ và khai thác dữ liệu của người sử dụng thành một hệ thốngCSLD hiệu quả Người thiết kế CSDL có thể chia nhỏ hệ thống dữ liệu tổngquát thành các lược đồ quan hệ (hay còn gọi là các table) Đó là một kỹthuật dựa vào khinh nghiệm của người thiết kế còn trong thực tế để có được

Trang 4

một CSDL tốt người thiết kế phải ứng dụng nhiều thuật toán như: thuật toánxác định khóa, thuật toán xác định các dạng chuẩn, thuật toán phân rã lược

đồ quan hệ… để đi tìm khóa, xác định dạng chuẩn, chuẩn hóa mỗi quan hệtrong CSDL, nhằm đảm bảo cho hệ dữ liệu có thể quản lý đầy đủ, chính xáccác thông tin trong thực tế tránh tình trạng trùng lắp thông tin, không để xảy

ra tình trạng thừa hoặc thiếu thông tin Trong quá trình đó, người thiết kếthường gặp một số vấn đề sau:

kế sẽ liệt kê tất cả các thuộc tính cần quản lý của đối tượng mà không quan tâmđến vấn đề liệu khi thêm thuộc tính đó thì có bị trùng lắp thông tin không, dữliệu có nhất quán không Chẳng hạn như trong hệ thống bán hàng, chúng ta lưutrữ thông tin của nhà cung cấp để đặt hàng thì một số thông tin ta cần là: mãnhà cung cấp, tên nhà cung cấp, địa chỉ, số điện thoại, mã hàng, tên hàng…Vớiđối tượng nhà cung cấp nếu ta quản lý rằng mỗi nhà cung cấp chỉ cung cấp mộtmặt hàng thì ta biết được nhà cung cấp nào cung cấp mặt hàng tên gì nhưng dữliệu về tên mặt hàng không nhất quán Khi nhập liệu ta có thể nhập như sau:

Mã nhà cung cấp … Mã hàng Tên hàng

Bảng 1 Quan hệ nhà cung cấpĐiều đó sẽ gây khó khăn cho ta trong quá trình truy xuất thông tin

qui tắc quản lý (phụ thuộc hàm), áp dụng hệ luật dẫn Amstrong trên các phụthuộc hàm để xác định mối liên hệ giữa các thuộc tính trong một đối tượnghoặc giữa các đối tượng trong một CSDL Sau đó, sử dụng thuật toán tìm khóacủa đối tượng Dựa vào khóa và các phụ thuộc hàm, người thiết kế sẽ đi xácđịnh dạng chuẩn để đánh giá tính chất của lược đồ quan hệ hay là đối tượng cầnquản lý Trong thực tế, người ta chỉ đánh giá cao các lược đồ quan hệ đạt từdạng chuẩn 3 trở lên vì ở dạng chuẩn này CSDL sẽ tránh được sụ trùng lắpthông tin Do đó, khi lược đồ quan hệ không đạt được dạng chuẩn 3, ngườithiết kế phân rã lược đồ quan hệ đó thành những lược đồ con đảm bảo dạng

Trang 5

chuẩn cao hơn, dữ liệu không bị trùng lắp mà vẫn giữ được tính bảo toàn, tínhchính xác của dữ liệu, không gây mất thông tin.

Chỉ với một đối tượng mà người thiết kế phải làm biết bao công việcnhư vậy, trong thực tế có muôn vàn đối tượng cần được quản lý thìngười thiết kế phải tốn rất nhiều thời gian và công sức cho mỗi đốitượng Vì để làm tất cả các công việc đó, người thiết kế vẫn phải làmtrên giấy chứ chưa có 1 chương trình nào hỗ trợ cả Trước thực tế đó,chúng em xin thực hiện đề tài này để giúp người thiết kế thực hiệncác công việc trên một cách nhanh chóng và chính xác

II Giới thiệu chung về đề tài:

Nội dung chính của đề tài là xây dựng một chương trình cho phép ngườidùng tạo ra một lược đồ quan hệ và thực hiện một số chức năng như:

 Tìm khóa của quan hệ

 Tìm phủ tối tiểu của quan hệ

 Xác định dạng chuẩn của quan hệ

 Chuẩn hóa quan hệ

 Tìm con đường truy xuất của một nút

III Công cụ:

Chương trình được viết bằng ngôn ngữ C# trên môi trường NET

Trang 6

Chương 4 LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU

IV Một số khái niệm:

Một quan hệ R có n ngôi được định nghĩa trên tập các thuộc tính

U = {A1, A2, …, An} (thứ tự các thuộc tính không quan trọng) và kèmtheo nó là một tân từ, tức là một quy tắc để xác định mối quan hệ giữacác thuộc tính Ai và được ký hiệu R(A1, A2, …, An) tập thuộc tính củaquan hệ R đôi khi còn được ký hiệu là R+

Lược đồ quan hệ (Relation shema):

Lược đồ quan hệ là sự trừu tượng hóa của quan hệ, một sự trừu tượnghóa ở mức độ cấu trúc của một bảng hai chiều Khi nói đến lược đồ quan

hệ là đề cập đến cấu trúc tổng quát của một quan hệ; khi đề cập tới quan

hệ thì điều đó được hiểu rằng đó là một bảng có cấu trúc cụ thể hoặcmột định nghĩa cụ thể trên một lược đồ quan hệ với các bộ giá trị của nó

Khóa – Siêu khóa:

a Khóa (Key):

Quan hệ R định nghĩa trên tập các thuộc tính U={A1,A2,…,An}

Trang 7

K  U là khóa của quan hệ R nếu thỏa 2 điều kiện sau:

với mọi

j = 1, 2, …, n

Nghĩa là K là tập con nhỏ nhất mà giá trị của nó có thể xác định duynhất một bộ giá trị của quan hệ K còn được gọi là khóa chỉ định(Candidate) và là khóa nội của quan hệ

a Siêu khóa:

K được gọi là siêu khóa của quan hệ R nếu K’  K là một khóa củaquan hệ

Một lược đồ quan hệ Q của quan hệ R luôn có ít nhất một siêu khóa

và có thể có nhiều siêu khóa

Thuộc tính khóa là các thuộc tính tham gia vào khóa

c Thuộc tính không khóa:

Thuộc tính không khóa là các thuộc tính không tham gia vào bất kỳkhóa nào

Trang 8

X, Y  U là hai tập con của tập thuộc tính U Nếu  f: X  Y thì ta nóirằng X xác định Y hay Y phụ thuộc hàm vào X và ký hiệu là X  Y.

Ràng buộc toàn vẹn:

Trong mỗi CSDL luôn tồn tại nhiều mối liên hệ giữa các thuộc tính,giữa các bộ Sự liên hệ này có thể xảy ra trong một lườc đồ quan hệhoặc trong các lược đồ quan hệ của một CSDL Các mối liên hệ này lànhững điều kiện bất biến mà tất cả các bộ của những quan hệ có liênquan trong CSDL đều phải thỏa mãn ở mọi thời điểm Những điều kiệnbất biến đó được gọi là ràng buộc toàn vẹn (RBTV) Trong thực tếRBTV là các quy tắc quản lý được áp đặt trên các đối tượng của thế giớithực Đó là quy tắc để đảm bảo tính nhất quán của dữ liệu trong CSDL.Mỗi RBTV được định nghĩa bằng một thuật toán trong CSDL

Trên đây là những khái niệm cơ bản, bây giờ chúng ta đi sâu vào tìm hiểumột số vấn đề cốt lõi của quá trình thiết kế CSDL

Trang 9

V Ràng buộc toàn vẹn và phụ thuộc hàm:

d Các yếu tố của RBTV:

Mỗi RBTV có 3 yếu tố ảnh hưởng: điều kiện, bối cảnh, tầm ảnhhưởng

Điều kiện của một RBTV R có thể được biểu diễn bằng ngônngữ tự nhiên, thuật giải, ngôn ngữ đại số quan hệ, …ngoài rađiều kiện của một RBTV cũng có thể được biểu diễn bằngphụ thuộc hàm

Là những quan hệ mà ràng buộc đó có hiệu lực hay nói mộtcách khác, đó là những quan hệ cần phải được kiểm traRBTV Bối cảnh của một RBTV có thể là một hoặc nhiềuquan hệ

Trong quá trình phân tích thiết kế một CSDL, người thiết kếcần lập bảng tầm ảnh hưởng cho một RBTV nhằm xác địnhthời điểm cần phải tiến hành kiểm tra các RBTV đó Các thờiđiểm cần phải kiểm tra RBTV chính là những thời điểm cậpnhật dữ liệu (thêm, sửa, xóa) Một bảng tầm ảnh hưởng củamột RBTV có dạng sau:

(Tên RBTV) Thêm(T) Sửa(S) Xóa(X)

-r2

Trang 10

rnBảng này chứa toàn các ký hiệu + hoặc –Chẳng hạn + tại ô tương ứng với dòng r1, cột thêm thì cónghĩa là khi thêm một bộ vào quan hệ r1 thì cần phải kiểm traRBTV

Dấu – tại ô tương ứng với dòng r1, cột sửa thì có nghĩa là khisửa một bộ trên quan hệ r1 thì không cần kiểm tra RBTV này

a Phân loại RBTV:

Trong quá trình phân tích thiết kế CSDL, người phân tích phải pháthiện tất cả các RBTV tiềm ẩn trong CSDL đó Việc phân loại cácRBTV là rất có ích, nó nhằm giúp cho người phân tích có được mộtđịnh hướng, tránh bỏ sót những RBTV Các RBTV có thể được chialàm hai loại chính như sau:

 RBTV trên phạm vi một quan hệ: RBTV miền giá trị, RBTVliên thuộc tính, RBTV liên bộ

 RBTV trên phạm vi nhiều quan hệ: RBTV phụ thuộc tồn tại,RBTV liên bộ - liên quan hệ, RBTV liên thuộc tính - liênquan hệ

Ví dụ: với r là một quan hệ của Khách ta có RBTV nhưsau:

R1:  t1, t2  r

t1 MAKH  t2 MAKHCuối 

Trang 11

Bảng tầm ảnh hưởng:

-ii RBTV về phụ thuộc tồn tại:

RBTV về phụ thuộc tồn tại còn được gọi là RBTV về khóa ngoại.Cũng giống như RBTV về khóa chính, RBTV về phụ thuộc tồntại rất phổ biến trong CSDL

iii RBTV về miền giá trị:

RBTV về miền giá trị có liên quan đến miền giá trị của các thuộctính trong một quan hệ RBTV này thường gặp một số hệ quảntrị CSDL đã tự động kiểm tra một số ràng buộc loại này

Ví dụ:

Với r là một quan hệ của HoaDon ta có RBTV sau:

R3:  t  r

t.TRIGIAHD > 0Cuối 

Bảng tầm ảnh hưởng:

-iv RBTV liên thuộc tính:

RBTV liên thuộc tính là mối liên hệ giữa các thuộc tính trongmột lược đồ quan hệ

Trang 12

Ví dụ:

Với r là một quan hệ của HoaDon ta có RBTV sau:

R4:  t  r

t.NGAYLAP <= t.NGAYXUATCuối 

Bảng tầm ảnh hưởng:

-v RBTV liên thuộc tính – liên quan hệ:

RBTV loại này là mối liên hệ giữa các thuộc tính trong nhiềulược đồ quan hệ

Phụ thuộc hàm:

Phụ thuộc hàm có tầm quan trọng rất lớn trong việc phân tích và thiết kế

mô hình dữ liệu phụ thuộc hàm được ứng dụng trong việc giải quyết cácbài toán tìm khóa, tìm phủ tối tiểu và chuẩn hóa CSDL

Định nghĩa hình thức của phụ thuộc hàm như sau:

Trang 13

Quan hệ Q (A, B, C) có phụ thuộc hàm A xác định B (ký hiệu làA→B) nếu:

 q, q’  Q, sao cho q.A = q’.A thì q.B = q’.B(Nghĩa là: ứng với 1 giá trị của A thì có một giá trị duy nhất của B)

A là vế trái của phụ thuộc hàm, B là vế phải của phụ thuộc hàm

A→B được gọi là phụ thuộc hàm hiển nhiên nếu BA Nghĩa là,

một tập A lớn hơn và bao tập con B thì A xác định được giá trị củacác thuộc tính trong tập B lad điều hiển nhiên

A→B được gọi là phụ thuộc hàm nguyên tố, hoặc nói cách khác B

được gọi là phụ thuộc hàm đầy đủ (fully functional defendence) vào

A nếu A’ A đều không có A’→B

Ví dụ:

SốChủngLoạiMặtHàng, TổngTrịGiá) có các phụ thuộc hàmsau:

if1: SốHóaĐơn → SốChủngLoạiMặtHàng;

iif2: SốHóaĐơn → TổngTrịGiá;

SốHóaĐơn là khóa của lược đồ quan hệ HóaĐơn Nếu biết số hóađơn thì ta có thể xác định được tất cả các thông tin còn lại liênquan đến hóa đơn đó, trong đó có thông tin vềSốChủngLoạiMặtHàng và TổngTrịGiá tất cả các mặt hàng củahóa đơn Các phụ thuộc hàm trên đều là nguyên tố

 Quan hệ ChiTiếtHóaĐơn (SốHóaĐơn, MãHàng,SốLượngĐặt, ĐơnGiá, TrịGiá) có các phụ thuộc hàm sau:iiif1: SốHóaĐơn, MãHàng → SốLượngĐặt;

ivf2: SốHóaĐơn, MãHàng → ĐơnGiá;

vf3: SốHóaĐơn, MãHàng → TrịGiá;

vi f4: SốLượngĐặt, ĐơnGiá → TrịGiá

Thuộc tính ĐơnGiá phụ thuộc hàm không đầy đủ vào khóa(SốHóaĐơn, MãHàng), bỡi vì nó chỉ phụ thuộc vào mặt hàng(thông qua MãHàng)

Trang 14

Trên một lược đồ quan hệ có thể tồn tại nhiều phụ thuộc hàm.Tập các phụ thuộc hàm thường được ký hiệu bằng chữ F

Từ hệ tiên đề Amstrong suy ra một số luật bổ sung sau:

x Tính phân rã (hoặc luật tách):

X+ = {A | X → A  F+}

Ví dụ:

Trang 15

thuộc hàm: thay vì đi tìm bao đóng (Closure) của tập phụ thuộc

hàm F (ký hiệu là F+, đó là tập các phụ thuộc hàm có thể đượcsuy dẫn logic từ F) để kiểm tra xem một phụ thuộc hàm X→Y cóthuộc F+ hay không, người ta chỉ cần đi tìm bao đóng của X dựatrên tập các phụ thuộc hàm F (ký hiệu là XF+, đó là tập các thuộctính có thể suy diễn từ X nhờ F), rồi kiểm tra xem Y có thuộc XFhay không

Ví dụ:

Cho lược đồ quan hệ R (A,B,C,D,E,G,H) và tập phụ thuộc

hàm F={ABC, BD, CDE, CEGH, GA} Áp dụng hệ

tiên đề Amstrong, tìm một chuỗi suy diễn ABE

Giải:

1 ABC (cho trước phụ thuộc hàm f1)

Trang 16

2 ABAB (tính chất phản xạ)

3 ABB (luật tách)

4 BD (cho trước phụ thuộc hàm f2)

5 ABD (bắt cầu 3 & 4)

6 ABCD (hợp 1 & 5)

7 CDE (cho trước phụ thuộc hàm f3)

8 ABE (bắt cầu 6 & 7) Kết thúc

Ví dụ:

Cho lược đồ quan hệ R (A,B,C,D,E,G,H,I,J) và tập các phụ

thuộc hàm F = {ABE, AGJ, BEI, EG, GIH } Tìm

chuỗi suy diễn ABGH

Giải:

1 ABE (cho trước phụ thuộc hàm f1)

2 ABAB (phản xạ)

3 ABB (luật tách)

4 ABBE (hợp của 1 & 3)

5 BEI (cho trước phụ thuộc hàm f3)

6 ABI (bắt cầu 4 & 5)

7 EG (cho trước phụ thuộc hàm f4)

8 ABG (bắt cầu 1 & 7)

9 ABGI (hợp 6 & 8)

10 GIH(cho trước phụ thuộc hàm f5)

11 ABH (bắt cầu 9 & 10)

12 ABGH (hợp 8 & 11)

Phủ và phủ tối tiểu:

Trong rất nhiều bài toán liên quan đến CSDL thì độ phức tạp tùy thuộcvào số phụ thuôc hàm cũng như các thuộc tính bên vế trái, vế phải củaphụ thuộc hàm Do đó, để giảm bớt độ phức tạp người ta thường xâydựng các tập phụ thuộc hàm tương đương với tập phụ thuộc hàm banđầu nhưng đơn giản hơn

Trang 17

b Phụ thuộc hàm tương đương:

Hai tập phụ thuộc hàm F và G được gọi là tương đương với nhau nếu F+ = G+ Ký hiệu: F  G

e Phụ thuộc hàm không dư thừa:

F là tập phụ thuộc hàm không dư thừa nếu  F’  F sao cho F’ = F.Ngược lại F là tập phụ thuộc hàm dư thừa

Ví dụ:

Cho F = {A → BC, B → D, AB → D}

F dư thừa vì: F  F’ = {A → BC, B → D}

f Phủ tối tiểu:

Mục đích của việc tìm phủ tối tiểu là:

 Giảm lược bớt số thuộc tính của vế phải

 Giảm số phụ thuộc hàm

Định nghĩa:

Cho tập PTH F, G là phủ tối tiểu của F nếu G là phủ của F đồng thờithỏa 3 điều kiện sau:

iVế phải của các PTH trên G chỉ chứa 1 thuộc tính

iiG chỉ gồm những phụ thuộc hàm đầy đủ

iiiKhông chứa phụ thuộc hàm thừa

Thuật toán xác định phủ tối tiểu:

 Bước 1 :

Loại khỏi F các phụ thuộc hàm có vế trái dư thừa

Trang 18

 Lần lượt thực hiện các bước sau cho các phụ thuộc hàm X→Ycủa F.

 Với mọi tập con thật sự X’→Y  F+ thì thay X→Y trong Fbằng X’ → Y, thực hiện lại bước này

 Bước 2 :

Tách phụ thuộc hàm có vế phải lớn hơn một thuộc tính thành cácphụ thuộc hàm có vế phải có một thuộc tính

 Bước 3 :

Loại khỏi F các phụ thuộc hàm dư thừa

 Lần lượt xét các phụ thuộc hàm X  Y của F

 Nếu X  Y là thành viên của F – { X  Y } thì loại X  Ykhỏi F

Thực hiện bước trên cho các phụ thuộc hàm tiếp theo của F

Các dạng chuẩn của lược đồ quan hệ:

Trong thực tế, một ứng dụng có thể được phân tích thành nhiều lược đồCSDL khác nhau và dĩ nhiên chất lượng thiết kế của các lược đồ nàycũng khác nhau

Chất lượng thiết kế của một lược đồ CSDL được đánh giá dựa trên cáctiêu chuẩn như:

ivSự trùng lắp thông tin: vì nó sẽ làm tăng không gian lưu trữ và gâynên tình huống thông tin bị mâu thuẫn sau những lần cập nhậtCSDL

vChi phí kiểm tra ràng buộc toàn vẹn

viBảo toàn quy tắc quản lý tức là bảo toàn các phụ thuộc hàm

viiBảo toàn thông tin

Trang 19

f4: TenMonHoc → MaMonHoc.

f5: MaSV, MaMonHoc → Diem.}

Quan hệ trên có sự trùng lắp thông tin Sự trùng lắp thông tin này cóthể gây một số vấn đề khi thao tác trên quan hệ

viiiGiả sử: có 1 sinh viên thay đổi địa chỉ, thì hệ thống cần phảiduyệt trên toàn bộ quan hệ để tìm và sửa địa chỉ các bộ liên quanđến sinh viên này Nếu để xót thì sẽ dẫn đến tình trạng thông tinkhông nhất quán

ixGiả sử sinh viên có mã số 1180 hiện nay chỉ đăng ký học mônCSDL Nếu muốn xóa kết quả điểm của môn này thì dẫn đến mấtluôn thông tin của sinh viên

xKhóa của quan hệ là: {MaSV, MaMonHoc}, {MaSV,TenMonHoc} nên ta không thể thêm một sinh viên vào nếu sinhviên đó chưa đăng ký môn học

Qua ví dụ trên, chúng ta thấy sự trùng lắp thông tin là nguyên nhânlàm cho CSDL có chất lượng kém

Để hạn chế sự trùng lắp thông tin, người ta đưa ra các yêu cầu thiết

kế cần thiết cho một quan hệ dựa trên khái niệm phụ thuộc hàm,được gọi là các dạng chuẩn của một quan hệ

g Dạng chuẩn 1:

iThuộc tính đơn: là thuộc tính mà giá trị của nó không phải là sự kếthợp bỡi nhiều thông tin có ý nghĩa khác nhau và hệ thống luôntruy xuất trên toàn bộ giá trị của nó ít khi truy xuất đến từng phần

dữ liệu của nó

Ví dụ:

Quan hệ VatTu (MãVậtTư, TênVậtTư, ĐơnVịTính)Nếu TênVậtTư bao gồm cả tên vật tư và quy cách của nó.Như vậy, TênVậtTư là thuộc tính kép

iiĐịnh nghĩa dạng chuẩn 1:

Một lược đồ quan hệ Q đạt dạng chuẩn 1 nếu mọi thuộc tính của

Q đều là thuộc tính đơn

Trang 20

h Dạng chuẩn 2:

iPhụ thuộc đầy đủ:

Thuộc tính A được gọi là phụ thuộc đầy đủ vào tập thuộc tính Xnếu:

o A  X+

F

o X  A là PTH nguyên tố

Ví dụ:

Quan hệ LopHoc (Lop, Mon, NgayKhaiGiang, HocPhi)

F = { f1: Lop, Mon → NgayKhaiGiang ;

f2: Mon → HocPhi}

Dựa vào F ta có khóa của quan hệ là {Lop, Mon}

Do đó: Lop, Mon → HocPhi là phụ thuộc hàm không đầy đủ

vì chỉ cần Mon là xác định được HocPhi: Mon→HocPhi.iiĐịnh nghĩa dạng chuẩn 2:

Một lược đồ quan hệ Q đạt dạng chuẩn 2 nếu:

Quan hệ LopHoc (Lop, Mon, NgayKhaiGiang)

F = {Lop, Mon → NgayKhaiGiang}

Ta nói quan hệ LopHoc đạt dạng chuẩn 2 vì thuộc tính khôngkhóa NgayKhaiGiang phụ thuộc hàm đầy đủ vào khóa

i Dạng chuẩn 3:

iPhụ thuộc bắt cầu:

Thuộc tính A  Q+ được gọi là phụ thuộc bắt cầu vào thuộc tính

X nếu tồn tại nhóm thuộc tính Y  Q+ thỏa mãn 4 điều kiện sau:

o X  Y  F+

Trang 21

iiĐịnh nghĩa dạng chuẩn 3:

Một lược đồ quan hệ Q đạt dạng chuẩn 3 nếu:

j Dạng chuẩn BCK:

iĐịnh nghĩa:

Một lược đồ quan hệ Q ở dạng chuẩn BCK nếu mọi phụ thuộchàm không hiển nhiên đều có vế trái chứa khóa

X  A  F+ : A  X và phải chứa khóa của Q

iiHệ quả : Nếu Q đạt dạng chuẩn BCK thì mọi vế trái của phụ thuộchàm đều là siêu khóa

Ví dụ : Quan hệ TonKho (MaHangHoa, MaKho, SoLuongTon)

Ta nói quan hệ TonKho đạt dạng chuẩn BCK

Trang 22

VI Chuẩn hóa quan hệ:

Xuất phát từ giai đoạn phân tích yêu cầu, ta có thể có 1 trong 2 kết quảsau:

 Một cấu trúc CSDL ban đầu gồm các quan hệ con Qi cùng cácphụ thuộc hàm F

 Hoặc chỉ có một quan hệ phổ quát duy nhất Q chứa tất cả cácthuộc tính cần được lưu trữ và các phụ thuộc hàm F

Chúng ta cần kiểm tra và chuẩn hóa các kết quả đầu tiên này dựa trênmột số tiêu chuẩn thiết kế để có được một cấu trúc quan niệm CSDLđược đánh giá tốt hơn, phù hợp hơn với yêu cầu của môi trường ứngdụng

Các tiêu chuẩn của quá trình chuẩn hóa:

Hai tiêu chuẩn quan trọng cần đạt được trong quá trình chuẩn hóa mộtCSDL ở mức quan niệm là:

k CSDL kết quả cần đạt dạng chuẩn cao nhất:

Dạng chuẩn được đề ra nhằm đáp ứng 2 yêu cầu sau:

 Cập nhật: hạn chế tối đa sự trùng lắp thông tin trong CSDL

 Kiểm tra ràng buộc toàn vẹn: tạo điều kiện thuận lợi cho việckiểm tra ràng buộc toàn vẹn ở dạng phụ thuộc dữ liệu

l CSDL kết quả phải tương đương với CSDL phân tích lúc ban đầu:

Với tiêu chuẩn này, các thông tin lưu trữ CSDL ban đầu đều phảiđược tìm thấy đầy đủ trong CSDL kết quả

Có ba quan niệm khác nhau về tiêu chuẩn này:

Quan điểm 1: bảo toàn phụ thuộc hàm

Quan điểm này cho rằng các thông tin được lưu trữ trong CSDL

là những thông tin được thể hiện thông qua các phụ thuộc hàm

Do đó cần phải bảo toàn phụ thuộc hàm trong khi biến đổi

Quan điểm 2: bảo toàn thông tin

Trang 23

Quan điểm này cho rằng các thông tin được lưu trữ trong CSDLban đầu đều phải được tìm thấy đầy đủ trong CSDL kết quả.Quan điểm 3: biểu diễn tron vẹn.

Yêu cầu CSDL kết quả vừa bảo toàn thông tin, vừa bảo toàn phụthuộc hàm

Các phương pháp chuẩn hóa một lược đồ CSDL:

m Phương pháp phân rã:

Định lý Delobel (1973):

Cho lược đồ quan hệ Q và tập phụ thuộc hàm F

Nếu f: X → A  F+ sao cho X  A là tập con thật sự của Q+ thì phépphân rã Q thành 2 lược đồ quan hệ con:

Nếu F* =  thì C = C  {Q} và kết thúc {Điểm dừng}

Ngược lại, thực hiện phân rã

 Tìm tất cả các khóa của quan hệ

Trang 24

 Chọn f: X → Y  F với X không là siêu khóa và Ykhông chứa thuộc tính khóa.

 Phân rã thành 2 lược đồ con:

Cho Q(S,D,I,M) F={SID;SDM}

Hãy phân rã Q thành các lược đồ con đạt dạng chuẩn 3 (dạngchuẩn BCK) bảo toàn thông tin

Giải:

Bước 1: tìm tất cả khóa của Q

X i TNX i (TNX i ) + Siêu khóa Khóa

Bước 2: phụ thuộc hàm SD  M  F có SD không là siêukhóa Ta được phân rã như bên dưới

Nhược điểm của phương pháp này:

 Không bảo toàn phụ thuộc hàm

 Có thể chứa một quan hệ con mà ngữ nghĩa của nó không cóích cho ứng dụng

Trang 25

 Thuật toán này chỉ tiện trong trường hợp khối lượng tính toántrong việc tìm tất cả các khóa của quan hệ Q không lớn.

n Phương pháp tổng hợp:

Mục tiêu của phương pháp:

Tìm một cấu trúc CSDL gồm các Qi sao cho:

 Dễ dàng kiểm tra các phụ thuộc hàm

 Tối thiểu đạt dạng chuẩn 3

Thuật toán: TongHop(Q, F)

 Vào: <Q, F>

 Ra: C = {<Qi, FQi>}

 BeginBước 1:

Tìm phủ tối tiểu của F

Trang 26

f6 = MSCĐ, MSSV  HG}

Hãy phân rã quan hệ trên theo thuật toán tổng hợp

Giải:

Bước 1: tìm phủ tối tiểu của F: Ftt = {f1, f2, f3, f4}

Bước 2: phân nhóm Ftt mỗi nhóm chứa các phụ thuộc hàm cócùng vế trái

F1 f1 = MSCĐ  CĐF2 f2 = CĐ  MSCĐF3 f3 = CĐ, MSSV  HGF4 f4 = MSCĐ, HG  MSSVBước 3: gộp các phụ thuộc hàm F’i có vế trái phụ thuộc lẫn nhau:

F12 f1 = MSCĐ  CĐ, f2 = CĐ  MSCĐ

F34 f3 = CĐ, MSSV  HG,f4 = MSCĐ, HG  MSSVBước 4: tạo các quan hệ con Qi từ các phụ thuộc hàm F’i

hệ thống và CSDL sẽ hoạt động chậm chạp

Để có thể xác định đúng các chỉ mục cần thiết, người ta sử dụng phươngpháp biểu diễn quan hệ ở dạng đồ thị Dạng đồ thị này cho phép làm nổibậc các thuộc tính chung giữa hai hay nhiều quan hệ (vì đây là cơ sở củaphép kết) qua đó giúp cho người thiết kế sau này dễ dàng đánh giá vàchọn lựa đúng các chỉ mục

Trang 27

3 Một số khái niệm trong lý thuyết đồ thị:

2 cung c1, c2 được gọi là kề cận nhau khi:

 Đồ thị có hướng: nếu nút đến của cung c1 là nút đi của cung c2

 Đồ thị vô hướng: nếu chúng có cùng 1 nút xuất phát

c Khuyên:

Cung c là khuyên nếu 2 nút đi và đến của c là một

d Đường đi trên đồ thị vô hướng:

Đường đi trên đồ thị vô hướng là một chuỗi cung (c1,c2,…,cp) saocho:

 ci và ci+1 có chung một nút xuất phát

 Nút xuất phát của c1, không chung nút xuất phát của c2, c1 đượcgọi là nút đầu của đường đi

 Nút xuất phát của cp, không chung với nút xuất phát của cp+1, cpđược gọi là nút cuối của đường đi

e Mạch đi trên đồ thị có hướng:

Mạch đi trên đồ thị có hướng là một chuỗi cung (c1,c2,…,cp) sao cho:

 Nút đến của ci là nút đi của ci+1

 Nút đi của c1 được gọi là nút đầu của mạch đi

 Nút đến của cp được gọi là nút cuối của mạch đi

Trang 28

f Chu trình:

Chu trình là đường đi hay mạch đi trong đó:

 Nút đầu và nút cuối trùng nhau

 Một cung không xuất hiện 2 lần trong chuỗi

g Một dòng có gốc n 1 :

Một dòng có gốc ni là một tập cung D = (c1,c2,…,cp) sao cho:

 Một cung trong tập đó có nút xuất phát (hoặc nút đi) là ni

  ci,  ni, nút xuất phát (hoặc nút đi đến) của ci,  1 đường đi(hoặc 1 mạch đi) có nút đầu là n1, nút cuối là ni và gồm các cungcủa tập D

Ví dụ:

(c1,c2) là dòng có gốc n1.(c1,c2) không là dòng có gốc n2

4 Đồ thị con đường truy xuất:

Đồ thị con đường truy xuất (N, C, R, Cđ, f, g, h, i, j) là đồ thị có hướngvới:

 Ánh xạ g: C  R: g(ci) = Qc mỗi cung ứng với 1 quan hệ Qc, gọi

là quan hệ cung Ngược lại, tồn tại tối đa 2 cung này có 2 chiềungược nhau, nút đi của cung thứ nhất là nút đến của cung thứ 2

và ngược lại

Điều kiện: f(N)  g(N) = R

 Cđ: tập con đường truy xuất

 Song ánh h: C  Cđ: mỗi cung ứng với 1 con đường truy xuất

n1 c1 n2 c2 n3

Cij

Trang 29

 ni nj : từ 1 quan hệ nút f(ni), có thể truy xuất đến 1 bộ củaquan hệ nút f(nj) thông qua con đường truy xuất h(cij).

 ni nj: từ 1 quan hệ nút f(ni), có thể truy xuất đến n bộ củaquan hệ nút f(nj) thông qua con đường truy xuất h(cij)

 Ánh xạ i: Cđ  N x N x N: trên mỗi con đường truy xuất cij cógắn 1 tổ hợp (m, A, M) thể hiện số bộ có tối thiểu (m), trung bình(A), tối đa (M) của quan hệ nút f(nj) có thể truy xuất được từ 1 bộcủa quan hệ nút f(ni)

 Ánh xạ j: N  {0, 1}: khi j(ni) = 1 thì ni là một nút

VIII Tổ chức dữ liệu:

Để dễ dàng nắm bắt các thuật toán và tận dụng sức mạnh của các công cụlập trình hiện đại, chúng em đề xuất một vài cấu trúc dữ liệu mới, hướngđối tượng trên nền Net nhằm phục vụ cho việc triển khai các thuật toán

Ưu điểm của cấu trúc dữ liệu này dễ dàng nắm bắt, nhưng nhược điểm làhao tốn không gian bộ nhớ và tốn năng lực xử lý của hệ thống

Tập thuộc tính:

Tập thuộc tính được mô tả bằng một mảng chứa một loạt các string mô

tả cho từng thuộc tính Ta xây dựng một lớp TapThuocTinh để chứamảng thuộc tính, lớp này kế thừa từ đối tượng Object và interfaceIEnumerable (để sử dụng hàm foreach trên tập thuộc tính bằng cách khaibáo thêm phương thức public IEnumerator<string> GetEnumerator())như sau:

public ArrayList MangThuocTinh;

Phụ thuộc hàm:

Trong một số cấu trúc dữ liệu cũ trước đây, phụ thuộc hàm được biểudiễn bằng các bit mô tả vị trí của thuộc tính, yếu điểm của phương phápnày là việc biểu diễn phụ thuộc hàm phụ thuộc rất nhiều vị trí của cácthuộc tính được sắp đặt trong phụ thuộc hàm Nhưng ở đây tập thuộctính của chúng ta được biểu diễn bằng một danh sách các thuộc tính, cónghĩa là người dùng có quyền sắp xếp, thêm bớt các phần tử, cũng cónghĩa là vị trí của các thuộc tính chỉ mang tính tương đối

Cij

Trang 30

Ta có thể thấy rằng phụ thuộc hàm chính là mối quan hệ giữa các thuộctính theo hai vế: vế trái và vế phải, vì vậy ta có thể tận dụng cấu trúc dữliệu của tập thuộc tính đã trình bày ở trên để mô tả phụ thuộc hàm Taxây dựng một lớp PhuThuocHam gồm các thuộc tính như sau:

Quan hệ kế thừa từ lớp tập thuộc tính có các thành phần: một chuỗi mô

tả tên của quan hệ, một mảng mô tả tập khóa của quan hệ được khai báonhư sau:

private string _name;

public ArrayList tapkhoa;

 LK_thuaNi: mảng lồng khóa thừa

 Index: chỉ mục có kiểu số nguyên

 CungNi: mảng chỉ cung Ni

Trang 31

Chương 10 CÀI ĐẶT MỘT SỐ THUẬT TOÁN

Thuật toán tìm bao đóng:

a Thuật toán gốc:

Thuật toán tìm bao đóng của X dựa trên tập phụ thuộc hàm Fđối với quan hệ R được mô tả bằng ngôn ngữ Pascal như sau: iProcedure Closure (X, F)

vii OldDep := NewDep;

viii For every FD: WZ  F Do

ii Tham biến TapThuocTinh tapX, TapPhuThuocHam F

iii TapThuocTinh baodong = new TapThuocTinh();

iv baodong.AddItem(tapX);

v TapThuocTinh olddep = new TapThuocTinh();

vi while (baodong != olddep)

vii {

viii olddep.AddItem(baodong);

Trang 32

Trong khi baodong <> olddep thìOlddep = baodong nghĩa là olddep = {H, R}

Xét lần lượt các phụ thuộc hàm từ f1 đến f5

Vì vế trái của f2 = {H, R} nên đưa vế phải của f2 là {C} vào baodong, lúc này baodong = {H, R, C}

Trang 33

Bước 3:

baodong = {H, R, C} <> olddep = {H, R} nên lặp lại bước 2đưa {T} vào baodong

Vậy: Closure({H,R}) = {C,T,H,R}

Thuật toán tìm tất cả các khóa của quan hệ:

Function: TimKhoa(F, TapKhoa)

KhongBo = 0; //số lượng các phần tử không thể loại bỏ

Foreach ( thuộc tính A trong VX){

Tập thuộc tính Y = VX – A;

Tập thuộc tính BaoDong = tính bao đóng (Y,F);

If (VX là tập con của bao đóng (Y, F)) //Y là siêu khóa.{

Tìm khóa;

}Else{KhongBo ++;

}}

If (KhongBo = = số phần tử trong XA){

Trang 34

Cont = false;

Break;

}}

If (Cont){

Thêm VX vào TapKhoa;

}}}Return TapKhoa;

 H,R,S có bao đóng C,H,R,S Siêu khóa

 R,S có bao đóng R,S không đi xuống

 H,S có bao đóng C,H,R,S Siêu khóa

 S có bao đóng S

 H có bao đóng H

 H,C,R có bao đóng C,H,R không đi xuống

 C,R,S có bao đóng C,R,S không đi xuống

 C,H,S có bao đóng C,H,R,S Siêu Khóa

Ngày đăng: 06/06/2014, 13:34

HÌNH ẢNH LIÊN QUAN

Bảng này chứa toàn các ký hiệu + hoặc – - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Bảng n ày chứa toàn các ký hiệu + hoặc – (Trang 9)
Bảng tầm ảnh hưởng: - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Bảng t ầm ảnh hưởng: (Trang 12)
Hình 1. Giao diện chương trình - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 1. Giao diện chương trình (Trang 53)
Hình 3. Tạo lược đồ quan hệ. - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 3. Tạo lược đồ quan hệ (Trang 54)
Hình 2. Menu hệ thống - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 2. Menu hệ thống (Trang 54)
Hình 5. Dialog Open - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 5. Dialog Open (Trang 55)
Hình 4. Menu quan hệ - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 4. Menu quan hệ (Trang 55)
Hình 6. Giao diện mở tập tin .xml - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 6. Giao diện mở tập tin .xml (Trang 56)
Hình 8. Dialog nhập thuộc tính vào quan hệ - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 8. Dialog nhập thuộc tính vào quan hệ (Trang 57)
Hình 9. Dialog phủ tối tiểu của quan hệ - Xây dựng chương trình hỗ trợ thiết kế cơ sở dữ liệu
Hình 9. Dialog phủ tối tiểu của quan hệ (Trang 57)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w