Các thuật toán liên quan

Một phần của tài liệu Bài giảng Giáo trình cơ sở dữ liệu PGS-TS vũ đức thi (Trang 81 - 86)

và các thuật toán liên quan

3.5. Các thuật toán liên quan

Trên cơ sở các định lí đã trình bày ở các mục trên, chúng ta xây dựng các thuật toán để xác định dạng chuẩn cho các quan hệ hoặc sơ đồ quan hệ cho trước.

Đầu tiên chúng ta xây dựng thuật toán xác định một quan hệ cho trước có là 3NF hay không.

Thuật toán 1.

Đầu vào: r = {h1, ..., hm }là một quan hệ trên R Đầu ra : r là 3NF ?

Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei j : m ≥ j > i ≥1}, ở đây Ei j = { a ∈ R : hj(a) = hj(a)}.

Bước 2: Từ Er chúng ta xây dựng một tập M = {B

∈P(R) : Tồn tại Ei j∈Er : Ei j = B}.

Bước 3: Từ M xây dựng tập Mr = { B ∈ M : Với mọi B' ∈ M : B ⊄ B'}.

Có thể thấy rằng Mr tính được bằng một thuật toán thời gian đa thức.

Bước 4: Xây dựng tập V = ∩Mr.

Bước 5: r là 3NF nếu với mọi B ∈ Mr , a ∈ V : {B - a }r+ = B - a. Ngược lại r không là 3NF.

Ví dụ : Cho quan hệ r sau A B C D E

0 0 1 0 1 1 1 0 0 1 1 1 0 0 1 2 2 0 1 3 1 2 3 1 0 1 1 1 0 2 Khi đó E12= DE, E13= ∅, E14= ∅, E15= D, E23= C, E24= A, E25=AB, E34=BD, E35=∅, E45=A.

Như vậy ta có Mr= {DE,AB,BD,C}. Dễ thấy DE

∩ AB ∩ BD ∩ C = ∅. Cho nên r là 3NF.

Trên cơ sở Định lí 4 mục trên chúng ta xây dựng thuật toán dưới đây

Thuật toán 2.

Đầu vào: r = {h1, ..., hm }là một quan hệ trên R Đầu ra: r là BCNF ?

Bước 1: Từ r chúng ta xây dựng một tập Er = {Ei j : m ≥ j > i ≥1} và Ei j = {a ∈ R : hj(a) = hj(a)}

Bước 2: Từ Er chúng ta xây dựng một tập M = {B

Bước 3: Từ M xây dựng tập Mr = {B ∈ M : Với mọi B' ∈ M : B ⊄ B'}. Có thể thấy rằng Mr tính được bằng một thuật toán thời gian đa thức.

Bước 4: r là BCNF nếu với mọi B ∈ Mr , a ∈ B : {B - a }r+ = B - a. Ngược lại r không là BCNF.

Ví dụ : Cho quan hệ r : A B C D E 2 0 1 1 1 1 1 0 0 1 2 2 0 3 3 1 2 3 3 0 1 1 1 0 2

Khi đó E12= {E}, E13= {A}, E14=∅ , E15= {C}, E23= {C}, E24= {A}, E25={A,B}, E34={B,D}, E35=∅, E45={A}.

Như vậy ta có Mr= {{A,B},{B,D},{C},{E}}. Có thể kiểm tra rằng {A,D} - A = D và {D}+

r = {B,D}. Vì thế r không là BCNF.

Nhờ Định lí thuật toán dưới đây được xây dựng

Thuật toán 3.

Đầu vào: s = <R,F> là một sơ đồ quan hệ trên R, với

F = { A1→ B1,..., Am→ Bm } Đầu ra: s là BCNF ?

Bước 1: Nếu A1→ B1 là phụ thuộc hàm không tầm thường và A1+ # R thì dừng và kết luận s không là BCNF. Ngược lại thì chuyển sang bước tiếp theo.

...

Bước m: Giống như bước 1 nhưng đối với Am→

Bm .

Bước m+1: s là BCNF.

Ví dụ : Cho sơ đồ quan hệ s =<R,F> R = {a,b,c,d,e}

F={{a,b}→{d},{b,c}→{e}, {d}→{c}} Ta có {a,b}+ = R, nhưng {b,c}+≠ R. Vậy s không là BCNF.

Vì thời gian tính bao đóng của một tập thuộc tính bất kì của một sơ đồ quan hệ hoặc một quan hệ là đa thức. Cho nên chúng ta có các kết luận sau.

Định lí 4.

Cho trước một quan hệ r và một sơ đồ quan hệ s. Khi đó đều tồn tại một thuật toán có độ phức tạp thời gian đa thức theo kích thước của r (s) để kiểm tra r (s) có là BCNF hay không.

Cho trước r là một quan hệ trên R. Khi đó tồn tại một thuật toán có độ phức tạp thời gian đa thức để kiểm tra r có là 3NF hay không.

Tuy vậy, đối với đầu vào là s thì đây lại là bài toán NP đầy đủ.

Định lí 6

Cho trước s là một sơ đồ quan hệ trên R. Khi đó bài toán xác định s có là 3NF hay không là NP - đầy đủ.

Có nghĩa là cho đến nay, độ phức tạp thời gian của bài toán này không là đa thức.

- Với trường hợp 2NF, các câu hỏi tương tự cho cả r lẫn s còn là bài toán mở (Chúng tôi phỏng đoán có độ phức tạp thời gian là hàm mũ trở lên)

Một phần của tài liệu Bài giảng Giáo trình cơ sở dữ liệu PGS-TS vũ đức thi (Trang 81 - 86)

Tải bản đầy đủ (PDF)

(178 trang)