Exercice Corrigé Passage Conceptuel au relationnel (MCD au MLD) : MCD et UML d'une gestion d'auto-école

Soit le modèle Entité-Association et Le Modèle UML suivant :


Figure 1: Modélisation E/A et UML de la base de données d'une l'auto-école.

Une auto-école souhaite construire une base de données pour gérer les examens théoriques du code de la route de ses élèves. Chaque élève est identifié par un numéro unique et est caractérisé par un nom, un prénom, une adresse et une date de naissance. Chaque élève assiste à plusieurs séances de code (autant qu'il le souhaite). Chaque séance est caractérisée par une date et une heure. A chaque séance de code, le directeur de l'auto-école choisit une série de questions sur un CD-ROM.

Chaque CD-ROM est identifié par un numéro et est caractérisé par un nom d'éditeur. Chaque CD-ROM est composé de 6 séries, numérotées de 1 à 6. Chaque série est composée de 40 questions.
Chaque question est identifié par un intitulé et est caractérisée par une réponse, un niveau de difficulté et un thème. Une même question peut apparaître dans plusieurs séries avec un numéro d'ordre pour chaque série ; par exemple une même question peut apparaître comme question N◦2  dans la série 5 du CD-ROM 15 et comme question N◦12 dans la série 3 du CD-ROM 4. Une même série peut être projetée plusieurs fois à des séances différentes. Lorsqu'un élève assiste à une séance, il obtient le nombre de fautes (une note sur 40) qu'il a fait pour la série passée pendant la séance.

Lorsqu'un élève a obtenu, au cours des quatre dernières séances auxquelles il a assistées, un nombre de fautes inférieur ou égal à 5, le directeur de l'auto-école l'autorise à passer l'examen théorique du code de la route à une date donnée (un seul examen pour une date donnée). L'auto-école ne peut présenter que 8 élèves maximum à chaque date d'examen. Les élèves ayant obtenu plus de 5 fautes à l'examen sont recalés et doivent assister de nouveau à des séances de code avant de pouvoir se représenter à l'examen.

La base de données doit permettre de répondre à des requêtes telles que "Quel est le nombre moyen de fautes pour la série 5 du CD-ROM 14?", "Quels élèves peuvent se présenter au prochain examen du code de la route ?", "Quels élèves ont échoué au moins une fois à l'examen ?" etc.

La figure 1 présente la modélisation Entité/Association (format Merise) et la modélisation UML de l'énoncé. Les explications ne sont données que pour le schéma E/A mais peuvent être adaptées au schéma UML. Pour une compréhension de la différence entre une modélisation E/A ou UML et le passage au relationnel, vous pouvez vous reporter à l'ouvrage [4]. Les schémas de modélisation ci-avant sont sémantiquement clairs. Néanmoins, quels points nécessitent d'être précisés.

  • L'ensemble d'entités  Série est un ensemble d'entités faibles de CD-ROM, au format Merise (ou une association qualifiée en UML). En effet, ce choix de modélisation a été fait pour représenter le fait que le numéro d'une série est relatif au CD-ROM auquel la série appartient.
  • Les cardinalités de l'association entre les ensembles d'entités Série et CD-ROM sont 1:1-6:6, car une série appartient à un unique CD-ROM et un CR-ROM contient exactement 6 séries de questions. Le principe est le même pour les cardinalités de l'association entre Série et Question : une série contient exactement 40 questions (cardinalité 40 : 40). En revanche, une même question peut apparaître dans plusieurs séries avec un numéro d'ordre différent à chaque fois, d'où la cardinalité 1 : N et l'attribut Numéro qui caractérise l'association contient.
  • L'attribut NombreFautes est un attribut de l'association entre les ensembles d'entités Client et Examen_Code et de l'association entre les ensembles d'entités Client et Seance_Code. En effet, cet attribut caractérise l'association et non pas un client, une séance de code ou encore un examen de code. Il caractérise le lien entre deux entités de ces ensembles.
Déduisez le schéma relationnel de la base de données correspondante.

Vous préciserez les clés primaires des relations en les soulignant ainsi que les clés étrangères en les signalant par un # et en précisant à quoi elles font référence.

Dans votre schéma relationnel, chaque relation doit être spécifiée de la manière suivante : Nom(att1,...,attn) où Nom est le nom de la relation et att1, ...,    attn sont des noms d'attributs.

Le nom de la relation doit obligatoirement avoir un lien avec les noms des ensembles d'entités (classes) ou des associations du schéma de modélisation de la question 1.


Vous donnerez des explications claires et concises du passage au relationnel. Vous préciserez notamment pourquoi et comment vous créez ou modifiez certaines relations (1 ligne maximum par relation).

----------------------------------------------------------------------------------------------------
Correction
----------------------------------------------------------------------------------------------------

Le modèle relationnel déduit de la modélisation ci-dessus est le suivant. Les clés primaires sont soulignées. Les clés étrangères sont précédées d'un '#'. Pour un rappel de ces notions, vous pouvez vous référer aux pages 56 à 60 de [2]. Le passage d'un schéma de modélisation à un modèle relationnel est rappelé aux pages 120 à 143 de [4].

Client(ClientID, Nom, Prénom, Adresse, DateNaissance)

Cette relation est déduite du passage au relationnel de l'ensemble d'entités (ou classe) Client.

CD-ROM(CdRomID, Editeur)

Cette relation est déduite du passage au relationnel de l'ensemble d'entités (ou classe) CD-ROM.

Question(QuestionID, Intitulé, Réponse, NiveauDiculté, Thème)

Cette relation est déduite du passage au relationnel de l'ensemble d'entités (ou classe) Question.

Serie(SerieID, #CdRomID)

Cette relation est issue du passage au relationnel de l'ensemble d'entités (classes) Serie.
En modélisation E/A, l'ensemble d'entités Serie étant un ensemble d'entités faibles de CR-ROM, la clé primaire de la relation Serie est composée de l'identicateur de la série et de l'identicateur du CD-ROM auquel la série appartient.

ContenuSerie(#QuestionID, SerieID, #CdRomID, Numéro)

Cette relation est déduite du passage au relationnel de l'association Contient. Le couple d'attributs    #CdRomID,#SerieID fait référence à la clé primaire de la relation  Serie.
L'attribut #QuestionID fait référence à la clé primaire de la relation Question. Il ne faut pas oublier l'attribut Numéro qui caractérise l'association contient.    Seance_Code(SeanceID,Date, Heure,#CdRomID,#SerieID)
 
Cette relation est issue du passage au relationnel de l'ensemble d'entités (classes) Seance_Code.

Le couple d'attributs #CdRomID est une clé étrangère qui fait référence à la clé primaire de la relation Serie. Ce couple d'attributs a été ajouté lors du passage au relationel de l'association est_diusée_pendant, une seule série (d'un CR-ROM donné) étant diusée pendant une séance de code (cardinalité 1:1).

Participation(#ClientID, #SeanceID, NombreFautes)
Cette relation est issue du passage au relationnel de l'association assiste_à. Les attributs#ClientID et #SeanceID sont des clés étrangères qui font respectivement références aux clés primaires des relations Client et Seance. En eet, un client peut assister à plusieurs séances et, lors d'une séance, il y a plusieurs clients. Il ne faut pas oublier l'attribut NombreFautes qui caractérise l'association assiste_à.

Examen_Code(PassageCodeID, Date, Heure, LieuExamen)

Cette relation est déduite du passage au relationnel de l'ensemble d'entités (ou classe) Examen_Code.

PassageCode(#PassageCodeID, #ClientID, NombreFautes)

Cette relation est déduite du passage au relationnel de l'association est_autorisé_à_passer.
Les attributs #PassageCodeID et    #ClientID font référence aux clés primaires des relations Examen-Code et Client.
                         

Article plus récent Article plus ancien

Leave a Reply