Unikátní klíč - Unique key

V relačním modelování a implementaci databáze je jedinečný klíč (také známý jako kandidátský klíč nebo jen klíč ) sada atributů (sloupců) v tabulce relační databáze (nazývané také relace ), takže:

  1. tabulka neobsahuje dva odlišné řádky nebo záznamy se stejnými hodnotami pro tyto sloupce
  2. tato sada sloupců je minimální; tj. odstranění jakéhokoli sloupce z klíče by mělo za následek duplicitní hodnoty ve výsledné podmnožině.

Když je sloupec nebo sada sloupců definována jako jedinečná pro systém správy databází , systém před přiřazením omezení ověří, zda je každá sada hodnot jedinečná . Poté, co jsou sloupce definovány jako jedinečné, dojde k chybě, pokud se pokusíte o vložení s hodnotami, které již existují. Některé systémy neumožňují aktualizaci hodnot klíčů, všechny systémy nedovolují duplikáty. Tím je zajištěno zachování jedinečnosti jak v primární tabulce, tak ve všech vztazích, které jsou k ní později vázány.

souhrn

Klíče poskytují uživatelům databáze a aplikačnímu softwaru prostředky k identifikaci, přístupu a aktualizaci informací v databázové tabulce. V každé dané tabulce může být několik klíčů. Například v tabulce zaměstnanců je číslo zaměstnance i přihlašovací jméno individuálně jedinečné. Vynucení omezení klíče (tj. Omezení jedinečnosti) v tabulce je také funkcí integrity dat v databázi. DBMS brání aktualizacím, které by způsobily duplicitní hodnoty klíčů, a tím zajišťuje, že tabulky vždy splňují požadovaná pravidla pro jedinečnost. Správný výběr klíčů při navrhování databáze je proto důležitým aspektem integrity databáze.

Tabulka relační databáze může mít jeden nebo více dostupných jedinečných klíčů (formálně se nazývají kandidátské klíče ). Jeden z těchto klíčů v tabulce může být označen jako primární klíč ; ostatní klíče se nazývají alternativní klíče .

Jakýkoli klíč může sestávat z jednoho nebo více atributů. Například číslo sociálního zabezpečení může být pro zaměstnance jediným atributovým klíčem; kombinace čísla letu a data může být klíčem skládajícím se ze dvou atributů pro plánovaný let.

Při modelování a implementaci databází se používá několik typů klíčů .

Název klíče Definice
Jednoduchý Klíč vyrobený pouze z jednoho atributu.
Zřetězené Klíč vyrobený z více než jednoho atributu spojeného dohromady jako jeden klíč, například část nebo celé jméno se systémem generovaným číslem, které se často používá pro e-mailové adresy.
Sloučenina Klíč vyrobený alespoň ze dvou atributů nebo jednoduchých klíčů, ve složeném klíči existují pouze jednoduché klíče.
Kompozitní Jako složený klíč, ale jednotlivé atributy nemusí být jednoduché klíče.
Přírodní Klíč vyrobený z dat, která existují mimo aktuální databázi. Jinými slovy, data nejsou generována systémem, jako je číslo sociálního zabezpečení importované z jiného systému.
Náhrada Umělý klíč vyrobený z dat, která jsou systémem přiřazena nebo generována, když existuje jiný kandidátský klíč. Náhradní klíče jsou obvykle číselné hodnoty ID a často se používají z důvodů výkonu.
Kandidát Klíč, který se může stát primárním klíčem.
Hlavní Klíč, který je vybrán jako primární klíč. Jako primární klíč je vybrán pouze jeden klíč v rámci entity. Toto je klíč, který je povolen k migraci na jiné entity k definování vztahů, které mezi entitami existují. Když je datový model vytvořen ve fyzické databázi, je to klíč, který systém nejvíce využívá při přístupu k tabulce nebo při spojování tabulek dohromady při výběru dat.
Střídat Non-primary key that can be used to identify only one row in a table. Alternativní klíče lze použít jako primární klíč při výběru jedné tabulky.
Zahraniční, cizí Klíč, který byl migrován na jinou entitu.

V nejzákladnější definici „klíč je jedinečný identifikátor“, takže jedinečný klíč je pleonasmus . Klíče, které jsou v jejich původní entitě, jsou v rámci této entity jedinečné. Klíče, které migrují na jinou entitu, mohou, ale nemusí být jedinečné, v závislosti na designu a způsobu jejich použití v jiné tabulce. Cizí klíče mohou být primárním klíčem v jiné tabulce; například PersonID se může stát EmployeeID v tabulce Employee. V tomto případě je EmployeeID cizí klíč i jedinečný primární klíč, což znamená, že tabulky mají vztah 1: 1. V případě, že subjekt osoby obsahuje biologické ID otce, neočekává se, že ID otce bude jedinečné, protože otec může mít více než jedno dítě.

Zde je příklad primárního klíče, který se v související tabulce stává cizím klíčem. ID migruje z tabulky Autor do tabulky Kniha.

Author Table Schema:

Author(ID, Name, Address, Born)

Book Table Schema:

Book(ISBN, AuthorID, Title, Publisher, Price)

Zde ID slouží jako primární klíč v tabulce 'Autor', ale také jako AuthorID slouží jako cizí klíč v tabulce 'Kniha'. Cizí klíč slouží jako propojení, a tedy spojení mezi dvěma souvisejícími tabulkami v této ukázkové databázi.

V relační databázi kandidátský klíč jednoznačně identifikuje každý řádek hodnot dat v databázové tabulce. Kandidátský klíč obsahuje jeden sloupec nebo sadu sloupců v jedné databázové tabulce. Žádné dva odlišné řádky nebo datové záznamy v databázové tabulce nemohou mít v těchto sloupcích kandidátských klíčů stejnou datovou hodnotu (nebo kombinaci datových hodnot), protože hodnoty NULL se nepoužívají. V závislosti na svém návrhu může mít databázová tabulka mnoho kandidátních klíčů, ale jako primární klíč může být rozlišen maximálně jeden kandidátský klíč.

Klíčové omezení platí pro sadu n -tic v tabulce v daném časovém okamžiku. Klíč není nutně jedinečný identifikátor v populaci všech možných instancí řazených kolekcí členů, které by mohly být uloženy v tabulce, ale znamená to pravidlo integrity dat, že duplikáty by v databázové tabulce neměly být povoleny. Některé možné příklady klíčů, jsou rodná čísla , čísla ISBN , registračních značek vozidel nebo názvy přihlášení uživatele.

V zásadě lze na jakýkoli klíč odkazovat cizí klíče. Některé SQL DBMS umožňují pouze omezení cizího klíče proti primárnímu klíči, ale většina systémů umožní omezení cizího klíče odkazovat na jakýkoli klíč tabulky.

Definování klíčů v SQL

Definice klíčů v SQL:

  ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier> ] 
      { PRIMARY KEY | UNIQUE } ( <column name> [ {, <column name>}... ] )

Podobně lze klíče definovat jako součást příkazu CREATE TABLESQL.

  CREATE TABLE table_name (
     id_col   INT,
     col2     CHARACTER VARYING(20),
     key_col  SMALLINT NOT NULL,
     ...
     CONSTRAINT key_unique UNIQUE(key_col),
     ...
  )
  CREATE TABLE table_name (
     id_col  INT  PRIMARY KEY,
     col2    CHARACTER VARYING(20),
     ...
     key_col  SMALLINT NOT NULL UNIQUE,
     ...
  )

Rozdíly mezi omezením primárního klíče a jedinečným omezením

Omezení primárního klíče

  1. Primární klíč nemůže povolit hodnotu null (primární klíč nelze definovat ve sloupcích, které povolují hodnoty null).
  2. Každá tabulka nemůže mít více než jeden primární klíč.
  3. U některých RDBMS primární klíč ve výchozím nastavení generuje klastrovaný index .

Unikátní omezení

  1. Jedinečné omezení lze definovat ve sloupcích, které umožňují nulové hodnoty, přičemž v takovém případě řádky obsahující nulové hodnoty nemusí být ve skutečnosti jedinečné v celé sadě sloupců definovaných omezením.
  2. Každá tabulka může mít několik jedinečných omezení.
  3. U některých RDBMS generuje jedinečné omezení ve výchozím nastavení neclusterovaný index .

Všimněte si toho, že na rozdíl od omezení PRIMARY KEY, UNIQUE omezení neznamená NOT NULL pro sloupce účastnící se omezení. Aby sloupce byly klíčem, je nutné zadat hodnotu NOT NULL. Na sloupce s možnou hodnotou null je možné vložit JEDINEČNÁ omezení, ale standard SQL uvádí, že toto omezení nezaručuje jedinečnost sloupců s možnou hodnotou null (jedinečnost není vynucena u řádků, kde některý ze sloupců obsahuje hodnotu null).

Podle standardu SQL jedinečné omezení nevynucuje jedinečnost za přítomnosti null a může proto obsahovat několik řádků se shodnými kombinacemi null a nenulových hodnot-ne všechny RDBMS však tuto funkci implementují podle standardu SQL.

Viz také

Reference

externí odkazy