Databasebegrepene relasjonell og relasjon beskriver måten data i tabeller henger sammen. En relasjonsdatabase består av en serie med to eller flere tabeller koblet sammen med en bestemt nøkkel. En relasjonsdatabase skiller seg fra ustrukturerte databaser, som er vanlige i big data-initiativer. Relasjonsdatabaser har en tendens til å kreve strenge regler for hvordan tabeller defineres og hva som utgjør et gyldig forhold mellom tabeller.
Typer av databaserelasjoner
Relasjoner lar deg beskrive forbindelsene mellom databasetabeller på kraftige måter. Disse relasjonene kan deretter utnyttes til å utføre kraftige krysstabellspørringer, kjent som JOINs.
Det er tre typer databaserelasjoner, hver navngitt i henhold til antall tabellrader som er involvert i relasjonen. Hver av disse tre relasjonstypene eksisterer mellom to tabeller.
- En-til-en-relasjoner oppstår når hver oppføring i den første tabellen har bare én motpart i den andre tabellen. En-til-en-relasjoner brukes sjelden fordi det ofte er mer effektivt å sette all informasjon i en enkelt tabell. Noen databasedesignere utnytter dette forholdet ved å lage tabeller som inneholder et delsett av dataene fra en annen tabell.
- En-til-mange-relasjoner er den vanligste typen databaserelasjoner. De oppstår når hver post i tabell A tilsvarer én eller flere poster i tabell B, men hver post i tabell B tilsvarer bare én post i tabell A. For eksempel forholdet mellom en lærertabell og en elevtabell på en barneskole database vil sannsynligvis være en en-til-mange-relasjon fordi hver elev har bare én lærer, men hver lærer har flere elever. Denne en-til-mange-designen bidrar til å eliminere dupliserte data.
- Mange-til-mange-relasjoner oppstår når hver post i tabell A tilsvarer én eller flere poster i tabell B, og hver post i tabell B tilsvarer én eller flere poster i tabell A. For eksempel vil forholdet mellom en lærertabell og en kurstabell sannsynligvis være mange-til-mange fordi hver lærer kan instruere mer enn ett kurs, og hvert kurs kan ha mer enn én instruktør.
bunnlinjen
Selvrefererende relasjoner oppstår når det bare er én tabell involvert. Et vanlig eksempel er en Ansatte-tabell som inneholder informasjon om lederen til hver ansatt. Hver veileder er også en ansatt og har en veileder. I dette tilfellet er det et en-til-mange selvrefererende forhold, ettersom hver ansatt har én veileder, men hver veileder kan ha mer enn én ansatt.
Opprette relasjoner med utenlandske nøkler
Du oppretter relasjoner mellom tabeller ved å spesifisere en fremmednøkkel. Denne nøkkelen forteller relasjonsdatabasen hvordan tabellene er relatert. I mange tilfeller inneholder en kolonne i tabell A primærnøkler som er referert til fra tabell B.
Tenk på eksemplet med tabellene for lærere og elever. Lærertabellen inneholder en ID, et navn og en kurskolonne:
InstructorID | Teacher_Name | Course |
001 | John Doe | engelsk |
002 | Jane Schmoe | Math |
Studenter-tabellen inneholder en ID, navn og en fremmednøkkelkolonne:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolonnen Teacher_FK i elevtabellen refererer til primærnøkkelverdien til en instruktør i lærertabellen. Databasedesignere bruker ofte PK eller FK i kolonnenavnet for å identifisere en primærnøkkel eller fremmednøkkelkolonne.
Disse to tabellene illustrerer et en-til-mange forhold mellom lærerne og elevene.
Relasjoner og referanseintegritet
Etter å ha lagt til en fremmednøkkel til en tabell, lag en databasebegrensning som fremtvinger referanseintegritet mellom de to tabellene. Dette trinnet sikrer at relasjoner mellom tabeller forblir konsistente. Når en tabell har en fremmednøkkel til en annen tabell, krever referanseintegritet at enhver fremmednøkkelverdi i tabell B må referere til en eksisterende post i tabell A.
Implementering av relasjoner
Avhengig av databasen din, vil du implementere relasjoner mellom tabeller på forskjellige måter. Microsoft Access tilbyr en veiviser som lar deg koble tabeller og også håndheve referanseintegritet.
Hvis du skriver SQL direkte, lag først tabellen Lærere, og erklær en ID-kolonne som primærnøkkel:
CREATE TABLE Teachers (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
Når du oppretter Elev-tabellen, erklærer du Teacher_FK-kolonnen som en fremmednøkkel som refererer til InstructorID-kolonnen i Teachers'-tabellen:
CREATE TABLE Studenter (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Teachers)(InstructorID));
Bruke relasjoner for å bli med i tabeller
Etter å ha opprettet en eller flere relasjoner i databasen din, utnytte kraften deres ved å bruke SQL JOIN-spørringer for å kombinere informasjon fra flere tabeller. Den vanligste typen join er en SQL INNER JOIN, som er en enkel join. Denne typen sammenføyning returnerer alle poster som oppfyller sammenføyningsbetingelsen fra én eller flere tabeller.
For eksempel returnerer denne JOIN-betingelsen Student_Name, Teacher_Name og Course, der fremmednøkkelen i Students-tabellen samsvarer med primærnøkkelen i Teachers-tabellen:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Denne setningen produserer en tabell som dette:
Student_Name | Teacher_Name | Course |
Lowell Smith | John Doe | engelsk |
Brian Short | John Doe | engelsk |
Corky Mendez | Jane Schmoe | Math |
Monica Jones | John Doe | engelsk |