Implémentation relationnelle

Question

Produire le modèle relationnel R correspondant au schéma UML Q.

Solution

1
Questionnaire(#name)
2
Question(#questionnaire=>Questionnaire, #number, label)
3
User(#login)
4
Answer(#questionnaire=>Questionnaire, #question=>Question, #user=>User, value, comment)

Question

Énoncer la fermeture transitive des dépendances fonctionnelles. En déduire la forme normale respectée (en justifiant). Normaliser le schéma en 3NF.

Question

Implémenter le modèle R en SQL.

Indice

On cherchera à implémenter toutes les contraintes spécifiées au niveau conceptuel.

Solution

1
CREATE TABLE user (
2
login VARCHAR PRIMARY KEY
3
);
4
5
CREATE TABLE questionnaire (
6
name VARCHAR PRIMARY KEY
7
);
8
9
CREATE TABLE question (
10
number INTEGER,
11
label VARCHAR,
12
questionnaire VARCHAR REFERENCES questionnaire(name),
13
PRIMARY KEY (number, questionnaire)
14
); 
15
16
CREATE TABLE answer (
17
question INTEGER, 
18
questionnaire VARCHAR,
19
login VARCHAR,
20
value INTEGER CHECK (value=0 OR value=-2 OR value=-1 OR value=1 OR value=2),
21
comment VARCHAR,
22
PRIMARY KEY (question,questionnaire,login),
23
FOREIGN KEY (login) REFERENCES user(login),
24
FOREIGN KEY (question,questionnaire) REFERENCES question(number,questionnaire)
25
);