Produire le modèle relationnel R correspondant au schéma UML Q.
Questionnaire(#name)
Question(#questionnaire=>Questionnaire, #number, label)
User(#login)
Answer(#questionnaire=>Questionnaire, #question=>Question, #user=>User, value, comment)
Énoncer la fermeture transitive des dépendances fonctionnelles. En déduire la forme normale respectée (en justifiant). Normaliser le schéma en 3NF.
Implémenter le modèle R en SQL.
On cherchera à implémenter toutes les contraintes spécifiées au niveau conceptuel.
CREATE TABLE user (
login VARCHAR PRIMARY KEY);
CREATE TABLE questionnaire (
name VARCHAR PRIMARY KEY);
CREATE TABLE question (
number INTEGER,label VARCHAR,questionnaire VARCHAR REFERENCES questionnaire(name),PRIMARY KEY (number, questionnaire)
);
CREATE TABLE answer (
question INTEGER, questionnaire VARCHAR,login VARCHAR,value INTEGER CHECK (value=0 OR value=-2 OR value=-1 OR value=1 OR value=2),
comment VARCHAR,PRIMARY KEY (question,questionnaire,login),
FOREIGN KEY (login) REFERENCES user(login),
FOREIGN KEY (question,questionnaire) REFERENCES question(number,questionnaire)
);