[DATABASE] Tìm mọi khóa của lược đồ quan hệ

 Cách thực hiện:

Gọi K là tập khóa cần tìm

  • B1. Tìm tập nguồn N và Tính N+F
    • Nếu N+= Q+ thì suy ra lược đồ quan hệ chỉ có một khóa duy nhất là N và kết thúc thuật toán

    • Ngược lại, qua bước 2

  • B2. Tìm tập trung gian TG
    • Nếu TG =  thì lược đồ quan hệ có 1 khóa là tập nguồn N và kết thúc thuật toán

    • Ngược lại, nếu TG ≠  thì tìm tất cả tập con khác rỗng Xi của tập TG

      • Lấy từng Xi hợp với N => N ∪ X

      • TH1: Nếu (N ∪ Xi)+F = Q+ thì (N ∪ Xi) là khóa, loại tính toán đối với các tập con khác của TG có chứa Xi ; thêm khóa vào tập K
      • TH2: Nếu (N ∪ Xi)+F ≠ Qthì (N ∪ Xi) không là khóa

  • B3. Kết luận:  Khóa của lược đồ quan hệ là tập K

------------
Giải thích:

  • N là tập thuộc tính nguồn (chứa những thuộc tính chỉ xuất hiện ở vế trái của các phụ thuộc hàm; các thuộc tính không xuất hiện ở cả vế trái và vế phải của phụ thuộc hàm)

  • TG là tập thuộc tính trung gian (chứa những thuộc tính vừa xuất hiện ở vế trái, vừa xuất hiện ở vế phải của các phụ thuộc hàm)

  • Tập đích là những thuộc tính chỉ xuất hiện ở vế phải của phụ thuộc hàm => những thuộc tính này sẽ không bao giờ tham gia vào khóa

  • Nếu ở Bước 1 tập nguồn N =  thì cứ nhảy qua bước 2 như bình thường nhé

  • N+F là bao đóng của tập nguồn N đối với phụ thuộc hàm F

  • Q+ là tập tất cả thuộc tính của quan hệ

------------
Liên kết hỗ trợ:
- Tìm mọi khóa của lược đồ quan hệ: https://www.youtube.com/watch?v=SRAp2i4S-zI
- Tìm bao đóng của tập thuộc tính: https://www.youtube.com/watch?v=x1FnU9nQfzw

Nhận xét

Bài đăng phổ biến từ blog này

[DATABASE] Phủ tối thiểu của tập phụ thuộc hàm

[DATABASE] Dạng chuẩn cao nhất của lược đồ quan hệ