Som et forord skal du bemærke, at en primær nøgle ikke behøver at være en enkelt kolonne:den kan bestå af flere kolonner:dette er kendt som en sammensat nøgle. Bemærk også, at ikke alle tabeller har en AUTO_INCREMENT
/IDENTITY
kolonne overhovedet, og du kan have en UNIQUE
begrænsning på en enkelt kolonne inde i en sammensat nøgle alligevel.
-
Der er ingen - men det giver ikke mening for et DBMS at forbyde sådan redundans, enten fordi du har brug for tilføjet logik og kompleksitet for at håndtere denne tilstand, hvorimod der ikke er nogen reel skade ved at have begge dele (udover virkningen af ydeevnen ved at skulle opretholde to indekser).
-
Som sagt ovenfor:fordi mulighedsomkostningerne at opdage og forhindre, at redundans ikke er det værd.
En anden ting at overveje er, at den primære nøgledefinition af en tabel ikke er uforanderlig og derfor kan ændres. En tabel har muligvis allerede kolonner med en UNIQUE
begrænsningsopsætning og derefter beslutter databasedesigneren at inkludere det i en ny definition af primærnøgle - det ville være brugeruvenligt at kræve, at den gamle begrænsning fjernes først, især hvis andre dele af deres applikationssystem afhænger af den UNIKKE begrænsning er der (f.eks. en 1:0..1
relationsdefinition).
(Også AUTO_INCREMENT
er ikke gensidigt inkluderende med UNIQUE
eller PRIMARY KEY
:du kan bruge AUTO_INCREMENT
med ikke-unikke kolonner (f.eks. hvis AUTO_INCREMENT
tilføjes efter en tabel allerede indeholder data), og modsat en PRIMARY KEY
kan bruge unikke værdier fra andre steder, såsom en anden identitetskolonne som en fremmednøgle (sammensatte primærnøgler kan indeholde fremmednøgler!) eller en "naturlig" datakilde, såsom at bruge et amerikansk personnummer som en primærnøgle (selvfølgelig du bør aldrig gør dette i virkeligheden)).