Ý tưởng tìm khóa:
Gọi N là tập thuộc tính nguồn, chỉ chứa thuộc tính không
có bên vế phải của các phụ thuộc hàm.
Gọi M là tập thuộc tính trung gian, chứa các thuộc tính vừa xuất hiện bên vế phải vừa xuất hiện bên vế trái.
Nếu bao đóng NF+= Q+ thì N chính là khóa chỉ định của Q và là khóa duy nhất.
Ngược lại, ta lần lượt hội N với từng tập con của M để
http://sites.google.com/site/khaiphong
Chương 2: Mô hình dữ liệu – Phụ thuộc dữ liệu
Bài toán tìm khóa và Bài toán PTH1. Bài toán tìm khóa: 1. Bài toán tìm khóa:
Ví dụ: Cho quan hệ Giảng dạy: GD(MsGV, Hoten, MsMH, TenMH, Phòng, Giờ) và F={f1:MsGVHoten ; f2: MsMHTenMH ; f3:
Phong,GioMsMH; f4: MsGV,Giờ Phòng}. Tìm khóa của quan hệ GD.
Bước 1: xác định N,M N = {MsGV, Gio} M= {MsMH, Phong} Bước 2: Tính NF+ ? • NF+ = {MsGV, Gio} • Do f1: NF+ = {MsGV, Gio,HoTen} • Do f4: NF+ = {MsGV, Gio,HoTen,Phong} • Do f3: NF+ = {MsGV, Gio,HoTen,Phong,MsMH} • Do f3: NF+ = {MsGV, Gio,HoTen,Phong,MsMH,TenMH} Vậy NF+ = Q+ Hướng dẫn giải: Bước 3:
1. Bài toán tìm khóa:
Thuật toán tìm tất cả các khóa:
Input: <Q,F>
Output: K {Tập các khóa của quan hệ Q}
Thuật toán:
Begin
B1: Xây dựng tập N và M.
B2: Xây dựng 2m tập con của tập M với m = Card(M)
B3: Xây dựng tập K chứa các khóa K = 0;
For i:=l to 2m do begin
Ki := N Mi;
If Ki không chứa các khóa đã xác định trước đó và Ki,F+ = Q+ then