Sujet du contrôle pour les EM 00/01

INSTITUT NATIONAL DES TELECOMMUNICATIONS

CONTROLE DES CONNAISSANCES

 

Bloc : Bases de données Code : GBD20

Durée : 2h00 Date : 20/06/01

Documents autorisés : ceux distribués en cours

Coordonnateur : Mr Defude

____________________________________________________

Avertissements

1/ Lisez attentivement le sujet.

2/ Les questions sont indépendantes les unes des autres.

3/ Essayez d’être clair et précis dans vos réponses.

4/ Soignez la présentation, dans la mesure du possible.

5/ Barême indicatif

Question 1 : 5 points

Question 2 : 2 points

Question 3 : 3 points (Q3.1 = 1 pt, Q3.2 = 1 pt, Q3.3 = 1 pt)

Question 4 : 5 points (Q4.1 = 1,5 pts, Q4.2 = 1,5 pts, Q4.3 = 2 pts)

Question 5 : 3 points (Q5.1 = 1 pt, Q5.2 = 2 pts)

Question 6 : 2 points (Q6.1 = 1 pt, Q6.2 = 1pt)

Un hébergeur de sites de
commerce électronique vous demande de gérer le système d’informations
permettant de mettre des catalogues de produits en ligne (les clés sont en gras et les clés étrangères sont en italique) :

CATALOGUE(nocatalogue, libcatalogue, entreprise, idffamille)

FAMILLE(idffamille, libfamille, idffamillepère)

PRODUIT(idffamille, idfproduit, libproduit, prix, caractéristiques, imagep)

CLIENT(idfclient, nom, adresse, email)

COMMANDE(idfcommande, datecommande, modepaiement, idfclient)

LIGNECOMMANDE(idfcommande, noligne, idffamille, idfproduit, qté)

La sémantique des diverses relations est la suivante :

CATALOGUE(nocatalogue, libcatalogue, entreprise, idffamille)
: un catalogue est identifié de manière unique par un numéro et est
décrit par son libellé, le nom de l ‘entreprise proposant le catalogue
en ligne et la famille de produits racine du catalogue (idffamille clé
étrangère sur FAMILLE),

FAMILLE(idffamille, libfamille, idffamillepère)
: une famille de produits est identifiée de manière unique par son
numéro d’immatriculation et est décrit par son libellé. Les familles de
produits sont hiérarchisées et idffamillepère représente l’identifiant
de la famille de produits de niveau supérieur dans la hiérarchie
(idffamillepère clé étrangère de la relation FAMILLE sur elle même).
Par convention, une famille de produits racine d’un catalogue a un
idffamillepère qui vaut 0,

PRODUIT(idffamille, idfproduit,
libproduit, prix, caractéristiques, imagep) : un produit identifié par
son identifiant appartient à une famille de produits (désignée par son
identifiant idffamille clé étrangère sur FAMILLE). Cette famille sera
appelée par la suite famille de rattachement du produit. Un produit est défini par son libellé, son prix, ses caractéristiques et une image le représentant,

CLIENT(idfclient, nom,
adresse, email) : un client est identifié de manière unique par son
identifiant et est caractérisé par son nom, son adresse et son mél,

COMMANDE(idfcommande, datecommande, modepaiement, idfclient)
: une commande est identifiée de manière unique par son identifiant et
est décrite par une date et un mode de paiement (carte bancaire, à la
livraison). Une commande est faite par un client (idfclient clé
étrangère sur CLIENT),

LIGNECOMMANDE(idfcommande, noligne, idffamille, idfproduit,
qté) : une ligne de commande est rattachée à une commande (idfcommande
clé étrangère sur COMMANDE) et est identifiée par son numéro. Une ligne
de commande porte sur un produit (idffamille et idfproduit clé
étrangère sur PRODUIT) commandé en une certaine quantité.

Question 1

Donner le schéma Entité-Association correspondant à ce schéma relationnel. Vous préciserez bien les entités, entités faibles (s’il y a lieu), associations, propriétés, clés et cardinalités des associations.

Question 2

Donner la définition complète de la relation COMMANDE dans le langage
SQL d'Oracle. Par définition complète, on entend la définition des
attributs et de leur domaine, mais aussi la définition de toutes les contraintes d'intégrité associées.

Question 3

Exprimer chacune des 3 questions suivantes en algèbre relationnelle (sous forme d’arbres algébriques).

(Q3.1) Donner les clients (idfclient,
nom) ayant commandé au moins un produit appartenant à la famille de
rattachement d’identifiant FA003.

(Q3.2) Donner les produits (idffamille, idfproduit, libproduit) commandés par le client d’identifiant CL010 avant le 20/06/2001.

(Q3.3) Donner les produits (idffamille et idfproduit) qui n’ont fait l’objet d’aucune commande.

Question 4

Exprimer les trois requêtes suivantes en SQL. Attention, la requête 4.3 est en fait une vue relationnelle.

(Q4.1) Donner la famille de rattachement (idffamille et libfamille) qui comprend le plus de produits.

(Q4.2) Donner les clients (idfclient
et nom) qui ont commandé au moins une fois tous les produits de la
famille de rattachement d’identifiant FA009.

(Q4.3) Donner la définition de la vue
COMMANDEGLOBALE(idffamille, idfproduit, idfclient, nom, qtétotale) qui
donne pour chaque produit (idffamille et idfproduit) et pour chaque
client (idfclient et nom) la quantité totale commandée.

Question 5

Soit le schéma relationnel M(C, O, L, F, P, N, A, D, Q) avec les dépendances fonctionnelles suivantes (il s’agit de la fermeture transitive) :

C -> N; C -> A; O, L -> F, P; O, L -> Q; O -> D;

O -> C ; O -> N ; O -> A

(Q5.1) Donner la(les) clé(s) de ce schéma relationnel.

(Q5.2) Donner la forme normale de ce schéma et s’il n’est pas en 3FN proposer une décomposition en 3FN.

Question 6

(Q6.1)
Vous avez créé le schéma de base de données défini dans la question 1
sous Oracle en étant connecté comme utilisateur U1 mot de passe P1.
L’utilisateur U2 souhaite pouvoir interroger votre relation CLIENT.
Donner l’instruction SQL complète que vous devez exécuter pour lui
donner cette possibilité.

(Q6.2)
On suppose que l’on dispose d’une relation COMPTE(nocompte, solde) qui
donne pour chaque compte bancaire (identifié par son numéro) le solde
de ce compte. On suppose que cette relation contient les données
suivantes :

1

100

2

120

3

330

4

200

5

120

 

Soit T la transaction suivante :

UPDATE COMPTE SET SOLDE = SOLDE+50 WHERE NOCOMPTE>3 ;

ROLLBACK ;

Quelle est le nouveau contenu de la relation COMPTE après l’exécution de la transaction T ?