Thuật toán thu gọn LĐQH

Một phần của tài liệu Thu gọn lược đồ quan hệ và ứng dụng (Trang 32 - 35)

Algorithm Translation Format: Translation (p,M) Input: - LĐQH p = (U,F) - Tập thuộc tính M U Output: - LĐQH q = (V,G) = p\M, V = U\M, G = F\M. Method V := U\M; G :=  For each FD LR in F do G := G  {L\MR\M}; Endfor; G := Natural_Reduced(G); Return (V,G); End Translation.

Thủ tục Natural_Reduced(G) đưa tập PTH G về dạng thu gọn tự nhiên bằng cách loại khỏi G những PTH tầm thường (có vế trái chứa vế phải), chuyển đổi mỗi PTH có hai vế trái phải rời nhau và gộp các PTH có cùng vế trái.

Ví dụ 2: Cho LĐQH p = (U,F), U = ABCDEH

A  DH, BC  E, E  BC}

Với M = ADH, hãy xác định q = (V,G) = p\M ? Ta có: V = U\ADH = ABCDEH\ADH = BCE,

G = {E   (loại) ,    (loại), BC  E,

E  BC} = {BC  E, E  BC}

Ta nhận thấy phép thu gọn thoả tính hợp thành và giao hoán, cụ thể nếu p là LĐQH trên tập thuộc tính U và X, Y là hai tập con rời nhau của U thì

p\XY = (p\X)\Y = (p\Y)\X

Ví dụ 3 : Cho LĐQH p = (U,F), U = ABCDEH

F= {AE  D, BC  E, E  BC }

Để tìm tập khoá Key (p) của lược đồ p chúng ta xây dựng một lược đồ q bằng cách xoá khỏi lược đồ p các thuộc tính A,D,H.

Ta thu được lược đồ q = (V,G) trong đó: V = U \ ADH = ABCDEH \ ADH = BCE,

G = { E (loại), BCE, EBC} = { BCE, EBC}

Ta dễ dàng tìm được Key (q) = {BC,E}. Để thu được Key (p) ta chỉ việc thêm tập thuộc tính AH (không thêm D) vào mỗi khoá của lược đồ q.

Vậy Key (p) = {AHBC, AHE}. Dù F đã là tập PTH tối ưu theo nghĩa chứa ít ký hiệu nhất, nhưng G còn chứa ít ký hiệu hơn F.

Ví dụ 4 : Cho LĐQH p = (U,F), Với tập thuộc tính U = ABCDEIH. Tập thuộc tính F = {AD, ABDE, CEI, EH} Tính Key (p)?

Để tìm tập khoá của p bằng cách thu gọn LĐQH p theo M= ABC. Ta thu được LĐQH q = p\M = (V,G).

V= U \ M = ABCDEIH \ ABC = DEIH. G = F \ M = {D,

DE, EI,

EH} = {DE, EIH} Ta dễ dàng suy ra Key (q) = .

Để thu được Key (p), ta chỉ cần thêm vào Key (q) các thuộc tính vừa thu gọn ABC. Ta được Key (p) =ABC.

Ví dụ 5 : Cho LĐQH p = (U,F). Với tập thuộc tính U =ABCDEH.

Tập PTH F = {AB  C, C  A, BC  D, ACD  B, D  EH, BE  C, CH  BD, CE  CH}.

Tìm Key(p)?

Ta thu gọn lược đồ quan hệ p theo thuộc tính C. Thu được LĐQH: q = p\C = (V,G). V = ABDEH.

G = {AB   (loại),   A, B  D, AD  B, D  EH, BE   (loại), H  BD, EH } = {   A, BD, ADB, DEH, HBD, EH}.

Ta tìm được khóa của lược đồ q Key (q)={B,D,E,H}. Để thu được Key(p), ta thêm thuộc tính C vào khoá của lược q.

Ta được Key (p) = {BC, DC, EC, HC}.

Một phần của tài liệu Thu gọn lược đồ quan hệ và ứng dụng (Trang 32 - 35)