Introducció
L'integritat referencial és un concepte fonamental en les bases de dades relacionals que assegura la coherència i la correcció de les dades entre les taules relacionades. Aquest principi garanteix que les relacions entre les taules es mantinguin correctes i que no hi hagi dades orfes o inconsistents.
Conceptes Clau
-
Clau Primària (Primary Key):
- És un camp o conjunt de camps que identifica de manera única cada registre en una taula.
- Exemple: En una taula
clients
, el campclient_id
podria ser la clau primària.
-
Clau Forana (Foreign Key):
- És un camp o conjunt de camps en una taula que enllaça amb la clau primària d'una altra taula.
- Exemple: En una taula
comandes
, el campclient_id
podria ser una clau forana que enllaça ambclient_id
de la taulaclients
.
-
Restriccions d'Integritat Referencial:
- Són regles que asseguren que les relacions entre taules es mantinguin coherents.
- Exemple: No es pot inserir un valor en una clau forana que no existeixi en la clau primària corresponent.
Exemple Pràctic
Creació de Taules amb Clau Primària i Clau Forana
-- Creació de la taula clients CREATE TABLE clients ( client_id INT PRIMARY KEY, nom VARCHAR(100), email VARCHAR(100) ); -- Creació de la taula comandes CREATE TABLE comandes ( comanda_id INT PRIMARY KEY, data DATE, client_id INT, FOREIGN KEY (client_id) REFERENCES clients(client_id) );
Explicació del Codi
-
Taula
clients
:client_id
: Clau primària que identifica de manera única cada client.nom
: Nom del client.email
: Correu electrònic del client.
-
Taula
comandes
:comanda_id
: Clau primària que identifica de manera única cada comanda.data
: Data de la comanda.client_id
: Clau forana que enllaça ambclient_id
de la taulaclients
.
Operacions d'Integritat Referencial
Inserció de Dades
-- Inserció d'un client INSERT INTO clients (client_id, nom, email) VALUES (1, 'Joan', '[email protected]'); -- Inserció d'una comanda per al client amb client_id = 1 INSERT INTO comandes (comanda_id, data, client_id) VALUES (101, '2023-10-01', 1);
Eliminació de Dades
-- Intent d'eliminar un client que té comandes associades DELETE FROM clients WHERE client_id = 1; -- Això fallarà si hi ha una restricció d'integritat referencial que impedeix l'eliminació de clients amb comandes associades.
Actualització de Dades
-- Actualització del client_id en la taula clients UPDATE clients SET client_id = 2 WHERE client_id = 1; -- Això també fallarà si hi ha una restricció d'integritat referencial que impedeix l'actualització de la clau primària.
Errors Comuns i Consells
-
Error: Violació de Clau Forana:
- Descripció: Intentar inserir un valor en una clau forana que no existeix en la clau primària corresponent.
- Solució: Assegura't que el valor existeixi en la taula referenciada abans d'inserir-lo.
-
Error: Eliminació de Registres amb Referències:
- Descripció: Intentar eliminar un registre que està referenciat per una clau forana en una altra taula.
- Solució: Elimina primer els registres que depenen del registre que vols eliminar o utilitza l'opció
ON DELETE CASCADE
si vols que les eliminacions es propaguin automàticament.
Exercici Pràctic
Exercici
-
Crea les taules
productes
icomandes_productes
amb les següents especificacions:productes
:producte_id
(clau primària),nom
,preu
.comandes_productes
:comanda_id
,producte_id
(claus foranes),quantitat
.
-
Assegura't que les claus foranes en
comandes_productes
enllacin correctament amb les claus primàries decomandes
iproductes
.
Solució
-- Creació de la taula productes CREATE TABLE productes ( producte_id INT PRIMARY KEY, nom VARCHAR(100), preu DECIMAL(10, 2) ); -- Creació de la taula comandes_productes CREATE TABLE comandes_productes ( comanda_id INT, producte_id INT, quantitat INT, FOREIGN KEY (comanda_id) REFERENCES comandes(comanda_id), FOREIGN KEY (producte_id) REFERENCES productes(producte_id) );
Conclusió
L'integritat referencial és essencial per mantenir la coherència i la integritat de les dades en una base de dades relacional. Mitjançant l'ús de claus primàries i foranes, es poden establir relacions sòlides entre les taules, evitant així dades orfes i inconsistents. Amb la pràctica i la comprensió d'aquests conceptes, es poden dissenyar bases de dades robustes i fiables.
Fonaments de Bases de Dades
Mòdul 1: Introducció a les Bases de Dades
- Conceptes Bàsics de Bases de Dades
- Tipus de Bases de Dades
- Història i Evolució de les Bases de Dades
Mòdul 2: Bases de Dades Relacionals
Mòdul 3: Bases de Dades No Relacionals
- Introducció a NoSQL
- Tipus de Bases de Dades NoSQL
- Comparació entre Bases de Dades Relacionals i No Relacionals
Mòdul 4: Disseny d'Esquemes
- Principis de Disseny d'Esquemes
- Diagrames Entitat-Relació (ER)
- Transformació de Diagrames ER a Esquemes Relacionals