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

MySQL primære nøgler

Forklarer, hvad en primær nøgle er, og hvorfor den er en integreret del af relationelle databaser.

Da vi oprettede vores to tabeller, oprettede vi også en primær nøgle for hver tabel.

Når du udvider noderne i venstre SCHEMAS fanen, kan du se de primære nøgler (og fremmednøgler – vi kommer til dem næste) listet under hver tabel:

Som det medfølgende skærmbillede viser, er indekserne noder indeholder alle indekser (i vores tilfælde fremmednøgler og/eller primærnøgler). Disse primære nøgler og fremmednøgler er der kun, fordi vi specificerede dem i vores kode, da vi oprettede tabellerne.

Specifikt brugte vi PRIMARY KEY (FruitId) for at lave FruitId kolonne den primære nøgle for Fruit tabel, og vi brugte PRIMARY KEY (UnitId) for at lave UnitId kolonne den primære nøgle for Enhederne tabel.

Hvad er en primær nøgle?

En primær nøgle (også omtalt som en unik nøgle ) er en kolonne, der er blevet tildelt som det unikke identifikatorfelt. Værdien i en primærnøglekolonne er unik for hver post. Med andre ord, ingen to poster kan dele den samme værdi i den kolonne.

Et klassisk eksempel på et primærnøglefelt er et "ID"-felt. De fleste tabeller vil have et ID-felt, der giver en unik identifikator for hver post. Eksempler kunne omfatte "CustomerId", "ProductId", "FruitId" osv. Uden ID-felter som disse ville din databases funktion være alvorligt hæmmet. Hvis du havde to eller flere kunder med samme navn, hvordan ville du så kunne finde deres post? Selvom det er rigtigt, at du muligvis kan finde noget unikt ved hver post, er det meget renere og nemmere at have en kolonne, hvis primære formål er at give en unik identifikation for hver post.

En primær dåse kan enten være en normal værdi, der garanteres at være unik (et ISBN-nummer for bøger, produktkode osv.), eller det kan være en værdi genereret af applikationen eller DBMS specifikt til at være unik (såsom en globalt unik identifikator eller automatisk stigende heltal).

Valg af en primær nøgle

Vær forsigtig, når du vælger en kolonne til din primære nøgle. Du skal sikre dig, at hver post har én, og at der ikke er mulighed for, at to poster deler den samme værdi, eller at én post vil have mere end én værdi.

For eksempel kan brugen af ​​brugerens e-mailadresse fungere i nogle tilfælde, men det er ikke et særlig solidt grundlag for en unik identifikator. Brugere kan ændre deres e-mailadresse. Brugere kan dele e-mailadresser. Nogle brugere har muligvis ikke en e-mailadresse. Selvfølgelig kan du skrive dit system for at forhindre brugere i at ændre deres e-mailadresse eller dele den, men dit system ville ikke være særlig fleksibelt eller brugervenligt.

Du kan kræve, at alle brugere har et unikt brugernavn. Det kunne virke. Du skal dog tænke grundigt over alle muligheder. Hvis der er nogen chance for, at brugere kan ændre det eller dele det (fortid, nutid eller fremtid), skal du ikke bruge det som en primær nøgle. Hvad hvis "TechGuy12" deaktiverer sin konto. Betyder det, at en anden bruger nu kan bruge "TechGuy12"? Vil det være et problem for din ansøgning eller eventuelle rapporter, du skal generere?

Hvis du er i tvivl om det "entydige" af dit primære nøglefelt, skal du bruge et automatisk genereret tal, der stiger med hver oprettet post.


  1. PostgreSQL:Fjern attribut fra JSON-kolonnen

  2. Sorten, der spilder til niveau 15.000

  3. Forskelle mellem MySql og MySqli i PHP

  4. SÆT ANTAL PÅ brug