Input: s = < R, F >, R= {a1, a2,..., an} và
A1→ B1
F = . . . . At→ Bt
Với Bi ⊆ Ai (i = 1,2,...t)
Output: s có là BCNF hay không
Bước 1: Nếu A1+ = R thì chuyển sang bước 2.
Ngược lại s không là BCNF Bước i: (2 ≤ i ≤ t) :
Nếu Ai+ = R thì chuyển sang bước i+1 Ngược lại s không là BCNF
Bước i+1: s là BCNF.
4.2 Phân tích thông tin đầu vào
Thông tin đầu vào là tập tất cả các thuộc tính R bao gồm các kí tự hoặc biến do người lập trình tự quy định. Trên cơ sở các tập thuộc tính ta sẽ xây dựng tập các phụ thuộc hàm.
Dựa trên tập thuộc tính đã có, người ta xây dựng lên tập các phụ thuộc hàm
F có dạng A→ B. Chương trình sẽ kiểm tra các phần tử của vế trái và vế
tính không. Nếu không thuộc, chương trình sẽ báo lỗi và yêu cầu nhập lại.
4.3 Phân tích thông tin đầu ra
Thông tin đầu ra gồm 2 phần:
(1) - Tính bao đóng (A+) của tập thuộc tính A bất kỳ với điều kiện A phải
thuộc tập thuộc tính R ( A ⊆ R).
Từ những thông tin đầu vào và nhập một tập thuộc tính A bất kỳ. áp dụng
thuật toán tính bao đóng ta tính được A+.
A+ = { a: { A → {a} ∈ F+}
Ở đây F+ là tập tất cả các phụ thuộc hàm được dẫn xuất từ F bằng việc áp
dụng các quy tắc của hệ tiên đề Armstrong.
(2) - Với thông tin đầu vào như trên, chương trình kiểm tra xem sơ đồ quan
hệ có phải là BCNF hay không theo thuật toán tính BCNF.