sql >> Databáze >  >> RDS >> Database

Co je kandidátský klíč v návrhu databáze?

Kandidátský klíč je důležitý koncept v normalizaci databáze. Čtěte dále a zjistěte, co je kandidátský klíč a jak zkontrolovat, zda je kandidátním klíčem sada atributů.

klíč kandidáta, také jednoduše nazývaný klíč, je důležitou součástí návrhu databáze. Je to teoretický základ pro technické koncepty, jako jsou primární a alternativní (unikátní) klíče. Každý návrhář databáze by si měl být vědom toho, jak identifikovat kandidátské klíče a jak vybrat ten správný pro svou tabulku.

Koncept kandidátského klíče je vyučován ve všech univerzitních databázových kurzech v rámci teorie normalizace databází. Běžné problémy, kterým budete čelit, když se dozvíte o kandidátských klíčích, jsou ověření, zda je daná sada atributů kandidátským klíčem, a nalezení všech kandidátských klíčů pro vztah.

Pochopení kandidátních klíčů je důležité pro pochopení normálních formulářů v databázových tabulkách. Tyto znalosti vám pomohou zapamatovat si pravidla pro nejběžnější normální formy.

V tomto článku jednoduše vysvětlíme koncept kandidátních klíčů. Navíc vám ukážeme, jak ověřit, zda je sada atributů kandidátním klíčem.

Základní terminologie normalizace databáze

Než si přečtete o kandidátních klíčích, ujistěte se, že jste obeznámeni se základní normalizační terminologií. Pojďme si stručně zopakovat nejdůležitější pojmy.

vztah je teoretický název pro databázovou tabulku. Relace (tabulka) má název a skládá se z pojmenovaných atributů (sloupců).

funkční závislost ve vztahu (A -> B ) vám říká, že kdykoli mají dva řádky stejné hodnoty pro všechny atributy v sadě A, budou mít také stejné hodnoty pro všechny atributy v sadě B.

Uzávěr množiny atributů je množina těch atributů, které lze z této množiny funkčně určit. Algoritmus pro výpočet uzavření atributů si můžete prohlédnout zde.

Superklíče

Neformálně je kandidátský klíč sada atributů, které jednoznačně identifikují řádek.

Podle definice je kandidátský klíč minimálním superklíčem. Takže, co to znamená? superklíč je atribut nebo sada atributů tak, že jeho uzavření jsou všechny atributy ve vztahu.

Podívejme se na několik příkladů. Zde máme tabulku CourseEditions. Ukládá informace o vydáních kurzů.

Každý rok může daný kurz vyučovat jiný lektor, s jinou cenou a jiným limitem na spoty. Máme tedy následující funkční závislosti:

  • id -> kurz, rok, učitel, cena, místa – ID určuje všechny ostatní atributy
  • kurz, rok -> id, učitel, cena, místa – kurz a rok určují ID, učitele, cenu a spoty.

edice kurzu

id kurz rok učitel cena skvrny
1 Databáze 2019 Chris Cape 100 45
2 Matematika 2019 Daniel Parr 80 34
3 Databáze 2020 Jennifer Clock 110 30

Jaké jsou superklíče v této tabulce? Za prvé, všechny atributy tvoří superklíč, takže množina {id, kurz, rok, učitel, cena, místa} je superklíč. Pamatujte, že množina všech atributů je superklíč ve všech tabulkách.

Jsou v této tabulce nějaké menší superklíče? Ano jsou. Sada {id} je superklíč. Máme funkční závislost id -> kurz, rok, učitel, cena, spoty a samozřejmě máme triviální závislost id -> id . Jakmile máme id, všechny ostatní atributy můžeme určit z funkčních závislostí.

Sada {kurz, rok} je také superklíč. Máme funkční závislost kurz, rok -> id, učitel, cena, místa a máme triviální funkční závislosti kurz -> kurz a rok -> rok . Jakmile budeme mít kurz a rok , můžeme určit všechny ostatní atributy z funkčních závislostí.

Množina {id, kurz, rok, učitel} je také superklíč. Máme id , kurz a rok . Můžeme tedy určit všechny ostatní atributy v tabulce pomocí těchto tří atributů.

Na druhou stranu množina {učitel} není superklíč. Pokud známe učitele, nemůžeme určit jiný atribut než učitel. Sada {učitel, cena} také není superklíč. Jakmile budeme mít učitele a cena , nemůžeme určit žádné další atributy.

Minimální superklíče

Ne všechny superklíče jsou kandidátskými klíči. Aby byl superklíč kandidátním klíčem, musí být minimální což znamená, že když z toho vezmete nějaké atributy, už to nebude superklíč. Podívejme se na několik příkladů.

Sada {id} je superklíč a je minimální. Atributy z něj nemůžete odebrat, protože pak budete mít prázdnou sadu a prázdná sada není superklíč. Tedy množina {id} je kandidátský klíč.

Sada {kurz, rok} je také superklíč a kandidátský klíč. Pokud z něj odeberete některý z atributů, zbývající sada již není superklíč. Potřebujete oba kurzy a rok k určení dalších atributů v sadě.

Nicméně množina {id, kurz, rok, učitel} je superklíč, ale ne kandidátský klíč. Pokud například odeberete atribut učitel, zbývající sada je stále superklíč. Ve skutečnosti v tomto případě můžete odebrat jakýkoli atribut z {id, kurz, rok, učitel} a zbývající sada bude stále superklíč.

Všimněte si, že minimální superklíč neznamená superklíč s nejmenším počtem prvků. Oba {id} a {kurz, rok} jsou kandidátní klíče, i když mají různý počet prvků.

Algoritmus:Ověření, že sada atributů je kandidátským klíčem

Toto je běžný problém návrhu databáze:jak ověříte, zda je sada atributů kandidátským klíčem?

Zde je algoritmus k ověření:

  • Krok 1:Zkontrolujte, zda je daná sada superklíč. Vypočítejte uzavření atributů v sadě. Pokud je uzávěr množinou všech atributů, množinou je superklíč.
  • Krok 2:Zkontrolujte, zda je superklíč minimální. Odstraňte každý atribut, jeden po druhém. Pokud je zbývající sada superklíč, superklíč není minimální a sada není kandidátským klíčem. Pokud nemůžete odstranit žádný z atributů a zachovat vlastnost superkey, je sada kandidátním klíčem.

Například zkontrolujeme, zda je množina {kurz, rok} je skutečně kandidátský klíč.

  • Krok 1:Vypočítejme uzávěrku {kurzu, rok}. Pomocí algoritmu uzavření dojdeme k závěru, že uzavření je skutečně {id, kurz, rok, učitel, cena, místa}. Tedy množina {kurz, rok} je skutečně superklíč.
  • Krok 2. Pokusme se odstranit kurz ze sady. Zbývá nám sada {rok}. Neexistuje žádná funkční závislost s pouhým rokem jako levá strana. Uzavření tohoto souboru je tedy {rok} . Podobně, když odstraníme atribut year, uzavření zbývající sady je {kurz}. Ani {year} ani {kurz} jsou superklíče, takže množina {kurz, rok} je minimální superklíč, a tedy kandidátský klíč.

Pokud se vám tento článek líbil, podívejte se na další normalizační články na našem blogu.

Pokud jste studentem na kurzech databáze, nezapomeňte si vytvořit bezplatný akademický účet ve Vertabelo, našem online nástroji pro kreslení diagramů ER. Umožňuje vám kreslit logické a fyzické ER diagramy přímo ve vašem prohlížeči.

Vertabelo podporuje PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift a další relační databáze. Vyzkoušejte to a uvidíte, jak snadné je začít!


  1. Definujte kroky pro SQL Server Cursor - SQL Server / TSQL výukový program

  2. Jak vyjádřit svou hodnotu jako DBA finančním manažerům

  3. Je možné nastavit časový limit pro SQL dotaz na Microsoft SQL Server?

  4. Databáze správce balíčků GI 19c RPM