Primární klíč vs cizí klíč: Jaký je rozdíl?

Obsah:

Anonim

Než se naučíme rozdíl mezi primárním a cizím klíčem, naučme se:

Co jsou klíče?

Klíče jsou atribut, který vám pomůže identifikovat řádek (n-tici) ve vztahu (tabulka). Umožní vám najít vztah mezi dvěma tabulkami. Klávesy vám pomohou jednoznačně identifikovat řádek v tabulce kombinací jednoho nebo více sloupců v této tabulce. Klíč databáze je také užitečný pro vyhledání jedinečného záznamu nebo řádku z tabulky.

Co je databázový vztah?

Vztah databáze je přidružení mezi jednou nebo více tabulkami, které jsou vytvořeny pomocí příkazů join. Používá se k efektivnímu načítání dat z databáze. Existují primárně tři typy vztahů 1) Jeden na jednoho, 2) Jeden na mnoho, 3) Mnoho na mnoho.

Co je primární klíč?

Omezení primárního klíče je sloupec nebo skupina sloupců, které jednoznačně identifikují každý řádek v tabulce systému správy relačních databází. Nemůže to být duplikát, což znamená, že stejná hodnota by se v tabulce neměla objevit více než jednou.

Tabulka může mít více než jeden primární klíč. Primární klíč lze definovat na úrovni sloupce nebo tabulky. Pokud vytvoříte složený primární klíč, měl by být definován na úrovni tabulky.

Co je cizí klíč?

Cizí klíč je sloupec, který vytváří vztah mezi dvěma tabulkami. Účel cizího klíče je zachovat integritu dat a umožnit navigaci mezi dvěma různými instancemi entity. Funguje jako křížový odkaz mezi dvěma tabulkami, protože odkazuje na primární klíč jiné tabulky. Každý vztah v databázi by měl být podporován cizím klíčem.

KLÍČOVÉ ROZDÍLY:

  • Omezení primárního klíče je sloupec, který jednoznačně identifikuje každý řádek v tabulce systému správy relačních databází, zatímco cizí klíč je sloupec, který vytváří vztah mezi dvěma tabulkami.
  • Primární klíč nikdy nepřijímá hodnoty null, zatímco cizí klíč může přijímat více hodnot null.
  • V tabulce můžete mít pouze jeden primární klíč, zatímco v tabulce můžete mít více cizích klíčů.
  • Hodnotu primárního klíče nelze odebrat z nadřazené tabulky, zatímco hodnotu hodnoty cizího klíče lze odebrat z podřízené tabulky.
  • Žádné dva řádky nemohou mít žádné stejné hodnoty pro primární klíč, na druhé straně cizí klíč může obsahovat duplicitní hodnoty.
  • Vkládání hodnot do sloupce tabulky při vkládání jakékoli hodnoty do tabulky cizích klíčů nemá žádné omezení, ujistěte se, že je hodnota přítomna ve sloupci primárního klíče.

Proč používat primární klíč?

Zde jsou výhody / výhody použití primárního klíče:

  • Hlavním cílem primárního klíče je identifikovat každý záznam v databázové tabulce.
  • Primární klíč můžete použít, když někomu nedovolíte zadávat nulové hodnoty.
  • Pokud odstraníte nebo aktualizujete záznamy, provede se akce, kterou jste zadali, aby se zajistila integrita dat.
  • Proveďte operaci omezení pro odmítnutí operace odstranění nebo aktualizace nadřazené tabulky.
  • Data jsou organizována v posloupnosti seskupeného indexu, kdykoli fyzicky uspořádáte tabulku DBMS.

Proč používat cizí klíč?

Tady jsou důležité důvody použití cizího klíče:

  • Cizí klíče vám pomohou migrovat entity pomocí primárního klíče z nadřazené tabulky.
  • Cizí klíč umožňuje propojit dvě nebo více tabulek dohromady.
  • Díky tomu jsou vaše databázová data konzistentní.
  • Cizí klíč lze použít k porovnání sloupce nebo kombinace sloupců s primárním klíčem v nadřazené tabulce.
  • Omezení cizího klíče SQL se používá k zajištění referenční integrity nadřazeného dat tak, aby odpovídala hodnotám v podřízené tabulce.

Příklad primárního klíče

Syntax:

Níže je uvedena syntaxe primárního klíče:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Tady,

  • Název_tabulky je název tabulky, kterou musíte vytvořit.
  • Název_sloupce je název sloupce s primárním klíčem.

Příklad:

StudID Role č Jméno Příjmení E-mailem
1 11 Tom Cena Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript.
2 12 Nicku Wrighte Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript.
3 13 Dana Natane Tato e-mailová adresa je chráněna před spamboty. Abyste ji mohli zobrazit, musíte mít povolený JavaScript.

Ve výše uvedeném příkladu jsme vytvořili studentskou tabulku se sloupci jako StudID, Roll No, First Name, Last Name a Email. StudID je vybrán jako primární klíč, protože dokáže jednoznačně identifikovat další řádky v tabulce.

Příklad cizího klíče

Syntax:

Níže je uvedena syntaxe cizího klíče:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Tady,

  • Parametr Název tabulky označuje název tabulky, kterou se chystáte vytvořit.
  • Parametry sloupec1, sloupec2 ... zobrazují sloupce, které je třeba přidat do tabulky.
  • Omezení označuje název omezení, které vytváříte.
  • Odkazy označují tabulku s primárním klíčem.

Příklad:

DeptCode DeptName
001 Věda
002 Angličtina
005 Počítač
ID učitele Jméno Lname
B002 Davide Warner
B017 Sára Joseph
B009 Mike Bruntone

Ve výše uvedeném příkladu máme dva stoly, učitele a oddělení ve škole. Neexistuje však žádný způsob, jak zjistit, které vyhledávání funguje v kterém oddělení.

V této tabulce přidáním cizího klíče v Deptcode do jména učitele můžeme vytvořit vztah mezi těmito dvěma tabulkami.

ID učitele DeptCode Jméno Lname
B002 002 Davide Warner
B017 002 Sára Joseph
B009 001 Mike Bruntone

Tento koncept je také známý jako referenční integrita.

Rozdíl mezi primárním klíčem a cizím klíčem

Zde je důležitý rozdíl mezi primárním klíčem a cizím klíčem:

Primární klíč Cizí klíč
Omezení primárního klíče je sloupec nebo skupina sloupců, které jednoznačně identifikují každý řádek v tabulce systému správy relačních databází. Cizí klíč je sloupec, který vytváří vztah mezi dvěma tabulkami.
Pomůže vám jednoznačně identifikovat záznam v tabulce. Jedná se o pole v tabulce, které je primárním klíčem jiné tabulky.
Primární klíč nikdy nepřijímá hodnoty null. Cizí klíč může přijímat více hodnot null.
Primárním klíčem je seskupený index a data v tabulce DBMS jsou fyzicky uspořádána v pořadí seskupeného indexu. Cizí klíč nemůže automaticky vytvořit index, seskupený nebo neseskupený.
Jediný primární klíč můžete mít v tabulce. V tabulce můžete mít více cizích klíčů.
Hodnotu primárního klíče nelze z nadřazené tabulky odebrat. Hodnotu hodnoty cizího klíče lze z podřízené tabulky odebrat.
Na dočasných tabulkách můžete implicitně definovat primární klíč. V místních nebo globálních dočasných tabulkách nemůžete definovat cizí klíče.
Primární klíč je seskupený index. Ve výchozím nastavení nejde o klastrovaný index.
Žádné dva řádky nemohou mít žádné stejné hodnoty pro primární klíč. Cizí klíč může obsahovat duplicitní hodnoty.
Vkládání hodnot do sloupce tabulky nemá žádné omezení. Při vkládání jakékoli hodnoty do tabulky cizích klíčů se ujistěte, že je hodnota přítomna ve sloupci primárního klíče.