Rép Test 1 SQL
Rép Test 1 SQL
HM
Accueil > Cours > Requêtez une base de données avec SQL > Quiz : S'initier à la modélisation relationnelle
12 heures Moyenne
Compétences évaluées
Description
Vous êtes salarié d’une entreprise de e-commerce réalisant des ventes en ligne.
L’entreprise change de logiciel de gestion des données, et il faut transférer les données de l’ancien
logiciel vers le nouveau, en recréant la base de données.
Voici un extrait des premières lignes de 3 fichiers Excel destinés à être enregistrés dans 3 tables d'une
base de données relationnelle.
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 1/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
Elles contiennent des infos sur les clients du site en ligne, sur les produits vendus, et sur les achats :
chaque achat d’un produit est appelé “transaction”.
la table customer contient une ligne par client. Chaque client a un (et un seul)
identifiant unique ;
la table product contient 1 ligne par référence de produit ;
la colonne id_prod est la référence du produit. Plusieurs articles identiques peuvent
avoir la même référence produit (ex. : si vous achetez 3 exemplaires du même tube de
dentifrice, ces 3 articles ont la même référence). Dans le cas d’un achat groupé de 3 tubes
de dentifrice par le même client, 3 lignes seront ajoutées à la table transaction : ces
3 lignes auront exactement les mêmes date et heure de transaction.
La colonne session_id donne l’identifiant de session durant laquelle la transaction a
été enregistrée. Une session est liée à un unique client. Elle correspond à une connexion
sur le site, et dure en général de quelques minutes à quelques heures. Quand le client part
du site web (ou reste plus de 30 min sans activité sur celui-ci), la session expire. Lors d’une
reconnexion au site, un nouvel identifiant de session est alors créé, pour le même client.
Vous êtes employé au service Informatique, et on vous a chargé de créer la structure de la base de
données. Avant de faire cela, vous devez vous poser certaines questions concernant les fichiers à votre
disposition. Voici ces questions :
Question 1
Par quoi commencera la requête SQL que vous utiliserez pour créer la structure de la
table product ?
SELECT
INSERT INTO
CREATE TABLE
CREATE TABLE sert à créer la structure de la table, alors que INSERT INTO sert à la remplir avec
des valeurs. SELECT sert à interroger les données déjà présentes dans une table.
Question 2
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 2/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
Pour créer la structure de la table product , il faudra donner en SQL la liste des
colonnes de la table. À quoi ressemblera la partie de la requête qui donne cette liste ?
sql
sql
sql
Il faut donner à la fois le nom de la colonne et son type. Seule la réponse 1 satisfait à cette contrainte.
Les 2 autres syntaxes sont de pures inventions.
Remarque : dans une BDD relationnelle, l’ordre des colonnes n’a pas d’importance et pas de
signification.
Question 3
Le groupe de colonnes (id, birth) assure bien que 2 lignes (donc 2 clients) n’auront jamais à la
fois le même identifiant et la même année de naissance, mais ce groupe de colonnes n’est pas minimal ;
ce n’est donc pas une clé primaire possible. En effet, si on ne garde que la colonne id , on est aussi
assuré que 2 lignes n’auront pas le même identifiant. id est donc bien une possible clé primaire.
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 3/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
Question 4
“Dans le cas d’un achat groupé de 3 tubes de dentifrice par le même client, 3 lignes
seront ajoutées à la table transaction ”.
Même en prenant les 4 colonnes de la table, il n’est pas possible de former une clé primaire qui
garantisse l’unicité.
Il est dit dans l’énoncé : “Dans le cas d’un achat groupé de 3 tubes de dentifrice par le même client,
3 lignes seront ajoutées à la table transaction : ces 3 lignes auront exactement les mêmes date et
heure de transaction”.
Il est donc possible d’avoir au moins 2 lignes de transaction entièrement identiques. Pour
enregistrer cette table dans une BDD relationnelle, il faudra donc créer une clé artificielle qui donnera
un identifiant unique pour chaque transaction.
Question 5
Cette colonne ne peut pas contenir 2 fois la même valeur, car c’est une clé primaire.
Cette colonne peut contenir plusieurs fois la même valeur, car plusieurs transactions peuvent
être réalisées par un même client.
Comme nous l’avons vu à la question précédente, customer_id n’est pas (à elle seule) la clé
primaire de transaction . C’est une clé étrangère qui référence la clé primaire de customer , et
comme l’association entre une transaction et un client est de type “un-à-plusieurs”, plusieurs
transactions peuvent être réalisées par un même client, et donc cette colonne peut contenir plusieurs
fois la même valeur.
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 4/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
Question 6
Parce que plusieurs transactions peuvent être réalisées par un même client
id est la clé primaire de customer . Elle ne peut donc pas contenir 2 fois la même valeur. Ce
n’est pas une clé étrangère vers une autre table.
Question 7
Quel est le type d’association liant les transactions et les références produit ?
un-à-un
un-à-plusieurs
plusieurs-à-plusieurs
Plusieurs transactions peuvent concerner une même référence produit, et une transaction n’est relative
qu’à une seule référence produit. C’est donc une association un-à-plusieurs.
Question 8
Sachant que l’association entre un client et une référence produit est de type
plusieurs-à-plusieurs, comment faut-il modéliser cette association ?
En mettant une clé étrangère dans product qui référencera la table customer .
En mettant une clé étrangère dans customer qui référencera la table product .
Une association plusieurs-à-plusieurs se modélise avec une table d’association. L’association entre un
client et un produit correspond en fait à un achat ; cet achat est enregistré dans la table
transaction , donc cette dernière peut faire office de table d’association. D’ailleurs, elle contient
bien une clé étrangère vers product et une clé étrangère vers customer , ce qui confirme ce
que j’ai dit.
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 5/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
L’association entre un client et un produit est bien de type plusieurs-à-plusieurs, car un client peut
acheter N produits différents (via N transactions), et une référence produit peut être achetée par M
client différents (via M transactions). M et N représentent ici des nombres entiers qui peuvent être
supérieurs à 1.
Projets professionnalisants
Mentorat individuel
Identifiez les types d'associations entre Affichez les données pertinentes avec
vos tables SELECT
Le professeur
Nicolas Rangeon
Nicolas Rangeon, Data scientist, instructor & Computer engineer (Université de Technologie
de Compiègne)
OPENCLASSROOMS
AIDE
LANGUE
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 6/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
Français
NOUS SUIVRE
Mentions légales Conditions générales d'utilisation Politique de protection des données personnelles
Cookies Accessibilité
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 7/8
15/12/2024 00:36 S'initier à la modélisation relationnelle - OpenClassrooms
https://openclassrooms.com/fr/courses/7818671-requetez-une-base-de-donnees-avec-sql/exercises/4617 8/8