Primaire sleutel versus buitenlandse sleutel: wat is het verschil?

Inhoudsopgave:

Anonim

Voordat we het verschil leren tussen de primaire sleutel en de externe sleutel, leren we:

Wat zijn sleutels?

Sleutels zijn attributen waarmee u een rij (tuple) in een relatie (tabel) kunt identificeren. Hiermee kunt u de relatie tussen twee tabellen vinden. Met sleutels kunt u een rij in een tabel op unieke wijze identificeren door een combinatie van een of meer kolommen in die tabel. De databasesleutel is ook handig om een ​​uniek record of een unieke rij uit de tabel te vinden.

Wat is databaserelatie?

De databaserelatie bestaat uit koppelingen tussen een of meer tabellen die zijn gemaakt met behulp van join-instructies. Het wordt gebruikt om efficiënt gegevens uit de database op te halen. Er zijn hoofdzakelijk drie soorten relaties: 1) Een-op-een, 2) Een-op-veel, 3) Veel-op-veel.

Wat is de primaire sleutel?

Een primaire sleutelbeperking is een kolom of groep kolommen die elke rij in de tabel van het relationele databasebeheersysteem uniek identificeert. Het mag geen duplicaat zijn, wat betekent dat dezelfde waarde niet meer dan één keer in de tabel mag voorkomen.

Een tabel kan meer dan één primaire sleutel hebben. De primaire sleutel kan op kolom- of tabelniveau worden gedefinieerd. Als u een samengestelde primaire sleutel maakt, moet deze op tabelniveau worden gedefinieerd.

Wat is een externe sleutel?

Vreemde sleutel is een kolom die een relatie tussen twee tabellen creëert. Het doel van de externe sleutel is om de gegevensintegriteit te behouden en om navigatie tussen twee verschillende instanties van een entiteit mogelijk te maken. Het fungeert als een kruisverwijzing tussen twee tabellen omdat het verwijst naar de primaire sleutel van een andere tabel. Elke relatie in de database moet worden ondersteund door een externe sleutel.

BELANGRIJKSTE VERSCHILLEN:

  • Een primaire sleutelbeperking is een kolom die elke rij in de tabel van het relationele databasebeheersysteem uniek identificeert, terwijl externe sleutel een kolom is die een relatie tussen twee tabellen creëert.
  • Primaire sleutel accepteert nooit null-waarden, terwijl externe sleutel meerdere null-waarden kan accepteren.
  • U kunt slechts één primaire sleutel in een tabel hebben, terwijl u meerdere externe sleutels in een tabel kunt hebben.
  • De waarde van de primaire sleutel kan niet uit de bovenliggende tabel worden verwijderd, terwijl de waarde van de waarde van de externe sleutel uit de onderliggende tabel kan worden verwijderd.
  • Geen twee rijen kunnen identieke waarden hebben voor een primaire sleutel, aan de andere kant kan een externe sleutel dubbele waarden bevatten.
  • Er is geen beperking bij het invoegen van de waarden in de tabelkolom terwijl u een waarde in de externe-sleuteltabel invoegt, zorg ervoor dat de waarde aanwezig is in een kolom van een primaire sleutel.

Waarom primaire sleutel gebruiken?

Dit zijn de nadelen / voordelen van het gebruik van de primaire sleutel:

  • Het belangrijkste doel van de primaire sleutel is om elk record in de databasetabel te identificeren.
  • U kunt een primaire sleutel gebruiken als u iemand niet toestaat null-waarden in te voeren.
  • Als u records verwijdert of bijwerkt, wordt de door u gespecificeerde actie ondernomen om de gegevensintegriteit te waarborgen.
  • Voer de beperkingsbewerking uit om de verwijderings- of updatebewerking voor de bovenliggende tabel te weigeren.
  • De gegevens worden georganiseerd in een opeenvolging van geclusterde indexen wanneer u de DBMS-tabel fysiek organiseert.

Waarom een ​​Foreign Key gebruiken?

Hier zijn de belangrijkste redenen om een ​​externe sleutel te gebruiken:

  • Vreemde sleutels helpen u entiteiten te migreren met behulp van een primaire sleutel uit de bovenliggende tabel.
  • Met een externe sleutel kunt u twee of meer tabellen aan elkaar koppelen.
  • Het maakt uw databasegegevens consistent.
  • Een externe sleutel kan worden gebruikt om een ​​kolom of combinatie van kolommen te matchen met een primaire sleutel in een bovenliggende tabel.
  • SQL-externe-sleutelbeperking wordt gebruikt om ervoor te zorgen dat de referentiële integriteit van de bovenliggende gegevens overeenkomt met de waarden in de onderliggende tabel.

Voorbeeld van primaire sleutel

Syntaxis:

Hieronder vindt u de syntaxis van de primaire sleutel:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Hier,

  • Table_Name is de naam van de tabel die u moet maken.
  • Column_Name is de naam van de kolom met de primaire sleutel.

Voorbeeld:

StudID Rol nr Voornaam Achternaam E-mail
1 11 Tom Prijs Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.
2 12 Nick Wright Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.
3 13 Dana Natan Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.

In het bovenstaande voorbeeld hebben we een studententabel gemaakt met kolommen als StudID, Rolnummer, Voornaam, Achternaam en E-mail. StudID is gekozen als primaire sleutel omdat het op unieke wijze andere rijen in de tabel kan identificeren.

Voorbeeld van een externe sleutel

Syntaxis:

Hieronder staat de syntaxis van Foreign Key:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Hier,

  • De parameter Table Name geeft de naam aan van de tabel die u gaat maken.
  • De parameters column1, column2… geven de kolommen weer die aan de tabel moeten worden toegevoegd.
  • Beperking geeft de naam aan van de beperking die u aan het maken bent.
  • Verwijzingen duiden een tabel aan met de primaire sleutel.

Voorbeeld:

DeptCode Afdelingsnaam
001 Wetenschap
002 Engels
005 Computer
Leraar-ID Fname Lnaam
B002 David Warner
B017 Sara Joseph
B009 Mike Brunton

In het bovenstaande voorbeeld hebben we twee tafels, een leraar en een afdeling op een school. Er is echter geen manier om te zien welke zoekopdracht op welke afdeling werkt.

In deze tabel kunnen we een relatie tussen de twee tabellen creëren door de externe sleutel in Deptcode toe te voegen aan de naam van de docent.

Leraar-ID DeptCode Fname Lnaam
B002 002 David Warner
B017 002 Sara Joseph
B009 001 Mike Brunton

Dit concept wordt ook wel Referentiële Integriteit genoemd.

Verschil tussen primaire sleutel en externe sleutel

Hier is het belangrijke verschil tussen de primaire sleutel en de externe sleutel:

Hoofdsleutel Vreemde sleutel
Een primaire sleutelbeperking is een kolom of groep kolommen die elke rij in de tabel van het relationele databasebeheersysteem uniek identificeert. Vreemde sleutel is een kolom die een relatie tussen twee tabellen creëert.
Het helpt u om een ​​record in de tabel uniek te identificeren. Het is een veld in de tabel dat een primaire sleutel is van een andere tabel.
Primaire sleutel accepteert nooit null-waarden. Een externe sleutel kan meerdere null-waarden accepteren.
De primaire sleutel is een geclusterde index en de gegevens in de DBMS-tabel zijn fysiek georganiseerd in de volgorde van de geclusterde index. Een externe sleutel kan niet automatisch een index maken, geclusterd of niet-geclusterd.
U kunt de enkele primaire sleutel in een tabel hebben. U kunt meerdere externe sleutels in een tabel hebben.
De waarde van de primaire sleutel kan niet uit de bovenliggende tabel worden verwijderd. De waarde van de externe sleutelwaarde kan uit de onderliggende tabel worden verwijderd.
U kunt de primaire sleutel impliciet op de tijdelijke tabellen definiëren. U kunt geen externe sleutels definiëren op de lokale of globale tijdelijke tabellen.
Primaire sleutel is een geclusterde index. Standaard is het geen geclusterde index.
Geen twee rijen kunnen identieke waarden hebben voor een primaire sleutel. Een externe sleutel kan dubbele waarden bevatten.
Er is geen beperking bij het invoegen van de waarden in de tabelkolom. Zorg er bij het invoegen van een waarde in de tabel met externe sleutels voor dat de waarde aanwezig is in een kolom van een primaire sleutel.