Université Paris Ouest Nanterre la Défense. UFR SEGMI. Année

publicité
Université Paris Ouest Nanterre la Défense.
UFR SEGMI.
L2, MIA, Sciences éco-gestion et Langues.
Année Universitaire 2009-2010.
S. Baarir
INITIATION AUX BASES DE DONNÉES.
Contrôle Continue.
Samedi 28 Novembre. De 10h à 12h.
Très important :
 Il est interdit de sortir de l’amphi avant la fin de la première heure, et toute
sortie est définitive.
 Seul le cours annoté est autorisé. Il ne peut être échangé.
 Le barème est indicatif est peut être modifié à la correction.
Exercice 1 (15 points).
Soient les schémas et tables suivantes, appartenant à une base de données représentant les achats
des clients d’une entreprise informatique :



Client (IDC, Nom, Prénom, Ville, AnnéeN)
Produit (IDP, Description, Prix)
Achat (IDA, RefC, RefP, Quantité, Date)
Client
IDC
1
2
3
4
Nom
Dupont
Marc
Doe
Dubois
Prénom
Jean
Nicole
John
Anne
Ville
Paris
Nanterre
Créteil
Paris
Produit
IDP Description
1
LCD
2
DVD-R
3
Clé USB
AnnéeN
1963
1979
1970
1983
Prix
500
5,5
50,25
Achat
IDA
C1
C2
C3
C4
C5
RefC
2
3
2
2
4
RefP
1
2
3
2
1
Quantité
1
20
2
10
1
Date
10/12/2005
11/11/2005
20/05/2005
05/12/2005
30/02/2005
Page 1 sur 2
Questions.
1. Sachant que les champs IDC et IDP sont auto-incrémentés à chaque insertion, donnez le schéma
de la BD en précisant le type de données de chaque attribut (champ), les clés primaires et les clés
externes de chaque table.
Solution (4pts) :
 Client (IDC : NuméroAuto, Nom : text , Prénom : text, Ville :text, AnnéeN,int)
 Produit (IDP : NuméroAuto , Description : text, Prix :numeric)
 Achat (IDA : text, RefC :int , RefP :int , Quantité : int, Date :date)
Remarque : Si l’étudiant n’utilise pas ce format de réponse mais qu’il donne toutes les
informations nécessaires, c’est correcte.
2. Ecrivez les requêtes SQL dont les résultats sont :
a) Les noms et les prénoms des clients nés après 1971.
b) Les noms des clients de Paris qui ont acheté des produits.
c) Les produits qui coûtent plus de 100 €, achetés par Nicole Marc en décembre 2005.
d) Le coût total des achats de chaque client, triés par ordre décroissant.
e) Le nombre de clients qui n’ont rien acheté.
Solution (1pt, 1pt, 2pts, 2pts, 1pt):
a) Select nom, prénom from client where AnnéeN > 1971
b) Select nom from client inner join Achat on client.IDC = Achat.RefC where ville =”paris”
Ou
Select nom from client where IDC in (select RefC from Achat) and ville =”paris”
c) Select Description from (produit inner join achat on produit.IDP = achat.refP) inner join Client
on achat.RefC = Client.IDC where nom = “Marc “ and prénom =”Nicole” and prix > 100 and
year(Date) = 2005 and month(Date)=12
d) Select nom, prénom, sum(prix* quantité) as sommePrix from (produit inner join achat on
produit.IDP = achat.refP) inner join Client on achat.RefC = Client.IDC group by IDC, nom,
prénom order by sum(prix*quantité) desc
Page 2 sur 2
e) Select count(IDC) as NBClient from client where IDC not in (select RefC from Achat)
3. Ecrivez les requêtes SQL de création des différentes tables.
(PS : faire attention aux contraintes d’intégrité référentielle).
Solution (3pts) :
create table Client(
IDC autoincrement NOT NULL,
Nom text,
Prénom text,
Ville text,
AnnéeN int,
constraint C primary key (IDC)
)
create table Produit(
IDP autoincrement NOT NULL,
Description text(30),
Prix numeric,
constraint P primary key (IDP)
)
create table Achat(
IDA text NOT NULL,
RefC int,
RefP int,
Quantité int,
Date date,
constraint A primary key (IDA),
constraint A1 foreign key (RefC) references Client(IDC),
constraint A2 foreign key (RefP) references Produit(IDP)
)
4. Supposons l’existence d’une deuxième table Client-bis, dont le schéma est Client-bis
(CodeClient : Autoincrement, Nom : Text, Adresse : Text).
1. Ecrivez la requête SQL qui permet de transférer les enregistrements de la table Client-bis
vers Client.
Solution (1pt) : Insert into Client (Nom,Ville) select Nom, Adresse from client-bis
Indication pour la question 2 : ACCESS dispose de trois fonctions pour gérer les champs de type
Date :
 La fonction YEAR, qui prend en paramètre une date et retourne l’année correspondant à
cette date. Par exemple, YEAR(#01/02/2000#) rend 2000.
 La fonction MONTH, qui prend en paramètre une date et retourne le mois correspondant à
cette date. Par exemple, MONTH(#01/02/2000#) rend 02.
Page 3 sur 2

La fonction DAY, qui prend en paramètre une date et retourne le jour correspondant à cette
date. Par exemple, DAY(#01/02/2000#) rend 01.
Exercice 2 (5 points).
Soient les schémas de relations (tables), constituant la base de données représentant les conventions
de stages des étudiants :



ETUDIANT (N°Etudiant, Nom, Prénom, DateDeNaissance, Spécialité : Texte, AnnéeEtude).
PROFESSEUR (N°Professeur, Nom, Prénom, Spécialité : Texte).
ENTREPRISE (N°SIRET, NomEntreprise, SecteurActivité : Texte, Effectif, Adresse).
Un étudiant peut effectuer plusieurs stages durant son cursus universitaires. Un stage est une
association entre un étudiant, un professeur et une entreprise. Nous remarquons que dans son état
actuel, cette base de données ne représente pas cette association !
Questions.
1. Complétez la BD de manière à représenter l’association « stage ».
2. Donnez le schéma de la BD en précisant le type de données le plus approprié pour chaque
attribut (non précisé), les clés primaires et les clés externes.
Solution (2pts, 1pt, 1pt,1pt) :

Stage (RefEtudiant : int , RefProf : int, RefSiret : int)
 Clefs externes : RefEtudiant (table étudiant) , RefProf (table professeur), RefSiret (table
entreprise).
 Clef primaire : (RefEtudiant , RefProf, RefSiret)

ETUDIANT (N°Etudiant : int , Nom :text , Prénom :text , DateDeNaissance :date, Spécialité :
Text, AnnéeEtude : int)
 Clef primaire : N°Etudiant

PROFESSEUR (N°Professeur : int, Nom : text , Prénom :text , Spécialité : Text).
 Clef primaire : N°Professeur

ENTREPRISE (N°SIRET : int, NomEntreprise :text , SecteurActivité : Text, Effectif : int,
Adresse :text ).
 Clef primaire : N°SIRET
Remarque : Normalement, il faut rajouter à la table stage une (voire des) information(s) (ex :
annéeStage), permettant qu’un étudiant ait plusieurs stages avec le même professeur et la même
entreprise sur plusieurs périodes….mais, on se restreint à cette solution primitive.
Page 4 sur 2
Téléchargement