Sobes.tech
Junior

Comment sont configurées les relations entre les tables dans les bases de données relationnelles?

sobes.tech IA

Réponse de l'IA

Dans les bases de données relationnelles, les relations entre les tables sont configurées à l'aide de clés étrangères (Foreign Keys).

Une clé étrangère est une colonne ou un ensemble de colonnes dans une table qui fait référence à la clé primaire (Primary Key) d'une autre table. Elle établit une relation logique entre les enregistrements de deux tables.

Lors de la configuration de la relation :

  1. La clé primaire est définie dans la table "parente" (Parent). La clé primaire identifie de manière unique chaque enregistrement.
  2. Dans la table "fille" (Child), une colonne (ou un ensemble de colonnes) est créée pour servir de clé étrangère.
  3. Cette colonne dans la table "fille" est liée à la clé primaire de la table "parente".
  4. Des contraintes d'intégrité des données sont établies :
    • REFERENCES : Indique à quelle table et colonne (clé primaire) la clé étrangère fait référence.
    • ON UPDATE behavior : Détermine ce qui se passe avec les enregistrements dans la table fille lors de la modification de la clé primaire dans la table parente. Les options sont :
      • CASCADE : Les modifications sont appliquées en cascade aux enregistrements enfants.
      • SET NULL : Les valeurs de la clé étrangère dans la table fille sont mises à NULL.
      • RESTRICT : L'opération de modification est interdite s'il existe des enregistrements enfants liés.
      • NO ACTION : Semblable à RESTRICT dans la plupart des SGBD.
      • SET DEFAULT : Les valeurs de la clé étrangère sont définies sur la valeur par défaut.
    • ON DELETE behavior : Détermine ce qui se passe avec les enregistrements dans la table fille lors de la suppression d'enregistrements dans la table parente. Les options sont les mêmes que pour ON UPDATE.

Exemple de syntaxe SQL pour créer une relation :

CREATE TABLE Customers (
    customer_id INT PRIMARY KEY, -- Clé primaire dans la table Customer
    customer_name VARCHAR(255)
);

CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT, -- Clé étrangère faisant référence à customer_id dans la table Customers
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
    ON UPDATE CASCADE -- Lors de la modification de customer_id dans Customers, il sera modifié aussi dans Orders
    ON DELETE CASCADE -- Lors de la suppression d'un Customer, ses Orders liés seront également supprimés
);

Types de relations entre les tables :

Type de relation Description Exemple
Un à Un (1:1) Une ligne dans la première table correspond à une ligne dans la deuxième et vice versa. Cas peu fréquent dans les bases de données relationnelles. Utilisateur et son profil.
Un à Plusieurs (1:N) Une ligne dans la première table correspond à plusieurs lignes dans la deuxième, mais chaque ligne dans la deuxième ne correspond qu'à une dans la première. Client et ses commandes.
Plusieurs à Plusieurs (N:M) Plusieurs lignes dans la première table correspondent à plusieurs dans la deuxième, et vice versa. Implémenté via une table intermédiaire (de liaison). Produits et catégories.

Pour la relation Many-to-Many, une troisième table est créée, contenant des clés étrangères vers les deux tables à relier.

CREATE TABLE Products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(255)
);

CREATE TABLE Categories (
    category_id INT PRIMARY KEY,
    category_name VARCHAR(255)
);

CREATE TABLE ProductCategories ( -- Table de liaison
    product_id INT,
    category_id INT,
    PRIMARY KEY (product_id, category_id), -- Clé primaire composée
    FOREIGN KEY (product_id) REFERENCES Products(product_id),
    FOREIGN KEY (category_id) REFERENCES Categories(category_id)
);