Jaka jest różnica między kluczem podstawowym a kluczem super w DBMS

20

Jestem nowy w DBMS i wciąż uczę się teorii.

Naprawdę mylę się z tym kluczowym biznesem i po googlowaniu zawęziłem go do zaledwie dwóch kluczy, których nie dostaję (klucz podstawowy i super klucz).

Mam kilka pytań na temat DBMS. Byłbym wdzięczny, gdybyś mógł mi odpowiedzieć na nie.

1) Jaka jest różnica między kluczem podstawowym a kluczem super w DBMS? Bardzo to doceniam, jeśli możesz posłużyć się kompleksowym przykładem, aby poprawnie wyjaśnić

2) Czy zarówno klucz główny, jak i klucz super mogą mieć wiele kolumn połączonych, tworząc klucz główny i klucz super?

3) Czy klucz podstawowy jest podzbiorem klucza Super lub odwrotnie?

MikeHil
źródło
1
Jedną rzeczą, która jest bardzo błyszcząca, jest to, że sama krotka (wiersz) jest superkluczem. Ponieważ celem jest być w stanie jednoznacznie zidentyfikować wiersz, tj. Być w stanie jednoznacznie zidentyfikować krotkę zawierającą określoną kombinację wartości, jednym ze sposobów jest już posiadanie wszystkich dostępnych wartości. Stąd krotka jest dla siebie superkluczem, ponieważ skoro znamy wartości w krotce, to wyraźnie wiemy, jak znaleźć krotkę o takich wartościach. Z początku wydaje się głupie, ale ustanawia górną granicę czegoś, co może być superkluczem dla krotki - samej krotki.
Dave
@Dave Zbiór wszystkich nazw kolumn relacji / tabeli (a zatem każdej jej krotki / wierszy) jest jej kluczem nadrzędnym. Nie „sama krotka (rząd)”.
philipxy
@ philipxy masz rację i źle napisałem - stoję skorygowany. Dziękujemy za dodanie wyjaśnienia.
Dave

Odpowiedzi:

23

Super Klucz jest po prostu non-minimal Kandydat Key , czyli jedną z dodatkowymi kolumnami nie bezwzględnie wymagane, aby zapewnić niepowtarzalność rzędu.

Klucz główny jest minimalny klucz potencjalny , to znaczy wszystkie kolumny składowe są bezwzględnie konieczne w celu zapewnienia unikalności.

Jako programista / projektant bazy danych z 30-letnim doświadczeniem, nigdy nie słyszałem pojęcia Super Key, dopóki nie zobaczyłem tego pytania i nie sprawdziłem go. Koncepcja Super klucza wydaje się bardziej powiązana z tematem wydajności i projektowania schematu fizycznego, ponieważ bezpośrednio odwzorowuje koncepcję unikalnego indeksu nieklastrowego z dodatkowymi kolumnami dla lepszego pokrycia zapytań.

Pieter Geerkens
źródło
3
To jest dość niedokładne. Używasz superkey, CK i PK zamiast właściwego superkey, superkey i CK. Superkey to zestaw UNIKALNY. (CK jest „minimalnym” superkluczem. Nie ma pojęcia „minimalnego CK”. Każdy CK jest superkluczem. Zatem superklucz nie musi mieć więcej kolumn niż CK. PK to CK, który nazywa się PK. Gdyby miał to być „minimalny CK”, wówczas „minimalny” musiałby oznaczać „dowolny”.) SQL PK i UNIKALNE NIE NULL deklarują superkeys. (PK SQL może, ale nie musi być PK). Skróty klawiszowe są krytyczne dla definicji CK, która jest krytyczna dla projektowania, w tym normalizacji. Zobacz moją odpowiedź.
philipxy
1
Ponadto konieczne jest zrozumienie SK, aby móc korzystać z Boyce-Codd NF
Tanckom
16

Super klucze: Super klucz oznacza nadzbiór klucza. Super klucz to zestaw jednego lub więcej atrybutów, które są pobierane zbiorowo i mogą jednoznacznie identyfikować wszystkie inne atrybuty.

Na przykład mamy stolik

Book (BookId, BookName, Author)

Więc w tej tabeli możemy mieć

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Jako nasz superklucz. Każdy superklucz jest w stanie jednoznacznie zidentyfikować każdą krotkę (rekord).

Klucze kandydujące Klucze kandydujące to superklucze, które nie mają żadnych zbędnych atrybutów. Innymi słowy klucze kandydujące są minimalnymi superkluczami. Na przykład na powyższej ilustracji

   (BookId)
   (BookName,Author)

Te dwa klucze mogą być kluczami kandydującymi, ponieważ pozostałe klucze mają nadmiarowe atrybuty. Znaki w rekordzie superklucza (BookId, BookName) można jednoznacznie zidentyfikować tylko przez bookid, dlatego Bookname jest nadmiarowym atrybutem

Klucz podstawowy: Jest to klucz kandydujący, który jest wybierany przez projektanta bazy danych w celu identyfikacji jednostek w zestawie jednostek. LUB Klucz używany do jednoznacznej identyfikacji każdego rekordu jest znany jako klucz podstawowy.

Z góry Klucze kandydujące każdy może być kluczem podstawowym. A drugi, który nie zostanie wybrany jako klucz podstawowy, będzie znany jako klucz alternatywny

Payal Trivedi
źródło
To odpowiada na pytanie i zasługuje na głosowanie.
srk
Zauważ też, że inna nazwa alternative keyto, secondary keyże są takie same. Świetna odpowiedź!
Wael Alshabani,
2

Z mojej odpowiedzi stackoverflow.com :

Klucz kandydujący to zestaw kolumn, który jednoznacznie identyfikuje wiersze i nie zawiera mniejszego („właściwego”) podzbioru kolumn, który jednoznacznie identyfikuje wiersze.

Superkey to zestaw kolumn, który jednoznacznie identyfikuje wiersze. Zatem klucz kandydujący jest superkluczem, który nie zawiera mniejszego superklucza.

W SQL nie można zadeklarować pustego klucza kandydata. Ponadto UNIQUE NOT NULL i PRIMARY KEY (co w kategoriach ograniczeń oznacza po prostu UNIQUE NOT NULL) deklarują superkeys, a nie same klucze. Jeśli zestaw kolumn takiej deklaracji nie zawiera mniejszego zestawu kolumn zadeklarowanego jako superklucz, to deklarowany przez niego superklucz jest kluczem kandydującym.

Z mojej odpowiedzi stackoverflow.com możesz podać tabelę:

Dla zestawów kolumn X i Y, możemy napisać X -> Y . Mówimy, że X jest zbiorem wyznaczników, a Y jest ustalonym zbiorem / w zależności funkcjonalnej ( FD ) X -> Y.

Mówimy, że X funkcjonalnie określa Y, a Y jest funkcjonalnie wyznaczany przez X. Mówimy, że X jest wyznacznikiem X -> Y. W {C} -> Y mówimy C funkcjonalnie określa Y. W X -> {C} mówimy X funkcjonalnie określa C. Gdy X jest nadzbiorem Y, mówimy, że X -> Y jest trywialne .

Mówimy, że X -> Y utrzymuje się w tabeli T, gdy każde podrzędność wartości dla X zawsze / tylko pojawia się z tym samym podziałem wartości dla Y. Lub mówimy, że X -> Y jest FD z / w T. Gdy X jest wyznacznikiem niektórych FD w tabeli T mówimy, że X jest wyznacznikiem / w T.

Nadkluczem tabeli T jest zbiorem kolumn, które funkcjonalnie określa każdy atrybut. Klucz potencjalny ( CK ) jest nadkluczem że nie zawiera mniejszą nadkluczem. Możemy wybrać jeden CK jako klucz podstawowy ( PK ), a następnie wywołać inne klucze alternatywne CK . Kolumna jest liczbą pierwszą, gdy znajduje się w części CK.

(Jak tam skomentowałem: „Wystarczyłyby cztery pogrubione zdania dla FD, hold, superkey i CK.”)

(Tabela z pustym CK jest ograniczona, aby zawierać co najwyżej jeden wiersz. Zestaw kolumn określony przez pusty zestaw jest ograniczony tak, aby miał taką samą wartość subrow w każdym rzędzie.)

philipxy
źródło
1

Klucz Klucz jest pojedynczym lub kombinacją wielu pól. Jego celem jest dostęp do wierszy danych lub ich pobieranie z tabeli zgodnie z wymaganiami. Klucze są zdefiniowane w tabelach, aby szybko i bezproblemowo uzyskać dostęp do przechowywanych danych lub je uporządkować. Służą również do tworzenia połączeń między różnymi tabelami.

Rodzaje kluczy Poniższe tabele lub relacje zostaną użyte do zdefiniowania różnych typów kluczy.

Klucz podstawowy Atrybut lub kombinacja atrybutów, która jednoznacznie identyfikuje wiersz lub rekord w relacji, jest znany jako klucz podstawowy.

Klucz dodatkowy Pole lub kombinacja pól, które są podstawą do pobrania, nazywane są kluczem dodatkowym. Klucz pomocniczy jest polem nieunikalnym. Jedna wartość klucza dodatkowego może odnosić się do wielu rekordów.

Klucz kandydujący lub klucz alternatywny Relacja może mieć tylko jeden klucz podstawowy. Może zawierać wiele pól lub kombinację pól, które mogą służyć jako klucz podstawowy. Jedno pole lub kombinacja pól jest używana jako klucz podstawowy. Pola lub kombinacja pól, które nie są używane jako klucz podstawowy, są znane jako klucz kandydujący lub klucz alternatywny.

Klucz złożony lub klucz konkatenacyjny Klucz podstawowy składający się z dwóch lub więcej atrybutów jest znany jako klucz złożony.

Klawisz sortowania lub sterowania Pole lub kombinacja pól używana do fizycznego sekwencjonowania przechowywanych danych, zwana kluczem sortowania. Jest również znany jako klawisz kontrolny.

Nadkluczem to kombinacja atrybutów, które może być wykorzystane do identyfikacji rekordu bazy danych. Tabela może zawierać wiele superkluczy. Klucze kandydujące to specjalny podzbiór superkluczy, które nie zawierają żadnych dodatkowych informacji.

Przykład superklucza: wyobraź sobie tabelę z polami Imię, Wiek, SSN i ​​<Numer telefonu>. Ta tabela ma wiele możliwych superkeys. Trzy z nich to SSN, numer telefonu i nazwa. Spośród wymienionych tylko SSN jest kluczem kandydującym, ponieważ inne zawierają informacje, które nie są konieczne do jednoznacznej identyfikacji rekordów.

Klucz obcy Klucz obcy jest atrybutem lub kombinacją atrybutów w relacji, której wartość jest zgodna z kluczem podstawowym w innej relacji. Tabela, w której tworzony jest klucz obcy, jest nazywana tabelą zależną. Tabela, do której odnosi się klucz obcy, jest znana jako tabela nadrzędna.

w przypadku klucza Minimal Super zapoznaj się z tym linkiem, tam jest bardziej przejrzyste http://www.answers.com/topic/superkey-1

Ved Prakash
źródło