Forskellen mellem primær nøgle og fremmed nøgle
Nøgleforskelle mellem primærnøgle vs fremmednøgle
- En primær nøglebegrænsning er en kolonne, der entydigt identificerer hver række i tabellen i relationsdatabasestyringssystemet, mens en fremmednøgle er en kolonne, der skaber en relation mellem to tabeller.
- Den primære nøgle accepterer aldrig null-værdier, hvorimod den fremmede nøgle kan acceptere flere null-værdier.
- Du kan kun have en enkelt primær nøgle i en tabel, mens du kan have flere fremmednøgler i en tabel.
- Værdien af den primære nøgle kan ikke fjernes fra den overordnede tabel, hvorimod værdien af den fremmede nøgle kan fjernes fra den underordnede tabel.
- Ingen to rækker kan have nogen identiske værdier for en primær nøgle; på den anden side kan en fremmednøgle indeholde duplikerede værdier.
- Der er ingen begrænsning for at indsætte værdierne i tabelkolonnen, mens der indsættes en hvilken som helst værdi i fremmednøgletabellen; sikre, at værdien er til stede i en kolonne i en primær nøgle.

Her har jeg analyseret forskellen mellem den primære nøgle og den fremmede nøgle og vil grundigt evaluere deres fordele og ulemper.
Hvad er primærnøgle?
En primær nøglebegrænsning er en kolonne eller gruppe af kolonner, der entydigt identificerer hver række i tabellen i relationsdatabasestyringssystemet. Det kan ikke være en dublet, hvilket betyder, at den samme værdi ikke bør vises mere end én gang i tabellen.
En tabel kan ikke have mere end én primær nøgle. Det primærnøgle kan defineres på kolonne- eller tabelniveau. Hvis du opretter en sammensat primærnøgle, skal den defineres på tabelniveau.
Eksempel på en primær nøgle
Syntaks:
Nedenfor er syntaksen for Primary Key:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Her,
- Table_Name er navnet på den tabel, du skal oprette.
- Column_Name er navnet på den kolonne, der har den primære nøgle.
Eksempel:
| StudID | Rulle nr | Fornavn | Efternavn | |
|---|---|---|---|---|
| 1 | 11 | Tom | Pris | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |
I ovenstående eksempel har vi lavet en elevtabel med kolonner som StudID, Roll No., First Name, Last Name og Email. StudID er valgt som en primær nøgle, fordi det unikt kan identificere andre rækker i tabellen.
Hvorfor bruge Primary Key?
Gennem mine år med håndtering af databasesystemer har jeg bemærket disse ulemper og fordele ved brug af en primær nøgle:
- Hovedformålet med den primære nøgle er at identificere hver eneste post i databasetabellen.
- Du kan bruge en primær nøgle, når du ikke tillader nogen at indtaste null-værdier.
- Hvis du sletter eller opdaterer poster, vil den handling, du har angivet, blive udført for at sikre dataintegriteten.
- Udfør begrænsningshandlingen for at afvise sletnings- eller opdateringshandlingen for den overordnede tabel.
- Data er organiseret i en sekvens af klyngede indekser, når du fysisk organiserer en DBMS-tabel.
Hvad er fremmednøgle?
Fremmednøgle er en kolonne, der skaber en relation mellem to tabeller. Formålet med fremmednøglen er at bevare dataintegriteten og tillade navigation mellem to forskellige forekomster af en enhed. Den fungerer som en krydsreference mellem to tabeller, da den refererer til den primære nøgle i en anden tabel. Hvert forhold i databasen bør understøttes af en fremmednøgle.
Eksempel på fremmednøgle
Syntaks:
Nedenfor er syntaksen for Foreign Key:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Her,
- Parameteren Tabelnavn angiver navnet på den tabel, du vil oprette.
- Parametrene kolonne1, kolonne2... viser de kolonner, der skal tilføjes til tabellen.
- En begrænsning angiver navnet på den begrænsning, du opretter.
- Referencer angiver en tabel med den primære nøgle.
Eksempel:
| Afd.kode | Afd.navn |
|---|---|
| 001 | Videnskab |
| 002 | Engelsk |
| 005 | Computer |
| Lærer-id | Fnavn | Lnavn |
|---|---|---|
| B002 | David | Warner |
| B017 | Sara | Joseph |
| B009 | Mike | brunton |
I ovenstående eksempel har vi to tabeller: en lærer og en afdeling på en skole. Der er dog ingen måde at se, hvilken søgning der fungerer i hvilken afdeling.
I denne tabel kan vi ved at tilføje fremmednøglen i Deptcode til lærernavnet skabe en relation mellem de to tabeller.
| Lærer-id | Afd.kode | Fnavn | Lnavn |
|---|---|---|---|
| B002 | 002 | David | Warner |
| B017 | 002 | Sara | Joseph |
| B009 | 001 | Mike | brunton |
Dette koncept er også kendt som referentiel integritet.
Hvorfor bruge fremmednøgle?
Fra hvad jeg har set, er her de vigtige grunde til at implementere fremmednøgler:
- Fremmednøgler hjælper dig med at migrere enheder ved hjælp af en primær nøgle fra den overordnede tabel.
- A fremmed nøgle giver dig mulighed for at linke to eller flere tabeller sammen.
- Det gør dine databasedata konsistente.
- En fremmednøgle kan bruges til at matche en kolonne eller kombination af kolonner med den primære nøgle i en overordnet tabel.
- SQL-fremmednøglebegrænsning bruges til at sikre, at den overordnede datas referenceintegritet matcher værdierne i den underordnede tabel.
Forskellen mellem primærnøgle og fremmednøgle
Lad mig dele den vigtige forskel mellem en primærnøgle og en fremmednøgle, som jeg personligt har oplevet:

| Sammenligningsgrundlag | Primærnøgle | Fremmed nøgle |
|---|---|---|
| Definition | En primær nøglebegrænsning er en kolonne eller gruppe af kolonner, der entydigt identificerer hver række i tabellen relationelt databasestyringssystem. | En fremmednøgle er en kolonne, der skaber en relation mellem to tabeller. |
| Grundlæggende | Det hjælper dig til entydigt at identificere en post i tabellen. | Det er et felt i tabellen, der er den primære nøgle i en anden tabel. |
| NULL | Primær nøgle accepterer aldrig null-værdier. | En fremmednøgle kan acceptere flere nulværdier. |
| Indeksering | Den primære nøgle er et klynget indeks, og data i DBMS-tabellen er fysisk organiseret i sekvensen af det klyngede indeks. | En fremmednøgle kan ikke automatisk oprette et indeks, klynget eller ikke-klynget. |
| Tælle | Du kan have en enkelt primær nøgle i en tabel. | Du kan have flere fremmednøgler i en tabel. |
| sletning | Værdien af den primære nøgle kan ikke fjernes fra den overordnede tabel. | Værdien af den fremmede nøgle kan fjernes fra den underordnede tabel. |
| Midlertidigt bord | Du kan definere den primære nøgle implicit i de midlertidige tabeller. | Du kan ikke definere fremmednøgler på de lokale eller globale midlertidige tabeller. |
| Relationship | Den primære nøgle er et klynget indeks. | Som standard er det ikke et klynget indeks. |
| Duplikering | Ingen to rækker kan have identiske værdier for en primær nøgle. | En fremmednøgle kan indeholde duplikerede værdier. |
| Indsættelse | Der er ingen begrænsning for at indsætte værdierne i tabelkolonnen. | Mens du indsætter en værdi i fremmednøgletabellen, skal du sikre dig, at værdien er til stede i en kolonne i en primærnøgle. |
Sådan vælger du mellem en primær nøgle og en fremmed nøgle
Ud fra det, vi har set, identificerer primære nøgler entydigt tabelposter, og fremmednøgler forbinder disse indgange på tværs af tabeller, både afgørende for at bevare dataintegriteten og lette effektiv datahentning.
