25/05/2018, 10:31

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

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à ...

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...
  • Đầ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;

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) …..

0