1. Định nghĩa các thuật ngữ: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ
13.1. Siêu khóa và khóa
Định nghĩa 1: Cho lược đồ quan hệ α=(U,F) , K⊆U nếu K+= U, thì ta nói K là một siêu khoá.
Chú ý:Điều kiện K+=U có thể thay bằng KU hoặc KU \ K
Định nghĩa 2:Cho lược đồ quan hệα=(U,F), tập K ⊆Uđược gọi là khoá của lược đồαnếu nhưnó thoả mãn:
a) K là một siêu khoá
b)∀K1⊂K thì K1 Không là siêu khoá tức K+1≠U
Chú ý:Định nghĩa này làtương dương với định nghĩa:
Cho lược đồ quan hệ α=(U,F), tập K ⊆U được gọi là khoá của lượcđồ α nếu nhưnó thoả mãn:
a) KU∈F+
b)∀K1⊂K thì K1 U∉F+
Hai điều kiện trên còn tương đươngvới a) K+=U
b)∀A∈K thì (K-{A})+≠U Hoặc nó tương đương với a) KU
b)∀A∈K thì (K-{A})+U
- Thuộc tính A được gọi là thuộc tính khoá (hay còn gọi là thuộc tính nguyên thuỷ hoặc cơ sở, sơ cấp) nếu nhưnó có mặt trong một khoá nào đó.
- Thuộc tính A đượcgọi là thuộc tính không khoá (thứ cấp) nếu nhưnó không có trong một khoá bất kỳ nào.
Chú ý: Trong một số tài liệu thì thuật ngữ khoá được dùng để chỉ siêu khoá và thuật ngữ khoá tối thiểu đượcdùng theo nghĩa khoá.
*Tính chất
1. Hợp của 2 siêu khoá là một siêu khoá
2. Giao của 2 siêu khoá chắc chắnlà một siêu khoá 3. Hai khoá bất kỳ là không bao nhau
4. Hợp của hai khoá là một khoá khi và chỉ khi lược đồ có duy nhất một khoá 5. Một lược đồ có thể có nhiều khoá
6. Bản thân U là một siêu khoá
7. Với mọi quan hệ R trên U, thì R luôn có ít nhất một khoá
*Tìm một siêu khoá của lược đồ
Cholược đồ quan hệ α=(U,F) hãy tìm một siêu khoá K của lượcđồ
Bản thân U cũng là một siêu khoá, tuy nhiên trong nhiều bài toán ta cần tìm một siêu khoá có số phần tử nhỏ hơn số phần tử của tập U để tăng tốc độ tính toán, có nhiều cách để tìm một siêu khoá của lược đồ, sau đây là một cách khá đơn giản mà cho ta tập siêu khoá có số phần tử nhỏ hơn số phần tử của tập U khá nhiều:
Đặt L=∪Li|∀LiRi∈F Đặt R=∪Ri|∀ LiRi∈F
Đặt K= U\ R∪L Thì K là một siêu khoá
Ví dụ: Cho U=ABCDEGHK
F={ ACBGE, DHACD, BGAEH} Hãy tìm một siêu khoá của lược đồ
L=AC∪DH∪BG=ABDGH
R=BGE∪ACD∪AEH=ABCDEGH
Ta có thể chọn K=ABCDEGHK \ ABCDEGH ∪ABDGH = ABDGHK Dễ dàng kiểm tra rằng K+= U
Nhận xét: Khi đã có một siêu khoá nếu ta bỏ đi một số thuộc tính ta sẽ thu đượcmột khoá.