Questions

Question

Créer en SQL la vue v_questionnaire permettant d'afficher tous les questionnaires avec leurs questions sous la forme suivante.

questionnaire

number

label

Questionnaire BDD

1

Aimez vous l'UML ?

Questionnaire BDD

2

Aimez vous le Relationnel ?

Questionnaire BDD

3

Aimez vous le SQL ?

Questionnaire DW

1

Aimez vous le dimensionnel ?

Questionnaire DW

2

Aimez vous le relationnel-objet ?

...

Indice

Les questions d'un même questionnaire doivent se suivre et être dans l'ordre croissant de leur numéro number.

Solution

1
CREATE VIEW v_questionnaire AS
2
SELECT questionnaire, number, label
3
FROM question
4
ORDER BY questionnaire, number
5

Question

Écrire en algèbre relationnel et en SQL la requête permettant d'afficher toutes les questions avec les logins des utilisateurs qui y ont répondu et leur réponse.

number

label

login

value

1

Aimez vous l'UML ?

nf17p001

-1

1

Aimez vous l'UML ?

nf17p002

2

1

Aimez vous l'UML ?

nf17p003

-1

...

2

Aimez vous le Relationnel ?

nf17p001

1

2

Aimez vous le Relationnel ?

nf17p002

2

...

Solution

1
Projection (
2
Jointure (answer, question, question=number AND questionnaire=questionnaire),
3
number,label,login,value)
1
SELECT q.number, q.label, a.login, a.value
2
FROM answer a JOIN question q
3
ON a.question=q.number AND a.questionnaire=q.questionnaire
4

Question

Écrivez en SQL la requête permettant d'obtenir la moyenne pour chaque question de la base de données. [1pt]

questionnaire

question

label

moyenne

Questionnaire BDD

1

Aimez vous l'UML ?

-1.2

Questionnaire BDD

2

Aimez vous le Relationnel ?

1.9

Questionnaire BDD

3

Aimez vous le SQL ?

0.1

Questionnaire DW

1

Aimez vous le dimensionnel ?

1.1

Questionnaire DW

2

Aimez vous le relationnel-objet ?

-1.2

...

Solution

1
SELECT a.questionnaire, q.number, q.label, avg(a.value)
2
FROM answer a JOIN question q
3
ON a.question=q.number AND a.questionnaire=q.questionnaire
4
GROUP BY a.questionnaire, q.number, q.label
5
ORDER BY a.questionnaire, q.number
6