Taster og begrænsninger, der ofte bruges i KKL

Hvad er taster og begrænsninger?

en database skal overholde visse egenskaber for at opretholde integriteten og kvaliteten af de data, den gemmer. Nøgler og begrænsninger er regler, der definerer, hvilke dataværdier der er tilladt i bestemte datakolonner. De er et vigtigt databasekoncept og er en del af en databases skemadefinition. Definition af nøgler og begrænsninger er en del af databasedesignprocessen og sikrer, at dataene i en database er pålidelige og opretholder dens integritet. Begrænsninger kan gælde for en bestemt kolonne, en hel tabel, mere end en tabel eller et helt skema. Et pålideligt databasesystem sikrer, at begrænsninger holder til enhver tid. Nøgler er en speciel type begrænsning, der bruges til at etablere relationer og unikhed.

primær nøgle

en nødvendig del af etableringen af relationer mellem to enheder eller to stykker data er at identificere dataene korrekt. Unikt identificerende data er kritisk. En primær nøgle er en unik identifikator for en række data. I regnearksanalogien, vi har brugt indtil videre, har der altid været en id kolonne. Mens enhver kolonne kan fungere som den primære nøgle, er det let af mnemoniske grunde at bruge en kolonne med navnet id og er en populær konvention. I en RDBMS kan hver tabel kun have en primær nøgle.

en primær nøgle er en garanteret entydig identifikator for en række i en tabel. På grund af dette kan vi bruge en rækkes primære nøgleværdi til at henvise til den række fra andre tabeller. I det foregående kapitel etablerede vi relationer mellem flere tabeller baseret på det, men relationsdatabaser har brug for en måde at forholde sig til hinanden, og den primære nøglekolonne er en måde at gøre dette effektivt på. Primære nøgler får også ydelsesfordele, da det er kendt, at de ofte vil blive brugt til at slå data op, især i opslag med flere tabeller.

Vær opmærksom på, at ikke alle kolonner med navnet “id” er primære nøgler; dette er bare en konvention. Derudover kan primære nøgler have ethvert navn.

vi har allerede set syntaksen for at betegne en kolonne som en primær nøglekolonne i tidligere kapitler:

lad os se på ovenstående kommando, der opretter en tabel kaldet users, set fra forståelsen af primære nøgler.

  1. id kolonne er den primære nøgle i denne tabel. Vi kan også sige, at den primære nøglebegrænsning er blevet anvendt på kolonnen id.
  2. idkan kun holde numeriske værdier (int).
  3. for hver ny række, der føjes til tabellen, øges feltet id automatisk med 1. Med mange RDBM ‘ er bruges nøgleordet AUTO_INCREMENT. Vi bruger seriel til automatisk at øge vores ID ‘ er og indstille deres type som heltal. Det er ikke nødvendigt manuelt at angive den primære nøgle værdi hver gang du indsætter data, vil gøre det for dig, hvis du angiver seriel som typen for id.

fremmed nøgle

fremmednøglekolonner bruges til at henvise til en anden række data, måske i en anden tabel. For at henvise til en anden række skal databasen have en unik identifikator for den pågældende række. Derfor indeholder fremmednøglekolonner værdien af den refererede rækkes primære nøgle. For eksempel kan en tabel have en kolonne kaldet user_id som en fremmed nøglekolonne, hvilket svarer til kolonnen id i tabellen users. Udenlandske nøgler er, hvordan RDBMS opretter relationer mellem rækker af data, enten i samme tabel eller på tværs af tabeller.

du kan se fra ovenstående erklæring om, at linjen for at etablere dette forhold er

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

i ovenstående eksempel id er den primære nøgle i tabellen books, som bruges til at etablere et forhold til gennemgangstabellen. Dataene id gemmes i tabellen anmeldelser i feltet book_id for at kortlægge bøgerne med anmeldelserne. Klausulen ON DELETE CASCADE angiver, at hvis en bog slettes, slettes alle anmeldelser, der er knyttet til den pågældende bog, også.

sammensat nøgle som primær nøgle

i det foregående kapitel oprettede vi et mange-til-mange-forhold, hvor vores primære nøgle var lavet af to kolonner. user_id og book_id dannede begge sammen den primære nøgle til krydsreferencetabellen, som det kan ses i denne linje i KVL-udsagnet.

PRIMARY KEY (user_id, book_id)

når en primary_key består af et unikt par PRIMARY KEY (user_id, book_id), er det kendt som en sammensat nøgle. Det forekommer normalt i mange til mange forhold, og vi er nødt til at tilføje en ekstra tabel for at gemme disse forholdsdata. Den sammensatte nøgle sikrer, at dataene i tabellen vil være unikke for forholdet mellem brugeren og bogen. Eksempel:

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

unikke begrænsninger

udover den primære nøgle tillader en database også at anvende en unik begrænsning på enhver kolonne i databasen. For eksempel i tabellen bøger kan vi vælge ikke kun at have book_id som en unik primær nøgle, men også nødt til at gemme bogens ISBN-nummer. ISBN, International Standard Book Number er et 10-cifret unikt nummer for en bog. Vi kan vælge at designe vores database for at gøre denne kolonne unik. Selvom dette ikke er en primær nøgle, vil dublerede ISBN ‘ er ikke være tilladt i tabellen bøger, og datakvaliteten opretholdes.

den entydige begrænsning tillader ikke dobbelt indtastning i tabellen bøger for kolonneværdien af isbn.

ikke NULL begrænsninger

vi har set “IKKE NULL” i mange af vores udsagn. Begrænsningen NOT NULL forhindrer en kolonne i at tillade en null-værdi (dvs.denne kolonne skal indeholde data). Dette er vigtigt for nøglefelter. For eksempel: hvis du vil føje en bruger til en database, skal du angive et brugernavn. Uden denne begrænsning ville databasen blive fyldt med null-værdier og blive mindre nyttig.

hvordan håndterer vi disse forhold?

Postgraduate tillader relationer mellem både skemaet og data fra forskellige tabeller ved brug af fremmede nøgler og en operation kaldet a JOIN. Som navnet antyder, er formålet at deltage i tabeller. Gennem denne mekanisme kan vi for eksempel få de fulde detaljer om forfatteren af oversigtstabellen vist ovenfor, da den har et felt user_id, der vedrører user tabellen. Her er et hurtigt eksempel:

nu hvor vi forstår, hvordan man opretter flere tabeller og rolletasterne spiller i etablering af relationer, vil vi tage et dybere kig på de forskellige joinforbindelser, og hvordan vi bygger forespørgsler ved hjælp af disse joinforbindelser til at hente de data, der kræves fra flere tabeller.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.