Tài liệu: Tìm bao đóng của tập thuộc tính

Tài liệu
Nguyễn Minh Quý

Tóm tắt nội dung

Định nghía bao đóng, thuật toán tìm bao đóng và bài tập áp dụng
Tìm bao đóng của tập thuộc tính

Nội dung

Định nghĩa bao đóng

Cho lược đồ quan hệ R=(U, F). Bao đóng của tập thuộc tính X (X ⊆ U), ký hiệu X+ là tập tất hợp cả các thuộc tính mà có thể suy diễn logic từ X.

  • Nhận xét: Bao đóng của tập thuộc tính X thực chất là tập tất cả các thuộc tính mà ta có thể “với tới” (hay suy ra) nó từ tập thuộc tính X ban đầu.
  • Việc tính toán bao đóng là cơ sở cho việc tìm khoá, tìm tập khoá, kiểm tra một phụ thuộc hàm nào đó có tồn tại trong quan hệ hay không...

Thuật toán tìm bao đóng của tập thuộc tính

  • Đầu vào: Tập thuộc tính X cần tính bao đóng trên lược đồ quan hệ R=(U,F).
  • Đầu ra: Tập thuộc tính X +

Phương pháp

Kiểm tra lần lượt từng phụ thuộc hàm fi=αβ size 12{ ital "fi"=α rightarrow β} {}, nếu αX+ size 12{α subseteq X rSup { size 8{+{}} } } {} thì kết nạp vế phải (tức β size 12{β} {}) vào vào X+: X+=X+β size 12{X rSup { size 8{+{}} } =X rSup { size 8{+{}} } union β} {}

Lặp lại cho đến khi nào X+ = Const.

Thuật toán 1:

CònThayĐổi := True;     X+ := X;     While Còn_Thay_Đổi Do       Begin         Còn_Thay_Đổi := False;         For mỗi fi=α→β Do           Begin             If α⊆X+ Then               Begin                 X+=X+∪β ;                 Còn_Thay_Đổi := True;               End;            End;         End; 

Bài tập áp dụng

Cho lược đồ quan hệ R = (U, F) với U= {A,B,C,D,E,G,H} và F= {AB→C, D→EG, ACD→B, C→A, BE→C, CE→AG, BC→D, CG→BD, G→ H}

  1. Tính (D)+
  2. Tính (DE)+
  3. Tính (BE)+
  4. Tính (CG)+

a) Tính (D) +

X0 = D

1) X1 = DEG (áp dụng D→EG)

2) X2 = DEGH (áp dụng G→H) (= Constant)

Vậy (D)+ = DEGH

b) Tính (DE) +

X0 = DE

1 ) X1 = DEG (áp dụng D→EG)

2) X2 = DEGH (áp dụng G→H) (= Constant)

Vậy (DE)+ = DEGH

c) Tính (BE) +

X0 = BE

1) X1 = BEC (áp dụng BE→C)

2) X2 = BECAG (áp dụng CE→AG)

3) X3 = BECAGD (áp dụng BC→D)

4) X4 = BECAGDH (áp dụng G→H) (= Constant)

Vậy (BE)+ = ABCDEGH

d) Tính (CG) +

X0 = CG

1) X1 = CGA (áp dụng C→A)

2) X2 = CGABD (áp dụng CG→BD)

3) X3 = CGABDH (áp dụng G→H)

4) X4 = CGABDHE (áp dụng D→EG) (= Constant)

Vậy (CG)+ = ABCDEGH

Cho lược đồ quan hệ R = (U, F) với U = {A,B,C,D,E,G} và F = {C→G, BG → CD, AEG → BC, CG → AE, B → CG }

  1. Tính C+
  2. Tính (B)+
  3. Tính (AEG)+

a) Tính C +

X0 = C

1) X1 = CG (áp dụng C→G)

2) X2 = CGAE (áp dụng CG→AE)

3) X3 = CGAEB (áp dụng AEG→BC)

4) X4 = CGAEBD (áp dụng BG→CD) (= Constant)

Vậy (C)+ = ABCDEG

b) Tính (B)+

X0 = B

1) X1 = BCG (áp dụng B→CG)

2) X2 = BCGD (áp dụng BG→CD)

3) X3 = BCGDAE (áp dụng CG→AE) (= Constant)

Vậy (B)+ = ABCDEG

c) Tính (AEG)+

X0 = AEG

1) X1 = AEGBC (áp dụng AEG→BC)

2) X2 = AEGBCD (áp dụng BG→CD) (= Constant)

Vậy (AEG)+ = ABCDEG

Tương tự như bao đóng của tập thuộc tính, người ta cũng định nghĩa bao đóng của tập phụ thuộc hàm. Tuy nhiên việc tính bao đóng của tập phụ thuộc hàm nói chung là phức tạp, nó thuộc loại bài toán NP – Khó. Hơn nữa việc tính bao đóng của tập phụ thuộc hàm ít được ứng dụng do vậy xin không đề cập trong tài liệu này.

Một ví dụ về tính bao đóng của tập phụ thuộc hàm.

Tính (BG → CD)+ với R cho ở bài tập 2.

X0 = BG → CD

X1 = (BG→C, BG → D) (Theo luật tách trong hệ tiên đề Amstrong)

X2 = (BG → C, BG → D, BG → B, BG → G) (Theo luật phản xạ)

X3 = (BG → B, BG → G, BG → C, BG → D, BG → CG) (Luật hợp)

X4 = (BG → B, BG → G, BG → C, BG → D, BG → CG, CG AE) …..

Bài tập lý thuyết Cơ sở dữ liệu



Nguồn: voer.edu.vn/m/tim-bao-dong-cua-tap-thuoc-tinh/b3ec7dcc


Chưa có phản hồi
Bạn vui lòng Đăng nhập để bình luận