Clau primària
En el model relacional de bases de dades, una clau primària és una elecció específica d'un conjunt mínim d'atributs (columnes) que especifiquen de manera única una tupla (fila) en una relació (taula).[1] De manera informal, una clau primària és "quins atributs identifiquen un registre" i en casos simples constitueixen un únic atribut: un identificador únic. Més formalment, una clau primària és una elecció de clau candidata (una superclau mínima); qualsevol altra clau candidata és una clau alternativa.[2]
Una clau primària pot consistir en observables del món real, en aquest cas s'anomena clau natural, mentre que un atribut creat per funcionar com a clau i no utilitzat per a la identificació fora de la base de dades s'anomena clau substitutiva. Per exemple, per a una base de dades de persones (d'una nacionalitat determinada), l'hora i el lloc del naixement podrien ser una clau natural. El número d'identificació nacional és un altre exemple d'atribut que es pot utilitzar com a clau natural.[3]
Disseny
[modifica]En termes de bases de dades relacionals, una clau primària no difereix en forma o funció d'una clau que no és primària. A la pràctica, diverses motivacions poden determinar l'elecció d'una clau com a principal sobre una altra. La designació d'una clau primària pot indicar l'identificador "preferit" per a les dades de la taula, o que la clau primària s'ha d'utilitzar per a referències de clau estrangera d'altres taules o pot indicar alguna altra característica tècnica més que semàntica de la taula. Alguns idiomes i programari tenen funcions de sintaxi especials que es poden utilitzar per identificar una clau primària com a tal (per exemple, la restricció PRIMARY KEY en SQL).
El model relacional, tal com s'expressa mitjançant el càlcul relacional i l'àlgebra relacional, no distingeix entre claus primàries i altres tipus de claus. Les claus primàries es van afegir a l'estàndard SQL principalment com a comoditat per al programador d'aplicacions.
Les claus primàries poden ser un nombre enter que s'incrementa, un identificador únic universal (UUID) o es poden generar mitjançant l'algorisme Hi/Lo.[4]
Definició de claus primàries en SQL
[modifica]Les claus primàries es defineixen a l'estàndard ISO SQL, mitjançant la restricció PRIMARY KEY. La sintaxi per afegir aquesta restricció a una taula existent es defineix a SQL:2003 així:
ALTER TABLE <table identifier>
ADD [ CONSTRAINT <constraint identifier> ]
PRIMARY KEY (<column name> [ {, <column name> }... ] )
La clau primària també es pot especificar directament durant la creació de la taula. A l'estàndard SQL, les claus primàries poden consistir en una o diverses columnes. Cada columna que participa en la clau primària es defineix implícitament com NOT NULL. Tingueu en compte que alguns RDBMS requereixen marcar explícitament les columnes de clau primària com NOT NULL.
Claus substitutives
[modifica]En algunes circumstàncies, la clau natural que identifica de manera única una tupla en una relació pot ser complicada d'utilitzar per al desenvolupament de programari. Per exemple, pot incloure diverses columnes o camps de text grans. En aquests casos, es pot utilitzar una clau substituta com a clau primària. En altres situacions, pot haver-hi més d'una clau candidata per a una relació i, òbviament, no es prefereix cap clau candidata. Es pot utilitzar una clau substituta com a clau primària per evitar que una clau candidata prevalgui artificialment sobre les altres.
Referències
[modifica]- ↑ «Add or change a table’s primary key in Access» (en anglès). Microsoft. [Consulta: 20 gener 2020].
- ↑ «Primary Keys in a Database and What Makes a Good Key» (en anglès). [Consulta: 5 novembre 2023].
- ↑ «SQL PRIMARY KEY Constraint» (en anglès americà). [Consulta: 5 novembre 2023].
- ↑ «What is a Primary Key in SQL?» (en anglès americà), 22-10-2020. [Consulta: 5 novembre 2023].