Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Superkey, khóa ứng viên &khóa chính

Vì bạn không muốn các định nghĩa trong sách giáo khoa, nói một cách lỏng lẻo, siêu khóa là một tập hợp các cột xác định duy nhất một hàng.

Tập hợp này có thể có một hoặc nhiều phần tử và có thể có nhiều hơn một siêu khóa cho một bảng. Bạn thường làm điều này thông qua các phụ thuộc hàm.

Trong ví dụ của bạn, tôi giả sử:

StudentNumber    unique
FamilyName     not unique
Degree     not unique
Major      not unique
Grade      not unique
PhoneNumber    not unique

Trong trường hợp này, superkey là bất kỳ kết hợp nào có chứa số sinh viên.

Vì vậy, sau đây là các siêu khóa

StudentNumber
StudentNumber, FamilyName
StudentNumber, FamilyName, Degree
StudentNumber, FamilyName, Degree, Major
StudentNumber, FamilyName, Degree, Major, Grade
StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
StudentNumber, Degree
StudentNumber, Degree, Major
StudentNumber, Degree, Major, Grade
StudentNumber, Degree, Major, Grade, PhoneNumber
StudentNumber, Major
StudentNumber, Major, Grade
StudentNumber, Major, Grade, PhoneNumber
StudentNumber, Grade
StudentNumber, Grade, PhoneNumber
StudentNumber, PhoneNumber

Bây giờ, giả sử, nếu PhoneNumber là duy nhất (những người dùng chung điện thoại ngày nay), thì những thứ sau cũng là siêu khóa (ngoài những gì tôi đã liệt kê ở trên).

PhoneNumber
PhoneNumber, Grade, 
PhoneNumber, Major, Grade
PhoneNumber, Degree, Major, Grade
PhoneNumber, FamilyName, Degree, Major, Grade
PhoneNumber, Major
PhoneNumber, Degree, Major
PhoneNumber, FamilyName, Degree, Major
PhoneNumber, StudentNumber, FamilyName, Degree, Major
PhoneNumber, Degree
PhoneNumber, FamilyName, Degree
PhoneNumber, StudentNumber, FamilyName, Degree
PhoneNumber, FamilyName
PhoneNumber, StudentNumber, FamilyName

Khoá ứng cử viên chỉ đơn giản là siêu khoá "ngắn nhất". Quay trở lại danh sách superkey đầu tiên (tức là số điện thoại không phải là duy nhất), superkey ngắn nhất là StudentNumber.

Khóa chính thường chỉ là khóa ứng viên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .NET Oracle quản lý kết nối kết nối truy cập dữ liệu không hoạt động hoặc chậm

  2. PL / SQL không đủ đặc quyền trong một truy vấn có thể theo cách thủ công

  3. Bản cập nhật SQL có ảnh hưởng đến truy vấn con của nó trong quá trình chạy cập nhật không?

  4. Oracle DB đơn giản CHỌN trong đó thứ tự cột quan trọng

  5. Nhà cung cấp Oracle bên thứ ba cho .Net có hỗ trợ kiểu đối tượng