Rozdíl mezi primárním klíčem a cizím klíčem
Klíčové rozdíly mezi primárním a cizím klíčem
- 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 cizího klíče lze odebrat z podřízené tabulky.
- Žádné dva řádky nemohou mít stejné hodnoty pro primární klíč; na druhou stranu cizí klíč může obsahovat duplicitní hodnoty.
- Neexistuje žádné omezení pro vkládání hodnot do sloupce tabulky při vkládání jakékoli hodnoty do tabulky cizích klíčů; ujistěte se, že hodnota je přítomna ve sloupci primárního klíče.
Zde jsem rozebral rozdíl mezi primárním a cizím klíčem a komplexně zhodnotím jejich klady a zápory.
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 nemůže mít více než jeden primární klíč. The 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.
Příklad primárního klíče
Syntaxe:
Níže je uvedena syntaxe primárního klíče:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Zde,
- Table_Name je název tabulky, kterou musíte vytvořit.
- Column_Name je název sloupce s primárním klíčem.
Příklad:
StudID | Role č | Jméno | Příjmení | |
---|---|---|---|---|
1 | 11 | Tomáš | Cena | abc@gmail.com |
2 | 12 | Nick | Wright | xyz@gmail.com |
3 | 13 | dana | Natan | mno@yahoo.com |
Ve výše uvedeném příkladu jsme vytvořili tabulku studentů 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.
Proč používat primární klíč?
Během let, kdy se zabývám databázovými systémy, jsem při používání primárního klíče zaznamenal tyto nevýhody a výhody:
- Hlavním cílem primárního klíče je identifikovat každý jednotlivý záznam v databázové tabulce.
- Primární klíč můžete použít, když někomu nedovolíte zadávat hodnoty null.
- Pokud odstraníte nebo aktualizujete záznamy, provede se vámi zadaná akce k zajištění integrity dat.
- Provedením operace omezení odmítnete operaci odstranění nebo aktualizace nadřazené tabulky.
- Data jsou organizována v posloupnosti seskupených indexů, kdykoli fyzicky uspořádáte tabulku DBMS.
Co je cizí klíč?
Cizí klíč je sloupec, který vytváří vztah mezi dvěma tabulkami. Účelem 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.
Příklad cizího klíče
Syntaxe:
Níže je uvedena syntaxe cizího klíče:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Zde,
- Parametr Název tabulky udává název tabulky, kterou se chystáte vytvořit.
- Parametry column1, column2… zobrazují sloupce, které je třeba přidat do tabulky.
- Vazba označuje název vazby, kterou 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 | Fname | Ljméno |
---|---|---|
B002 | David | Warner |
B017 | Sara | Joseph |
B009 | mikrofon | Bruntone |
Ve výše uvedeném příkladu máme dvě tabulky: učitele a oddělení ve škole. Neexistuje však způsob, jak zjistit, které vyhledávání v kterém oddělení funguje.
V této tabulce můžeme přidáním cizího klíče v Deptcode ke jménu učitele vytvořit vztah mezi dvěma tabulkami.
ID učitele | DeptCode | Fname | Ljméno |
---|---|---|---|
B002 | 002 | David | Warner |
B017 | 002 | Sara | Joseph |
B009 | 001 | mikrofon | Bruntone |
Tento koncept je také známý jako referenční integrita.
Proč používat cizí klíč?
Z toho, co jsem viděl, jsou zde důležité důvody pro implementaci cizích klíčů:
- Cizí klíče vám pomohou migrovat entity pomocí primárního klíče z nadřazené tabulky.
- A cizí klíč umožňuje propojit dvě nebo více tabulek dohromady.
- Díky tomu jsou data v databázi konzistentní.
- Cizí klíč lze použít ke spárová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í toho, aby referenční integrita nadřazených dat odpovídala hodnotám v podřízené tabulce.
Rozdíl mezi primárním a cizím klíčem
Dovolte mi podělit se o důležitý rozdíl mezi primárním klíčem a cizím klíčem, jak jsem osobně zažil:
Srovnávací základ | Primární klíč | Cizí klíč |
---|---|---|
Definice | Omezení primárního klíče je sloupec nebo skupina sloupců, které jednoznačně identifikují každý řádek v tabulce systém pro správu relačních databází. | Cizí klíč je sloupec, který vytváří vztah mezi dvěma tabulkami. |
Basic | Pomůže vám jednoznačně identifikovat záznam v tabulce. | Je to pole v tabulce, které je primárním klíčem jiné tabulky. |
NULL | Primární klíč nikdy nepřijímá hodnoty null. | Cizí klíč může přijímat více hodnot null. |
Indexování | Primárním klíčem je seskupený index a data v tabulce DBMS jsou fyzicky organizována v posloupnosti seskupeného indexu. | Cizí klíč nemůže automaticky vytvořit index, klastrovaný nebo neklastrovaný. |
Počítat | V tabulce můžete mít jeden primární klíč. | V tabulce můžete mít více cizích klíčů. |
vymazání | Hodnotu primárního klíče nelze z nadřazené tabulky odebrat. | Hodnotu cizího klíče lze z podřízené tabulky odebrat. |
Dočasný stůl | Primární klíč můžete definovat implicitně v dočasných tabulkách. | Nemůžete definovat cizí klíče v místních nebo globálních dočasných tabulkách. |
Vztah | Primární klíč je seskupený index. | Ve výchozím nastavení se nejedná o seskupený index. |
Zdvojení | Žádné dva řádky nemohou mít stejné hodnoty pro primární klíč. | Cizí klíč může obsahovat duplicitní hodnoty. |
Vložení | Vkládání hodnot do sloupce tabulky není nijak omezeno. | Při vkládání jakékoli hodnoty do tabulky cizích klíčů se ujistěte, že je tato hodnota přítomna ve sloupci primárního klíče. |
Jak si vybrat mezi primárním klíčem a cizím klíčem
Z toho, co jsme viděli, primární klíče jednoznačně identifikují položky tabulky a cizí klíče propojují tyto položky napříč tabulkami, což je důležité pro zachování integrity dat a usnadnění efektivního získávání dat.