Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Superkey, klucz kandydujący i klucz podstawowy

Ponieważ nie chcesz definicji podręcznikowych, ogólnie mówiąc, super klucz to zestaw kolumn, które jednoznacznie definiują wiersz.

Ten zestaw może zawierać jeden lub więcej elementów, a dla tabeli może być więcej niż jeden superklucz. Zwykle robisz to poprzez zależności funkcjonalne.

W twoim przykładzie zakładam:

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

W tym przypadku superklucz to dowolna kombinacja zawierająca numer ucznia.

Oto superklucze

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

Teraz załóżmy, że jeśli numer telefonu jest unikalny (który współdzieli telefony w dzisiejszych czasach), to następujące są również superklucze (oprócz tego, co wymieniłem powyżej).

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

Klucz kandydujący to po prostu „najkrótszy” superklucz. Wracając do pierwszej listy superkluczy (tj. numer telefonu nie jest unikalny), najkrótszym superkluczem jest Numer Studenta.

Klucz podstawowy jest zwykle tylko kluczem kandydującym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać nazwy kolumn z tabeli w Oracle?

  2. Niejednoznaczne zapytanie dotyczące kolumny

  3. Podstawowe pojęcia JDBC, Pooling i Threading

  4. Wybierz tę samą kolumnę dla różnych wartości w innej kolumnie

  5. Problem z odejmowaniem daty w Oracle