Modélisation : Processus de représentation des objets du monde réel (entités) et de leurs relations dans une structure de base de données.
- Identifier les entités principales
- Déterminer les attributs de chaque entité
- Établir les relations entre entités
- Définir les clés primaires et étrangères
Entités principales : Livre, Emprunteur, Emprunt
Livre : id_livre, titre, auteur, isbn, date_publication
Emprunteur : id_emprunteur, nom, prenom, email, date_inscription
Emprunt : id_emprunt, id_livre, id_emprunteur, date_emprunt, date_retour_prevue
Un emprunt relie un livre à un emprunteur
Relation : Emprunt (id_livre → Livre.id_livre, id_emprunteur → Emprunteur.id_emprunteur)
Emprunteur(id_emprunteur*, nom, prenom, email, date_inscription)
Emprunt(id_emprunt*, id_livre°, id_emprunteur°, date_emprunt, date_retour_prevue)
* = Clé primaire, ° = Clé étrangère
Modèle relationnel complet avec 3 entités et 2 relations
• Clé primaire : Chaque entité doit avoir une clé unique
• Clé étrangère : Lien entre entités par référence
• Cardinalité : Un livre peut être emprunté plusieurs fois, un emprunt concerne un seul livre
Relation plusieurs-à-plusieurs : Type de relation où plusieurs instances d'une entité peuvent être liées à plusieurs instances d'une autre entité.
Client, Produit, Commande, Ligne_Commande
Client : id_client*, nom, prenom, email, adresse
Produit : id_produit*, nom, prix, description, stock
Commande : id_commande*, id_client°, date_commande, statut
Ligne_Commande : id_ligne*, id_commande°, id_produit°, quantite, prix_unitaire
Un client peut passer plusieurs commandes
Une commande peut contenir plusieurs produits différents
Une table intermédiaire Ligne_Commande gère cette relation complexe
Produit(id_produit*, nom, prix, description, stock)
Commande(id_commande*, id_client°, date_commande, statut)
Ligne_Commande(id_ligne*, id_commande°, id_produit°, quantite, prix_unitaire)
* = Clé primaire, ° = Clé étrangère
Modèle avec relation plusieurs-à-plusieurs gérée par table intermédiaire
• Table intermédiaire : Nécessaire pour gérer les relations plusieurs-à-plusieurs
• Comptabilité : La table Ligne_Commande stocke le prix unitaire au moment de la commande
• Normalisation : Évite la redondance d'informations
Cardinalité : Nombre minimum et maximum d'occurrences d'une entité liées à une occurrence d'une autre entité (notée 1,n ou 0,n).
Élève, Professeur, Cours, Classe, Note
Élève : id_eleve*, nom, prenom, date_naissance, id_classe°
Professeur : id_prof*, nom, prenom, email
Cours : id_cours*, nom_cours, id_prof°
Classe : id_classe*, nom_classe
Note : id_note*, id_eleve°, id_cours°, valeur, date_evaluation
Un élève appartient à une seule classe (1,1)
Un élève peut avoir plusieurs notes (0,n)
Un cours est enseigné par un seul professeur (1,1)
Un professeur peut enseigner plusieurs cours (0,n)
Professeur(id_prof*, nom, prenom, email)
Cours(id_cours*, nom_cours, id_prof°)
Classe(id_classe*, nom_classe)
Note(id_note*, id_eleve°, id_cours°, valeur, date_evaluation)
* = Clé primaire, ° = Clé étrangère
Modèle avec relations complexes et différentes cardinalités
• Cardinalités : Respect des contraintes de liaison entre entités
• Hiérarchie : Un élève appartient à une classe unique
• Historique : La table Note permet de conserver l'historique des évaluations
Normalisation : Processus d'organisation des données pour réduire la redondance et améliorer l'intégrité des données.
Client, Table, Serveur, Plat, Commande, Composition_Commande
Éliminer la redondance en séparant les informations
Plat : id_plat*, nom_plat, prix, categorie
Commande : id_commande*, id_client°, id_table°, id_serveur°, date_commande, statut
Composition_Commande : id_compo*, id_commande°, id_plat°, quantite
Contrainte d'intégrité référentielle entre toutes les clés étrangères
Contrainte de domaine pour le statut de la commande
Table(id_table*, numero, capacite)
Serveur(id_serveur*, nom, prenom)
Plat(id_plat*, nom_plat, prix, categorie)
Commande(id_commande*, id_client°, id_table°, id_serveur°, date_commande, statut)
Composition_Commande(id_compo*, id_commande°, id_plat°, quantite)
* = Clé primaire, ° = Clé étrangère
Modèle normalisé avec contraintes d'intégrité
• Normalisation : Élimine la redondance des données
• Intégrité référentielle : Maintient la cohérence des relations
• Contraintes : Assure la validité des données insérées
Contraintes d'intégrité : Règles qui garantissent la validité et la cohérence des données dans une base de données.
Film, Client, Exemplaire, Location, Genre
Contrainte d'unicité pour le numéro d'exemplaire
Contrainte de domaine pour la date de retour (doit être >= date_location)
Contrainte de vérification pour l'état de l'exemplaire
Un film peut avoir plusieurs exemplaires (multiplicité)
Un exemplaire ne peut être loué qu'à un seul client à la fois
Historique des locations pour chaque exemplaire
Genre(id_genre*, nom_genre)
Client(id_client*, nom, prenom, email, telephone)
Exemplaire(id_exemplaire*, id_film°, etat, disponible)
Location(id_location*, id_client°, id_exemplaire°, date_location, date_retour_prevue, date_retour_effectif)
* = Clé primaire, ° = Clé étrangère
Modèle avec contraintes d'intégrité et gestion des disponibilités
• Contraintes : Garantissent la cohérence des données
• Disponibilité : Suivi de l'état des exemplaires
• Historique : Conservation des locations passées
- Analyse du besoin : Comprendre le système à modéliser
- Modélisation conceptuelle : Diagramme UML des entités et relations
- Modélisation logique : Transformation en schéma relationnel
- Modélisation physique : Implémentation dans le SGBD
- 1ère forme normale : Tous les attributs doivent être atomiques
- 2ème forme normale : Tous les attributs dépendent de la clé primaire entière
- 3ème forme normale : Aucune dépendance transitive entre attributs non-clés
- Avantages : Réduction de la redondance, meilleure intégrité des données