Relation un à un (one-to-one)
Relation un à un (one-to-one)
Une relation un à un est une relation entre deux tables dans une base de données relationnelle où une ligne d’une table ne peut être liée qu’à une seule ligne de l’autre table. Par exemple, si vous avez une table personnes et une table permis_de_conduire, une relation un à un entre ces deux tables signifie qu’une personne ne peut avoir qu’un seul permis de conduire et qu’un permis de conduire ne peut être associé qu’à une seule personne.
Pour créer une relation un à un entre deux tables dans MySQL, vous pouvez utiliser une clé étrangère. Une clé étrangère est une colonne dans l’une des tables qui fait référence à la clé primaire de l’autre table. Cette clé étrangère crée un lien entre les deux tables et permet de s’assurer que les données sont cohérentes.
Voici un exemple de création d’une relation un à un entre une table personnes et une table permis_de_conduire:
CREATE TABLE personnes (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL
);
CREATE TABLE permis_de_conduire (
id INT AUTO_INCREMENT PRIMARY KEY,
numero VARCHAR(255) NOT NULL,
personne_id INT,
FOREIGN KEY (personne_id) REFERENCES personnes(id)
);
Dans cet exemple, nous avons créé deux tables: personnes et permis_de_conduire. La table personnes a une colonne id qui est la clé primaire de la table. La table permis_de_conduire a une colonne personne_id qui est une clé étrangère faisant référence à la colonne id de la table personnes. Cette clé étrangère crée une relation un à un entre les deux tables: un permis de conduire ne peut être associé qu’à une seule personne, et une personne ne peut avoir qu’un seul permis de conduire.
Pour insérer des données dans ces deux tables et créer des liens entre elles, vous pouvez utiliser des requêtes INSERT pour insérer des données dans les deux tables, en spécifiant la valeur de la clé étrangère pour lier les lignes des deux tables. Par exemple, pour insérer une personne et son permis de conduire, vous pouvez utiliser les requêtes suivantes:
INSERT INTO personnes (nom) VALUES ('Alice');
INSERT INTO permis_de_conduire (numero, personne_id) VALUES ('123456', 1);
Ces requêtes insèrent une nouvelle personne dans la table personnes, puis insèrent un nouveau permis de conduire dans la table permis_de_conduire, en spécifiant la valeur de la colonne personne_id pour lier le permis de conduire à la personne que nous venons d’insérer.
Schéma pour illustrer une relation un à un (one-to-one) avec MySQL:
Dans ce schéma, nous avons deux entités: Personnes et Permis_de_conduire. L’entité Personnes a un attribut id qui est la clé primaire de l’entité. L’entité Permis_de_conduire a également un attribut id qui est la clé primaire de l’entité, ainsi qu’un attribut personne_id qui est une clé étrangère faisant référence à l’attribut id de l’entité Personnes. Cette clé étrangère crée une relation un à un entre les deux entités: un permis de conduire ne peut être associé qu’à une seule personne, et une personne ne peut avoir qu’un seul permis de conduire.
Le symbole # devant les attributs id indique que ces attributs sont des clés primaires. Le symbole - devant les autres attributs indique que ce sont des attributs ordinaires. La ligne entre les entités indique qu’il existe une relation entre elles, et le symbole ----- indique que cette relation est de type un à un.
Résumé
Pour créer une relation un à un (one-to-one) dans une base de données MySQL, vous pouvez suivre les étapes suivantes:
- Créez les deux tables qui seront impliquées dans la relation. Ces deux tables représenteront les entités qui ont une relation un à un entre elles.
- Ajoutez une clé étrangère à l’une des tables pour faire référence à la clé primaire de l’autre table. Cette clé étrangère crée un lien entre les deux tables et permet de s’assurer que les données sont cohérentes.
- Utilisez la commande
ADD FOREIGN KEYpour définir une contrainte de clé étrangère entre la clé étrangère et la clé primaire de l’autre table. Cette contrainte garantit que les valeurs de la clé étrangère correspondent à des valeurs existantes dans la clé primaire de l’autre table. - Insérez des données dans les deux tables en spécifiant les valeurs appropriées pour la clé étrangère pour lier les lignes des deux tables.