Databastermerna relationell och relation beskriver hur data i tabeller hänger ihop. En relationsdatabas består av en serie av två eller flera tabeller länkade med en specifik nyckel. En relationsdatabas skiljer sig från ostrukturerade databaser, som är vanliga i big data-initiativ. Relationsdatabaser tenderar att kräva strikta regler om hur tabeller definieras och vad som utgör en giltig relation mellan tabeller.
Typer av databasrelationer
Relationer låter dig beskriva kopplingarna mellan databastabeller på kraftfulla sätt. Dessa relationer kan sedan utnyttjas för att utföra kraftfulla korstabellsfrågor, kända som JOINs.
Det finns tre typer av databasrelationer, var och en namngiven enligt antalet tabellrader som är involverade i relationen. Var och en av dessa tre relationstyper finns mellan två tabeller.
- En-till-en-relationer uppstår när varje post i den första tabellen bara har en motsvarighet i den andra tabellen. En-till-en-relationer används sällan eftersom det ofta är mer effektivt att lägga all information i en enda tabell. Vissa databasdesigners drar fördel av detta förhållande genom att skapa tabeller som innehåller en delmängd av data från en annan tabell.
- En-till-många-relationer är den vanligaste typen av databasrelationer. De inträffar när varje post i tabell A motsvarar en eller flera poster i tabell B, men varje post i tabell B motsvarar endast en post i tabell A. Till exempel, förhållandet mellan en Lärartabell och en Elevtabell i en grundskola Databasen skulle sannolikt vara en en-till-många-relation eftersom varje elev bara har en lärare, men varje lärare har flera elever. Denna en-till-många-design hjälper till att eliminera duplicerad data.
- Många-till-många-relationer uppstår när varje post i tabell A motsvarar en eller flera poster i tabell B, och varje post i tabell B motsvarar en eller flera poster i tabell A. Till exempel skulle förhållandet mellan en lärartabell och en kurstabell troligen vara många-till-många eftersom varje lärare kan instruera mer än en kurs, och varje kurs kan ha mer än en lärare.
Bottom Line
Självreferensrelationer uppstår när det bara finns en tabell inblandad. Ett vanligt exempel är en tabell för anställda som innehåller information om chefen för varje anställd. Varje handledare är också anställd och har en handledare. I det här fallet finns det en en-till-många självreferensrelation, eftersom varje anställd har en arbetsledare, men varje arbetsledare kan ha mer än en anställd.
Skapa relationer med utländska nycklar
Du skapar relationer mellan tabeller genom att ange en främmande nyckel. Den här nyckeln talar om för relationsdatabasen hur tabellerna är relaterade. I många fall innehåller en kolumn i tabell A primärnycklar som refereras från tabell B.
Tänk på exemplet med tabellerna för lärare och elever. Lärartabellen innehåller ett ID, ett namn och en kurskolumn:
Instruktörs-ID | Teacher_Name | Kurs |
001 | John Doe | engelska |
002 | Jane Schmoe | Math |
Studenttabellen innehåller ett ID, namn och en kolumn för främmande nyckel:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolumnen Teacher_FK i Elevtabellen refererar till det primära nyckelvärdet för en lärare i Lärartabellen. Databasdesigners använder ofta PK eller FK i kolumnnamnet för att identifiera en primärnyckel eller främmande nyckelkolumn.
De här två tabellerna illustrerar en en-till-många-relation mellan lärarna och eleverna.
Relationer och referensintegritet
När du har lagt till en främmande nyckel till en tabell, skapa en databasrestriktion som upprätthåller referensintegritet mellan de två tabellerna. Detta steg säkerställer att relationerna mellan tabellerna förblir konsekventa. När en tabell har en främmande nyckel till en annan tabell, kräver referensintegritet att alla främmande nyckelvärden i tabell B måste referera till en befintlig post i tabell A.
Implementera relationer
Beroende på din databas kommer du att implementera relationer mellan tabeller på olika sätt. Microsoft Access tillhandahåller en guide som låter dig länka tabeller och även upprätthålla referensintegritet.
Om du skriver SQL direkt, skapa först tabellen Lärare och deklarera en ID-kolumn som primärnyckel:
CREATE TABLE Lärare (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
När du skapar elevtabellen, förklarar du att Teacher_FK-kolumnen är en främmande nyckel som refererar till InstructorID-kolumnen 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));
Använda relationer för att gå med i tabeller
När du har skapat en eller flera relationer i din databas kan du utnyttja deras kraft genom att använda SQL JOIN-frågor för att kombinera information från flera tabeller. Den vanligaste typen av join är en SQL INNER JOIN, som är en enkel join. Denna typ av koppling returnerar alla poster som uppfyller kopplingsvillkoret från en eller flera tabeller.
Detta JOIN-villkor returnerar till exempel Student_Name, Teacher_Name och Course, där den främmande nyckeln i Elever-tabellen matchar primärnyckeln i Teachers-tabellen:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Det här uttalandet producerar en tabell ungefär så här:
Student_Name | Teacher_Name | Kurs |
Lowell Smith | John Doe | engelska |
Brian Short | John Doe | engelska |
Corky Mendez | Jane Schmoe | Math |
Monica Jones | John Doe | engelska |