1. Trang chủ
  2. » Công Nghệ Thông Tin

PHỤ THUỘC HÀM

16 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Phụ thuộc hàm
Trường học Trung tâm Đào tạo E-learning
Chuyên ngành Cơ sở dữ liệu
Thể loại Bài giảng
Định dạng
Số trang 16
Dung lượng 390 KB

Nội dung

Việc thiết kế cơ sở dữ liệu quan trọng nhất là phải tạo ra được các lược đồ quan hệ tốt, đảm bảo không dư thừa dữ liệu cũng như có các bất thường trong thao tác. Chương này sẽ thảo luận về một số vấn đề lý thuyết nhằm tạo được quan hệ tốt đó, và cần quan tâm đặc biệt đến khái niệm ràng buộc giữa các dữ liệu trong quan hệ đó chính là phụ thuộc hàm.

Trang 1

Cơ sở dữ liệu - Bài 4 Trang 1

BÀI 4 PHỤ THUỘC HÀM

Mục tiêu:

Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:

1 Biết được sự cần thiết của việc nghiên cứu về phụ thuộc hàm và ý nghĩa của nó

2 Nắm được khái niệm phụ thuộc hàm, cách biểu diễn bằng sơ đồ

3 Nắm vững các luật của hệ tiên đề Armstrong

4 Hiểu và áp dụng để kiểm tra một phụ thuộc hàm có là thành viên của một tập phụ thuộc hàm cho trước

5 Nắm vững khái niệm bao đóng tập phụ thuộc hàm và bao đóng tập thuộc tính từ đó tìm được bao đóng của tập thuộc tính cho trước

6 Khái niệm khóa, siêu khóa và các thuật toán để tìm một khóa và tất cả các khóa của phụ thuộc hàm

Nội dung:

Việc thiết kế cơ sở dữ liệu quan trọng nhất là phải tạo ra được các lược

đồ quan hệ tốt, đảm bảo không dư thừa dữ liệu cũng như có các bất thường trong thao tác Chương này sẽ thảo luận về một số vấn đề lý thuyết nhằm tạo được quan hệ tốt đó, và cần quan tâm đặc biệt đến khái niệm ràng buộc giữa các

dữ liệu trong quan hệ đó chính là phụ thuộc hàm

I Phụ thuộc hàm

Khái niệm phụ thuộc hàm là khái niệm cơ bản và quan trọng nhất trong thiết kế cơ sở dữ liệu Nó là thước đo để đánh giá một thiết kế cơ sở dữ liệu có tốt hay không Phụ thuộc hàm chính là những ràng buộc dữ liệu được suy ra từ

ý nghĩa và các mối liên quan giữa các thuộc tính

I.1 Định nghĩa phụ thuộc hàm

Cho R(U), với R là quan hệ và U là tập thuộc tính

Cho X,Y thuộc U, phụ thuộc hàm X → Y (đọc là X xác định Y) được định

Trang 2

Cơ sở dữ liệu - Bài 4 Trang 2

nghĩa là:

Với mọi bộ t, t’ thuộc R nếu t.X = t’.X thì t.Y = t’.Y

(Có nghĩa là: Nếu hai bộ có cùng giá trị trên thuộc tín X thì có cùng giá

trị trên thuộc tính Y hay giá trị của các bộ tại thuộc tính X xác định duy nhất các giá trị tại thuộc tính Y)

Ý nghĩa toán học của phụ thuộc hàm X->Y: một giá trị của tập X xác định duy nhất 01 giá trị của tập Y

Và ta nói X xác định Y hay Y phụ thuộc hàm vào X Phụ thuộc hàm được suy ra từ những quy tắc dữ liệu khi ta khảo sát yêu cầu của bài toán

Phụ thuộc hàm viết tắt là FD (Functional Dependency), trong đó X được gọi là vế trái của phụ thuộc hàm và Y là vế phải phụ thuộc hàm

Để biểu diễn các phụ thuộc hàm trong một lược đồ quan hệ, chúng ta sử dụng khái niệm sơ đồ phụ thuộc hàm Mỗi FD được biểu diễn bằng một đường nằm ngang Các thuộc tính ở vế trái của FD được nối với đường biểu diễn FD bằng các đường thẳng đứng, các thuộc tính ở vế phải của FD được nối với đường biểu diễn FD bằng mũi tên chỉ đến các thuộc tính

Ví dụ: Ta có lược đồ cơ sở dữ liệu

MƯỢN(Sốthẻ, Mãsốsách, Tênngườimượn, Tênsách, Ngàymượn)

Với các phụ thuộc hàm:

Sốthẻ → Tênngườimượn Mãsốsách → Tênsách

Sốthẻ, Mãsốsách → Ngàymượn Biểu diễn phụ thuộc hàm dưới dạng sơ đồ ta có:

Trang 3

Cơ sở dữ liệu - Bài 4 Trang 3

Nhận xét: cho một phụ thuộc hàm X -> Y thì không thể nói gì về Y -> X

Ví dụ: Có MãSV -> TênSV nhưng không thể khẳng định có phụ thuộc TênSV -> MãSV vì tên sinh viên có thể trùng nhau

I.2 Hệ tiên đề Armstrong

Năm 1974 Armstrong đã đưa ra hệ luật dẫn hay là tính chất của phụ thuộc hàm gọi là hệ tiên đề Armstrong, đó chính là các quy tắc biến đổi của phụ thuộc hàm

Cho lược đồ quan hệ r(U), U là tập thuộc tính, F là tập các phụ thuộc hàm được định nghĩa trên quan hệ r

Ta có phụ thuộc hàm X → Y được suy diễn logic từ F nếu mọi quan hệ r

trên U thỏa các phụ thuộc hàm trong F thì cũng thỏa phụ thuộc hàm X → Y

Kí hiệu:

Ví dụ:

Tập phụ thuộc hàm: F = { A → B, B → C}

Ta có phụ thuộc hàm A → C là phụ thuộc hàm được suy từ F

Hệ tiên đề Armstrong

Các tính chất của phụ thuộc hàm

Cho X, Y, Z, W ⊆ U, ta có:

Trang 4

Cơ sở dữ liệu - Bài 4 Trang 4

1 Phản xạ: Nếu Y ⊆ X thì X → Y

2 Tăng trưởng: Nếu Z ⊆ U và X → Y thì XZ → YZ

(Ký hiệu XZ là X∪Z)

3 Bắc cầu: Nếu X → Y và Y → Z thì X → Z

4 Giả bắc cầu: Nếu X → Y và WY → Z thì XW → Z

Luật hợp: Nếu X → Y và X → Z thì X →YZ

6 Luật phân rã: Nếu X → Y và Z ⊂Y thì X → Z

Nhận xét: Trong sáu luật trên thì các luật 4, 5, 6 suy được từ 1, 2, 3 Người ta cũng đã chứng minh được là từ các luật 1, 2, 3 có thể suy ra được tất

cả các luật khác Vì vậy các luật 1, 2, 3 là một hệ tiên đề, có tên là Hệ tiên đề Armstrong

Ví dụ 1: Cho R(ABC) và tập phụ thuộc hàm F {AB →C , C →A }

Áp dụng hệ tiên đề Armstrong chứng minh rằng BC→ABC

Ta có:

• C →A tăng cường vào hai vế thêm B ta được BC →AB (1)

• AB →C tăng cường thêm AB vào hai vế ta được AB →ABC (2)

• Từ (1,2) áp dụng luật bắc cầu suy ra điều phải chứng minh BC→ABC

Ví dụ 2: Chứng minh nếu Nếu X → Y và U → V thì XU → YV

Ta có:

1 Từ X → Y ( giả thiết) có XU → YU, (tăng trưởng U)

2 Từ U → V (giả thiết) có YU → YV (tăng trưởng Y)

3 Có XU → YV ( bắc cầu (1) và (2) )

Trang 5

Cơ sở dữ liệu - Bài 4 Trang 5

II Bao đóng và bài toán thành viên

Cho lược đồ quan hệ trên tập thuộc tính U và tập phụ thuộc hàm F, cùng phụ thuộc hàm f = X → Y ∉ F Bài toán thành viên giúp xác định các quan hệ r của lược đồ có thoả f hay không?

Để giải quyết bài toán trên ta có hai phương án:

Phương án 1: Sử dụng định nghĩa phụ thuộc hàm, khi đó ta phải kiểm tra

tất cả các quan hệ có thể có trên lược đồ quan hệ, nhưng số lượng các quan hệ là

vô cùng lớn (có thể vô hạn) vì vậy không thể kiểm tra được

Phương án 2: Sử dụng hệ tiên đề Armstrong để biến đổi F, nếu sau một

số hữu hạn bước biến đổi ta nhận được f thì kết luận các quan hệ r trên lược đồ thoả mãn f Tuy nhiên với phương án này trong trường hợp các quan hệ trên lược đồ không thoả mãn f thì không thể chứng minh được

Như vậy cả hai phương án trên đều chưa đủ giải quyết bài toán đặt ra

Khái niệm bao đóng sẽ giúp ta giải quyết triệt để bài toán

II.1 Bao đóng

a Bao đóng của tập phụ thuộc hàm Cho R(U), U là tập thuộc tính và F là tập các phụ thuộc hàm trên tập thuộc tính U, tập tất cả các phụ thuộc hàm được suy dẫn ra từ tập F được gọi là bao đóng của tập phụ thuộc hàm và kí hiệu là F+, F+ được viết là:

Nếu F+ = F thì F được gọi là họ đầy đủ của các phụ thuộc hàm

Ý nghĩa của bao đóng tập phụ thuộc hàm: Bao đóng của tập phụ thuộc

hàm F là tập tất cả các phụ thuộc hàm có thể nhận được sau khi áp dụng các luật phản xạ, bắc cầu và gia tăng đối với các phụ thuộc hàm trong F

Để giải quyết bài toán thành viên ta chỉ cần xác định phụ thuộc hàm fi : X->Y có thuộc F+ hay không?

Trang 6

Cơ sở dữ liệu - Bài 4 Trang 6

b Bao đóng của tập thuộc tính X Tập tất cả các thuộc tính có thể suy diễn ra từ X nhờ hệ tiên đề Armstrong gọi là bao đóng của tập thuộc tính X

Định nghĩa: Cho một lược đồ quan hệ trên tập thuộc tính U, tập phụ

thuộc hàm F và một tập thuộc tính X⊆U Bao đóng của 1 tập thuộc tính X (ký hiệu X+) là tập tất cả các thuộc tính A thuộc U sao cho phụ thuộc hàm X->A∈

F+

X+F = { A | A∈ U , X → A ∈ F+ }

Các tính chất :

1 (Phản xạ) X ⊆ X+

2 (Đơn điệu ) Nếu X ⊆ Y ⇒ X+ ⊆ Y+

3 (Luỹ đẳng) X++ = X+

4 X+ Y+ ⊆ (XY)+ (X+ Y)+ = (XY+)+ = (XY)+

6 X → Y ∈ F+ & Y → X ∈ F+ ⇔ X+ = Y+

7 X → Y ∈ F+ ⇔ Y⊆ X+

Ý nghĩa của tính chất 7: Để giải quyết bài toán thành viên ta chỉ cần xác

định phụ thuộc hàm fi : X->Y có thuộc F+ hay không và tương đương với việc xác định Y⊆ X+ hay không?

Để giải quyết yêu cầu này ta phải xác định được X+ (bao đóng của tập thuộc tính X)

c Thuật toán xác định bao đóng của tập thuộc tính X (Closure(X,F)): Input: Tập thuộc tính X và tập phụ thuộc hàm F

Output: Bao đóng của X+F?

Thực hiện: lần lượt tính các X0, X1,… theo các bước:

! Bước 1: Đặt X0 = X

Trang 7

Cơ sở dữ liệu - Bài 4 Trang 7

! Bước 2: Lần lượt xét các phụ thuộc hàm của F nếu tồn tại pth Y →Z∈F

mà Y⊂Xi thì X i+1 = X i ∪ {Z}, ngược lại, đặt X i+1 = X i

! Bước 3: Nếu ở bước 2 mà không tính được Xi+1 thì Xi chính là bao đóng của tập thuộc tính X, ngược lại lặp lại bước 2

Trang 8

Cơ sở dữ liệu - Bài 4 Trang 8

Giả mã của thuật toán CLOSURE(X,F)

Begin

X+ = X;

Do

Old X+ = X+ ; với mỗi phụ thuộc hàm Y → Z trong F thực hiện nếu X+⊃ Y thì X+= X+ Z;

While ( X+ = Old X+ );

End

Ví dụ 1: Xét lược đồ quan hệ

R = {MãsốNV, HọtênNV, MãsốDA, TênDA, ĐịađiểmDA, Sốgiờ}

và tập phụ thuộc hàm

F = {MãsốNV → HọtênNV,

MãsốDA → TênDA, ĐịađiểmDA, MãsốNV, MãsốDA → Số giờ}

Tính bao đóng {MãsốNV}+, {MãsốNV, MãsốDA}+

Giải: Áp dụng thuật toán ta có:

{MãsốNV}+ = { MãsốNV}

Xét F1: MãsốNV → HọtênNV nên có {MãsốNV}+ = {MãsốNV}+ HọtênNV

Và kết luận: {MãsốNV}+ = {MãsốNV, HọtênNV}

Trang 9

Cơ sở dữ liệu - Bài 4 Trang 9

• {MãsốNV, MãsốDA}+ = {MãsốNV, MãsốDA}

∗ Xét F1: MãsốNV → HọtênNV nên có

{MãsốNV, MãsốDA}+= {MãsốNV, MãsốDA} HọtênNV= {MãsốNV, MãsốDA, HọtênNV}

∗ Xét F2: MãsốDA → TênDA, ĐịađiểmDA nên có

{MãsốNV, MãsốDA}+={MãsốNV, MãsốDA HọtênNV} {TênDA, ĐịađiểmDA}

={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA}

∗ Xét F3: MãsốNV, MãsốDA → Số giờ nên có:

{MãsốNV, MãsốDA}+={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA} Số giờ

={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA, Số giờ} Kết luận:

{MãsốNV, MãsốDA}+={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA, Số giờ}

Ví dụ 2: Xét lược đồ quan hệ

Cho R = (A, B, C, D, E, G) và tập phụ thuộc hàm

F = {AB →C, C →A, BC →D, ACD →B, D →EG, BE →C, CG →BD,

CE →AG} Tính: (BD)+

Giải:

X0 = BD

∗ Xét phụ thuộc hàm D → EG => thêm E và G vào X0 " X1 = X0 EG= BDEG

∗ Phụ thuộc hàm BE → C => thêm C vào X1 " X2 = X1 C =BCDEG

∗ Phụ thuộc hàm CE → AG => thêm A vào X2 " X3 = X2 A = ABCDEG

Trang 10

Cơ sở dữ liệu - Bài 4 Trang 10

Áp dụng tất cả các phụ thuộc hàm không làm thay đổi X+, nên (BD)+ = ABCDEG

II.2 Bài toán thành viên

Định nghĩa: Một phụ thuộc hàm X→Y là thành viên của F nếu X→Y∈

F+

Về nguyên tắc ta sẽ tìm bao đóng F+ sau đó kiểm tra xem phụ thuộc hàm X→Y có thuộc F+ hay không nhưng việc tìm F+ là một việc tốn nhiều thời gian

và công sức vì thế thay vì tìm F+ chúng ta có thể dùng thuật toán sau để kiểm tra phụ thuộc hàm X→Y có là thành viên của F hay không

Input: phụ thuộc hàm cần kiểm tra X→Y và tập phụ thuộc hàm F

Output: X→Y là thành viên của F đúng hay sai

Các bước thực hiện:

- Bước 1: Tính X+

F

- Bước 2: So sánh X+F với Y nếu Y ⊆X+ thì khẳng định X → Y là thành viên của tập phụ thuộc hàm F, ngược lại không là thành viên của F

Ví dụ 1:

Cho R(ABCDE) và tập phụ thuộc hàm F= { A → CD; C → E; D → BC } Xác định xem A → B có là thành viên của F

Giải:

- Tính A+F ={ACDEBC}

- Nhận thấy B ⊆ A+ nên khẳng định phụ thuộc hàm A → B là thành viên của F

Ví dụ 2:

Trang 11

Cơ sở dữ liệu - Bài 4 Trang 11

Cho R(ABEGHI) và tập phụ thuộc hàm F= { AB → E; AG → I; BE → I;

E → G; BE → I; GI → H; }

Xác định xem AB → GH có là thành viên của F

Giải:

- Tính AB+F={ABEIGH}

- Nhận thấy GH ⊆ AB+F nên khẳng định phụ thuộc hàm AB

→ GH là thành viên của F

III Khóa của lược đồ quan hệ

Định nghĩa:

- Cho R(A1, …,An) là lược đồ quan hệ;

- Tập các thuộc tính U = { A1, A2, , An}

- Tập các phụ thuộc hàm F= { f1, f2, ,fn} xác định trên R

- K ⊆ U là khoá của R nếu thoả mãn hai điều kiện sau :

(1): K+F = U

(2): Không tồn tại K' ⊂ K mà (K')+F = U

Tập thuộc tính S được gọi là siêu khóa nếu S ⊇ K

Thuộc tính A được gọi là thuộc tính khóa nếu A ∈ K, với K là khóa bất

kì của lược đồ R, ngược lại A là thuộc tính không khóa

Một lược đồ quan hệ có thể có nhiều khóa và tập thuộc tính không khóa

có thể là rỗng

Khi thiết kế một hệ thống thông tin thì việc tạo được một lược đồ quan hệ đạt một tiêu chuẩn nào đó là rất quan trọng và việc xác định chuẩn của một lược

đồ quan hệ liên quan mật thiết với thuật toán tìm khóa

Trang 12

Cơ sở dữ liệu - Bài 4 Trang 12

Thuật toán tìm một khóa của lược đồ quan hệ R

Input:

• Lược đồ quan hệ R(A1,A2,…An)

• Tập thuộc tính U {A1,A2,…An}

• Tập PTH F Output: Khóa K của quan hệ R

Ý tưởng: Bắt đầu từ tập U vì U+ = U Ta bớt dần các phần tử của U để nhận được tập bé nhất mà bao đóng của nó vẫn bằng U

Các bước:

Bước 1: Gán K = U Bước 2: Loại khỏi K lần lượt từng thuộc tính A mà ( K\A)+ =U Lặp lại bước 2 đến khi không loại khỏi K được nữa

Nhận xét: Thuật toán trên chỉ tìm được một khoá trong sơ đồ quan hệ Nếu cần tìm nhiều khoá, ta thay đổi trật tự loại bỏ các phần tử của K

Ví dụ:

Cho R(ABCD) và tập phụ thuộc hàm F = { AB → C; D → B; C → ABD}

Giải:

Bước 1: K=ABCD

Bước 2: Lần lượt loại các thuộc tính của K

Loại A ta có (BCD)+ = {BCDA} = U nên K= BCD

Loại B ta có (CD)+ = {CDAB} = U nên K = CD

Loại C ta có D+ = {DB} ≠ U nên không thể loại C

Trang 13

Cơ sở dữ liệu - Bài 4 Trang 13

Loại D ta có C+ = {CABD} = U nên K = C

Kết luận: C là một khóa của lược đồ R đã cho

Nhận xét: Ta có thể cải thiện tốc độ thực hiện thuật toán trên bằng cách trong bước 1 ta thay K = U bởi K=Left(U) ∪ (U\(Left ∪ Right)) – tập các thuộc tính xuất hiện ở vế trái và không xuất hiện ở cả hai vế của phụ thuộc hàm

Thuật toán tìm khóa cải tiến

• Bước 1: Gán K = Left(U) ∪ (U\(Left ∪ Right))

• Bước 2: Loại khỏi K lần lượt từng thuộc tính A mà ( K\A)+ = U

• Lặp lại bước 2 đến khi không loại khỏi K được nữa

Ví dụ:

Cho R(ABCD) và tập F = {AB → C, B → D, D → B}

Giải:

• Loại A ta có BD+ = {BD} ≠ U nên không loại được A

• Loại B ta có AB+ = {ABCD}= U nên K= AD

• Loại D ta có A+ = {A} ≠ U nên không loại được D

Kết luận khóa của lược đồ đã cho là AD

Thuật toán tìm tất cả các khóa

Một số khái niệm cơ bản:

- Tập thuộc tính nguồn (TN): bao gồm các thuộc tính chỉ xuất hiện

ở vế trái, không xuất hiện ở vế phải của phụ thuộc hàm và các thuộc tính không xuất hiện ở vế trái lẫn vế phải của phụ thuộc hàm

- Tập thuộc tính đích (TĐ): bao gồm các thuộc tính chỉ xuất hiện ở

vế phải không xuất hiện ở vế trái của phụ thuộc hàm

- Tập thuộc tính trung gian (TG): Chứa thuộc tính xuất hiện ở cả

vế trái lẫn vế phải của phụ thuộc hàm

Trang 14

Cơ sở dữ liệu - Bài 4 Trang 14

Input: Lược đồ R(U) và tập phụ thuộc hàm F

Output: Tất cả các khóa của phụ thuộc hàm

Các bước:

Bước 1: Tạo tập nguồn TN và tập trung gian TG

Bước 2: Tính TN+, nếu TN+ = U, kết luận chỉ có một khóa duy nhất là

TN Ngược lại qua bước 3

Bước 3: Tìm tất cả tập con Xi của tập trung gian

Bước 4: Tìm siêu khóa Si bằng cách với mọi Xi, nếu (TN∪Xi)+=U thì Si

= TN ∪ {Xi}

Bước 5:

- Tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu

Gọi tập các siêu khóa là S = {Si, Sj,…} nếu Si chứa trong Sj thì loại bỏ tập Sj ra khỏi tập siêu khóa S

Ví dụ: Si=AB, Sj=ABC thì loại bỏ Sj ra khỏi tập siêu khóa

S còn lại chính là tập khóa cần tìm

Ví dụ: Cho lược đồ quan hệ R(CSZ) và tập phụ thuộc hàm

F={CS → Z; Z → C} Tìm tất cả các khóa của lược đồ quan hệ trên

Giải:

Bước 1: TN={S}, TG={CZ}

Bước 2: TN+ ≠ U nên qua bước 3

Bước 3: Tập con Xi của tập trung gian X={∅,C,Z,CZ}

Bước 4:

S+=S Khác R có nghĩa không có siêu khóa

SC+=SCZ bằng với R nên siêu khóa SC

SZ+=SZC bằng với R nên Siêu khóa là CZ

SCZ+= bằng với R nên Siêu khóa là CSZ

Bước 5:

Vậy tập siêu khóa S={SC, CZ, CSZ}

Ngày đăng: 03/08/2024, 21:30