Database
 sql >> Baza danych >  >> RDS >> Database

Co to jest klucz kandydata w projekcie bazy danych?

Klucz kandydujący jest ważną koncepcją w normalizacji bazy danych. Czytaj dalej, aby dowiedzieć się, czym jest klucz kandydujący i jak sprawdzić, czy zestaw atrybutów jest kluczem kandydującym.

Klucz kandydata, zwany także po prostu kluczem jest ważną częścią projektowania bazy danych. Jest to teoretyczna podstawa koncepcji technicznych, takich jak klucze podstawowe i alternatywne (unikalne). Każdy projektant bazy danych powinien wiedzieć, jak zidentyfikować klucze kandydujące i jak wybrać właściwy dla swojej tabeli.

Pojęcie klucza kandydata jest nauczane we wszystkich kursach dotyczących baz danych uniwersyteckich w ramach teorii normalizacji baz danych. Częstymi problemami, które napotkasz podczas nauki o kluczach kandydujących, jest weryfikacja, czy dany zestaw atrybutów jest kluczem kandydującym i znalezienie wszystkich kluczy kandydujących dla relacji.

Zrozumienie kluczy kandydujących jest ważne dla zrozumienia normalnych formularzy w tabelach bazy danych. Ta wiedza pomoże Ci zapamiętać zasady dla najczęstszych normalnych form.

W tym artykule wyjaśnimy pojęcie kluczy kandydujących w prostych słowach. Dodatkowo pokażemy Ci, jak zweryfikować, czy zestaw atrybutów jest kluczem kandydującym.

Podstawowa terminologia normalizacji bazy danych

Zanim zaczniesz czytać o kluczach kandydujących, upewnij się, że znasz podstawową terminologię normalizacyjną. Przyjrzyjmy się krótko najważniejszym terminom.

relacja to teoretyczna nazwa tabeli bazy danych. Relacja (tabela) ma nazwę i składa się z nazwanych atrybutów (kolumn).

Zależność funkcjonalna w relacji (A -> B ) informuje, że ilekroć dwa wiersze mają te same wartości dla wszystkich atrybutów w zestawie A, będą również miały te same wartości dla wszystkich atrybutów w zestawie B.

Zamknięcie zbioru atrybutów to zbiór tych atrybutów, które można określić funkcjonalnie na podstawie tego zbioru. Tutaj możesz przejrzeć algorytm obliczania zamknięcia atrybutów.

Superkeys

Nieformalnie klucz kandydujący to zestaw atrybutów, które jednoznacznie identyfikują wiersz.

Z definicji klucz kandydujący to minimalny superklucz. Więc co to oznacza? superklucz jest atrybutem lub zbiorem atrybutów takim, że jego zamknięciem są wszystkie atrybuty w relacji.

Zobaczmy kilka przykładów. Tutaj mamy tabelę CourseEditions. Przechowuje informacje o edycjach kursów.

Każdego roku dany kurs może prowadzić inny lektor, z inną ceną i innym limitem miejsc. Mamy zatem następujące zależności funkcjonalne:

  • id -> kurs, rok, nauczyciel, cena, miejsca – ID określa wszystkie inne atrybuty
  • kurs, rok -> identyfikator, nauczyciel, cena, miejsca – kurs i rok określają legitymację, nauczyciela, cenę i miejsca.

Edycje kursów

id kurs rok nauczyciel cena plamy
1 Bazy danych 2019 Przylądek Chrisa 100 45
2 Matematyka 2019 Daniel Parr 80 34
3 Bazy danych 2020 Zegar Jennifer 110 30

Jakie są superklucze w tej tabeli? Po pierwsze, wszystkie atrybuty tworzą superklucz, więc zestaw {id, kurs, rok, nauczyciel, cena, miejsca} jest superkluczem. Pamiętaj, że zestaw wszystkich atrybutów jest superkluczem we wszystkich tabelach.

Czy w tej tabeli są jakieś mniejsze superklucze? Tak, są. Zestaw {id} jest superkluczem. Mamy zależność funkcjonalną id -> kurs, rok, nauczyciel, cena, miejsca i oczywiście mamy trywialną zależność id -> id . Po uzyskaniu identyfikatora możemy określić wszystkie inne atrybuty z zależności funkcjonalnych.

Zestaw {kurs, rok} jest także superkluczem. Mamy zależność funkcjonalną kurs, rok -> id, nauczyciel, cena, miejsca i mamy trywialne zależności funkcjonalne kurs -> kurs i rok -> rok . Po ukończeniu kursu i rok , możemy określić wszystkie inne atrybuty na podstawie zależności funkcjonalnych.

Zestaw {id, kurs, rok, nauczyciel} jest także superkluczem. Mamy identyfikator , kurs i rok . Tak więc możemy określić wszystkie inne atrybuty w tabeli za pomocą tych trzech atrybutów.

Z drugiej strony zestaw {teacher} nie jest superkluczem. Jeśli znamy nauczyciela, nie możemy określić żadnego innego atrybutu poza nauczycielem. Zestaw {nauczyciel, cena} nie jest też superkluczem. Gdy mamy nauczyciela i cena , nie możemy określić więcej atrybutów.

Minimalne superklawisze

Nie wszystkie superklucze są kluczami kandydującymi. Aby być kluczem kandydującym, superklucz musi być minimalny co oznacza, że ​​jeśli usuniesz z niego jakieś atrybuty, nie będzie to już superklucz. Spójrzmy na kilka przykładów.

Zbiór {id} jest superkluczem i jest minimalny. Nie możesz wyciągnąć z tego atrybutów, ponieważ będziesz miał wtedy pusty zestaw, a pusty zestaw nie jest superkluczem. Tak więc zbiór {id} jest kluczem kandydującym.

Zestaw {kurs, rok} jest również superkluczem i kluczem kandydującym. Jeśli usuniesz z niego któryś z atrybutów, pozostały zestaw nie będzie już superkluczem. Potrzebujesz obu kursu i rok aby określić inne atrybuty w zestawie.

Jednak zestaw {id, kurs, rok, nauczyciel} jest superkluczem, ale nie kluczem kandydującym. Na przykład, jeśli usuniesz atrybut nauczyciel pozostały zestaw to nadal superklucz. W rzeczywistości w tym przypadku możesz usunąć dowolny atrybut z {id, kurs, rok, nauczyciel} , a pozostały zestaw nadal będzie superkluczem.

Zauważ, że minimalny superklucz nie oznacza superklucza z najmniejszą liczbą elementów. Oba {id} i {kurs, rok} są kluczami kandydującymi, nawet jeśli mają różną liczbę elementów.

Algorytm:weryfikacja, czy zestaw atrybutów jest kluczem kandydata

To jest powszechny problem z projektowaniem baz danych:jak sprawdzić, czy zestaw atrybutów jest kluczem kandydującym?

Oto algorytm, który to weryfikuje:

  • Krok 1:Sprawdź, czy podany zestaw jest superkluczem. Oblicz zamknięcie atrybutów w zestawie. Jeśli zamknięcie jest zbiorem wszystkich atrybutów, to zbiór jest superkluczem.
  • Krok 2:Sprawdź, czy superklucz jest minimalny. Usuń każdy atrybut, pojedynczo. Jeśli pozostały zestaw jest superkluczem, superklucz nie jest minimalny, a zestaw nie jest kluczem kandydującym. Jeśli nie możesz usunąć żadnego z atrybutów i zachować właściwość nadklucza, zestaw jest kluczem kandydującym.

Na przykład sprawdźmy, czy zestaw {kurs, rok} jest rzeczywiście kluczem kandydującym.

  • Krok 1:Obliczmy zamknięcie {kursu, rok}. Używając algorytmu domknięcia, dochodzimy do wniosku, że domknięcie to rzeczywiście {id, kurs, rok, nauczyciel, cena, miejsca}. Tak więc zbiór {kurs, rok} jest rzeczywiście superkluczem.
  • Krok 2. Spróbujmy usunąć kurs z zestawu. Zostaje nam zestaw {year}. Nie ma zależności funkcjonalnej z zaledwie roku jako lewa strona. Zatem zamknięcie tego zbioru to {rok} . Podobnie, gdy usuniemy atrybut rok, zamknięciem pozostałego zbioru jest {kurs}. Ani {rok} ani {kurs} to superklucze, więc zestaw {kurs, rok} jest minimalnym superkluczem, a zatem kluczem kandydującym.

Jeśli podobał Ci się ten artykuł, zapoznaj się z innymi artykułami normalizacyjnymi na naszym blogu.

Jeśli jesteś studentem biorącym udział w zajęciach z bazami danych, pamiętaj o utworzeniu bezpłatnego konta akademickiego w Vertabelo, naszym internetowym narzędziu do rysowania diagramów ER. Pozwala na rysowanie logicznych i fizycznych diagramów ER bezpośrednio w przeglądarce.

Vertabelo obsługuje PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift i inne relacyjne bazy danych. Wypróbuj i zobacz, jak łatwo zacząć!


  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 obliczyć współczynnik retencji w SQL?

  2. Śledzenie automatycznych aktualizacji statystyk

  3. Jak korzystać z Prismy

  4. Arkusze kalkulacyjne a bazy danych:czy nadszedł czas na zmianę? Część 2

  5. AKTUALIZACJA SQL dla początkujących