2010-06-21 10 views
13

Jaka jest różnica między kluczem Super a Kandydatem w ERDB?Klucz Superkey kontra Kandydat

Dzięki.

+4

Klucz Superkey i Kandydat są terminami związanymi z relacyjnymi bazami danych. Co oznacza "ERDB"? Być może odnosisz się do modelu Entity Relationship (ER), który jest zbiorem konwencji do rysowania obrazów o danych. Model ER różni się od modelu relacyjnego. – sqlvogel

Odpowiedz

12

klucz kandydat jest minimalny nadkluczem

+5

+1, a także dobrze byłoby zdefiniować tutaj "minimalny", ponieważ jest on nieintuicyjny. Na przykład w tabeli (a, b, c), gdzie (a) jest unikalny, a także (b, c) jest unikalny, oba (a) i (b, c) powinny być kluczami kandydującymi. – orip

+1

Minimalne w tym sensie, że jeśli jeden atrybut z klucza kandydującego zostanie usunięty, wiersza nie można już jednoznacznie zidentyfikować. – libjup

4
  • klucz potencjalny = klucz minimalny zidentyfikować rzędu
  • Super key = przynajmniej tak szeroka, jak kandydat kluczowego

Dla mnie klucz super generalnie wprowadza niejednoznaczności w stosunku do klucza kandydującego

+0

Klucz kandydujący jest minimalnym superkey. Tak więc superkey nie jest ściśle "szerszy", ponieważ klucz kandydata również jest superkey. – sqlvogel

+0

@david: czy nie jest "minimalnym superkey" oksymoronem? – gbn

+0

"na ogół wprowadzają niejasności" - co masz na myśli? Na przykład w tej odpowiedzi (http://stackoverflow.com/questions/3938736/enforce-constraints-between-tables/3940708#3940708) tabela EmployeeDepartments ma kandydujący klucz '(employee_ID)' i superkey '(employee_department_name, employee_ID) '. Oba są wymagane dla integralności danych, gdzie jest niejednoznaczność? – onedaywhen

22

Klawisz super jest zbiorem kolumn, które jednoznacznie identyfikują Jeśli masz rząd. Kluczem kandydującym będzie MINIMALNY zestaw kolumn, który jednoznacznie identyfikuje wiersz. Zasadniczo Superkey jest kluczem Kandydata z dodatkowymi niepotrzebnymi kolumnami.

+0

"Superkey jest kluczem Kandydata z dodatkowymi niepotrzebnymi kolumnami" - - dodatkowe kolumny mogą rzeczywiście okazać się konieczne, aby odnieść się do tabeli i zapewnić integralność danych, np '(employee_ID)' jest unikalne, ale klucz w '(employee_ID, nazwa_działu} może być wymagany w przypadku niektórych tabel, które ograniczają pracowników zgodnie z ich działem. – onedaywhen

2

Trzymajmy to prosty

nadkluczem - Zestaw kluczy, który jednoznacznie definiuje row .so z wszystkimi atrybutami jeśli nawet każdy pojedynczy jeden jest unique wówczas wszystkie podzbiory o to unikalny atrybut spada pod superkey.

Kandydat Key - superkey z których dalsze podzbiór może pochodzić które mogą zidentyfikować rows uniquely lub możemy po prostu powiedzieć, że jest to minimal superkey.