Ce document constitue le premier travail dirigé (TD 1) de la série, conçu pour les étudiants universitaires souhaitant maîtriser les concepts fondamentaux du Modèle Entités-Associations (E/A). Il sert à la fois de rappel de cours et d'introduction pratique à la conception de bases de données.
À travers une série d'exercices, vous explorerez les notions suivantes :
- La compréhension des cardinalités d'associations et de l'héritage.
- La conception et l'adaptation de schémas E/A.
- La conversion entre les modèles E/A et relationnel.
Ce TD vise à développer votre expérience dans la modélisation de données.
Modélisation Merise : TD 1 MODELE ENTITES ASSOCIATIONS
Télécharger PDFModèle Entités-Associations : Exercices Pratiques
Ce tutoriel propose une série d'exercices conçus pour approfondir la compréhension des concepts fondamentaux des modèles Entité-Association (E/A) et leur transformation en schémas relationnels. Les premiers exercices se concentrent sur la lecture et l'interprétation des cardinalités d'associations, l'héritage et les liens avec le modèle relationnel, des points cruciaux qui requièrent une attention particulière et une pratique régulière. La conception de schémas de bases de données, en particulier la gestion des aspects temporels et historiques, représente un défi qui s'affine avec l'expérience.
1. Modélisation d'une Équipe de Rugby
Pour cet exercice, nous allons considérer un schéma Entité-Association hypothétique représentant des équipes de rugby et leurs composants.
Analyse du Schéma Entité-Association
Voici quelques questions clés pour analyser la structure d'un tel schéma E/A :
- Combien d'entités composent ce modèle ? Quel attribut sert d'identifiant unique pour une équipe ?
- Est-il possible que deux stades partagent le même nom, par exemple « Stade municipal » ? Cela soulève la question de l'unicité des identifiants et des contraintes d'intégrité.
- Combien d'associations possèdent au moins un attribut propre, décrivant une caractéristique spécifique de la relation elle-même ?
- Pourquoi l'entité
Équipene devrait-elle pas inclure un attribut tel que « stade préféré » avec le nom du stade comme valeur ? Cette question aborde la normalisation et la déduplication des données. Il est préférable d'utiliser des associations pour représenter de telles relations. - Un
Sponsorpeut-il ne financer aucunJoueur? Cela explore les cardinalités minimales des associations. - Un
Joueurpeut-il n’avoir aucunSponsor? De même, cela interroge les cardinalités minimales. - À combien d’équipes (minimum et maximum) un
Joueurpeut-il appartenir ? Ceci concerne les cardinalités maximales et minimales d'une association entreJoueuretÉquipe. - Plusieurs équipes peuvent-elles préférer le même stade ? Cela impacte la cardinalité de l'association entre
ÉquipeetStade. - Un stade est-il toujours préféré par au moins une équipe ? Ceci vérifie la cardinalité minimale côté
Stadedans l'association de préférence.
Adaptations et Extensions du Schéma E/A
Considérons les modifications suivantes pour enrichir le schéma de l'équipe de rugby :
- **Durée du financement :** Il est nécessaire d'enregistrer la durée (en nombre d'années) pendant laquelle un sponsor finance un joueur. Cet attribut devrait être placé sur l'association entre
SponsoretJoueur. - **Unicité des noms d'équipe et villes :** Pour gérer des cas comme « Racing » à Pau et à Aix, il faut s'assurer que l'identifiant de l'équipe inclut non seulement son nom, mais potentiellement un lien vers une entité
Ville. - **Informations sur la ville :** La population de la ville doit être enregistrée. L'entité
Villedevrait avoir un attributpopulation. - **Stade d'entraînement :** Une équipe peut avoir un stade d’entraînement distinct de son stade préféré, et certaines équipes n'en ont pas. Cela implique une nouvelle association optionnelle (cardinalité minimale 0) entre
ÉquipeetStade, distincte de l'association pour le stade préféré.
2. Modélisation d'un Match de Football
Analysons un schéma Entité-Association lié à des matchs de football.
Analyse d'un Schéma E/A de Match de Foot
- **Associations réflexives :** Combien d'associations relient une entité à elle-même ? Ces associations sont souvent utilisées pour modéliser des relations entre entités de même type, comme des matchs successifs ou des relations hiérarchiques.
- **Arête maximale :** Quelle association présente l'arité la plus élevée (c'est-à-dire le plus grand nombre d'entités participantes) et quelle est cette arité ? Les associations d'arité supérieure à 2 sont dites n-aires et sont utilisées pour modéliser des relations complexes.
- **Labels sur les arcs :** Pourquoi l'association « distance » pourrait-elle ne pas avoir de labels sur ses arcs ? L'absence de labels sur les arcs peut indiquer une relation symétrique ou une convention de modélisation simplifiée où le rôle de chaque participant est implicite.
Adaptations et Enrichissements du Schéma
Pour affiner le modèle, voici des points à considérer :
- **Rôles des équipes dans un match :** Pour chaque match, il faut distinguer l'équipe « invitante » et l'équipe « invitée ». Ceci peut être représenté par des rôles spécifiques sur l'association entre
MatchetÉquipe. - **Entraîneurs :** Chaque équipe possède un entraîneur. Nous devons enregistrer le nom et l’âge de l'entraîneur (mais pas sa taille). Un entraîneur peut gérer plusieurs équipes. Cela suggère une entité
Entraîneuravec des attributsnometâge, et une association de type (1,N) entreEntraîneuretÉquipe(un entraîneur peut entraîner plusieurs équipes, une équipe a un seul entraîneur). - **Identification des joueurs :** Pour les joueurs, il est important de stocker leur numéro d’adhérent national, surtout si plusieurs joueurs peuvent avoir le même nom. Le numéro d'adhérent national devient un identifiant clé ou un attribut unique. L'entité
Joueurauraitnuméro_adhérent_national(identifiant) etnom.
3. Conception d'un Schéma E/A pour un Musée
Décrivons les entités, associations, attributs et cardinalités pour modéliser les informations suivantes :
- **Villes :** Une entité
Villeavec comme identifiantnom_villeet un attributpays. - **Musées :** Une entité
Muséeavec comme identifiantnom_muséeet un attributdescription. - **Relation Ville-Musée :** Une
Villepeut avoir plusieursMusées (1,N), et unMuséeest situé dans une seuleVille(1,1). Association "Situé_dans". - **Œuvres :** Une entité
Œuvreavec comme identifianttitre_œuvreet un attributsiècle. - **Relation Œuvre-Artiste :** Une entité
Artisteavecnom_artisteetprénom_artistecomme identifiant composé ou un identifiant générique (ex:id_artiste). UnArtisteréalise de nombreusesŒuvres(1,N), et chaqueŒuvreest réalisée par un seulArtiste(1,1). Association "Réalise". - **Exposition d'œuvres :** Une
Œuvreest exposée dans unMuséependant une période donnée (date_début,date_fin). Une œuvre peut ne pas être exposée (0,N) et être exposée dans différents musées à différentes périodes. L'association "Exposée_dans" entreŒuvreetMuséedoit être ternaire avec les attributsdate_débutetdate_fin. Les cardinalités seraient (0,N) pourŒuvreet (0,N) pourMusée, car une œuvre peut être dans plusieurs musées ou aucun, et un musée peut exposer plusieurs œuvres ou aucune. L'identifiant de cette association serait composé de l'identifiant de l'Œuvre, de l'identifiant duMuséeet de ladate_débutpour distinguer les périodes d'exposition.
4. Modélisation d'un Album de Musique
La création d'un schéma Entité-Association pour gérer des albums de musique implique plusieurs entités et relations complexes.
a) Établissement du Schéma E/A
- **Albums :** Entité
Albumaveccode_album(identifiant) etdate_sortie. - **Plages :** Entité
Plageavecnuméro_plage(identifiant relatif à l'album) etdurée. - **Œuvres :** Entité
Œuvreaveccode_œuvre(identifiant) ettitre_œuvre. - **Interprètes :** Entité
Interprèteavecid_interprète(identifiant) etnom_interprète.
Associations :
- **Composition d'album :** Un
Albumest composé d'une ou plusieursPlages (1,N). UnePlageappartient à un seulAlbum(1,1). L'identifiant d'unePlageserait (code_album,numéro_plage). - **Plage-Œuvre :** Chaque
Plageest l'enregistrement d'une seuleŒuvre(1,1). UneŒuvrepeut s'étendre sur plusieursPlages (1,N) ou n'être pas enregistrée du tout (0,N). L'association "Enregistre" entrePlageetŒuvreaura les cardinalités (1,1) côtéPlageet (0,N) côtéŒuvre. - **Interprétation d'œuvre sur une plage :** On connaît les interprètes de l’œuvre pour une plage donnée. Une
Œuvrepeut être jouée par plusieursInterprètes (0,N). UnInterprètepeut jouer de nombreusesŒuvres(0,N). Cette relation est contextuelle à unePlage. La modélisation la plus simple est une association entreInterprèteetPlage, où les cardinalités seraient (0,N) des deux côtés. L'identifiant de l'association "Interprète_sur_Plage" serait (id_interprète,code_album,numéro_plage).
b) Placement de l'attribut "Instrument"
Si chaque interprète utilise exactement un instrument sur une plage donnée, l'attribut « instrument » ne peut pas être placé directement sur l'entité Interprète (car un interprète pourrait jouer de plusieurs instruments sur différentes plages) ni sur l'entité Plage (car plusieurs interprètes pourraient jouer sur la même plage avec des instruments différents). Il doit être placé sur l'association entre Interprète et Plage (ou sur l'association ternaire "Interprète_sur"). Cela indique quel instrument est joué par quel interprète sur une plage spécifique.
5. Modélisation d'une Course Nautique
Pour gérer les informations d'une course nautique, plusieurs entités et associations sont nécessaires afin de répondre aux besoins spécifiques de suivi.
1) Proposition de Modèle Entité-Association (E/A)
- **Course :** Entité
Course(id_course(identifiant),nom_course). - **Épreuve :** Entité
Épreuve(id_épreuve(identifiant),date,heure_départ,heure_fin). UneCoursecontient plusieursÉpreuves (1,N). UneÉpreuveappartient à une seuleCourse(1,1). L'identifiant d'une épreuve pourrait être (id_course,numéro_ordre_épreuve) ou simplementid_épreuvesi unique globalement. - **Port :** Entité
Port(id_port(identifiant),nom_port,localisation). UneÉpreuvea un port de départ et un port d'arrivée. Deux associations entreÉpreuveetPort: "Départ_de" et "Arrivée_à", avec des cardinalités (1,1) côtéPortpour chaque épreuve. - **Bateau :** Entité
Bateau(id_bateau(identifiant),nom_bateau,longueur). - **Sponsor :** Entité
Sponsor(id_sponsor(identifiant),nom_sponsor,adresse). - **Relation Bateau-Sponsor :** Un
Bateauest financé par un ou plusieursSponsors (1,N). UnSponsorpeut financer plusieursBateaux (0,N). L'association "Finance" entreBateauetSponsoraura un attributmontant_subventionpour répondre à la question spécifique. - **Personne :** Entité
Personne(id_personne(identifiant),nom,prénom,date_naissance,type_personne(skipper, équipier, médecin, etc.)). - **Rôle de Skipper :** Un
Bateaua un seulSkipper(1,1). UnSkipperest unePersonne. LeSkipperne change pas pour la durée de la course. Association "Est_skipper_de" entrePersonne(rôle Skipper) etBateau(1,1) pour Bateau, (0,1) pour Personne. - **Rôle d'Équipier :** Un
Bateauest armé d'un équipage composé d'équipiers. La composition des équipiers peut changer par épreuve. L'association "Participe_à_épreuve" entrePersonne(rôle Équipier),BateauetÉpreuve. Cette association ternaire pourrait avoir les cardinalités (0,N) pourPersonne(un équipier peut participer à plusieurs épreuves ou aucune, sur différents bateaux), (0,N) pourBateau(un bateau a plusieurs équipiers sur une épreuve), et (0,N) pourÉpreuve(une épreuve implique plusieurs équipiers et bateaux). Attributs commeclassementpourraient être sur l'association d'engagement ou sur une association de résultat. - **Classement :** L'association "Classement" entre
BateauetÉpreuve, avec un attributposition. Cardinalités (0,N) pour Bateau (il peut participer à plusieurs épreuves), (0,N) pour Épreuve (plusieurs bateaux par épreuve).
Les questions posées par le cahier des charges guident la conception des attributs et des associations, en particulier pour le montant de la subvention, les dates d'engagement et les rôles spécifiques des équipiers.
2) Déduction du Schéma Relationnel
La déduction du schéma relationnel à partir du modèle E/A suit des règles précises :
- Chaque entité forte devient une table. Ses attributs deviennent des colonnes, et son identifiant devient la clé primaire.
- Les associations (1,1) ou (1,N) peuvent être représentées en ajoutant la clé primaire de l'entité côté "1" comme clé étrangère dans la table de l'entité côté "N".
- Les associations (N,N) deviennent des tables à part entière, avec les clés primaires des entités participantes comme clés étrangères composant souvent la clé primaire de cette nouvelle table d'association.
- Les associations ternaires deviennent également des tables, avec les clés des trois entités comme clés étrangères.
- Les attributs des associations sont ajoutés à la table de l'association correspondante.
- L'héritage (si présent) peut être géré par différentes stratégies (table par super-type, table par sous-type, ou une table unique).
Par exemple, pour l'association "Finance" (Bateau N-N Sponsor) avec l'attribut montant_subvention, on créerait une table FINANCE (id_bateau*, id_sponsor*, montant_subvention) où id_bateau et id_sponsor seraient des clés étrangères et conjointement la clé primaire.
6. Analyse d'un Schéma E/A de Consultation Médicale
Bien que le schéma E/A ne soit pas fourni, nous pouvons discuter des concepts et des questions qu'il soulève concernant les visites médicales.
1. Identification des Composantes d'un Schéma E/A
Un schéma Entité-Association est composé de :
- **Entités :** Les objets principaux du système (ex: Patient, Médecin, Consultation, Médicament).
- **Attributs :** Les propriétés des entités (ex: nom, prénom, date_naissance pour Patient ; spécialité pour Médecin). Certains attributs sont des identifiants (clés primaires).
- **Associations :** Les liens entre les entités (ex: un Médecin consulte un Patient, un Patient se voit prescrire un Médicament).
- **Cardinalités :** Les règles qui définissent le nombre minimal et maximal d'occurrences d'une entité participant à une association (ex: un Patient peut avoir (0,N) consultations, une Consultation implique (1,1) Médecin).
2. Questions d'Analyse des Caractéristiques du Schéma
Sans le schéma visuel, l'analyse se base sur les cardinalités et la structure implicite d'un tel modèle :
- **Prescription multiple de médicaments :** La capacité à prescrire plusieurs médicaments lors d'une même consultation dépend de la cardinalité de l'association entre
ConsultationetMédicament. Si elle est (1,N) ou (0,N) côtéMédicament, alors oui. - **Plusieurs patients par consultation :** Un médecin peut-il recevoir plusieurs patients dans la même consultation ? Généralement, une
Consultationest liée à un seulPatient(cardinalité (1,1) côtéPatient). - **Consultations multiples pour un patient :** Un patient peut-il être consulté plusieurs fois ? Oui, la cardinalité de l'association entre
PatientetConsultationdevrait être (0,N) ou (1,N) côtéConsultation. - **Prescription multiple du même médicament pour un patient :** Un médicament peut-il être prescrit plusieurs fois pour un même patient ? Cela dépend si l'association de prescription inclut une date ou un identifiant unique par prescription. Si l'association est entre
Patient,MédicamentetConsultation, la clé de l'association pourrait permettre des prescriptions multiples à différentes occasions. - **Consultations multiples le même jour :** Un patient peut-il être consulté plusieurs fois le même jour ? Si l'identifiant de
Consultationinclut seulement la date, cela pourrait être restrictif. Si un identifiant unique ou un créneau horaire est utilisé, c'est possible. - **Consultations multiples le même jour par le même médecin :** Un patient peut-il être consulté plusieurs fois le même jour par le même médecin ? Similaire à la question précédente, si la
Consultationest identifiée par (Médecin,Patient,Date,Heure), c'est possible pour des heures différentes.
3. Déduction du Schéma Relationnel
La transformation d'un schéma E/A de consultation médicale en schéma relationnel suivrait les principes évoqués précédemment. Par exemple :
- Table
PATIENT(id_patient, nom, prénom, date_naissance, ...) - Table
MEDECIN(id_médecin, nom, prénom, spécialité, ...) - Table
CONSULTATION(id_consultation, date, heure,id_patient*,id_médecin*) - Table
MEDICAMENT(id_médicament, nom, description, ...) - Table
PRESCRIPTION(id_consultation*,id_médicament*, quantité, posologie, ...)
4. Exemple de Base de Données
Un exemple concret illustrerait comment les données sont stockées et comment les questions précédentes sont gérées :
PATIENT : (1, 'Dupont', 'Jean', '1980-01-15')
MEDECIN : (10, 'Martin', 'Sophie', 'Généraliste')
CONSULTATION :
- (100, '2023-10-26', '10:00', 1, 10) // M. Dupont consulte Dr Martin
- (101, '2023-10-26', '11:00', 1, 10) // M. Dupont consulte à nouveau Dr Martin le même jour (si le schéma le permet par heure)
MEDICAMENT : (200, 'Paracétamol'), (201, 'Ibuprofène')
PRESCRIPTION :
- (100, 200, '2', '1 cp matin, 1 cp soir') // Pour la consultation 100, Paracétamol est prescrit
- (100, 201, '1', '1 cp midi') // Pour la consultation 100, Ibuprofène est aussi prescrit (réponse à 2.a)
- (101, 200, '1', '1 cp soir') // Pour la consultation 101, Paracétamol est prescrit à nouveau pour le même patient (réponse à 2.d et 2.e/f)
7. Modélisation d'une Base de Données Cinéma
La conception d'une base de données pour le cinéma implique de gérer les informations sur les films, les acteurs et les réalisateurs, ainsi que leurs interactions.
1. Proposition d'un Schéma Entité-Association (E/A)
Hypothèses :
- Un film est identifié par son titre. Pour assurer l'unicité (ex: différents films avec le même titre), on peut ajouter une année de sortie ou un identifiant générique (
id_film). Ici, nous nous en tiendrons à l'hypothèse que le titre est unique. - Un acteur est identifié par son nom et prénom. Similaire au titre de film, un identifiant générique (
id_personne) est souvent préférable pour éviter les homonymes. - Un réalisateur est une personne, et peut aussi être un acteur. Cela suggère une hiérarchie ou des rôles distincts pour une entité
Personne.
Entités :
- **Film :** (
titre_film(identifiant),nombre_entrées). - **Personne :** (
id_personne(identifiant),nom,prénom,âge,adresse). Cette entité représente à la fois les acteurs et les réalisateurs pour éviter la duplication et faciliter la gestion des rôles multiples.
Associations :
- **Réalisation :** Un
Filmest réalisé par unRéalisateur(qui est unePersonne). Initialement, un film a un seul réalisateur (1,1). Un réalisateur peut réaliser plusieurs films (0,N). Association "Réalisé_par" entreFilmetPersonne(avec rôle "Réalisateur"). Cardinalités :Film(1,1) versPersonne,Personne(0,N) versFilm. - **Jeu d'acteur :** Une
Personne(en tant qu'acteur) joue dans unFilm. UnActeurpeut jouer dans plusieursFilms (0,N), et unFilmpeut avoir plusieursActeurs (0,N). L'association "Joue_dans" entreFilmetPersonne(avec rôle "Acteur") doit avoir un attributcachet.
2. Déduction du Schéma Relationnel
- **Table
FILM:** (titre_filmPK,nombre_entrées,id_réalisateurFK versPERSONNE) - **Table
PERSONNE:** (id_personnePK,nom,prénom,âge,adresse) - **Table
JOUE_DANS(association N-N avec attribut) :** (id_personnePK FK versPERSONNE,titre_filmPK FK versFILM,cachet)
Les clés primaires sont soulignées. Les clés étrangères sont indiquées avec (FK) et référencent la table d'origine.
3. Exemple de Base de Données
Voici un exemple pour illustrer le schéma :
PERSONNE :
- (1, 'Durand', 'Pierre', 45, '123 Rue A') // Acteur et Réalisateur
- (2, 'Lefevre', 'Marie', 30, '456 Av B') // Actrice
- (3, 'Dupont', 'Jean', 55, '789 Bd C') // Réalisateur seulement
FILM :
- ('Le Grand Voyage', 1000000, 1) // Réalisé par Pierre Durand (id=1)
- ('L'Aventure Solitaire', 500000, 3) // Réalisé par Jean Dupont (id=3)
- ('Mystère Ancien', 50000, NULL) // Film sans réalisateur connu et sans acteur
- ('La Symphonie', 800000, 1) // Réalisé par Pierre Durand (id=1)
JOUE_DANS :
- (2, 'Le Grand Voyage', 50000) // Marie Lefevre (id=2) joue dans 'Le Grand Voyage' (réalisé par Pierre Durand (id=1)) -> Acteur joue sans réaliser le film.
- (1, 'La Symphonie', 100000) // Pierre Durand (id=1) joue dans 'La Symphonie' (réalisé par lui-même) -> Acteur joue et réalise.
- (2, 'La Symphonie', 75000) // Marie Lefevre (id=2) joue dans 'La Symphonie'.
Illustrations :
- Un acteur (Marie Lefevre) a joué dans un film ('Le Grand Voyage') sans le réaliser.
- Un réalisateur (Jean Dupont) a réalisé un film ('L'Aventure Solitaire') sans y jouer (il n'est pas dans la table
JOUE_DANSpour ce film). - Un acteur (Pierre Durand) a réalisé un film ('La Symphonie') et y a joué.
- Un film ('Mystère Ancien') n'a pas d'acteur (pas dans
JOUE_DANS) et son réalisateur n'est pas spécifié.
4. Gestion de Réalisateurs Multiples pour un Film
Si un film peut avoir plusieurs réalisateurs, le modèle E/A et le schéma relationnel doivent être adaptés :
- **Modèle E/A :** L'association "Réalisé_par" entre
FilmetPersonne(avec rôle "Réalisateur") devient une association de type (N,N). UnFilmpeut être réalisé par plusieursPersonnes (1,N), et unePersonnepeut réaliser plusieursFilms (0,N). - **Schéma Relationnel :** L'attribut
id_réalisateurdans la tableFILMdoit être supprimé. Une nouvelle table d'association est créée pour gérer la relation N-N.
**Nouvelle table d'association pour les réalisateurs :**
REALISE_PAR (id_personne PK FK vers PERSONNE, titre_film PK FK vers FILM)
Exemple de données pour REALISE_PAR :
- (4, 'Kung Fu Panda') // Supposons id_personne 4 pour Mark Osborne
- (5, 'Kung Fu Panda') // Supposons id_personne 5 pour John Stevenson
Les identifiants 4 et 5 correspondraient à Mark Osborne et John Stevenson dans la table PERSONNE.
8. Modélisation d'une Bibliothèque
Cet exercice explore la déduction d'un schéma relationnel et son adaptation à partir d'un modèle E/A pour une bibliothèque.
1. Déduction du Schéma Relationnel (Livres et Revues seulement)
En supposant un modèle E/A où une entité Ouvrage est une super-entité avec deux sous-entités Livre et Revue (relation d'héritage), et que seuls les livres et revues sont présents :
- **Stratégie :** On peut utiliser la stratégie "une table par sous-type avec identifiant partagé" ou "une table par super-type avec des attributs optionnels".
- **Exemple de schéma relationnel (Table par sous-type) :**
LIVRE(id_ouvragePK,titre,auteur,isbn, ...)REVUE(id_ouvragePK,titre,éditeur,issn,numéro, ...)- Une table
OUVRAGE(id_ouvragePK,type_ouvrage) peut exister pour gérer les identifiants uniques et le type, avec les clésid_ouvragedes tablesLIVREetREVUEétant également clés étrangères versOUVRAGE.
2. Adaptation pour d'autres types d'Ouvrages
Si la bibliothèque peut prêter des ouvrages qui ne sont ni des revues ni des livres (ex: CD, DVD, thèses) :
- **Modèle E/A :** La super-entité
Ouvragedeviendrait encore plus générique, et de nouvelles sous-entités (CD,DVD, etc.) seraient ajoutées avec leurs attributs spécifiques. - **Schéma Relationnel :** La meilleure approche serait probablement une table
OUVRAGEgénérique contenant les attributs communs (id_ouvragePK,titre,date_acquisition,type_ouvrage) et des tables spécifiques pour chaque type d'ouvrage (LIVRE,REVUE,CD,DVD), où l'identifiant de ces tables serait également une clé étrangère vers la tableOUVRAGE. La stratégie "table par super-type et sous-types" est la plus flexible.
9. Conception d'une Base de Données pour une Fédération de Cyclisme
La création d'une base de données pour une fédération de cyclisme est un projet complexe nécessitant de modéliser coureurs, équipes, courses, résultats et suivi médical.
a) Schéma Entité-Association (E/A) Proposé
- **Coureur :** (
id_coureur(identifiant),nom,prénom,taille,date_naissance). - **Équipe :** (
id_équipe(identifiant),nom_équipe,budget). - **Directeur Sportif :** (
id_directeur(identifiant),nom,prénom,date_naissance). UneÉquipeest dirigée par unDirecteur_Sportif(1,1). UnDirecteur_Sportifdirige une seuleÉquipeà la fois (0,1). - **Sponsor :** (
id_sponsor(identifiant),nom_sponsor,adresse,domaine_activité). UneÉquipeest financée par plusieursSponsors (1,N). UnSponsorpeut financer plusieursÉquipes (0,N). Association "Finance_équipe". - **Course :** (
id_course(identifiant),nom_course,distance_totale). - **Étape :** (
id_étape(identifiant relatif à la course),numéro_ordre,date_étape,type_étape,ville_départ,ville_arrivée). UneCoursea une ou plusieursÉtapes (1,N). UneÉtapeappartient à une seuleCourse(1,1). Identifiant de l'étape : (id_course,numéro_ordre). - **Participation Coureur-Étape :** Un
Coureurparticipe à uneÉtape. Association "Participe_à_étape" entreCoureuretÉtapeavec l'attributclassement_étape. Cardinalités :Coureur(0,N),Étape(0,N). - **Vainqueur Course :** Une
Coursea unVainqueur_Final(unCoureur) (1,1). UnCoureurpeut être vainqueur de plusieursCourses (0,N). Association "Est_vainqueur_de". - **Soigneur :** (
id_soigneur(identifiant),nom,prénom,date_naissance,nationalité). UneÉquipeemploie plusieursSoigneurs par course (1,N). UnSoigneurest employé par une seuleÉquipepour une course donnée (1,1). L'association "Emploie_pour_course" entreÉquipe,SoigneuretCourse. - **Produit Médical :** (
id_produit(identifiant),nom_produit,indication,contre_indication,posologie). - **Administration Produit :** Un
Soigneuradministre unProduità unCoureurlors d'uneÉtape. Association quaternaire "Administre" entreSoigneur,Produit,CoureuretÉtape, avec l'attributdose. Cardinalités (1,N) pourSoigneur, (1,N) pourProduit, (1,N) pourCoureur, (1,N) pourÉtape. - **Appartenance Coureur-Équipe :** Un
Coureurappartient à une seuleÉquipe(1,1) à un moment donné. UneÉquipea plusieursCoureurs (1,N). Association "Appartient_à_équipe".
Ces éléments constituent les bases pour un schéma E/A complet, avec une attention particulière aux cardinalités pour refléter les règles de gestion.
b) Déduction du Schéma Relationnel
Suivant les règles de dérivation E/A vers relationnel :
- **
COUREUR:** (id_coureur, nom, prénom, taille, date_naissance,id_équipeFK) - **
EQUIPE:** (id_équipe, nom_équipe, budget,id_directeurFK) - **
DIRECTEUR_SPORTIF:** (id_directeur, nom, prénom, date_naissance) - **
SPONSOR:** (id_sponsor, nom_sponsor, adresse, domaine_activité) - **
FINANCE_EQUIPE:** (id_équipeFK,id_sponsorFK) - **
COURSE:** (id_course, nom_course, distance_totale,id_vainqueur_finalFK vers COUREUR) - **
ETAPE:** (id_courseFK,numéro_ordre, date_étape, type_étape, ville_départ, ville_arrivée) - **
PARTICIPATION_ETAPE:** (id_coureurFK,id_courseFK,numéro_ordre_étapeFK, classement_étape) - **
SOIGNEUR:** (id_soigneur, nom, prénom, date_naissance, nationalité) - **
EMPLOIE_POUR_COURSE:** (id_équipeFK,id_soigneurFK,id_courseFK) - **
PRODUIT_MEDICAL:** (id_produit, nom_produit, indication, contre_indication, posologie) - **
ADMINISTRATION_PRODUIT:** (id_soigneurFK,id_produitFK,id_coureurFK,id_courseFK,numéro_ordre_étapeFK, dose)
Les attributs soulignés représentent les clés primaires (composées ou simples). Les 'FK' indiquent les clés étrangères.
c) Aspect Temporel et Historique
Pour stocker l'historique des informations qui évoluent annuellement (composition des équipes, directeur, budget, sponsors, etc.), plusieurs stratégies sont possibles :
- **Ajout d'une date de validité :** Modifier les tables concernées en ajoutant des attributs
date_début_validitéetdate_fin_validitéà chaque enregistrement. Cela permet de conserver toutes les versions historiques. Par exemple, pour l'équipe :EQUIPE_HISTO(id_équipe,date_début_validité, nom_équipe, budget, id_directeur, date_fin_validité). - **Création de tables historiques :** Pour chaque table dont les données évoluent, créer une table "historique" qui stocke les versions précédentes, déclenchée par des mises à jour.
- **Versionnage par édition de course :** Intégrer l'année ou l'identifiant de l'édition de la course dans les clés primaires des tables liées aux éléments qui changent (ex:
EQUIPE_ANNEE(id_équipe,année, nom_équipe, budget, id_directeur),FINANCE_EQUIPE_ANNEE(id_équipe,année,id_sponsor)). Cela permet de lier explicitement les données à une édition spécifique. C'est souvent la solution la plus adaptée pour des événements sportifs annuels.
La troisième option semble la plus pertinente ici, car les changements sont explicitement liés aux "éditions" de la course.
10. Gestion des Personnels Universitaires et de leurs Emplois du Temps
La modélisation des personnels universitaires (enseignants, chercheurs, enseignants-chercheurs) et de leurs emplois du temps est un exemple classique d'utilisation de l'héritage dans les modèles E/A.
Schéma Entité-Association (E/A)
- **Super-entité
Personnel:** (id_personnel(identifiant),nom,prénom,bureau). - **Sous-entités :**
Enseignant,Chercheur,Enseignant_Chercheur. Enseignant_Chercheurhérite deEnseignantetChercheur(héritage multiple ou modélisation avec des rôles). L'énoncé indique "sont à la fois enseignants et chercheurs", ce qui suggère un chevauchement/généralisation. Une approche est de faire dePersonnella super-entité, etEnseignant,Chercheur,Enseignant_Chercheurdes sous-entités avec des attributs spécifiques.Enseignant_Chercheurpeut avoir un attributpourcentage_enseignement.- **Réunion :** (
id_réunion(identifiant),date_réunion,heure_début,heure_fin,salle_réunion). - **Participation à la Réunion :** Une
Personne(n'importe quelPersonnel) participe à uneRéunion. Association "Participe" entrePersonneletRéunion. Cardinalités :Personnel(0,N),Réunion(1,N). - **Cours :** (
id_matière(identifiant),nom_matière,salle_cours,période_début,période_fin,jour_semaine,heure_début_cours,heure_fin_cours). - **Dispense Cours :** Un
Enseignantdispense unCours. UnEnseignantpeut enseigner plusieurs matières (0,N), et plusieurs fois la même matière à des périodes différentes. UnCourspeut être dispensé par plusieursEnseignants (0,N) (si le même cours, à la même matière, est enseigné par plusieurs profs). Ici, "plusieurs enseignants peuvent enseigner la même matière dans l'année, à des jours et créneaux horaires différents". Donc l'association est entreEnseignantet une "occurrence de cours" ouCours. Une association "Dispense" entreEnseignantetCours. Cardinalités :Enseignant(0,N),Cours(1,N). La clé du Cours doit inclure la période, jour, créneau. - **Mission :** (
id_mission(identifiant),date_début_mission,date_fin_mission,lieu_mission). - **Effectue Mission :** Un
Chercheureffectue uneMission. Association "Effectue" entreChercheuretMission. Cardinalités :Chercheur(0,N),Mission(1,1). - **Laboratoire :** (
id_laboratoire(identifiant),nom_laboratoire,secrétariat_urgence). - **Appartient à Laboratoire :** Un
Chercheurappartient à unLaboratoire(1,1). UnLaboratoirea plusieursChercheurs (0,N). Association "Appartient_à_Labo".
Déduction du Schéma Relationnel
Pour l'héritage, nous pouvons utiliser la stratégie "une table par super-type et une table par sous-type".
- **
PERSONNEL:** (id_personnel, nom, prénom, bureau,type_personnel(ex: 'E', 'C', 'EC')) - **
ENSEIGNANT:** (id_personnelFK vers PERSONNEL) - **
CHERCHEUR:** (id_personnelFK vers PERSONNEL) - **
ENSEIGNANT_CHERCHEUR:** (id_personnelFK vers PERSONNEL, pourcentage_enseignement) - **
REUNION:** (id_réunion, date_réunion, heure_début, heure_fin, salle_réunion) - **
PARTICIPE_REUNION:** (id_personnelFK,id_réunionFK) - **
MATIERE:** (id_matière, nom_matière, salle_cours) - **
COURS_DISPENSE:** (id_cours_dispense,id_matièreFK, période_début, période_fin, jour_semaine, heure_début_cours, heure_fin_cours,id_enseignantFK vers ENSEIGNANT) // Chaque occurrence de cours est liée à un enseignant. - **
MISSION:** (id_mission, date_début_mission, date_fin_mission, lieu_mission,id_chercheurFK vers CHERCHEUR) - **
LABORATOIRE:** (id_laboratoire, nom_laboratoire, secrétariat_urgence) - **
APPARTIENT_LABO:** (id_chercheurFK vers CHERCHEUR,id_laboratoireFK) // Si un chercheur ne peut appartenir qu'à un labo, la FK id_laboratoire pourrait être dans CHERCHEUR directement. Ici c'est N-N pour flexibilité.
11. Tennis : Reconstruction du Modèle E/A à partir du Schéma Relationnel
Reconstruire un modèle Entité-Association à partir d'un schéma relationnel existant permet de comprendre les relations sous-jacentes et les contraintes de conception. Voici le schéma relationnel donné :
TOURNOI(lieu,année)JOUEUR(nujoueur, nom, prénom, annaiss, nationalité)RENCONTRE(nugagnant*, nuperdant*, lieu*, année*, score)GAIN(nujoueur*, lieu*, année*, sponsor*, prime)SPONSOR(nom_sponsor, chiffre_d_affaires, adresse)
Interprétation et Modèle E/A :
- **Entités :**
Tournoi(Identifiant :lieu,année)Joueur(Identifiant :nujoueur, Attributs :nom,prénom,annaiss,nationalité)Sponsor(Identifiant :nom_sponsor, Attributs :chiffre_d_affaires,adresse)- **Associations :**
- **
RENCONTRE:** Cette table représente une association entreJoueuretTournoi. Les attributsnugagnantetnuperdantsuggèrent des rôles spécifiques pour les joueurs. L'association serait "Participe_à_Rencontre" entre deux rôles deJoueur(Gagnant, Perdant) etTournoi, avec l'attributscore. Les clés étrangères (lieu*,année*) montrent que la rencontre est spécifique à un tournoi. Les cardinalités seraient : unTournoicontient plusieursRencontres (1,N). UneRencontreimplique deuxJoueurs spécifiques (1,1) pour Gagnant et (1,1) pour Perdant, et appartient à un (1,1)Tournoi. - **
GAIN:** Cette table représente une association ternaire entreJoueur,TournoietSponsor. Les clés étrangères (nujoueur*,lieu*,année*,sponsor*) indiquent que le gain est spécifique à un joueur, un tournoi et un sponsor donné, avec l'attributprime. Les cardinalités seraient N-N-N : unJoueurpeut avoir des gains de différentsSponsors dans différentsTournois. UnSponsorpeut donner des gains à différentsJoueurs dans différentsTournois. UnTournoipeut générer des gains pour plusieursJoueurs avec plusieursSponsors.
12. Jeux Olympiques : Reconstruction du Modèle E/A à partir du Schéma Relationnel
À partir du schéma relationnel des Jeux Olympiques, nous pouvons déduire le modèle Entité-Association sous-jacent.
Pays(code, nom)Sport(sid, nom)Epreuve(epId, sid*, nom, categorie, dateDebut, dateFin)Athlete(aid, nom, prenom, dateNaissance, pays*)Equipe(eqId, pays*)AthletesEquipe(eqId*, aid*)RangIndividuel(epId*, aid*, rang)RangEquipe(epId*, eqId*, rang)
Interprétation et Modèle E/A :
- **Entités :**
Pays(Identifiant :code, Attribut :nom)Sport(Identifiant :sid, Attribut :nom)Épreuve(Identifiant :epId, Attributs :nom,categorie,dateDebut,dateFin)Athlète(Identifiant :aid, Attributs :nom,prénom,dateNaissance)Équipe(Identifiant :eqId)- **Associations et Cardinalités :**
- **
Épreuve-Sport:** UneÉpreuveest associée à unSport(clé étrangèresiddansEpreuve). UnSportpeut avoir plusieursÉpreuves (1,N). UneÉpreuveappartient à un seulSport(1,1). - **
Athlète-Pays:** UnAthlètereprésente unPays(clé étrangèrepaysdansAthlete). UnPayspeut avoir plusieursAthlètes (0,N). UnAthlètereprésente un seulPays(1,1). - **
Équipe-Pays:** UneÉquipereprésente unPays(clé étrangèrepaysdansEquipe). UnPayspeut avoir plusieursÉquipes (0,N). UneÉquipereprésente un seulPays(1,1). - **
AthlètesEquipe:** Cette table est une association N-N entreAthlèteetÉquipe. UnAthlètepeut faire partie de plusieursÉquipes (si le contexte le permet, ex: différentes disciplines, ou historique). UneÉquipeest composée de plusieursAthlètes (1,N). Cardinalités (0,N) pourAthlète, (1,N) pourÉquipe. - **
RangIndividuel:** Cette table représente l'association "Obtient_rang" entreÉpreuveetAthlète, avec l'attributrang. C'est une N-N puisque un athlète participe à plusieurs épreuves et une épreuve a plusieurs athlètes. Cardinalités (0,N) pourAthlète, (0,N) pourÉpreuve. - **
RangEquipe:** Similaire àRangIndividuel, c'est l'association "Obtient_rang" entreÉpreuveetÉquipe, avec l'attributrang. Cardinalités (0,N) pourÉquipe, (0,N) pourÉpreuve.
Foire Aux Questions (FAQ) sur les Modèles E/A et Relationnels
Qu'est-ce qu'un modèle Entité-Association (E/A) ?
Un modèle Entité-Association est une représentation conceptuelle des données utilisée dans la conception de bases de données. Il décrit les entités (objets réels ou abstraits), leurs attributs (propriétés des entités), et les associations (relations) entre ces entités, incluant les cardinalités qui définissent le nombre minimal et maximal d'occurrences impliquées dans chaque relation.
Quelle est la différence entre un modèle E/A et un schéma relationnel ?
Le modèle E/A est un modèle conceptuel, indépendant de la technologie, qui se concentre sur la signification des données et les relations entre elles de manière abstraite. Le schéma relationnel, en revanche, est un modèle logique, directement translatable en tables de base de données (comme SQL). Il définit les tables, les colonnes, les clés primaires et les clés étrangères, et est une étape concrète vers l'implémentation physique de la base de données.
Pourquoi les cardinalités sont-elles cruciales dans un modèle E/A ?
Les cardinalités sont essentielles car elles définissent les règles métier et les contraintes d'intégrité de la base de données. Elles indiquent, pour chaque extrémité d'une association, le nombre minimum et maximum d'occurrences d'une entité qui peuvent être liées à une occurrence de l'autre entité. Une modélisation précise des cardinalités garantit que la base de données reflète fidèlement la réalité des données et aide à prévenir les erreurs de données.