Skip to main content

Hvad er en databaselation?

Relationer Access databaser - Nem guide (Juni 2026)

Relationer Access databaser - Nem guide (Juni 2026)
Anonim

Et forhold etableres mellem to databasetabeller, når et bord har en fremmednøgle, der refererer til den primære nøgle i en anden tabel. Dette er det grundlæggende koncept bag begrebet relationel database.

Hvordan en udenlandsk nøgle virker for at etablere et forhold

Lad os gennemgå grunde til primære og udenlandske nøgler. En primær nøgle identificerer hver enkelt post i tabellen. Det er en type kandidatnøgle, der normalt er den første kolonne i et bord og kan automatisk genereres af databasen for at sikre, at den er unik.

En fremmednøgle er en anden kandidatnøgle (ikke den primære nøgle), der bruges til at forbinde en post til data i en anden tabel.

For eksempel overveje disse to tabeller, der identificerer, hvilken lærer der lærer hvilket kursus.

Her er kurserbordets primære nøgle Course_ID. Dens udenlandske nøgle er Lærer_ID:

Kurser
Course_IDCOURSE_NAMETeacher_ID
Course_001BiologiTeacher_001
Course_002MathTeacher_001
Course_003engelskTeacher_003

Du kan se, at den udenlandske nøgle i kurser matcher en primærnøgle i lærerne:

Lærere
Teacher_IDTEACHER_NAME
Teacher_001Carmen
Teacher_002Veronica
Teacher_003Jorge

Vi kan sige, at den udenlandske nøgler til lærer_ID har bidraget til at etablere en forhold mellem kurser og lærerborde.

Typer af database relationer

Ved hjælp af fremmede nøgler eller andre kandidatnøgler kan du implementere tre typer af forhold mellem tabeller:

En til en: Denne type forhold tillader kun en post på hver side af forholdet.

Den primære nøgle vedrører kun en post - eller ingen - i en anden tabel. For eksempel har hver ægtefælle i en ægteskab kun en anden ægtefælle. Denne form for forhold kan implementeres i et enkelt bord og bruger derfor ikke en fremmed nøgle.

En-til-mange: Et ét til mange forhold tillader, at en enkelt post i en tabel er relateret til flere poster i en anden tabel.

Overvej en forretning med en database, der har kunder og ordrer tabeller.

En enkelt kunde kan købe flere ordrer, men en enkelt ordre kan ikke knyttes til flere kunder. Ordren Ordre vil derfor indeholde en fremmednøgle, der matchede den primære nøgle i Kunde-tabellen, mens Kunder-tabellen ikke ville have nogen udenlandsk nøgle, der pegede på Ordre-tabellen.

Mange-til-mange: Dette er et komplekst forhold, hvor mange poster i et bord kan linke til mange poster i en anden tabel. For eksempel har vores forretning sandsynligvis ikke kun kunder og ordrer, men har sandsynligvis også brug for et produkttabell.

Igen er forholdet mellem tabellen Kunder og ordrer en-til-mange, men overvej forholdet mellem ordre og produkter-tabellen. En ordre kan indeholde flere produkter, og et produkt kan knyttes til flere ordrer: flere kunder kan indsende en ordre, der indeholder nogle af de samme produkter. Denne slags forhold kræver mindst tre tabeller.

Hvad er databaseforhold vigtige?

Etablering af sammenhængende relationer mellem databasetabeller hjælper med at sikre dataintegritet, hvilket bidrager til database normalisering. For eksempel, hvad hvis vi ikke linker nogen tabeller via en fremmed nøgle og i stedet blot kombinerer dataene i kurser og lærerborde som sådan:

Lærere og kurser
Teacher_IDTEACHER_NAMERute
Teacher_001CarmenBiologi, Math
Teacher_002VeronicaMath
Teacher_003Jorgeengelsk

Dette design er ufleksibel og overtræder det første princip for database normalisering, First Normal Form (1NF), som angiver, at hver tabelcelle skal indeholde et enkelt, diskret datatag.

Eller måske besluttede vi os for blot at tilføje en ny rekord for Carmen for at håndhæve 1NF:

Lærere og kurser
Teacher_IDTEACHER_NAMERute
Teacher_001CarmenBiologi
Teacher_001CarmenMath
Teacher_002VeronicaMath
Teacher_003Jorgeengelsk

Dette er stadig et svagt design, der introducerer unødvendig dobbeltarbejde og hvad der kaldes data indlæg anomalier , hvilket blot betyder, at det kan bidrage til inkonsekvente data.

Hvis en lærer f.eks. Har flere optegnelser, hvad hvis nogle data skal redigeres, men den person, der udfører dataredigering, er ikke klar over, at der findes flere poster? Tabellen vil så indeholde forskellige data for det samme individ uden nogen klar måde at identificere eller undgå.

At bryde denne tabel i to tabeller, lærere og kurser (som visualiseret ovenfor) skaber det rette forhold mellem dataene og hjælper derfor med at sikre datakonsistens og nøjagtighed.