sql >> Database teknologi >  >> RDS >> Mysql

MySQL PRIMÆR NØGLE vs UNIKKE begrænsninger

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.

  1. 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).

  2. 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)).




  1. Hvordan LEFT JOIN, for at oprette et datointerval?

  2. Formularen gemmes ikke i databasen

  3. Er dette et Microsoft- eller et Oracle-problem?

  4. google maps api infovindue flere markører, samme placering