Академический Документы
Профессиональный Документы
Культура Документы
Session 2 de Printemps
PARCOURS : CSB4 & CSB6
UE : INF 159, Bases de donnes
preuve : INF 159 EX
Date : Lundi 20 juin 2011
Heure : 11 heures
DISVE
Licence
Dure :
1 heure 30
SUJET + CORRIGE
Avertissement
PostGreSQL, et toutes les relations sont prxes par le nom du schma Bibliotheque,
CREATE
SCHEMA B i b l i o t h e q u e ;
La bibliothque est constitue de livres. Chaque livre est en fait un des exemplaires d'une oeuvre. Les oeuvres
sont dcrites dans une relation BCNF.
CREATE TABLE
);
B i b l i o t h e q u e . Oeuvres (
T y p a g e d e s a t t r i b u t s
ISBN t e x t NOT NULL ,
T i t r e t e x t NOT NULL ,
E d i t e u r t e x t NOT NULL ,
A u t e u r t e x t NOT NULL , S e p a r e r
C l e f s c a n d i d a t e s
PRIMARY KEY ( ISBN )
les
auteurs
par
une
virgule
pour
la
l i s i b i l i t e
Pour pouvoir emprunter simultanment plusieurs livres, chaque adhrent doit dposer une caution dont le tarif
est dcrit dans une relation BCNF.
CREATE TABLE
);
Bibliotheque . Tarifs (
T y p a g e d e s a t t r i b u t s
N b E m p r u n t s A u t o r i s e s integer CHECK ( N b E m p r u n t s A u t o r i s e s >= 0 ) ,
C a u t i o n integer CHECK ( N b E m p r u n t s A u t o r i s e s >= 0 ) ,
C l e f s c a n d i d a t e s
PRIMARY KEY ( N b E m p r u n t s A u t o r i s e s )
1/ 9
CREATE TABLE
);
Bibliotheque . Adherents (
T y p a g e d e s a t t r i b u t s
I d s e r i a l NOT NULL ,
s e r i a l = s e q u e n c e d ' e n t i e r 1 , 2 , 3 , . . .
Nom t e x t NOT NULL ,
Prenom t e x t NOT NULL ,
N b E m p r u n t s A u t o r i s e s integer NOT NULL ,
C l e f s c a n d i d a t e s
PRIMARY KEY ( i d ) ,
C l e f s e t r a n g e r e s
FOREIGN KEY ( N b E m p r u n t s A u t o r i s e s ) REFERENCES B i b l i o t h e q u e . T a r i f s ( N b E m p r u n t s A u t o r i s e s )
Pour la relation
Adherents,
Rponse :
Id
La clef trangre
NbEmpruntsAutorises
Tarifs.
Tarifs.
garantit que lors de l'ajout d'un adhrent, la valeur de cet attribut existe dans la relation
Cela
CREATE TABLE
);
Bibliotheque . Livres (
T y p a g e d e s a t t r i b u t s
I d s e r i a l NOT NULL ,
s e r i a l = s e q u e n c e d ' e n t i e r
ISBN t e x t NOT NULL ,
DateAchat date NOT NULL ,
C l e f s c a n d i d a t e s
PRIMARY KEY ( I d ) ,
C l e f s e t r a n g e r e s
FOREIGN KEY ( ISBN ) REFERENCES B i b l i o t h e q u e . O e u v r e s ( ISBN )
Pour la relation
Livres,
1,
2,
3,
. . .
Rponse :
Id
La clef trangre
ISBN
(ISBN, DateAchat)
Oeuvres.
Oeuvre.
CREATE TABLE
);
B i b l i o t h e q u e . Emprunts (
T y p a g e d e s a t t r i b u t s
L i v r e integer NOT NULL ,
DateEmprunt date NOT NULL ,
D a t e R e t o u r date NOT NULL DEFAULT ' i n f i n i t y ' ,
A d h e r e n t integer NOT NULL ,
C l e f s c a n d i d a t e s
PRIMARY KEY ( L i v r e , DateEmprunt ) ,
UNIQUE ( L i v r e , D a t e R e t o u r ) ,
C l e f s e t r a n g e r e s
FOREIGN KEY ( A d h e r e n t ) REFERENCES B i b l i o t h e q u e . A d h e r e n t s ( I d ) ,
FOREIGN KEY ( L i v r e ) REFERENCES B i b l i o t h e q u e . L i v r e s ( I d ) ,
C o n t r a i n t e s d ' i n t e g r i t e e l e m e n t a i r e
CHECK ( DateEmprunt < D a t e R e t o u r )
2/ 9
PostgreSQL
CREATE
exige
une
fonction
pour
les
contraintes
d' integrite
avec
SELECT
Pour la relation
Emprunts,
expliquez le rle des clefs trangres, puis dcrivez l'objectif des deux contraintes d'intgrit.
Rponse :
Emprunts
PostgreSQL
exige
Contrainte
d' integrite
PostgreSQL
exige
Contrainte
d' integrite
CREATE
une
fonction
inter
pour
les
contraintes
d' integrite
avec
SELECT
relations
CREATE
une
fonction
inter
pour
les
contraintes
d' integrite
relations
avec
SELECT
Rponse :
1.
DatesEmpruntAchat
3/ 9
2.
NombreEmprunts
En tenant compte uniquement des dpendances fonctionnelles que vous avez listes
Adherents, Livres
et
Emprunts
Rponse :
Adherents
3NF
BCNF
Justication
OUI
OUI
3NF
Id (ISBN, DateAchat)
BNCF
Livres
OUI
OUI
BCNF
BNCF
Emprunts
OUI
OUI
BNCF
Les
SELECT
FROM
WHERE
3NF
3NF
Aprs en avoir donn une criture algbrique, crire une requte SQL qui caractrise
Rponse :
Les 2 clefs candidates sont les membres gauches des 2 DFs, donc BCNF
Adherents
noms
des
adherents
pouvant
empruntes
plus
de
livres
simultanement
I d , Nom
Bibliotheque . Adherents
B i b l i o t h e q u e . Adherents . NbEmpruntsAutorises > 3;
Aprs en avoir donn une criture algbrique, crire une requte SQL qui caractrise
les identiants, noms et prnoms des lecteurs de l'ouvrage dont l'ISBN est '2-7117-4838-3'.
Les
SELECT
FROM
WHERE
AND
AND
e t prenoms d es
lecteurs
d e '2 7117 4838 3 '
Adhe rent , Nom, Prenom
B i b l i o t h e q u e . A d h e r e n t s , B i b l i o t h e q u e . L i v r e s , B i b l i o t h e q u e . Emprunts
A d h e r e n t s . I d = Emprunts . A d h e r e n t
L i v r e s . I d = Emprunts . L i v r e
ISBN = ' 2 7117 4838 3 ' ;
nom
Aprs en avoir donn une criture algbrique, crire une requte SQL qui caractrise
les identiants, noms et prnoms des adherents en retard ( la date du jour) pour retourner un emprunt. La dure
d'un prt est limit 30 jours. Vous pourrez utiliser
current_date
Les
SELECT
FROM
WHERE
AND
AND
adherents
en
retard
pour
retourner
un
emprunt .
I d , Nom, Prenom
B i b l i o t h e q u e . A d h e r e n t s , B i b l i o t h e q u e . Emprunts
A d h e r e n t s . I d = Emprunts . A d h e r e n t
current_date < D a t e R e t o u r
current_date > DateEmprunt + integer ' 30 ' ;
crire une requte SQL qui liste identiants, noms et prnoms des adhrents qui,
la date du jour, ont la possibilit d'emprunter. Ce sont donc les adhrents qui n'ont pas actuellement autant
de livres que le nombre qui leur est autoris.
Rponse :
4/ 9
Les
adherents
ayant
le
droit
d ' emprunter
la
date
OeuvresLues
du
jour
Rponse :
Toutes
les
couples
( oeuvres
lues ,
adherent )
CREATE VIEW O e u v r e s L u e s AS
SELECT ISBN , A d h e r e n t
FROM
B i b l i o t h e q u e . L i v r e s , B i b l i o t h e q u e . Emprunts
WHERE
L i v r e s . I d = Emprunts . L i v r e ;
Question 1.11 (2 points)
crire une requte SQL qui liste les oeuvres lues par tous les adhrents. Vous
Rponse :
Les
Division
predicative
Division
algebrique
oeuvres
lues
par
tous
les
adherents
Auteur
TMP
de la relationOeuvres oblige dcrire les auteurs (lorsqu'ils sont multiples) par une liste
unique.
INSERT INTO B i b l i o t h e q u e . O e u v r e s
VALUES( ' 0 201 52983_1 ' , ' LaTeX ' , ' Addison Wesley ' , ' L e s l i e Lamport ' ) ;
INSERT INTO B i b l i o t h e q u e . O e u v r e s
VALUES( ' 0399 4198 ' , ' F i a b i l i t e d e s s y s t e m e s ' , ' E y r o l l e s ' , 'A . Pages , M.
INSERT INTO B i b l i o t h e q u e . O e u v r e s
VALUES( ' 2 7117 4838 3 ' , ' B a s e s de d o n n e e s ' , ' V u i b e r t ' , ' C h r i s Date ' ) ;
5/ 9
Gondran ' ) ;
INSERT INTO B i b l i o t h e q u e . O e u v r e s
VALUES( ' 0 201 44124 1 ' , ' Automata Theory ' , ' Addison Wesley ' , ' H o p c r o f t , Motwani , Ullman ' ) ;
INSERT INTO B i b l i o t h e q u e . O e u v r e s
VALUES( ' 0 262 03270 8 ' , ' Model C h e c k i n g ' , 'MIT P r e s s ' , ' C l a r k e , Grumberg , P e l e d ' ) ;
Cette contrainte rend trs dicile toute requte lie un auteur donn.
Proposez une modication du schma conceptuel relationnel an que des requtes
lies un auteur particulier, identi par son nom et son prnom, soient possibles. Pour un livre, vous devrez
pouvoir acher sa liste ordonne des auteurs telle qu'elle apparat sur la couverture. Vous prciserez les nouvelles
dpendances fonctionnelles et contraintes d'intgrit.
Rponse :
C'est le problme de la liste des prnoms d'un individu. Il faut donc crer une relation
Oeuvres.
Auteurs
et modier
CREATE TABLE
);
B i b l i o t h e q u e . Oeuvres (
T y p a g e d e s a t t r i b u t s
ISBN t e x t NOT NULL ,
T i t r e t e x t NOT NULL ,
E d i t e u r t e x t NOT NULL ,
Nom t e x t NOT NULL ,
Nom d u
Prenom t e x t NOT NULL ,
Prenom
C l e f s c a n d i d a t e s
PRIMARY KEY ( ISBN )
premier
du
auteur
premier
auteur
CREATE TABLE
);
Bibliotheque . Auteurs (
T y p a g e d e s a t t r i b u t s
Nom t e x t NOT NULL ,
Prenom t e x t NOT NULL ,
ISBN t e x t NOT NULL ,
O r d r e integer NOT NULL CHECK ( O r d r e > 1 ) ,
C l e f s c a n d i d a t e s
PRIMARY KEY (Nom, Prenom ) ,
UNIQUE ( ISBN , O r d r e ) ,
C l e f s e t r a n g e r e s
FOREIGN KEY ( ISBN ) REFERENCES B i b l i o t h e q u e . O e u v r e s ( ISBN )
Il faut ajouter une contrainte pour que les valeurs pour l'attribut
(ventuellement vide)
Ordre
2, 3, 4, ....
vision simplie d'une gestion d'un centre de vacances pour enfants, et un ensemble irrductible de dpendances
fonctionnelles :
{Lieu} {Transport}
: les activits se droulent dans des lieux qui ncessitent un moyen de transport
{Animateur} {Activite} : les animateurs sont spcialiss dans une seule activit.
{Lieu, Jour} {Groupe} : chaque jour, un lieu n'est utilis que par un seul groupe.
{Transport} {NbPlaces} : chaque moyen de transport limite le nombre d'enfants.
{Groupe, Activite} {Animateur} : pour faciliter le planning, un groupe fait toujours une mme activit
avec le mme animateur.
{Lieu, Jour} {Animateur} : chaque jour, un lieu n'est utilis que par un seul animateur.
{Groupe, Jour} {Lieu} : chaque jour, un groupe ne se dplace que sur un seul lieu.
{Animateur, Jour} {Lieu} : chaque jour, un animateur ne se dplace que sur un seul lieu.
Lieu
Transport
NbPlaces
Jour
Groupe
Activite
Animateur
plage
marche
20
27-07-2010
Jaune
surf
Brice
stade
velo
10
26-07-2010
Vert
tir a l'arc
Guillaume
6/ 9
ColoniesVacances.
C1 = {Lieu, Jour}
C2 = {Animateur, Jour}
C3 = {Groupe, Jour}
ColoniesVacances
ColoniesVacances,
justiez
Rponse : Une seule des explications suivantes est susante (liste non exhaustive).
Non 2NF : La clef
{Lieu, Jour}
contient
{Lieu, Jour}
et
{Transport} {NbPlaces}.
{Lieu, Jour}
et
{Animateur} {Activite}.
{Lieu}
qui dtermine
{Transport}.
ColoniesVacances
en troisime forme normale. Vous n'crirez sur la copie que les nouvelles relations et les dpendances fonctionnelles qui sont la base des projections eectues.
4.
mais la
Dcomposition en 3NF :
1.
2.
3.
4.
Aprs avoir prcis si votre dcomposition est en BCNF ou bien seulement en 3NF,
Rponse :
Dcomposition en BCNF
1.
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
A n i m a t e u r s VALUES ( go1 ,
A n i m a t e u r s VALUES ( go2 ,
P l a n n i n g VALUES ( l i e u 1 ,
P l a n n i n g VALUES ( l i e u 1 ,
(Animateur, Activite)
act1 ) ;
act1 ) ;
' 01 01 2011 ' , r ou ge , go1 ) ;
' 02 01 2011 ' , r ou ge , go2 ) ;
:
est duplique.
7/ 9
= go1 ;
Tip : Some applications might expect that expression = NULL returns true if expression evaluates
to the null value. It is highly recommended that these applications be modied to comply with the
SQL standard. However, if that cannot be done the
transform_null_equals
conguration variable
Astuce : Il se peut que des applications s'attendent voir expression = NULL value vrai
(true) si expression s'value comme la valeur NULL. Il est chaudement recommand que ces applications soient modies pour se conformer au standard SQL. Nanmoins, si cela n'est pas possible,
le paramtre de conguration
transform_null_equals
TableNull
CREATE SCHEMA P r o b l e m e N u l l ;
SET s e a r c h _ p a t h TO P r o b l e m e N u l l , p u b l i c ;
CREATE TABLE P r o b l e m e N u l l . T a b l e N u l l (
);
T y p a g e d e s a t t r i b u t s
I d s e r i a l NOT NULL ,
A t t t e x t DEFAULT NULL ,
C l e f s c a n d i d a t e s
PRIMARY KEY ( i d )
INSERT INTO
INSERT INTO
serial
ProblemeNull . TableNull
ProblemeNull . TableNull
sequence
d' entier
1,
2,
3,
. . .
transform_null_equals
n'est pas
activ.
vrai
SELECT
FROM
WHERE
ou
faux,
Predicat
ProblemeNull . TableNull
Predicat ;
Rponse :
8/ 9
Id
Att
Att IS NULL
Non
Oui
Oui
NULL
Oui
Non
Non
Id
Att
Att = NULL
Att != NULL
Non
Non
Non
NULL
Non
Non
Non
9/ 9