Nøgleforskellen mellem fremmednøgle og primærnøgle er, at fremmednøgle er en kolonne eller et sæt kolonner, der refererer til en primærnøgle eller en kandidatnøgle i en anden tabel, mens primærnøgle er en kolonne eller et sæt kolonner der kan bruges til entydigt at identificere en række i en tabel.
En kolonne eller et sæt kolonner, der kan bruges til at identificere eller få adgang til en række eller et sæt rækker i en database, kaldes en nøgle. En primær nøgle i en relationsdatabase er en kombination af kolonner i en tabel, der entydigt identificerer en række i tabellen. Fremmednøgle i en relationsdatabase er et felt i en tabel, der matcher den primære nøgle i en anden tabel. Fremmednøglen bruges til at krydsreferencetabeller.
Hvad er fremmednøgle?
Fremmednøgle er en referencebegrænsning mellem to tabeller. Den identificerer en kolonne eller et sæt kolonner i en tabel, kaldet referencetabellen, der refererer til et sæt kolonner i en anden tabel, kaldet den refererede tabel. Fremmednøglen eller kolonnerne i referencetabellen skal være den primære nøgle eller en kandidatnøgle (en nøgle, der kan bruges som den primære nøgle) i den refererede tabel. Desuden tillader fremmednøgler sammenkædning af data på tværs af flere tabeller. Derfor kan den fremmede nøgle ikke indeholde værdier, der ikke vises i den tabel, den refererer til. Så hjælper referencen fra fremmednøglen med at sammenkæde information i flere tabeller, og dette ville blive væsentligt med normaliserede databaser. Flere rækker i referencetabellen kan referere til en enkelt række i den refererede tabel.
Figur 01: Foreign Key Mapping
I ANSI SQL-standarden definerer FOREIGN KEY-begrænsningen fremmede nøgler. Ydermere er det muligt at definere fremmednøglerne ved oprettelse af selve tabellen. En tabel kan have flere fremmednøgler, og de kan referere til forskellige tabeller.
Hvad er primær nøgle?
Primær nøgle er en kolonne eller en kombination af kolonner, der entydigt definerer en række i en tabel i en relationsdatabase. En tabel kan højst have én primær nøgle. Primær nøgle håndhæver den implicitte NOT NULL-begrænsning. Derfor kan en kolonne med primærnøgle ikke have NULL-værdier i sig. Primær nøgle kan være en normal attribut i tabellen, der garanteres at være unik, såsom et cpr-nummer, eller det kan være en unik værdi genereret af databasestyringssystemet, såsom en Globally Unique Identifier (GUID) i Microsoft SQL Server.
Figur 02: Primær nøgle
Yderligere definerer PRIMARY KEY-begrænsningen i ANSI SQL Standard primære nøgler. Det er også muligt at definere en primær nøgle ved oprettelse af tabellen. Derudover tillader SQL, at den primære nøgle består af en eller flere kolonner, og hver kolonne, der er inkluderet i den primære nøgle, er implicit defineret til at være IKKE NULL. Men nogle databasestyringssystemer kræver, at de primære nøglekolonner udtrykkeligt IKKE er NULL.
Hvad er forskellen mellem fremmednøgle og primærnøgle?
fremmednøgle vs. primærnøgle |
|
Fremmednøgle er en kolonne eller gruppe af kolonner i en relationel databasetabel, der giver en tilknytning mellem data i to tabeller. | Primær nøgle er en speciel relationel databasetabelkolonne eller en kombination af flere kolonner, der gør det muligt entydigt at identificere alle tabelposter. |
NULL | |
Udenlandsk nøgle accepterer NULL-værdi. | Primær nøgleværdi kan ikke være NULL. |
Antal nøgler | |
Tabel kan have flere fremmednøgler. | Tabel kan kun have én primær nøgle. |
Duplikering | |
Tupler kan have en dubletværdi for en fremmednøgleattribut. | To tuples i en relation kan ikke have duplikerede værdier for en primær nøgleattribut. |
Oversigt – Fremmednøgle kontra primærnøgle
Forskellen mellem fremmednøgle og primærnøgle er, at fremmednøgle er en kolonne eller et sæt kolonner, der henviser til en primærnøgle eller en kandidatnøgle i en anden tabel, mens primærnøgle er en kolonne eller et sæt kolonner, der kan bruges til entydigt at identificere en række i en tabel.