Sleutels en beperkingen vaak gebruikt in SQL

Wat zijn sleutels en beperkingen?

een database moet zich houden aan bepaalde eigenschappen om de integriteit en kwaliteit van de gegevens die het opslaat te behouden. Sleutels en beperkingen zijn regels die bepalen welke gegevenswaarden zijn toegestaan in bepaalde gegevenskolommen. Ze zijn een belangrijk databaseconcept en maken deel uit van de schemadefinitie van een database. Het definiëren van sleutels en beperkingen maakt deel uit van het database-ontwerpproces en zorgt ervoor dat de gegevens binnen een database betrouwbaar zijn en zijn integriteit behouden. Beperkingen kunnen van toepassing zijn op een specifieke kolom, een volledige tabel, meer dan één tabel of een volledig schema. Een betrouwbaar databasesysteem zorgt ervoor dat beperkingen te allen tijde behouden blijven. Sleutels zijn een speciaal type beperking die wordt gebruikt om relaties en uniciteit vast te stellen.

primaire sleutel

een noodzakelijk onderdeel van het tot stand brengen van relaties tussen twee entiteiten of twee gegevensbestanden is het correct identificeren van de gegevens. In SQL is een unieke identificatie van gegevens van cruciaal belang. Een primaire sleutel is een unieke identificatie voor een Rij gegevens. In de spreadsheet analogie die we tot nu toe hebben gebruikt, is er altijd een id kolom geweest. Hoewel elke kolom als primaire sleutel kan dienen, is het gebruik van een kolom met de naam id om ezelsbruggetjes eenvoudig en is het een populaire conventie. In een RDBMS kan elke tabel slechts één primaire sleutel hebben.

een primaire sleutel is een gegarandeerd uniek identificatiekenmerk voor een rij in een tabel. Hierdoor kunnen we de primaire sleutelwaarde van een Rij gebruiken om naar die rij te verwijzen vanuit andere tabellen. In het vorige hoofdstuk hebben we relaties gelegd tussen meerdere tabellen op basis daarvan, maar relationele databases hebben een manier nodig om zich met elkaar te verhouden, en de primaire sleutelkolom is een manier om dit efficiënt te doen. In PostgreSQL, primaire sleutels worden ook gegeven prestatievoordelen als het bekend is dat ze vaak worden gebruikt om gegevens op te zoeken, vooral in multi-table lookups.

wees ervan bewust dat niet alle kolommen met de naam “id” primaire sleutels zijn; dit is slechts een conventie. Bovendien kunnen primaire sleutels elke naam hebben.

we hebben de syntaxis om een kolom aan te wijzen al gezien in vorige hoofdstukken:

laten we eens kijken naar het bovenstaande commando dat een tabel maakt met de naam users, vanuit het perspectief van het begrijpen van primaire sleutels.

  1. id kolom is de primaire sleutel van deze tabel. We kunnen ook zeggen dat de primaire sleutelbeperking is toegepast op de kolom id.
  2. id kan alleen numerieke waarden bevatten (int).
  3. voor elke nieuwe rij die aan de tabel wordt toegevoegd, wordt het veld id automatisch verhoogd met 1. Bij veel RDBM ‘ s wordt het AUTO_INCREMENT sleutelwoord gebruikt. Met PostgreSQL gebruiken we serieel om onze id ‘ s automatisch te verhogen en hun type in te stellen als integer. Het is niet nodig om handmatig de primaire sleutelwaarde op te geven elke keer dat u gegevens invoert, PostgreSQL zal het voor u doen als u serial opgeeft als het type voor id.

buitenlandse sleutel

buitenlandse sleutelkolommen worden gebruikt om naar een andere gegevensrij te verwijzen, misschien in een andere tabel. Om naar een andere rij te verwijzen, heeft de database een unieke identificatiecode voor die rij nodig. Daarom bevatten buitenlandse sleutelkolommen de waarde van de primaire sleutel van de rij waarnaar wordt verwezen. Een tabel kan bijvoorbeeld een kolom met de naam user_id hebben als een kolom met een buitenlandse sleutel, die overeenkomt met de kolom id van de tabel users. Buitenlandse sleutels zijn hoe RDBMS relaties tussen rijen met gegevens instelt, in dezelfde tabel of in verschillende tabellen.

u kunt aan de bovenstaande SQL statement zien dat de regel om deze relatie vast te stellen is

FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE

in het bovenstaande voorbeeld is id de primaire sleutel van de tabel books, die wordt gebruikt om een relatie met de overzichtstabel vast te stellen. De idgegevens worden opgeslagen in de reviews tabel in het book_id veld om de boeken met de reviews in kaart te brengen. De ON DELETE CASCADE – clausule geeft aan dat als een boek wordt verwijderd, alle beoordelingen die met dat boek verband houden ook worden verwijderd.

samengestelde sleutel als primaire sleutel

In het vorige hoofdstuk creëerden we een veel-tot-veel relatie, waarin onze primaire sleutel bestond uit twee kolommen. De user_id en de book_id vormden samen de primaire sleutel voor de kruisverwijzingstabel zoals te zien is in deze regel van het SQL statement.

PRIMARY KEY (user_id, book_id)

wanneer een primary_key uit een uniek paar PRIMARY KEY (user_id, book_id) bestaat, wordt het een samengestelde sleutel genoemd. Het komt meestal voor in veel-tot-veel relaties, en we moeten een extra tabel toevoegen om deze relatiegegevens op te slaan. De samengestelde sleutel zorgt ervoor dat de gegevens in de tabel uniek zijn voor de relatie tussen de gebruiker en het boek. Voorbeeld:

|User_id | Book_id | | 1 | 1 | | 1 | 2 | | 2 | 1 | 

unieke beperkingen

naast de primaire sleutel maakt een database het ook mogelijk om een unieke beperking toe te passen op elke kolom in de database. In de boekentabel kunnen we er bijvoorbeeld voor kiezen om niet alleen de book_id als een unieke primaire sleutel te gebruiken, maar ook om het ISBN-nummer van het Boek op te slaan. Het ISBN, International Standard Book Number is een 10-cijferig uniek nummer voor een boek. We kunnen ervoor kiezen om onze database zo te ontwerpen dat deze kolom uniek is. Hoewel dit geen primaire sleutel is, worden Dubbele ISBN ‘ s niet toegestaan in de boekentabel en wordt de gegevenskwaliteit gehandhaafd.

de unieke beperking staat dubbele invoer in de boekentabel voor de kolomwaarde van isbn niet toe.

NOT NULL Constraints

we hebben “NOT NULL” gezien in veel van onze SQL statements. De beperking NOT NULL voorkomt dat een kolom een null-waarde toestaat (dat wil zeggen dat deze kolom gegevens moet bevatten). Dit is belangrijk voor belangrijke gebieden. Bijvoorbeeld: als u een gebruiker aan een database wilt toevoegen, moet u een gebruikersnaam opgeven. Zonder deze beperking zou de database gevuld worden met null waarden en minder bruikbaar worden.

hoe gaat SQL om met deze relaties?

PostgreSQL maakt relaties mogelijk tussen zowel het schema als de gegevens van verschillende tabellen door het gebruik van vreemde sleutels en een operatie genaamd A JOIN. Zoals de naam al doet vermoeden, is het doel om tafels aan te sluiten. Door middel van dit mechanisme kunnen we bijvoorbeeld de volledige details van de auteur van de hierboven getoonde reviews tabel verkrijgen, aangezien het een veld user_id heeft dat betrekking heeft op de user tabel. Hier is een snel voorbeeld:

nu we begrijpen hoe we meerdere tabellen kunnen maken en welke rolsleutels spelen bij het creëren van relaties, zullen we dieper kijken naar de verschillende joins en hoe SQL query ‘ s worden gebouwd met behulp van deze joins om de vereiste gegevens uit meerdere tabellen op te halen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.