Verschil tussen primaire sleutel en buitenlandse sleutel

Belangrijkste verschillen tussen primaire sleutel en buitenlandse sleutel

  • Een primaire sleutelbeperking is een kolom die elke rij in de tabel van het relationele databasebeheersysteem op unieke wijze identificeert, terwijl een externe sleutel een kolom is die een relatie tussen twee tabellen creëert.
  • De primaire sleutel accepteert nooit nulwaarden, terwijl de externe sleutel meerdere nulwaarden 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 externe sleutel wel uit de onderliggende tabel kan worden verwijderd.
  • Geen twee rijen kunnen identieke waarden voor een primaire sleutel hebben; aan de andere kant kan een externe sleutel dubbele waarden bevatten.
  • Er is geen beperking voor het invoegen van de waarden in de tabelkolom tijdens het invoegen van een waarde in de externe sleuteltabel; zorg ervoor dat de waarde aanwezig is in een kolom van een primaire sleutel.
Verschil tussen primaire sleutel en buitenlandse sleutel
Verschil tussen primaire sleutel en buitenlandse sleutel

Hier heb ik het verschil tussen de primaire sleutel en de externe sleutel geanalyseerd en zal ik de voor- en nadelen ervan uitgebreid evalueren.

Wat is primaire sleutel?

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

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

Voorbeeld van een primaire sleutel

Syntax:

Hieronder vindt u de syntaxis van de primaire sleutel:

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

Hier

  • Tabelnaam is de naam van de tabel die u moet maken.
  • Kolomnaam is de naam van de kolom met de primaire sleutel.

Voorbeeld:

StudID Rol nr Voornaam Achternaam E-mail
1 11 Tom Prijs abc@gmail.com
2 12 Nick Wright xyz@gmail.com
3 13 Dana Nathan mno@yahoo.com

In het bovenstaande voorbeeld hebben we een studententabel gemaakt met kolommen als StudID, Roll No., First Name, Last Name en Email. StudID wordt als primaire sleutel gekozen omdat deze op unieke wijze andere rijen in de tabel kan identificeren.

Waarom primaire sleutel gebruiken?

Gedurende de jaren dat ik met databasesystemen heb gewerkt, heb ik de volgende nadelen en voordelen opgemerkt bij het gebruik van een 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 niet toestaat dat iemand nulwaarden invoert.
  • Als u records verwijdert of bijwerkt, wordt de door u opgegeven actie ondernomen om de gegevensintegriteit te garanderen.
  • Voer de beperking uit operaom het verwijderen of bijwerken te weigeren operavoor de bovenliggende tabel.
  • Gegevens zijn georganiseerd in een reeks van clustered-indexen wanneer u fysiek een DBMS-tabel organiseert.

Wat is buitenlandse sleutel?

Foreign key is een kolom die een relatie tussen twee tabellen creëert. Het doel van de Foreign key is om de gegevensintegriteit te behouden en navigatie tussen twee verschillende exemplaren 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.

Voorbeeld van een buitenlandse sleutel

Syntax:

Hieronder vindt u de syntaxis van 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) ...);

Hier

  • De parameter Tabelnaam geeft de naam aan van de tabel die u gaat maken.
  • De parameters kolom1, kolom2… geven de kolommen weer die aan de tabel moeten worden toegevoegd.
  • Een beperking geeft de naam aan van de beperking die u maakt.
  • Verwijzingen geven een tabel aan met de primaire sleutel.

Voorbeeld:

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

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

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

Leraar-ID DeptCode Fnaam Lnaam
B002 002 David Warner
B017 002 Sara Jozef
B009 001 Mike Brunton

Dit concept wordt ook wel referentiële integriteit genoemd.

Waarom een ​​buitenlandse sleutel gebruiken?

Van wat ik heb gezien, zijn hier de belangrijke redenen om externe sleutels te implementeren:

  • Met externe sleutels kunt u entiteiten migreren met behulp van een primaire sleutel uit de bovenliggende tabel.
  • A vreemde sleutel Hiermee 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 de primaire sleutel in een bovenliggende tabel.
  • SQL-beperking voor externe sleutels wordt gebruikt om ervoor te zorgen dat de referentiële integriteit van de bovenliggende gegevens overeenkomt met de waarden in de onderliggende tabel.

Verschil tussen primaire sleutel en externe sleutel

Laat me het belangrijke verschil tussen een primaire sleutel en een externe sleutel delen, zoals ik persoonlijk heb ervaren:

Primaire sleutel versus buitenlandse sleutel
Primaire sleutel versus buitenlandse sleutel
Vergelijkingsbasis Hoofdsleutel Vreemde sleutel
Definitie Een primaire sleutelbeperking is een kolom of groep kolommen die elke rij in de tabel op unieke wijze identificeert relationeel databasebeheersysteem. Een externe sleutel is een kolom die een relatie tussen twee tabellen tot stand brengt.
Basic Het helpt u een record in de tabel uniek te identificeren. Het is een veld in de tabel dat de primaire sleutel is van een andere tabel.
NULL Primaire sleutel accepteert nooit nulwaarden. Een externe sleutel kan meerdere nulwaarden accepteren.
Indexeren De primaire sleutel is a clustered-index, en gegevens in de DBMS-tabel zijn fysiek georganiseerd in de volgorde van de clustered-index. Een externe sleutel kan niet automatisch een index maken, clustered of niet-clustered..
Tellen U kunt één primaire sleutel in een tabel hebben. U kunt meerdere externe sleutels in een tabel hebben.
verwijdering De waarde van de primaire sleutel kan niet uit de bovenliggende tabel worden verwijderd. De waarde van de externe sleutel kan uit de onderliggende tabel worden verwijderd.
Tijdelijke tafel U kunt de primaire sleutel impliciet definiëren in de tijdelijke tabellen. U kunt geen externe sleutels definiëren voor de lokale of globale tijdelijke tabellen.
Verhouding De primaire sleutel is a clustered-index. Standaard is dit geen clustered-index.
Verdubbeling Geen twee rijen kunnen identieke waarden hebben voor een primaire sleutel. Een externe sleutel kan dubbele waarden bevatten.
Invoeging Er is geen beperking voor het invoegen van de waarden in de tabelkolom. Zorg er bij het invoegen van een waarde in de externe sleuteltabel voor dat de waarde aanwezig is in een kolom van een primaire sleutel.

Hoe u kunt kiezen tussen een primaire sleutel en een externe sleutel

Van wat we hebben gezien, identificeren primaire sleutels tabelgegevens op unieke wijze, en externe sleutels verbinden deze gegevens over tabellen heen, beide van cruciaal belang voor het behoud van de gegevensintegriteit en het faciliteren van efficiënt ophalen van gegevens.