Superkey, klucz kandydata i klucz podstawowy

Czy każda miła dusza może wyjaśnić moje wątpliwości prostym przykładem poniżej i zidentyfikować superkey, klucz kandydata i klucz podstawowy?

Wiem, że istnieje wiele postów i stron internetowych wyjaśniających różnice między nimi. Ale wygląda na to, że wszystkie są ogólnymi definicjami.

Przykład:

Student (StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber)

Więc z powyższego przykładu mogę wiedzieć, że StudentNumber jest kluczem podstawowym.

Ale co do superkey, to jestem trochę zdezorientowany, jaka kombinacja atrybutów może być / align = "left" /

Jeśli chodzi o klucz kandydata, jestem zdezorientowany definicją podaną, ponieważ każdy klucz kandydata może kwalifikować się jako klucz podstawowy.

Czy to znaczy, że atrybuty takie jak PhoneNumber są kluczem kandydata i mogą być kluczem podstawowym? (Zakładając, że PhoneNumber należy tylko do jednego ucznia)

Dzięki za Wyjaśnienie!

Author: V-R, 2011-12-01

3 answers

Ponieważ nie chcesz podręcznikowych definicji, luźno mówiąc, super klucz jest zbiorem kolumn, które jednoznacznie definiują wiersz.

Ten zestaw może mieć jeden lub więcej elementów i może być więcej niż jeden super klucz dla tabeli. Zazwyczaj odbywa się 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 superkey to dowolna kombinacja, która zawiera numer ucznia.

Więc poniżej są superkeys

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, jeśli numer telefonu jest unikalny (który obecnie udostępnia telefony), to Poniżej znajdują się również superkeys (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 kandydata jest po prostu "najkrótszym" kluczem superkey. Wracając do pierwszej listy superkey (tzn. numer telefonu nie jest unikalny), najkrótszym superkey jest StudentNumber.

Głównym kluczem jest zwykle tylko klucz kandydata.

 64
Author: Cambium,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-01 09:55:46

Superkey to dowolny zestaw atrybutów, dla których wartości są gwarantowane jako unikalne dla wszystkich możliwych zestawów krotek w tabeli przez cały czas.

Klucz kandydata jest" minimalnym " superkey - czyli najmniejszym podzbiorem atrybutów superkey, które są unikalne. Usunięcie atrybutów z klucza kandydata uczyniłoby go nie-unikalnym.

Klucz podstawowy to tylko klucz kandydata. Nie ma różnicy między kluczem podstawowym a innym kluczem kandydata.

To nie bardzo przydatne do tworzenia założeń dotyczących kluczy opartych tylko na liście nazw atrybutów. Musisz wiedzieć, jakie zależności mają się trzymać między atrybutami. Mimo to, myślę, że masz rację-StudentNumber jest prawdopodobnie kluczem kandydata w twoim przykładzie.

 15
Author: nvogel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-01 06:34:50

Jeśli {[0] } jest również unikalna wraz z StudentNumber to candidate keys będzie:- {StudentNumber},{PhoneNumber}.
Tutaj nie możemy zakładać {StudentNumber,PhoneNumber} jako pojedynczego candidate key, ponieważ jeśli pominiemy jeden atrybut powiedzmy StudentNumber nadal otrzymujemy unikalny atrybut{PhoneNumber}, naruszając tym samym definicję candidate key.

Primary key: wybierz jeden candidate key ze wszystkich candidate keys. Istnieje 2 candidate keys, więc możemy wybrać {StudentNumber} jako primary key.
Alternate keys: pozostawione candidate keys, Po wybraniu primary key z candidate keys, są alternatywnymi kluczami tj. {PhoneNumber}.

compound key: klucz złożony to klucz, który składa się z dwóch lub więcej atrybutów, które jednoznacznie identyfikują wystąpienie elementu. Prosty klucz to taki, który ma tylko jeden atrybut. Klucze złożone mogą składać się z innych unikalnych kluczy prostych i atrybutów innych niż klucze, ale nie mogą zawierać innego klucza złożonego.

composite key: klucz złożony zawiera co najmniej jeden klucz złożony i jeszcze jeden atrybut. Klucze złożone mogą również zawierać klucze proste i atrybuty inne niż klucze.

 2
Author: GorvGoyl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 10:41:29