Introduction à la création d'une base de données
Les serveurs de base de données à l'IUT de Haguenau
Créer une base de données
Créer une table
Définir des clés étrangères et leurs contraintes
Insérer des données
Modifier des données
Exporter ou importer la structure de la base et ses données
Supprimer des données
Chapitre 3
:
Transformer un modèle conceptuel en modèle relationnel
Gérer les entités et les relations : Support de cours
Support de cours : Gérer les entités et les relations
Comme nous l'avons vu, la transformation du schéma conceptuel en schéma relationnel va se faire en trois étapes :
- Transformer les entités en relation
- Transformer les associations "1 à plusieurs" en clé étrangère
- Transformer les associations "plusieurs à plusieurs" en relation
I Transformer les entités en relation
La première chose à faire est de transformer chaque entité en relation en respectant le formalisme suivant
Nom de l'entité (liste des propriétés de l'entité séparées par des virgules)
Clé primaire : nom de la propriété identifiant
Dans l'exemple ci-dessous, l'entité Catégorie à 3 propriétés : id_categorie, nom_categorie, et pourcentage_reduction.
Cette entité est transformé en relation :
Categorie(id_categorie, nom_categorie, pourcentage_reduction)
Clé primaire : id_catégorie
Il est souvent nécessaire de modifier les noms des attributs pour qu’ils respectent les règles suivantes :
- ne comporte aucun caractère spécial (accent, espace...)
- ajout d’un suffixe ou un préfixe correspondant à leur relation.
- éviter les mots clés SQL.
- Éviter les abréviations
II Transformer les associations 1 à plusieurs
Une association 1 à plusieurs est une association dont au moins 1 des maximums des cardinalités qui l’entourent est un 1. Ce type d’association relie une entité dite parent (la cardinalité maximum est 1) et une entité dite enfant (cardinalité maximum est n).
L’identifiant de l’entité enfant est rajouté dans la relation parent comme clé étrangère
Dans l'exemple ci-dessous, nous allons traduire le schéma suivant :
On commence par transformer en relation les deux entités. Puis on analyse l'association "Appartenir". Si on lit les cardinalités on obtient :
- Un client appartient à au minimum 0 catégorie et au maximum 1 seule.
- A une catégorie appartient au minimum 0 client et au maximum plusieurs.
"Appartenir" est une association "1 à plusieurs", car le maximum de la cardinalité entre "Appartenir" et "Client" est égale à 1. L'entité parent est donc "Client" et l'entité enfant est "Catégorie". Il faut prendre l'identifiant de "Catégorie" et le placer dans la relation "Client" comme dans le schéma ci-dessous
Categorie(id_categorie, nom_categorie, pourcentage_reduction)
Clé primaire : id_catégorie
Client(id_client, nom_client, prenom_client, id_categorie)
Clé primaire : id_client,
clé étrangère : id_categorie en référence à id_categorie de la table categorie
Souvent les étudiants ont du mal à mémoriser quel est l'identifiant que l'on place comme clé étrangère. Une façon de vérifier et de s'assurer que le nouveau champ est bien en dépendance fonctionnelle avec l'identifiant. Dans notre exemple, si on place l'id_catégorie dans la relation "Client" cela signifie que pour un client on a 1 seule catégorie ce qui semble logique et coller à la lecture des cardinalités. Par contre si on place l'id_client dans la relation "Catégorie" on a, pour chaque catégorie, un seul client. Cette solution ne correspond pas à la lecture des cardinalités.
III Transformer les types relations plusieurs à plusieurs
Une association "plusieurs à plusieurs" est une association dont tous les maximum des cardinalités qui l’entourent est n.
Les associations "plusieurs à plusieurs" sont transformées en relation dont la clé primaire est la concaténation de tous les attributs identifiants des entités reliées. Chaque attribut identifiant devient aussi une clé étrangère dans cette nouvelle relation.
Dans l'exemple suivant, nous allons transformer ce schéma conceptuel en schéma relationnel
On commence par transformer les entités "Joueur" et "Match" en relation.
Ensuite on analyse "Participer". Si on lit les cardinalités on obtient :
- Un joueur Participe au minimum à 1 match et au maximum à plusieurs (N)
- A un match Participe au minimum 22 joueurs et au maximum plusieurs (N).
Cette association est une association plusieurs à plusieurs car les deux cardinalités qui l'entourent ont comme maximum "N". Il faut alors transformer Participer en relation avec comme clé primaire le couple jo_id et ma_id. Ces deux champs sont aussi des clés étrangères.
Joueur( jo_id, jo_nom, jo_prenom)
Clé primaire : jo_id
Match(ma_id, ma_date, ma_lieu
Clé primaire :ma_id
Participer (jo_id, ma_id, numero_maillot)
Clé primaire : jo_id ET ma_id
Clé étrangère : jo_id en référence à jo_id de la table Joueur
ma_id en référence à ma_id de la table Match
Gérer les entités et les relations