Skip to content

Základní klíče, které usnadňují správu databáze

17 de Červen de 2021
high angle view of technicians working in server room 580501777 59d7dbd422fa3a001179ba2c 60d2a9b38c714b9bbe5127049e682cc5

Jak už možná víte, databáze používají k uspořádání informací tabulky. (Pokud nemáte základní znalost databázových konceptů, přečtěte si Co je databáze?) Každá tabulka se skládá z několika řádků, z nichž každý odpovídá jednomu databázovému záznamu. Jak tedy databáze udržují všechny tyto záznamy rovné? Je to pomocí kláves.

Primární klíče

První typ klíče, o kterém budeme diskutovat, je primární klíč. Každá databázová tabulka by měla mít jeden nebo více sloupců určených jako primární klíč. Hodnota, kterou tento klíč obsahuje, by měla být pro každý záznam v databázi jedinečná. Předpokládejme například, že máme tabulku s názvem Zaměstnanci, která obsahuje personální informace o každém zaměstnanci v naší firmě. Potřebovali bychom vybrat vhodný primární klíč, který by jednoznačně identifikoval každého zaměstnance. Vaše první myšlenka by mohla být použít jméno zaměstnance. To by nefungovalo moc dobře, protože je možné, že byste najali dva zaměstnance se stejným jménem. Lepší volbou může být použití jedinečného identifikačního čísla zaměstnance, které přiřadíte každému zaměstnanci, když je najal. Některé organizace se rozhodnou pro tento úkol použít čísla sociálního zabezpečení (nebo podobné vládní identifikátory), protože každý zaměstnanec již jedno má a je zaručeno, že jsou jedinečné. Použití čísel sociálního zabezpečení pro tento účel je však z důvodu ochrany soukromí vysoce kontroverzní. (Pokud pracujete pro vládní organizaci, nemusí být číslo sociálního zabezpečení legální podle zákona o ochraně osobních údajů z roku 1974.) Z tohoto důvodu se většina organizací přesunula k používání jedinečných identifikátorů (ID zaměstnance, ID studenta atd.) .), které nesdílejí tyto obavy o soukromí. Jakmile se rozhodnete pro primární klíč a nastavíte databázi, systém správy databáze vynutí jedinečnost klíče. Pokud se pokusíte vložit záznam do tabulky s primárním klíčem, který duplikuje existující záznam, vložení se nezdaří. Většina databází je také schopna generovat své vlastní primární klíče. Například Microsoft Access může být nakonfigurován tak, aby používal datový typ Automatické číslo k přiřazení jedinečného ID každému záznamu v tabulce. I když je to efektivní, jedná se o špatnou konstrukční praxi, protože vám v každém záznamu v tabulce ponechává nesmyslnou hodnotu. Proč nevyužít tento prostor k uložení něčeho užitečného?

Zahraniční klíče

Dalším typem je cizí klíč, který se používá k vytváření vztahů mezi tabulkami. Přirozené vztahy existují mezi tabulkami ve většině databázových struktur. Po návratu do naší databáze zaměstnanců si představte, že jsme do databáze chtěli přidat tabulku obsahující informace o odděleních. Tato nová tabulka by se mohla jmenovat Oddělení a měla by obsahovat velké množství informací o oddělení jako celku. Chtěli bychom také zahrnout informace o zaměstnancích v oddělení, ale bylo by nadbytečné mít stejné informace ve dvou tabulkách (Zaměstnanci a Oddělení). Místo toho můžeme vytvořit vztah mezi těmito dvěma tabulkami. Předpokládejme, že tabulka Oddělení používá jako primární klíč sloupec Název oddělení. Abychom vytvořili vztah mezi těmito dvěma tabulkami, přidáme do tabulky Zaměstnanci nový sloupec s názvem Oddělení. Poté vyplníme název oddělení, do kterého každý zaměstnanec patří. Informujeme také systém správy databáze, že sloupec Oddělení v tabulce Zaměstnanci je cizí klíč, který odkazuje na tabulku Oddělení. Databáze poté vynutí referenční integritu zajištěním toho, aby všechny hodnoty ve sloupci Oddělení v tabulce Zaměstnanci obsahovaly odpovídající položky v tabulce Oddělení. Všimněte si, že pro cizí klíč neexistuje žádné omezení jedinečnosti. Můžeme (a nejpravděpodobněji ano) mít více než jednoho zaměstnance, který patří do jednoho oddělení. Podobně neexistuje požadavek, aby položka v tabulce Oddělení měla odpovídající položku v tabulce Zaměstnanci. Je možné, že bychom měli oddělení bez zaměstnanců.