Exercice SQL Corrigé : Passage au relationnel



On souhaite construire une base de données gérant des revues et les articles de ces revues. Une revue est caractérisée par un nom et une périodicité. Chaque revue parait sous la forme de numéros, chaque numéro étant identi fié par un nombre relatif à la revue et à l'année en cours (ex. le numéro N◦12 de Linux Magazine en 2003 est différent du numéro N◦12 de Linux Magazine en 2004). Un numéro est également caractérisé par un nombre de pages. Chaque numéro contient des articles écrits par un ou plusieurs auteurs. Un auteur est caractérisé par un nom, un prénom, ainsi qu'un email. Chaque article possède un titre et un contenu. Un même article peut apparaître dans plusieurs plusieurs numéros d'une même revue ou de différentes revues. Lorsqu'un article apparaît dans un numéro d'une revue, il a une page de début et une page de n. Un article peut faire référence à d'autres articles, en précisant le numéro et la revue dans lesquels l'article référencé a été publié.


Modelisation Entité / Association


Modalisation UML


Modélisation E/A et UML d'une base de données gérant des revues.

La base de données doit permettre de répondre à des requêtes telles que "Combien de numéros de Linux Magazine sont parus en 2004 ?", "Quels sont les titres des articles parus dans au moins deux revues différentes ?", "Quels sont les auteurs ayant publiés dans le numéro 3 de la revue
L'Histoire en 2004 ?" etc.La grue 2 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 di ffé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 Numéro est un ensemble d'entités faibles de Revue au format Merise (ou une association quali fiée en UML). En e et, ce choix de modélisation a été fait pour représenter le fait que identificateur d'un numéro est relatif à la revue à laquelle le numéro appartient. Un numéro d'une revue donnée étant identifié par un nombre et une année, ces deux attributs (ID et Année) sont soulignés.
• Les cardinalités de l'association entre les ensembles d'entités Numéro et Article sont 1:N-1:M, car un article peut apparaître dans plusieurs numéros et un numéro contient plusieurs articles. Le principe est le même pour les cardinalités de l'association entre Auteur et Article.

• Les attributs PageDébut et PageFin caractérisent l'association entre Article et Numéro (un numéro étant relatif à une revue, il est inutile de faire une association avec Revue). En effet, la page de début et la page de fin peuvent varier, pour un même article, lorsqu'il paraît dans plusieurs numéros di fférents.
• Un article peut faire référence à un autre article. Le numéro et la revue dans lesquels l'article référencé apparaît doivent être précisés dans l'article référençant. Par exemple, l'article intitulé "Correction d'exercices en bases de données" peut faire référence à l'article "Concepts généraux en BD relationnelle" du numéro 12 de l'année 2004 de la revue "Informatique magazine". A cet e et, les ensembles d'entités Numéro et Article ont été regroupés au sein d'un agrégat au format Merise (ou d'une classe-association en UML). Cet agrégat (ou cette classe-association) représente l'article référencé, c'est-à-dire l'article et le numéro de la revue où il a été publié (il est inutile d'ajouter la revue à l'agrégat puisque Numéro est un ensemble d'entités faibles de Revue). Cet agrégat (ou cette classe-association) est associée à Article,

c'est-à-dire à l'article référençant, dont on ne précise pas le numéro et la revue. Les cardinalités ont pour borne inférieure 0 car un article peut ne référencer aucun autre article et un article peut ne jamais être référencé. 

1-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éci fiée de la manière suivante : RNom(att1,...,attn) où RNom 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 modifie z certaines relations (1 ligne maximum par relation).