Čo sú cudzie kľúče v databázach SQL?

Čo sú cudzie kľúče v databázach SQL?

Cudzie kľúče umožňujú správcom databázy ľahko identifikovať rôzne pripojenia, ktoré existujú v systéme správy databáz SQL.





SQL vykonáva matematické operácie s údajmi v systéme správy databáz. Tieto databázy obsahujú rôzne tabuľky, z ktorých každá ukladá údaje o konkrétnej entite. Ak máte databázu požičovní automobilov, entitou (alebo tabuľkou) v tejto databáze budú zákazníci (ktorá bude uchovávať všetky osobné údaje o každom zákazníkovi).





Tieto databázové tabuľky obsahujú riadky a stĺpce, kde každý riadok obsahuje záznam a každý stĺpec obsahuje údaje špecifické pre atribúty.





V systéme správy databáz by mal byť každý záznam (alebo riadok) jedinečný.

Primárne kľúče

Hoci je ustanovené, že každý záznam v tabuľke by mal byť odlišný, nie vždy to tak je. Ak budeme pokračovať v príklade databázy požičovní automobilov, ak databáza obsahuje dvoch zákazníkov, z ktorých každý má meno John Brown, dalo by sa očakávať, že John Brown vráti Mercedes-Benz, ktorý si nepožičal.



Vytvorenie primárneho kľúča toto riziko zníži. V systéme správy databáz SQL je primárny kľúč jedinečný identifikátor, ktorý odlišuje jeden záznam od druhého.

text automatickej odpovede pri riadení systému Android

Každý záznam v systéme správy databázy SQL by preto mal mať primárny kľúč.





Použitie primárnych kľúčov v databáze

Ak chcete zahrnúť primárne kľúče do systému správy databáz pomocou SQL, môžete ho jednoducho pridať ako normálny atribút pri vytváraní novej tabuľky. Tabuľka zákazníkov bude teda obsahovať štyri atribúty (alebo stĺpce):

  • CarOwnerID (ktorý bude ukladať primárny kľúč)
  • Krstné meno
  • Priezvisko
  • Telefónne číslo

Súvisiace: Ako vytvoriť tabuľku v SQL





Teraz bude mať každý záznam zákazníka, ktorý vstúpi do databázy, jedinečné identifikačné číslo, ako aj krstné meno, priezvisko a telefónne číslo. Telefónne číslo nie je natoľko jedinečné, aby mohlo byť hlavným kľúčom, pretože hoci je jedinečné iba pre jednu osobu, osoba si môže svoje číslo ľahko zmeniť, čo znamená, že teraz patrí niekomu inému.

Záznam s príkladom primárneho kľúča

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

Vyššie uvedený kód SQL pridá nový záznam k už existujúcemu Zákazníci stôl. Nasledujúca tabuľka zobrazuje novú tabuľku zákazníkov s dvoma záznamami Johna Browna.

Cudzí kľúč

Teraz máte primárne kľúče, ktoré jedinečne odlišujú jedného prenajímateľa auta od druhého. Jediným problémom je, že v databáze neexistuje žiadne skutočné spojenie medzi každým Johnom Brownom a autom, ktoré si prenajíma.

Preto stále existuje možnosť urobiť chybu. Tu vstupujú do hry cudzie kľúče. Použitie primárneho kľúča na vyriešenie problému nejednoznačnosti vlastníctva je dosiahnuteľné iba vtedy, ak sa primárny kľúč zdvojnásobí ako cudzí kľúč.

Čo je to cudzí kľúč?

V systéme správy databáz SQL je cudzí kľúč jedinečný identifikátor alebo kombinácia jedinečných identifikátorov, ktoré spájajú dve alebo viac tabuliek v databáze.

Zo štyroch existujúcich systémov na správu databáz SQL je najobľúbenejší systém na správu relačných databáz. Pri rozhodovaní, ktorá tabuľka v relačnej databáze by mala mať cudzí kľúč, by ste mali najskôr určiť, ktorá tabuľka je predmetom a ktorá predmetom v ich vzťahu.

Keď sa vrátime do databázy požičovní automobilov, aby sme každého zákazníka spojili so správnym automobilom, musíme pochopiť, že zákazník (subjekt) si prenajíma auto (predmet). Preto by mal byť cudzí kľúč v tabuľke automobilov.

Kód SQL, ktorý generuje tabuľku s cudzím kľúčom, sa mierne líši od normy.

Vytvorenie tabuľky s príkladom cudzieho kľúča

/* 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)
);

Ako vidíte v kóde vyššie, cudzí kľúč musí byť ako taký explicitne identifikovaný spolu s odkazom na primárny kľúč, ktorý je pripojený k novej tabuľke.

disk správcu úloh 100 percent Windows 10

Súvisiace: The Essential SQL Commands Cheat Sheet for Beginners

Ak chcete do novej tabuľky pridať záznam, musíte zaistiť, aby sa hodnota v poli cudzieho kľúča zhodovala s hodnotou v poli primárneho kľúča pôvodnej tabuľky.

Pridanie záznamu pomocou príkladu s cudzím kľúčom

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

Vyššie uvedený kód vytvorí nový záznam v novom Autá tabuľka, pričom sa dosiahne nasledujúci výsledok.

Stôl pre autá

Z vyššie uvedenej tabuľky môžete podľa záznamu v zázname identifikovať správneho Johna Browna, ktorý si prenajíma Mercedes-Benz.

Vopred cudzie kľúče

Existujú dva ďalšie spôsoby použitia cudzieho kľúča v databáze.

Ak sa pozriete späť na definíciu cudzieho kľúča vyššie, zistíte, že hovorí, že cudzí kľúč môže byť jedinečný identifikátor alebo kombinácia jedinečných identifikátorov.

Keď sa vrátime k príkladu databázy autopožičovní, uvidíte, že vytvorenie nového záznamu (rovnakého auta) zakaždým, keď si zákazník prenajme auto, poruší účel Autá stôl. Ak sú autá na predaj a sú raz predané jednému zákazníkovi, existujúca databáza je perfektná; ale vzhľadom na to, že autá sú požičovne, existuje lepší spôsob, ako tieto údaje reprezentovať.

Kompozitné kľúče

Kompozitný kľúč má dva alebo viac jedinečných identifikátorov. V relačnej databáze existujú prípady, keď použitie jedného cudzieho kľúča nebude dostatočne reprezentovať vzťahy, ktoré v danej databáze existujú.

V prípade požičovne automobilov je najpraktickejším prístupom vytvorenie nového stolu, ktorý uchováva podrobnosti o prenájme. Aby boli informácie v tabuľke požičovní automobilov užitočné, musia sa prepojiť s tabuľkami automobilov i zákazníkov.

Vytvorenie tabuľky pomocou kompozitných cudzích kľúčov

/* 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)
);

Vyššie uvedený kód zobrazuje dôležitý bod; hoci tabuľka v databáze SQL môže mať viac ako jeden cudzí kľúč, môže mať iba jeden primárny kľúč. Dôvodom je, že by mal existovať iba jeden jedinečný spôsob identifikácie záznamu.

Je potrebné skombinovať všetky tri atribúty v tabuľke, aby ste získali jedinečný kľúč. Zákazník si môže v ten istý deň požičať viac ako jedno auto (napr ID zákazníka a Dátum prenajatia nie je to dobrá kombinácia) viac ako jeden zákazník si môže tiež požičať rovnaké auto v ten istý deň (napr Číslo licencie a Dátum prenajatia nie je dobrá kombinácia).

Vytvorenie kompozitného kľúča, ktorý hovorí, ktorý zákazník, aké auto a v ktorý deň, z neho robí vynikajúci jedinečný kľúč. Tento jedinečný kľúč predstavuje zložený cudzí kľúč aj zložený primárny kľúč.

ako zapnúť počítač Mac

Cudzie primárne kľúče

Ach áno, cudzie primárne kľúče sa ukončia. Hoci pre to neexistuje oficiálny názov, cudzí kľúč môže byť tiež primárnym kľúčom v tej istej tabuľke. K tomu dôjde, keď vytvoríte novú tabuľku, ktorá obsahuje špecializované údaje o existujúcej entite (alebo záznam v inej tabuľke).

Povedzme, že Fred (ktorý pracuje v požičovni automobilov) je v databáze spoločnosti pod tabuľkou zamestnancov. Po niekoľkých rokoch sa stane supervízorom a pridá sa k stolu supervízora.

Fred je stále zamestnancom a bude mať stále rovnaké identifikačné číslo. Fredovo ID zamestnanca je teraz v tabuľke supervízora ako cudzí kľúč, ktorý sa stane tiež primárnym kľúčom v tejto tabuľke (pretože pre Freda nemá zmysel vytvárať nové identifikačné číslo, keď je teraz supervízorom).

Teraz môžete v databázach SQL identifikovať cudzie kľúče

Cudzie kľúče spájajú rôzne tabuľky v databáze SQL. Z tohto článku vidíte, čo je to cudzí kľúč, ako funguje a prečo je dôležité mať ho v databáze. Rozumiete tiež základným a ešte zložitejším formám cudzích kľúčov.

Ak si myslíte, že cudzie kľúče sú zaujímavé, budete mať poľný deň, keď začnete používať operácie projektu a výberu na dotazovanie sa na vaše databázy SQL.

zdieľam zdieľam Tweet E -mail Naučte sa používať projektové a výberové operácie v SQL

Zoznámte sa s operáciami projektu a výberu pomocou týchto príkladov a zoznámte sa s relačnými databázami SQL.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Programovanie
  • SQL
  • databázy
O autorovi Kadeisha Kean(21 publikovaných článkov)

Kadeisha Kean je softvérový vývojár a technický/technologický spisovateľ. Má výraznú schopnosť zjednodušiť niektoré z najzložitejších technologických konceptov; produkovať materiál, ktorému každý technologický nováčik ľahko porozumie. Je nadšená písaním, vývojom zaujímavého softvéru a cestovaním po svete (prostredníctvom dokumentov).

Viac od Kadeisha Keana

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber