V úvodu si uvědomte, že primární klíč nemusí být jeden sloupec:může se skládat z více sloupců:toto je známé jako složený klíč. Všimněte si také, že ne každá tabulka má AUTO_INCREMENT
/IDENTITY
sloupec vůbec a můžete mít UNIQUE
omezení na jeden sloupec uvnitř složeného klíče.
-
Žádný neexistuje – ale pro DBMS to nedává smysl zakazovat taková redundance buď proto, že byste potřebovali dodatečnou logiku a složitost, abyste zvládli tuto podmínku, zatímco obojí nezpůsobí žádnou skutečnou škodu (kromě dopadu na výkon v podobě nutnosti udržovat dva indexy).
-
Jak bylo řečeno výše:protože náklady na příležitost detekce a prevence této redundance za to nestojí.
Další věc, kterou je třeba zvážit, je, že definice primárního klíče tabulky není neměnná, a proto se může změnit. Tabulka již může obsahovat sloupce s UNIQUE
nastavení omezení a poté se návrhář databáze rozhodne toto zahrnout do nové definice primárního klíče – bylo by uživatelsky nepřívětivé vyžadovat nejprve odstranění starého omezení, zvláště pokud jiné části jejich aplikačního systému závisí na že existuje UNIKÁTNÍ omezení (např. 1:0..1
definice vztahu).
(Také AUTO_INCREMENT
není vzájemně zahrnuto s UNIQUE
nebo PRIMARY KEY
:můžete použít AUTO_INCREMENT
s nejedinečnými sloupci (např. pokud AUTO_INCREMENT
je přidán za tabulku, která již obsahuje data) a naopak PRIMARY KEY
může používat jedinečné hodnoty získané odjinud, například jiný sloupec identity jako cizí klíč (složené primární klíče mohou obsahovat cizí klíče!) nebo „přirozený“ zdroj dat, jako je použití čísla sociálního pojištění v USA jako primárního klíče (samozřejmě neměli byste nikdy udělejte to ve skutečnosti)).