Què són les claus estrangeres a les bases de dades SQL?

Què són les claus estrangeres a les bases de dades SQL?

Les claus externes permeten als administradors de bases de dades identificar fàcilment les diferents connexions que existeixen dins d’un sistema de gestió de bases de dades SQL.





SQL realitza operacions matemàtiques sobre dades dins d’un sistema de gestió de bases de dades. Aquestes bases de dades contenen diferents taules que emmagatzemen dades en una entitat específica. Si teniu una base de dades de lloguer de cotxes, seran clients una entitat (o taula) en aquesta base de dades (que emmagatzemarà totes les dades personals de cada client).





Aquestes taules de bases de dades contenen files i columnes, on cada fila allotja un registre i cada columna conté dades específiques d'atribut.





En un sistema de gestió de bases de dades, cada registre (o fila) ha de ser únic.

Claus primàries

Tot i que s’estipula que cada registre d’una taula ha de ser diferent, no sempre és així. Continuant amb l’exemple de la base de dades de lloguer de vehicles, si la base de dades conté dos clients que porten el nom de John Brown, es podria esperar que un John Brown torni un Mercedes-Benz que ell no llogava.



La creació d’una clau primària mitigarà aquest risc. En un sistema de gestió de bases de dades SQL, una clau principal és un identificador únic que distingeix un registre d’un altre.

per què s’han aturat els serveis de Google Play?

Per tant, tots els registres d’un sistema de gestió de bases de dades SQL haurien de tenir una clau principal.





Ús de claus primàries en una base de dades

Per incloure claus primàries en un sistema de gestió de bases de dades que utilitzen SQL, podeu afegir-les com a atribut normal quan creeu una taula nova. Per tant, la taula dels clients contindrà quatre atributs (o columnes):

  • CarOwnerID (que emmagatzemarà la clau principal)
  • Nom
  • Cognom
  • Número de telèfon

Relacionat: Com es crea una taula a SQL





Ara, tots els registres de clients que entren a la base de dades tindran un número d’identificació únic, a més d’un nom, cognoms i número de telèfon. El número de telèfon no és prou exclusiu per ser una clau principal, perquè, tot i que és exclusiu per a una persona a la vegada, una persona pot canviar-ne el número fàcilment, cosa que significa que ara pertanyeria a una altra persona.

Un registre amb un exemple de clau primària

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

El codi SQL anterior afegirà un registre nou al preexistent Clients taula. La taula següent mostra la nova taula de clients amb els dos registres de John Brown.

La clau estrangera

Ara teniu les claus principals que diferencien de manera única un llogater de vehicles. L'únic problema és que, a la base de dades, no hi ha cap connexió real entre cada John Brown i el cotxe que lloga.

Per tant, encara existeix la possibilitat d’equivocar-se. Aquí és on entren en joc les claus estrangeres. Utilitzar una clau primària per resoldre el problema de l’ambigüitat de la propietat només és possible si la clau primària també funciona com a clau externa.

Què és una clau estrangera?

En un sistema de gestió de bases de dades SQL, una clau externa és un identificador únic o una combinació d'identificadors únics que connecten dues o més taules en una base de dades.

Dels quatre sistemes de gestió de bases de dades SQL existents, el sistema de gestió de bases de dades relacionals és el més popular. A l’hora de decidir quina taula d’una base de dades relacional hauria de tenir una clau externa, primer heu d’identificar quina taula és el subjecte i quin és l’objecte de la seva relació.

Tornant a la base de dades de lloguer de cotxes, per connectar cada client amb el cotxe correcte, haureu d’entendre que un client (el subjecte) lloga un cotxe (l’objecte). Per tant, la clau estrangera hauria d’estar a la taula de vehicles.

El codi SQL que genera una taula amb una clau externa és lleugerament diferent de la norma.

Creació d’una taula amb un exemple de clau estrangera

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Com podeu veure al codi anterior, cal identificar explícitament una clau estrangera com a tal, juntament amb una referència a la clau principal que s'està connectant a la nova taula.

com obrir un document de Word al Mac

Relacionat: El full de trucs Essential SQL Commands per a principiants

Per afegir un registre a la nova taula, haureu d’assegurar-vos que el valor del camp de clau externa coincideixi amb el valor del camp de clau principal de la taula original.

Afegir un registre amb un exemple de clau estrangera

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

El codi anterior crea un registre nou al nou Cotxes taula, produint el resultat següent.

Taula de cotxes

A la taula anterior, podeu identificar el John Brown correcte que lloga un Mercedes-Benz per la clau estrangera del registre.

Avanç de claus estrangeres

Hi ha dues maneres més d’utilitzar una clau estrangera en una base de dades.

Si mireu enrere la definició d’una clau estrangera anterior, veureu que diu que una clau estrangera pot ser un identificador únic o una combinació d’identificadors únics.

Tornant a l’exemple de la base de dades de lloguer de cotxes, veureu que la creació d’un registre nou (del mateix cotxe) cada vegada que un client lloga aquest cotxe derrota l’objectiu del Cotxes taula. Si els cotxes es venen i es venen a un sol client una vegada, la base de dades existent és perfecta; però tenint en compte que els cotxes són de lloguer, hi ha una millor manera de representar aquestes dades.

Tecles compostes

Una clau composta té dos o més identificadors únics. En una base de dades relacional, hi haurà casos en què l’ús d’una única clau estrangera no representarà prou les relacions que hi ha dins d’aquesta base de dades.

A l'exemple del lloguer de cotxes, l'enfocament més pràctic és crear una nova taula que emmagatzemi els detalls del lloguer. Perquè la informació de la taula de lloguer de cotxes sigui útil, s’ha de connectar tant a les taules de cotxes com de clients.

Creació d’una taula amb claus externes compostes

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

El codi anterior representa un punt important; tot i que una taula d'una base de dades SQL pot tenir més d'una clau externa, només pot tenir una única clau primària. Això es deu al fet que només hi ha d’haver una manera única d’identificar un registre.

Cal combinar els tres atributs de la taula per tenir una clau única. Un client pot llogar més d’un cotxe el mateix dia (així ID de client i Data de lloguer no és una bona combinació) més d’un client també pot llogar el mateix cotxe el mateix dia (per tant Número de llicència i Data de lloguer no és una bona combinació).

Tanmateix, la creació d’una clau composta que indiqui quin client, quin cotxe i quin dia fa que sigui una clau única excel·lent. Aquesta clau única representa tant una clau externa composta com una clau primària composta.

què fer amb raspberry pi 2

Claus primàries estrangeres

Ah, sí, les claus primàries estrangeres surten. Tot i que no hi ha un nom oficial, una clau estrangera també pot ser una clau principal a la mateixa taula. Això passa quan es crea una taula nova que conté dades especialitzades sobre una entitat existent (o es registra en una altra taula).

Digueu que Fred (que treballa a l’empresa de lloguer de vehicles) es troba a la base de dades de l’empresa, a la taula d’empleats. Al cap d’uns anys, es converteix en supervisor i s’afegeix a la taula de supervisors.

Fred continua sent un empleat i encara tindrà el mateix número d'identificació. Per tant, l’identificador d’empleat de Fred ara es troba a la taula de supervisors com a clau estrangera, que també es convertirà en una clau principal en aquesta taula (ja que no té sentit crear un nou número d’identificació per a Fred ara que és supervisor).

Ara podeu identificar claus externes a bases de dades SQL

Les claus externes connecten diferents taules dins d’una base de dades SQL. En aquest article podeu veure què és una clau estrangera, com funciona i per què és important tenir-les a una base de dades. També enteneu les formes bàsiques i encara més complexes de les claus externes.

Si creieu que les claus externes són interessants, tindreu un dia de camp quan comenceu a utilitzar el projecte i les operacions de selecció per consultar les vostres bases de dades SQL.

Compartir Compartir Tweet Correu electrònic Més informació sobre com utilitzar el projecte i les operacions de selecció a SQL

Conegueu les bases de dades relacionals SQL comprenent les operacions de projecte i selecció amb aquests exemples.

Llegiu a continuació
Temes relacionats
  • Programació
  • Programació
  • SQL
  • base de dades
Sobre l'autor Kadeisha Kean(21 articles publicats)

Kadeisha Kean és un desenvolupador de programari complet i escriptor tècnic / tecnològic. Té la capacitat diferent de simplificar alguns dels conceptes tecnològics més complexos; la producció de material fàcilment comprensible per a qualsevol novell en tecnologia. L’apassiona escriure, desenvolupar programes interessants i viatjar pel món (a través de documentals).

Més de Kadeisha Kean

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us