Questionnaires

[1 h]

On souhaite construire une base de données de questions.

On renseigne pour chaque question un niveau de difficulté indiqué par un entier entre 1 et 5, ainsi que la date de création de la question. Chaque question est dotée d'un numéro unique pour toute la base. De plus chaque question est unique, il n'existe pas deux questions avec le même intitulé : par exemple il n'est pas possible d'avoir deux fois la question : « quelle est la capitale de Paris ».

Il existe deux types de questions :

  • Reconnaître : l'utilisateur doit reconnaître un élément sur une image. Il faut donc stocker dans la base de données un chemin vers l'image à afficher et la réponse attendue.

    Exemple d'intitulé : « Sur le diagramme UML ci-joint, donnez les noms des éléments qui sont des classes associations » (intitulé de la catégorie : classes associations, difficulté 2).

  • Vrai/Faux : l'utilisateur doit dire si l'intitulé de la question est vrai ou faux. On doit enregistrer la réponse attendue (vrai ou faux).

    Exemple d'intitulé : « Dans un schéma relationnel, on fait apparaître les attributs dérivés » (intitulé de la catégorie : traduction UML/relationnel, difficulté 2).

Toutes les questions relèvent d'une unique catégorie. Chaque catégorie a un intitulé unique.

Une catégorie possède obligatoirement au moins une question.

Question

Proposez un modèle conceptuel en UML répondant à ces besoins.

Soit le modèle relationnel suivant résultat d'une transformation de l'héritage par la classe mère.

1
Catégorie (#intitulé:string)
2
Question (#numéro:integer, intitulé:string, difficulté:integer, date_creation:date, image:string, réponse:string, correct:char(1), catégorie=>Catégorie)

Question

Exprimez toutes les contraintes qui s'appliquent.

Indice

Contraintes :

  • intitulé...

  • difficulté...

  • date_creation...

  • correct...

  • Contrainte liée à l'héritage : ...

  • Contrainte liée l'association 1:N : ...

Question

Montrez que l'on a pas besoin d'attribut permettant de discriminer les questions de type Reconnaître des questions de type Vrai_faux.

Question

Écrivez le code SQL permettant de créer la base de données, en gérant toutes les contraintes qui peuvent l'être au sein des CREATE TABLE.

Indice

Seule la vérification de PROJECTION(question, catégorie) = PROJECTION(catégorie, intitulé) n'est pas possible.

Question

Entrez les données d'exemple dans votre BD afin d'en tester le bon fonctionnement. Testez vos contraintes avec quelques exemples négatifs.

Question

Écrivez la vue permettant d'ajouter un attribut de discrimination calculé type.

Question

Écrivez une vue en SQL permettant de vérifier facilement si la contrainte est respectée ou non.