Gestion documentaire
[30 min]
Soit le schéma relationnel suivant permettant une gestion électronique de documents (GED) :
Users (#login, pwd, name)
Documents (#id, title, creator=>Users(login))
Versions (#num, #doc=>Documents(id), contrib=>Users(login))
NB : L'on utilisera ni les opérateurs ensemblistes, ni les sous-requêtes.
Vous pouvez tester vos requêtes directement sur votre base de données en l'initialisant avec le fichier de données.
/**
DROP TABLE Versions ;
DROP TABLE Documents ;
DROP TABLE Users ;
**/
CREATE TABLE Users (
login VARCHAR PRIMARY KEY,
pwd VARCHAR,
name VARCHAR
) ;
CREATE TABLE Documents (
id INTEGER PRIMARY KEY,
title VARCHAR,
creator VARCHAR REFERENCES Users(login)
) ;
CREATE TABLE Versions (
num INTEGER PRIMARY KEY,
doc INTEGER REFERENCES Documents(id),
contrib VARCHAR REFERENCES Users(login)
) ;
INSERT INTO Users (login, pwd, name) VALUES ('karl', 'marx', 'Karl Marx') ;
INSERT INTO Users (login, pwd, name) VALUES ('al', 'ecm2', 'Albert Einstein') ;
INSERT INTO Users (login, pwd, name) VALUES ('stc', 'nf17', 'Stéphane Crozat') ;
INSERT INTO Users (login, pwd, name) VALUES ('paul', 'mot', 'Paul Pagnol') ;
INSERT INTO Documents (id, title, creator) VALUES (1, 'Le Capital', 'karl') ;
INSERT INTO Documents (id, title, creator) VALUES (2, 'La théorie de la relativité restreinte et générale', 'al') ;
INSERT INTO Documents (id, title, creator) VALUES (3, 'Les bases de données', 'stc') ;
INSERT INTO Versions (num, doc, contrib) VALUES (1, 1, 'karl') ;
INSERT INTO Versions (num, doc, contrib) VALUES (2, 1, 'karl') ;
INSERT INTO Versions (num, doc, contrib) VALUES (3, 1, 'karl') ;
INSERT INTO Versions (num, doc, contrib) VALUES (4, 2, 'al') ;
INSERT INTO Versions (num, doc, contrib) VALUES (5, 2, 'stc') ;
INSERT INTO Versions (num, doc, contrib) VALUES (6, 3, 'stc') ;
Question
En algèbre relationnel et en SQL, afficher le nom de l'auteur du document dont le titre est "Le Capital".
name |
---|
Karl Marx |
Question
En algèbre relationnel et en SQL, afficher les logins des users qui sont à la fois creator et contrib et qui commencent par "k".
login |
---|
karl |
... |
Question
En algèbre relationnel et en SQL, Afficher les logins des users qui n'ont ni créé, ni contribué.
login |
---|
paul |
... |
Question
En SQL, afficher la dernière version (celle qui a le numéro le plus élevé) de chaque document, la liste sera triée par id des documents croissants.
id | last_version |
---|---|
001 | 2 |
... | ... |
Question
En SQL, afficher le nombre de contributions pour chaque utilisateur, en face de leur nom, à condition que l'utilisateur ait contribué au moins 2 fois, la liste sera triée par nombre de contributions décroissant.
name | nb_contributions |
---|---|
Karl Marx | 14 |
... | ... |