logo

Clau estrangera al SGBD

Una clau estrangera és diferent d'una superclau, clau candidata o clau primària perquè una clau estrangera és la que s'utilitza per enllaçar dues taules o crear connectivitat entre les dues.

Aquí, en aquesta secció, parlarem de la clau estrangera, el seu ús i veurem alguns exemples que ens ajudaran a entendre el funcionament i l'ús de la clau estrangera. També veurem la seva implementació pràctica en una base de dades, és a dir, creant i eliminant una clau estrangera en una taula.

Què és una clau estrangera

Una clau estrangera és la que s'utilitza per enllaçar dues taules mitjançant la clau primària. Significa que les columnes d'una taula apunten a l'atribut de clau primària de l'altra taula. A més, vol dir que si qualsevol atribut s'estableix com a atribut de clau primària funcionarà en una altra taula com a atribut de clau estrangera. Però cal saber que una clau estrangera no té res a veure amb la clau primària.

Ús de la clau estrangera

L'ús d'una clau estrangera és simplement enllaçar els atributs de dues taules amb l'ajuda d'un atribut de clau primària. Per tant, s'utilitza per crear i mantenir la relació entre les dues relacions.

Exemple de clau estrangera

Parlem d'un exemple per entendre el funcionament d'una clau estrangera.

mida de python

Considereu dues taules Estudiant i Departament amb els seus atributs respectius tal com es mostra a l'estructura de la taula següent:

símbol de derivada parcial làtex
Clau estrangera al SGBD
Clau estrangera al SGBD

A les taules, un atribut, es pot veure, és comú, és a dir Stud_Id , però té restriccions clau diferents per a ambdues taules. A la taula Student, el camp Stud_Id és a clau primària perquè identifica de manera única tots els altres camps de la taula Estudiant. D'altra banda, Stud_Id és a clau estrangera atribut per a la taula Departament perquè actua com a atribut clau principal per a la taula Estudiant. Significa que tant la taula Estudiant com el Departament estan enllaçades entre elles a causa de l'atribut Stud_Id.

A la figura que es mostra a continuació, podeu veure l'estructura següent de la relació entre les dues taules.

Clau estrangera al SGBD

Nota: La integritat referencial en DBMS es desenvolupa a partir del concepte de clau estrangera. És clar que una clau primària és una clau existent única i una clau estrangera sempre fa referència a una clau primària en alguna altra taula, en la qual la taula que conté la clau primària es coneix com a taula de referència o taula pare per a l'altra taula que té la clau estrangera.

Creació de restriccions de clau estrangera

A CREAR TAULA

A continuació es mostra la sintaxi que ens farà aprendre la creació d'una clau estrangera en una taula:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Així, d'aquesta manera, podem establir una clau estrangera per a una taula a la base de dades MYSQL.

En cas de crear una clau estrangera per a una taula al servidor SQL o Oracle, funcionarà la sintaxi següent:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

A ALTER TABLE

A continuació es mostra la sintaxi per crear una restricció de clau estrangera a ALTER TABLE:

 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Deixant caure la clau estrangera

Per eliminar una clau estrangera, hi ha una sintaxi que es descriu a continuació que es pot utilitzar:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Així, d'aquesta manera, podem deixar anar una clau estrangera utilitzant l'ALTER TABLE a la base de dades MYSQL.

Punt a recordar

Quan deixeu caure la clau estrangera, cal tenir cura de la integritat de les taules connectades mitjançant una clau estrangera. En cas que feu canvis en una taula i pertorbeu la integritat d'ambdues taules, pot ser que mostri certs errors a causa d'una connectivitat incorrecta entre les dues taules.

bucle for a java

Accions Referencials

Hi ha algunes accions que estan enllaçades amb les accions realitzades pel titular de la taula de clau estrangera:

1) Cascada

system.out.println

Quan suprimim files de la taula pare (és a dir, la que té la clau primària), també s'eliminen les mateixes columnes de l'altra taula (és a dir, la que conté una clau estrangera). Així, l'acció es coneix com Cascada .

2) Establiu NULL

Aquesta acció referencial manté la integritat referencial d'ambdues taules. Quan manipulem/suprimim una fila de referència a la taula pare/referenciada, a la taula fill (taula amb clau estrangera), el valor d'aquesta fila de referència s'estableix com a NULL. Aquesta acció referencial realitzada es coneix com Estableix NULL .

3) Establiu DEFAULT

cadena ti int

Aquesta acció té lloc quan s'actualitzen els valors de la fila de referència de la taula pare, o s'elimina la fila, els valors de la taula secundària s'estableixen als valors predeterminats de la columna.

4) Restringir

És la restricció en què el valor de la fila a la qual es fa referència a la taula pare no es pot modificar o suprimir tret que no es faci referència per la clau estrangera a la taula fill. Per tant, és una acció referencial normal d'una clau estrangera.

5) No Action

També és una restricció de la clau estrangera, però només s'implementa després d'intentar modificar o eliminar la fila de referència de la taula pare.

6) Disparadors

Totes aquestes i altres accions de referència s'implementen bàsicament com a activadors on les accions d'una clau estrangera són molt semblants o gairebé semblants als activadors definits per l'usuari. Tanmateix, en alguns casos, les accions de referència ordenades es substitueixen pels seus activadors equivalents definits per l'usuari per garantir l'execució correcta del disparador.