Table récursive
Exemple de table récursive pour la création d’un menu et de ses sous-menus dans une base de données MySQL:
CREATE TABLE menus (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES menus(id)
);
INSERT INTO menus (nom, parent_id) VALUES ('Accueil', NULL);
INSERT INTO menus (nom, parent_id) VALUES ('Produits', NULL);
INSERT INTO menus (nom, parent_id) VALUES ('Services', NULL);
INSERT INTO menus (nom, parent_id) VALUES ('Contact', NULL);
INSERT INTO menus (nom, parent_id) VALUES ('Produit 1', 2);
INSERT INTO menus (nom, parent_id) VALUES ('Produit 2', 2);
INSERT INTO menus (nom, parent_id) VALUES ('Produit 3', 2);
INSERT INTO menus (nom, parent_id) VALUES ('Service 1', 3);
INSERT INTO menus (nom, parent_id) VALUES ('Service 2', 3);
INSERT INTO menus (nom, parent_id) VALUES ('Service 3', 3);
Dans cet exemple, nous avons créé une table menus avec les colonnes id, nom et parent_id. La colonne id est la clé primaire de la table. La colonne parent_id est une clé étrangère faisant référence à la colonne id de la même table. Cette clé étrangère crée une relation récursive entre les lignes de la table: un menu peut avoir un menu parent et plusieurs menus enfants.
Nous avons ensuite inséré des données dans cette table pour créer un menu avec plusieurs sous-menus. Les quatre premières lignes insérées représentent les éléments du menu principal, avec des valeurs NULL pour la colonne parent_id pour indiquer qu’ils n’ont pas de menu parent. Les lignes suivantes représentent les sous-menus des éléments “Produits” et “Services”, avec des valeurs pour la colonne parent_id pour indiquer à quel élément du menu principal ils sont liés.
Schéma pour illustrer l’exemple de table récursive pour la création d’un menu et de ses sous-menus dans une base de données MySQL:
+------------+
| Menus |
+------------+
| # id |
| - nom |
| - parent_id|
+------------+
| |
+------+
Dans ce schéma, nous avons une entité Menus avec trois attributs: id, nom et parent_id. L’attribut id est la clé primaire de l’entité. L’attribut parent_id est une clé étrangère faisant référence à l’attribut id de la même entité. Cette clé étrangère crée une relation récursive entre les lignes de la table: un menu peut avoir un menu parent et plusieurs menus enfants.
Le symbole # devant l’attribut id indique que cet attribut est une clé primaire. Le symbole - devant les autres attributs indique que ce sont des attributs ordinaires. La ligne entre l’entité et elle-même indique qu’il existe une relation récursive, et le symbole + indique que cette relation est de type un à plusieurs.
Résumé
Pour créer une table récursive dans une base de données MySQL, vous pouvez suivre les étapes suivantes:
- Créez une table avec les colonnes appropriées pour stocker les données que vous souhaitez représenter. Cette table représentera l’entité qui a une relation récursive avec elle-même.
- Ajoutez une clé étrangère à la table pour faire référence à sa propre clé primaire. Cette clé étrangère crée un lien récursif entre les lignes de la table.
- Utilisez la commande
ADD FOREIGN KEYpour définir une contrainte de clé étrangère entre la clé étrangère et la clé primaire de la table. Cette contrainte garantit que les valeurs de la clé étrangère correspondent à des valeurs existantes dans la clé primaire de la table. - Insérez des données dans la table en spécifiant les valeurs appropriées pour la clé étrangère pour lier les lignes de la table entre elles.