sql >> Database >  >> RDS >> Mysql

Primaire MySQL-sleutels

Legt uit wat een primaire sleutel is en waarom het een integraal onderdeel is van relationele databases.

Toen we onze twee tabellen maakten, hebben we ook een primaire sleutel voor elke tabel gemaakt.

Wanneer u de knooppunten in de linker SCHEMAS . uitvouwt tabblad, kunt u de primaire sleutels (en externe sleutels - we komen op de volgende) onder elke tabel zien:

Zoals de begeleidende schermafbeelding laat zien, zijn de Indexen nodes bevatten eventuele indexen (in ons geval externe sleutels en/of primaire sleutels). Deze primaire sleutels en externe sleutels zijn er alleen omdat we ze in onze code hebben gespecificeerd toen we de tabellen maakten.

In het bijzonder gebruikten we PRIMARY KEY (FruitId) om de FruitId . te maken kolom de primaire sleutel voor de Fruit tabel, en we gebruikten PRIMARY KEY (UnitId) om de UnitId . te maken kolom de primaire sleutel voor de Eenheden tafel.

Wat is een primaire sleutel?

Een primaire sleutel (ook wel een unieke sleutel genoemd) ) is een kolom die is toegewezen als het unieke identificatieveld. De waarde in een primaire sleutelkolom is uniek voor elke record. Met andere woorden, geen twee records kunnen dezelfde waarde in die kolom delen.

Een klassiek voorbeeld van een primaire-sleutelveld is een "ID"-veld. De meeste tabellen hebben een ID-veld dat een unieke identificatie voor elke record biedt. Voorbeelden kunnen zijn "CustomerId", "ProductId", "FruitId", enz. Zonder ID-velden zoals deze zou de functie van uw database ernstig worden belemmerd. Als u twee of meer klanten met dezelfde naam had, hoe zou u dan hun gegevens kunnen vinden? Hoewel het waar is dat u mogelijk iets unieks aan elk record kunt vinden, is het een stuk overzichtelijker en gemakkelijker om een ​​kolom te hebben waarvan het primaire doel is om een ​​unieke identificatie voor elk record te bieden.

Een primair kan ofwel een normale waarde zijn die gegarandeerd uniek is (een ISBN-nummer voor boeken, productcode, enz.), of het kan een waarde zijn die specifiek door de toepassing of DBMS is gegenereerd om uniek te zijn (zoals een wereldwijd unieke identifier of automatisch ophogend geheel getal).

Een primaire sleutel kiezen

Wees voorzichtig bij het kiezen van een kolom voor uw primaire sleutel. U moet ervoor zorgen dat elk record er één heeft en dat het niet mogelijk is dat twee records dezelfde waarde hebben, of dat één record meer dan één waarde heeft.

Het gebruik van het e-mailadres van de gebruiker kan bijvoorbeeld in sommige gevallen werken, maar het is geen erg solide basis voor een unieke identificatie. Gebruikers kunnen hun e-mailadres wijzigen. Gebruikers kunnen e-mailadressen delen. Sommige gebruikers hebben mogelijk geen e-mailadres. U kunt uw systeem natuurlijk zo schrijven dat gebruikers hun e-mailadres niet kunnen wijzigen of delen, maar uw systeem zou niet erg flexibel of gebruiksvriendelijk zijn.

U kunt van alle gebruikers eisen dat ze een unieke gebruikersnaam hebben. Dat zou kunnen werken. U moet echter goed nadenken over alle mogelijkheden. Als er een kans is dat gebruikers deze kunnen wijzigen of delen (verleden, heden of toekomst), gebruik deze dan niet als primaire sleutel. Wat als "TechGuy12" zijn account deactiveert. Betekent dit dat een andere gebruiker nu "TechGuy12" kan gebruiken? Is dat een probleem voor uw aanvraag of voor eventuele rapporten die u moet genereren?

Als u twijfelt over de "uniciteit" van uw primaire sleutelveld, gebruik dan een automatisch gegenereerd getal dat met elke aangemaakte record wordt verhoogd.


  1. 2 manieren om de grootte van een database in PostgreSQL te krijgen

  2. Hoe AUTOINCREMENT werkt in SQLite

  3. Android biometrische USB-vingerafdrukverificatie tutorial

  4. PostgreSQL implementeren op een Docker-container