Vous êtes sur la page 1sur 7

Prénom :

Nom :
Classe :
Contrôle sur les Bases de Données

Première partie :
1) QCM (cochez LA bonne réponse) /3,5

a) Que veut dire SGDB ?


Système de gestion de base de données
Système de gestion de brique de données
Système de garde de base de données

b) Que permet de faire le mot clé SELECT?


Récupérer un attribut Modifier un attribut Supprimer un attribut

c) Que permet de faire le mot clé COUNT ?


la somme le décompte la moyenne

d) Qu’est ce qu’un tuple dans une base de données relationnelle ?


Ligne Table Colonne Objet

e) Qu’est ce qu’un attribut dans une base de données relationnelle ?


Ligne
Table
Colonne
f) Quelle instruction est utilisée pour ajouter des tuples dans une table ?
UPDATE
INSERT
CREATE
ADD
g) Qui a crée le concept de bases de données relationnelles ?
John Kapersky Edgar Franck Codd Ambessa Medarda

2) Questions de cours /4

1
a) Expliquez le rôle d’une clé primaire dans une table :

L’attribut est unique / Différencier les tuples

b) Citez deux types d’anomalies et donnez un exemple pour chacune :


Anomalie d’insertion :
- Clé primaire en double
//
Anomalie de suppression :
- Clé étrangère qui fait référence à une clé primaire inexistante
Anomalie de modification :
- erreur de domaine (type)
c) Expliquez le rôle d’une clé étrangère dans une table :

Crée un lien entre deux tables en faisant référence à la clé primaire de l’autre table.

d) Expliquez pourquoi on ne peut pas ajouter de tuple à une table, si elle a une clé
étrangère qui fait référence à une clé primaire d’une table vide :

Parce que la clé primaire doit exister avant la clé étrangère.

2
Deuxième partie :
3) Exercices (compréhension) /4
En prenant en compte comme base de données les deux tables suivantes,
répondre aux questions

Table Joueur
id_Joueur pseudo id_Faction classe

1 Bobby 1 Mage

2 Grayson 2 Guerrier

3 Ximena 2 Prêtre

Table Faction

id_Faction nb_joueurs pourcentage_victoire nom

1 52 30 Valar

2 43 35 Gondor

3 65 35 Mordor

a) Qu’affiche la requête SQL suivante:


SELECT nb_joueurs
FROM Faction

52, 43, 65

b) Qu’affiche la requête SQL suivante:


SELECT pseudo
FROM Joueur
WHERE id_Faction=2

‘Grayson’, ‘Ximena’

3
c) Qu’affiche la requête SQL suivante:
SELECT *
FROM Faction
WHERE pourcentage_victoire>33

2, 43, 35, ‘Gondor’


3, 65, 35, ‘Mordor’

d) Qu’affiche la requête SQL suivante:


SELECT pseudo
FROM Joueur
JOIN Faction ON Joueur.id_Faction=Faction.id_Faction
WHERE nom=’Gondor’

‘Groyson’, ‘Xinema’

4
4) Exercices (réalisation) /8,5
A partir de l’énoncé suivant, réaliser le schéma relationnel de la base de données
correspondante:
Une gare a besoin d’organiser ses données. Pour cela elle va essayer de ranger ses
données dans 3 catégories différentes.
Ses trains ont tous un id, un nom, un horaire, une gare de départ et une gare
d’arrivée.
Ses tickets ont tous un id, un id du train correspondant, une place, un prix et un id
du client correspondant
Ses clients ont tous un id, un prénom, un nom, une adresse mail et un âge.

a) Faites le schéma relationnel (sans oublier les clés primaires et étrangères):

Trains (idTrains, nom, horaire, gare départ, gare arrivée)


Tickets (idTickets, # idTrains, place, prix, # idClients)
Clients(idClients, prénom, nom, mail, age)

5
b) Réaliser une requête d’insertion permettant d’enregistrer le client Jean Jean, qui
a 40 ans, d’id 2 et avec le mail ‘jeanjean@jeanmail.jean’

INSERT INTO Clients VALUES(2,’Jean’,’Jean’,’jeanjean@jeanmail.jean’)

c) Réaliser une requête pour modifier toutes les gares de départ des trains qui
partent de ‘Paris_GareDeLyon’ en ‘Paris_GareDuNord’

UPDATE Trains
SET gare départ = ‘Paris_GareDuNord’
WHERE gare départ = ‘Paris_GareDeLyon’

d) Réaliser une requête pour récupérer les noms de tous les trains

SELECT nom
FROM Trains

e) Réaliser une requête pour récupérer la somme des prix de tous les tickets

SELECT SUM(prix)
FROM Tickets

f) Réaliser une requête pour récupérer le nom des trains qui ont des tickets ayant un
prix supérieur à 30
SELECT DISTINCT nom
FROM Trains
JOIN Tickets ON Tickets.idTrains = Trains.idTrains
WHERE prix > 30

6
g) Réaliser une requête pour récupérer la moyenne d’âge de tous les clients ayant
un ticket pour le train de nom ‘TGV’
SELECT AVG(age)
FROM Clients
JOIN Tickets ON Tickets.idClients = Clients.idClients
JOIN Trains ON Tickets.idTrains = Trains.idTrains
WHERE Trains.nom = ‘TGV’

h) Réaliser une requête pour récupérer les horaires (différents) des trains ayant des
clients de moins de 25 ans.
SELECT DISTINCT horaires
FROM Trains
JOIN Clients ON Clients.idClients = Tickets.idClients
JOIN Tickets ON Tickets.idTrains = Train.idTrains
WHERE age < 25

Question BONUS :
Voici une liste des domaines existants :
- Entier (INT)
- Chaîne de caractères (VARCHAR)
- Date (DATE)
- Décimal (NUM)

Donnez pour chaque attribut de l’énoncé précédent son domaine :

FACILE EZZZZZZZ

Vous aimerez peut-être aussi