Kan een tafel meerdere primaire sleutels hebben?

Ik ben op dit moment erg in de war, misschien kun je me helpen het probleem beter te begrijpen met betrekking tot de vraag of een tabel twee primaire sleutels kan hebben, zo ja, hoe dan? En zo nee, waarom dan?


Antwoord 1, autoriteit 100%

Je vraagt of je meer dan één primaire sleutel veldmag hebben en dat kan zeker. U kunt slechts één primaire sleutel hebben, maar die kan uit zoveel kolommen bestaan als u nodig hebt om uw rijen uniek te identificeren.

Gebruik zoiets als dit wanneer u uw tabel maakt:

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) 

waarbij P_Tden LastNamekolommen in uw tabel zijn.

Als u denkt dat u meer dan één primaire sleutel wilt, is het antwoord ‘niet echt’. U kunt slechts één primaire sleutel hebben. U kunt echter zoveel indexen hebben als u wilt met een unieke beperking. Een unieke index doet vrijwel hetzelfde als een primaire sleutel.

bijvoorbeeld:-

CREATE TABLE Persons
(
   P_Id int NOT NULL,
   LastName varchar(255) NOT NULL,
   FirstName varchar(255),
   Address varchar(255),
   City varchar(255),
   CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

Opmerking: in het bovenstaande voorbeeld is er slechts EEN PRIMAIRE SLEUTEL (pk_PersonID). De waarde van de pk_PersonIDbestaat echter uit twee kolommen (P_Iden LastName).


Antwoord 2, autoriteit 44%

Nee U kunt geen twee primaire sleutels in één tabel hebben, maar u kunt wel een samengestelde primaire sleutel hebben

Omdat de primaire sleutel een identiteit voor de rij is en er geen twee ID’s voor een rij kunnen zijn.


Antwoord 3, autoriteit 12%

Een tabel kan veel sleutels hebben, maar volgens afspraak wordt slechts één sleutel per tabel aangeduid als een “primaire” sleutel. Meestal kan dit de sleutel zijn die wordt beschouwd als de “voorkeursidentificatie” voor de informatie in die tabel of het kan een sleutel zijn die door de ontwerper van de tabel is uitgekozen voor een ander specifiek doel.

In principe kan elke functie of eigenschap die u associeert met de sleutel die als “primair” wordt aangeduid, net zo goed aan elke andere sleutel worden gekoppeld. Daarom zou u voor veel praktische doeleinden meer dan één dergelijke “primaire” sleutel kunnen aanwijzen als u dat wilt, maar alleen als de beperkingen van een bepaalde DBMS dit toelaten.

Onder het relationele datamodel zijn alle sleutels gelijk en wordt er geen speciale functie gegeven aan primaire sleutels (in feite verwees het relationele gebruik van de term primaire sleuteloorspronkelijk naar elkeem>en allesleutels van een relatie en niet slechts één sleutel). Helaas respecteren veel DBMS’en dit principe niet en kunnen ze bepaalde functies beperken tot één en slechts één sleutel van een tabel, waardoor het nodig is selectief te zijn over welke sleutel als primair wordt aangewezen. Het antwoord op uw vraag zou dus in principe JA moeten zijn. Wanneer u dit in een bepaalde SQL DBMS moet bereiken, is het eigenlijke antwoord: dat hangt ervan af.


Antwoord 4, autoriteit 9%

U kunt maar 1 primaire sleutel hebben – het bereik van sleutels die mogelijk allemaal de primaire sleutel kunnen zijn, kan worden aangeduid als kandidaatsleutels. Degene die u selecteert is de primaire sleutel, de andere alternatieve sleutels kunnen worden geïmplementeerd als unieke beperkingen / indexen.

Dus hoewel er maar 1 primaire sleutel is, kun je nog steeds de primitiviteit van andere velden / combinaties van velden garanderen met behulp van de unieke beperking / index.


Antwoord 5, autoriteit 9%

Nee. De tabel heeft alleen een primaire sleutel. Maar die primaire sleutel kan meerdere velden bevatten. Betekent dat wanneer u een tabel maakt en wanneer u de primaire sleutel vermeldt, u meer dan één kolom kunt toevoegen die u wilt.
bijvoorbeeld

CREATE TABLE table_name ( col1 Datatype, col2 Datatype,col3 Datatype, col4 Datatype, PRIMAIRE SLEUTEL (col1,col2,col3) )

Op deze manier kunt u de primaire sleutel in een enkele tabel toevoegen


Antwoord 6, autoriteit 3%

Op een tabel kunt u indexenmaken, waarmee de interne database-engine de inhoud van de betreffende kolommen (1 tot veel) kan verwerken voor eenvoudig opzoeken. Omdat de engine op dat moment de inhoud van de velden al evalueert en sorteert, kan hij ook eenvoudig zorgen voor uniciteit van de waarden. Een indexkan dus 1 tot vele rijen beslaan en optioneel ook uniek zijn.

Een primaire sleutelis een theoretisch optionele, maar in de praktijk verplichte, markering op een specifieke index dat het de eeuwig unieke manier is om naar een specifieke rij in de tabel te verwijzen. Het is meestal een GUID of een auto-increment integer (identityin SQL Server). De primaire sleutel zelf is uniek voor een bepaalde tabel en dwingt per definitie een unieke beperking af, maar kan optioneel meerdere rijen beslaan (een spannedindex/sleutel).

Je zou bijvoorbeeld een verbindingstabel kunnen hebben met slechts 2 velden, die beide refererende sleutels zijn, en samen de primaire sleutel/index van de tabel vormen.


Antwoord 7, autoriteit 3%

U kunt proberen FOREIGN KEY is een veld (of verzameling velden) in de ene tabel die verwijst naar de PRIMARY KEY in een andere tabel.


Antwoord 8

Nee. U kunt niet meer dan 1 primaire sleutel in de tabel gebruiken. Daarvoor heeft u een samengestelde sleutel die een combinatie is van meerdere velden.


Antwoord 9

Omdat u niet meer dan één kolom als primaire sleutel kunt definiëren, zoals hieronder

create table test1 (col1 numeric(10) primary key, col2 numeric(10) primary key 
,col3 numeric(10) primary key, col4 numeric(10)) 

Het moet een composietsleutel zijn. Ja, we kunnen meer dan één kolom als primaire sleutel hebben om enkele bedrijfsvereisten op te lossen. Primaire toetsen zorgen ervoor dat de kolom (en) geen dubbele waarden heeft, null in de tabel.

Hieronder staat de SQL om een tabel met een composiet primaire sleutel

te maken

CREATE TABLE track( 
col1 numeric(10) , col2 numeric(10) ,col3 numeric(10) primary key, col4 numeric(10), 
PRIMARY KEY (col1,col2,col3) 
)

Antwoord 10

Table track maken (
Col1 Numeriek (10), Col2 Numeriek (10), Col3 Numeriek (10), Col4 Numeriek (10),
Primaire sleutel (Col1, Col2, Col3)
)

Other episodes