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

  1. 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 camp client_id podria ser la clau primària.
  2. 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 camp client_id podria ser una clau forana que enllaça amb client_id de la taula clients.
  3. 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

  1. Taula clients:

    • client_id: Clau primària que identifica de manera única cada client.
    • nom: Nom del client.
    • email: Correu electrònic del client.
  2. 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 amb client_id de la taula clients.

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

  1. 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.
  2. 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

  1. Crea les taules productes i comandes_productes amb les següents especificacions:

    • productes: producte_id (clau primària), nom, preu.
    • comandes_productes: comanda_id, producte_id (claus foranes), quantitat.
  2. Assegura't que les claus foranes en comandes_productes enllacin correctament amb les claus primàries de comandes i productes.

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.

© Copyright 2024. Tots els drets reservats