Hva er et databaseforhold?

Innholdsfortegnelse:

Hva er et databaseforhold?
Hva er et databaseforhold?
Anonim

Et forhold etableres mellom to databasetabeller når en tabell bruker en fremmednøkkel som refererer til primærnøkkelen til en annen tabell. Dette er det grunnleggende konseptet bak begrepet relasjonsdatabase.

Hvordan en utenlandsk nøkkel fungerer for å etablere et forhold

En primærnøkkel identifiserer hver post i tabellen unikt. Det er en type kandidatnøkkel som vanligvis er den første kolonnen i en tabell og kan genereres automatisk av databasen for å sikre at den er unik. En fremmednøkkel er en annen kandidatnøkkel (ikke primærnøkkelen) som brukes til å koble en post til data i en annen tabell.

Tenk for eksempel på disse to tabellene som identifiserer hvilken lærer som underviser i hvilket kurs. Her er kurstabellens primærnøkkel Course_ID. Dens fremmednøkkel er Teacher_ID:

Course_ID Course_Name Teacher_ID
Course_001 Biology Teacher_001
Course_002 Math Teacher_002
Course_003 engelsk Teacher_003

Du kan se at fremmednøkkelen i Courses samsvarer med en primærnøkkel i Teachers:

Teacher_ID Teacher_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Vi kan si at fremmednøkkelen Teacher_ID bidro til å etablere et forhold mellom kurs- og lærertabellene.

Image
Image

Typer av databaserelasjoner

Ved å bruke fremmednøkler, eller andre kandidatnøkler, kan du implementere tre typer relasjoner mellom tabeller:

En-til-en

Denne typen relasjoner tillater bare én post på hver side av relasjonen. Primærnøkkelen gjelder bare én post (eller ingen) i en annen tabell. For eksempel, i et ekteskap har hver ektefelle bare én annen ektefelle. Denne typen relasjoner kan implementeres i en enkelt tabell og bruker derfor ikke en fremmednøkkel.

En-til-mange

Et en-til-mange-forhold gjør at en enkelt post i en tabell kan relateres til flere poster i en annen tabell. Vurder en bedrift med en database som har kunde- og ordretabeller.

En enkelt kunde kan kjøpe flere bestillinger, men en enkelt bestilling kunne ikke knyttes til flere kunder. Derfor vil ordretabellen inneholde en fremmednøkkel som samsvarer med primærnøkkelen til Kunder-tabellen, mens Kunder-tabellen ikke har noen fremmednøkkel som peker til Ordretabellen.

Many-to-Many

Dette er et komplekst forhold der mange poster i en tabell kan kobles til mange poster i en annen tabell. For eksempel trenger bedriften vår sannsynligvis kunde- og ordretabeller, og trenger sannsynligvis også en produkttabell.

Igjen, forholdet mellom Kunder og Bestillinger-tabellen er én-til-mange, men vurder forholdet mellom Bestillinger og Produkter-tabellen. En bestilling kan inneholde flere produkter, og et produkt kan være knyttet til flere bestillinger siden flere kunder kan sende inn en bestilling som inneholder noen av de samme produktene. Denne typen relasjoner krever minst tre tabeller.

Hvorfor er databaserelasjoner viktige?

Etablering av konsistente relasjoner mellom databasetabeller bidrar til å sikre dataintegritet, og bidrar til databasenormalisering. For eksempel, hva om vi ikke koblet noen tabeller gjennom en fremmednøkkel og i stedet kombinerte dataene i kurs- og lærertabellene, slik:

Teacher_ID Teacher_Name kurs
Teacher_001 Carmen Biologi, matematikk
Teacher_002 Veronica Math
Teacher_003 Jorge engelsk

Denne utformingen er lite fleksibel og bryter med det første prinsippet for databasenormalisering, First Normal Form, som sier at hver tabellcelle skal inneholde et enkelt, diskret stykke data.

Eller kanskje vi bestemte oss for å legge til en ny rekord for Carmen, for å håndheve 1NF:

Teacher_ID Teacher_Name kurs
Teacher_001 Carmen Biology
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge engelsk

Dette er fortsatt et svakt design, som introduserer unødvendig duplisering og det som kalles datainnsettingsavvik, noe som betyr at det kan bidra til inkonsistente data. For eksempel, hvis en lærer har flere poster, hva om noen data må redigeres, men personen som utfører dataredigeringen ikke innser at det finnes flere poster? Tabellen vil da inneholde forskjellige data for samme individ, uten noen klar måte å identifisere eller unngå det på.

Å bryte denne tabellen i to tabeller, lærere og kurs, skaper det riktige forholdet mellom dataene og bidrar derfor til å sikre datakonsistens og nøyaktighet.

Anbefalt: