Co jsou cizí klíče v databázích SQL?

Co jsou cizí klíče v databázích SQL?

Cizí klíče umožňují správcům databází snadno identifikovat různá připojení, která existují v systému správy databází SQL.





SQL provádí matematické operace s daty v systému správy databází. Tyto databáze obsahují různé tabulky, z nichž každá ukládá data na konkrétní entitu. Pokud máte databázi autopůjčoven, entitou (nebo tabulkou) v této databázi budou zákazníci (kteří budou ukládat všechny osobní údaje o každém zákazníkovi).





Tyto databázové tabulky obsahují řádky a sloupce, kde každý řádek obsahuje záznam a každý sloupec obsahuje data specifická pro atributy.





V systému správy databází by měl být každý záznam (nebo řádek) jedinečný.

Primární klíče

Ačkoli je stanoveno, že každý záznam v tabulce by měl být odlišný, není tomu tak vždy. Pokračování příkladu databáze autopůjčoven, pokud databáze obsahuje dva zákazníky, z nichž každý má jméno John Brown, lze očekávat, že John Brown vrátí Mercedes-Benz, který si nepronajal.



Vytvoření primárního klíče toto riziko zmírní. V systému správy databází SQL je primární klíč jedinečný identifikátor, který odlišuje jeden záznam od druhého.

tlačítko domů nefunguje iphone 8

Každý záznam v systému správy databáze SQL by proto měl mít primární klíč.





Použití primárních klíčů v databázi

Chcete -li zahrnout primární klíče do systému správy databází pomocí SQL, můžete jej jednoduše přidat jako normální atribut při vytváření nové tabulky. Tabulka zákazníků tedy bude obsahovat čtyři atributy (nebo sloupce):

  • CarOwnerID (který bude ukládat primární klíč)
  • Jméno
  • Příjmení
  • Telefonní číslo

Příbuzný: Jak vytvořit tabulku v SQL





Nyní bude mít každý záznam zákazníka, který vstoupí do databáze, jedinečné identifikační číslo a také křestní jméno, příjmení a telefonní číslo. Telefonní číslo není dostatečně jedinečné na to, aby mohlo být primárním klíčem, protože ačkoli je jedinečné pouze pro jednu osobu, člověk si může snadno změnit číslo, což znamená, že nyní patří někomu jinému.

Záznam s příkladem primárního klíče

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Kód SQL výše přidá nový záznam do již existujícího Zákazníci stůl. Níže uvedená tabulka ukazuje novou tabulku zákazníků se dvěma záznamy Johna Browna.

Cizí klíč

Nyní máte primární klíče, které jednoznačně odlišují jednoho pronajímatele auta od druhého. Jediným problémem je, že v databázi neexistuje žádné skutečné spojení mezi každým Johnem Brownem a autem, které si pronajímá.

Možnost udělat chybu proto stále existuje. Tady vstupují do hry cizí klíče. Použití primárního klíče k vyřešení problému nejednoznačnosti vlastnictví je dosažitelné pouze v případě, že primární klíč slouží zároveň jako cizí klíč.

Co je to cizí klíč?

V systému správy databází SQL je cizí klíč jedinečný identifikátor nebo kombinace jedinečných identifikátorů, které spojují dvě nebo více tabulek v databázi.

Ze čtyř existujících systémů pro správu databází SQL je nejoblíbenější systém pro správu relačních databází. Při rozhodování, která tabulka v relační databázi by měla mít cizí klíč, byste měli nejprve určit, která tabulka je předmětem a který objekt v jejich vztahu.

Když se vrátíme do databáze autopůjčoven, k připojení každého zákazníka ke správnému vozu budete potřebovat pochopit, že zákazník (subjekt) si pronajímá auto (předmět). Cizí klíč by proto měl být v tabulce automobilů.

Kód SQL, který generuje tabulku s cizím klíčem, se mírně liší od normy.

Vytvoření tabulky s příkladem cizího klíče

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Jak vidíte na výše uvedeném kódu, cizí klíč musí být jako takový výslovně identifikován spolu s odkazem na primární klíč, který je připojen k nové tabulce.

jak zrcadlit slova ve slově

Příbuzný: The Essential SQL Commands Cheat Sheet for Beginners

Chcete -li do nové tabulky přidat záznam, musíte zajistit, aby hodnota v poli cizího klíče odpovídala hodnotě v poli primárního klíče původní tabulky.

Přidání záznamu s příkladem cizího klíče

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Výše uvedený kód vytvoří nový záznam v novém Auta tabulka, která produkuje následující výsledek.

Tabulka aut

Z výše uvedené tabulky můžete identifikovat správného Johna Browna, který pronajímá Mercedes-Benz, podle cizího klíče v záznamu.

Advance cizí klíče

Existují dva další způsoby použití cizího klíče v databázi.

Když se podíváte zpět na definici cizího klíče výše, zjistíte, že říká, že cizí klíč může být jedinečný identifikátor nebo kombinace jedinečných identifikátorů.

Když se vrátíme k příkladu databáze autopůjčoven, uvidíte, že vytvoření nového záznamu (stejného auta) pokaždé, když si zákazník pronajme toto auto, poruší účel Auta stůl. Pokud jsou vozy na prodej a jsou jednou prodány jedinému zákazníkovi, je stávající databáze dokonalá; ale vzhledem k tomu, že auta jsou půjčovny, existuje lepší způsob, jak tato data reprezentovat.

Kompozitní klíče

Složený klíč má dva nebo více jedinečných identifikátorů. V relační databázi budou případy, kdy použití jediného cizího klíče nebude dostatečně reprezentovat vztahy, které v dané databázi existují.

V příkladu autopůjčovny je nejpraktičtější přístup vytvořit nový stůl, který ukládá podrobnosti o pronájmu. Aby byly informace v tabulce autopůjčovny užitečné, musí se propojit s tabulkami automobilů i zákazníků.

Vytvoření tabulky pomocí složených cizích klíčů

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Výše uvedený kód zobrazuje důležitý bod; přestože tabulka v databázi SQL může mít více než jeden cizí klíč, může mít pouze jeden primární klíč. Důvodem je, že by měl existovat pouze jeden jedinečný způsob identifikace záznamu.

Je nutné zkombinovat všechny tři atributy v tabulce, abyste získali jedinečný klíč. Zákazník si může půjčit více než jedno auto na stejný den (např Zákaznické identifikační číslo a Datum pronájmu není to dobrá kombinace) stejný vůz si může ve stejný den půjčit více než jeden zákazník (např Číslo licence a Datum pronájmu není dobrá kombinace).

Vytvoření kompozitního klíče, který řekne, který zákazník, jaké auto a který den, je vynikající jedinečný klíč. Tento jedinečný klíč představuje jak složený cizí klíč, tak složený primární klíč.

jak vkládat slova na tiktok

Cizí primární klíče

Ach ano, cizí primární klíče se ukončí. Ačkoli pro to neexistuje oficiální název, cizí klíč může být také primárním klíčem ve stejné tabulce. K tomu dochází, když vytvoříte novou tabulku, která obsahuje specializovaná data o existující entitě (nebo záznam v jiné tabulce).

Řekněme, že Fred (který pracuje v autopůjčovně) je v databázi společnosti pod tabulkou zaměstnanců. Po několika letech se stane supervizorem a bude přidán do tabulky supervizora.

Fred je stále zaměstnanec a bude mít stále stejné identifikační číslo. Fredovo ID zaměstnance je nyní v tabulce supervizora jako cizí klíč, který se také stane primárním klíčem v této tabulce (protože nemá smysl vytvářet nové ID číslo pro Freda, když je nyní supervizorem).

Nyní můžete identifikovat cizí klíče v databázích SQL

Cizí klíče spojují různé tabulky v databázi SQL. Z tohoto článku se můžete podívat, co je to cizí klíč, jak funguje a proč je důležité mít ho v databázi. Rozumíte také základním a ještě složitějším formám cizích klíčů.

Pokud si myslíte, že cizí klíče jsou zajímavé, budete mít polní den, kdy začnete používat operace projektu a výběru k dotazování na vaše databáze SQL.

Podíl Podíl tweet E-mailem Zjistěte, jak používat operace projektu a výběru v SQL

Pochopte operace projektu a výběru pomocí těchto příkladů a seznamte se s relačními databázemi SQL.

Číst dále
Související témata
  • Programování
  • Programování
  • SQL
  • databáze
O autorovi Kadeisha Kean(21 článků zveřejněno)

Kadeisha Kean je vývojář softwaru a technický/technologický spisovatel v plném zásobníku. Má výraznou schopnost zjednodušit některé z nejsložitějších technologických konceptů; produkující materiál, kterému každý technologický nováček snadno porozumí. Je nadšená psaním, vývojem zajímavého softwaru a cestováním po světě (prostřednictvím dokumentů).

Více od Kadeisha Kean

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru