Chương 3 CÀI ĐẶT MỘT SỐ THUẬT TOÁN
2. Biểu diễn một cấu trúc CSDL quan hệ sang lược đồ quan hệ:
Ngơ Vũ Bình Tâm MSSV: 02ĐHTH197 Bước 1:
Biến C thành phân rã đồng nhất: • Qi, Qj có khóa là Ki, Kj.
Nếu Ki ↔ Kj thì gộp Qi, Qj lại thành 1 quan hệ.
• ∀ Qi, nếu Q+I có chứa 1 khóa Kj của Qj thì phải chứa tất cả các khóa
của của Qj. Bước 2:
Tạo nút và quan hệ nút:
Mỗi quan hệ Qi là một nút Ni. Bước 3:
Tạo nút bản lề và quan hệ nút bản lề (các thuộc tính xuấ hiện trên nhiều quan hệ):
∀ Qi, Qj: Qij = Qi ∩ Qj. Chừng nào: Q+ij ≠ ∅ thì:
• Xác định tất cả các khóa của Qij (ký hiệu KQ+ij)
• Nếu !∃ Qh ∈ C sao cho 1 khóa của Qh là một khóa của Qij thì tạo 1 nút bản lề Nbl với quan hệ Qbl = KQ+
ij
• Ngược lại: tính lại thuộc tính : Q+ij = Q+ij - KQ+ ij
Bước 4:
Tạo cung và quan hệ cung: chỉ tạo số khung tối thiểu xuất phát từ 1 nút. ∀ Ni ứng với quan hệ Qi, xác định:
• PTH (Ni) = {Nj với Qj sao cho Q+i ⊃ KQ+j}
• PTH-thừa (Ni) = {Nj ∈ PTH (Ni) : ∃ Nh ∈ PTH (Ni) với Qh sao cho KQ+h ⊃ KQ+j}
• Lồng khóa (Ni) = {Nj với Qj sao cho KQ+i ⊃ KQ+j}
• Lồng khóa thừa (Ni) = {Nj ∈ Lồng khóa (Ni) : ∃ Nh ∈ Lồng khóa(Ni) với Qh sao cho KQ+h ⊃ KQ+j}
• Cung (Ni) = { (PTH (Ni) - PTH-thừa (Ni)) ∪ (Lồng khóa (Ni) - Lồng khóa thừa (Ni))}
• Tạo 1 cung có hướng cij từ Ni → Nj. • Qij = Qi [KQ+i ∪ KQ+j]. Bước 5: Hủy những nút bản lề thừa: ∀ Nk sao cho: • Qk có 1 khóa duy nhất là Kk.
• Khơng có thuộc tính nào khác ngồi khóa • Chỉ có một cung vào Nk xuất phát từ nút Ni Thì :
• Nhập Nk vào Ni • Hủy cung cik. Bước 6:
Mịn hóa các quan hệ: ∀ Ni với Qi thì:
∀ Nj ∈ Cung (Ni) với Qj thì:
Hủy khỏi Q+i những thuộc tính khóa của Qj mà khơng phải là
thuộc tính khóa của Qi. Bước 7:
Tạo cung vơ hướng: nếu tồn những cung có hướng thì khơng làm bước này.
∀ Nk sao cho:
• Q+k = KQ+k (Qk khơng có thuộc tính khơng khóa)
• Chỉ có 2 cung ra khỏi Nk (khơng có cung vào), đến Ni, Nj với Qi, Qj sao cho KQk = KQi ∪ KQj.
Thì:
• Tạo 1 cung vơ hướng nối Ni, Nj với Qij = Qk. • Hủy nút Nk.
• Hủy 2 cung xuất phát từ Nk. Kết thúc.
Ngơ Vũ Bình Tâm MSSV: 02ĐHTH197