Vous êtes sur la page 1sur 25

RAPPORT PROJET

PRATIQUE DE SQL
GESTION D’UNE
ALIMENTATION
(SUPERMARCHER)

Réalisé Par :
• NGOUNE Ian Bright Perfection
• METOUTOU EVINA Diane Sylvanie
• NGONGANG KWANDJANG
Hervira Brenda
ANNEE ACADEMIQUE : 2019-2020
CLASSE : L1D Groupe 4
Encadré par : M. MEMBOU

30-06-2020 1
DEDICACES

CE TRAVAIL EST
DEDICACE A M.
MEMBOU

30-06-2020 2
REMERCIEMENTS
Tout d’abord, nous tenons à remercier tout particulièrement et à témoigner toute
notre reconnaissance aux personne suivantes, pour leurs soutient dans la concrétisation
de ce projet :

¨ M. MEMBOU, enseignant et responsable du projet, pour ses conseils éclairés, sa


patience, sa disponibilité et pour la confiance qu’il nous a accordée dès l’ébauche
du projet et tout au long de cette semaines.
¨ Nos camarades de classe pour tout l’aide et les conseils apportés durant ce projet.

30-06-2020 3
SOMMAIRE
INTRODUCTION

CHAPITRE 1 : CONTEXTE

CHAPITRE 2 : DESCRIPTION DU PROJET

CHAPITRE 3 : CONCEPTION

I. Conception De La Base De Données


II. Code SQL
III. Quelques Requetés
IV. Outils Utiliser

CONCLUSION

WEBOGRAPHY

BIBLIOGRPHIE

30-06-2020 4
INTRODUCTION
Le projet soumis à notre réflexion est intitulé La Gestion D’une
Alimentation(Nous avons choisi un supermarché), Ils nous est demandé de mettre
accent sur les base de données et requetés SQL. La croissance des activités engendre
un flux croissant de données, alors que la diversité des processus fonctionnels ne rime
pas toujours avec les compétences humaines mis à la disposition des organisations.
Ainsi, il faut les gérer convenablement. Maitriser ce facteur permet aujourd’hui aux
entreprises de limiter les risques et aider dans la prise des décisions. Dans le monde
informatisé, la gestion automatisée est en plein essor, soutenue par la révolution
numérique des technologies de l’information et de la communication. Nous allons dans
un première partie explique le cahier des charges ensuite exposer notre travail
effectué pour enfin terminer par un conclusion.

30-06-2020 5
Chapitre 1 : CONTEXTE

Le langage SQL (Structured Query Language) peut être considéré comme le langage
d'accès normalisé aux bases de données. Il est aujourd'hui supporté par la plupart des
produits commerciaux que ce soit par les systèmes de gestion de bases de données
micro tel que Access ou par les produits plus professionnels tels que Oracle. Il a fait
l'objet de plusieurs normes ANSI/ISO dont la plus répandue aujourd'hui est la norme
SQL2 qui a été définie en 1992.

Le succès du langage SQL est dû essentiellement à sa simplicité et au fait qu'il s'appuie


sur le schéma conceptuel pour énoncer des requêtes en laissant le SGBD responsable
de la stratégie d'exécution. Le langage SQL propose un langage de requêtes
ensembliste et assertionnel. Néanmoins, le langage SQL ne possède pas la puissance
d'un langage de programmation : entrées/sorties, instructions conditionnelles, boucles
et affectations. Pour certains traitements il est donc nécessaire de coupler le langage
SQL avec un langage de programmation plus complet.

De manière synthétique, on peut dire que SQL est un langage relationnel, il manipule
donc des tables (i.e. des relations, c'est-à-dire des ensembles) par l'intermédiaire de
requêtes qui produisent également des tables.

30-06-2020 6
Chapitre 2 : DESCRIPTION DU PROJET
Le but de ce projet est de créer une base de données Permettant la gestion d’un
supermarché. Nous allons tous d’abord étudier le projet puis en ressortir le
MCD(Modèle Conceptuel De Données), le MPD(Modèle Physique De Données) et le
MLD(Modèle Logique De Données) a l’aide de Power AMC. En autre nous allons écrire
les requeté SQL.
- Modèle conceptuel des données. Le modèle conceptuel des données (MCD) a
pour but d'écrire de façon formelle les données qui seront utilisées par le
système d'information. Il s'agit donc d'une représentation des données,
facilement compréhensible, permettant de décrire le système d'information à
l'aide d'entités.
- Dans la méthode Merise, le modèle physique des données (MPD) consiste à
implanter une base de données dans un SGBDR. Le langage utilisé pour ce type
d'opération est le SQL.

- Le modèle logique des données (MLD) consiste à décrire la structure


de données utilisée sans faire référence à un langage de programmation. ...
Ainsi, le modèle logique est dépendant du type de base de données utilisé.

30-06-2020 7
Chapitre 3 : CONCEPTION
I. Conception de la base de données
¨ Model conceptuel de données (MCD) :

30-06-2020 8
¨ Model physique de données (MPD) :

30-06-2020 9
¨ Model Logique de données (MLD) :

30-06-2020 10
II. Code SQL
Nous allons d’abord créer une base de données appeler PROJET_SQL, C’est ici que
nous allons travaillé

¨ Création de la base de données


CREATE DATABASE PROJET_SQL;

¨ Table UTILISATEUR
USE PROJET_SQL;
CREATE TABLE UTILISATEUR(
ID_utilisateur INT NOT NULL,
Nom_utiisateur VARCHAR(48) NOT NULL,
CONSTRAINT UTILISATEUR_PK PRIMARY KEY (ID_utilisateur)
) ;

INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (1, 'Hicham') ;


INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (2, 'Raoul') ;
INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (3, 'Paul') ;
INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (4, 'Jean') ;
INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (5, 'Pacal') ;
INSERT INTO UTILISATEUR (ID_utilisateur, Nom_utiisateur) VALUES (6, 'Bastien') ;

SELECT * FROM UTILISATEUR ;

30-06-2020 11
¨ Table ADMINISTRATEUR
USE PROJET_SQL;
CREATE TABLE ADMINISTRATEUR(
ID_utilisateur INT NOT NULL,
CONSTRAINT ADMINISTRATEUR_PK PRIMARY KEY (ID_utilisateur),
CONSTRAINT ADMINISTRATEUR_UTILISATEUR_FK FOREIGN KEY (ID_utilisateur)
REFERENCES UTILISATEUR(ID_utilisateur) ON DELETE CASCADE
);

INSERT INTO ADMINISTRATEUR (ID_utilisateur) VALUES (1) ;


INSERT INTO ADMINISTRATEUR (ID_utilisateur) VALUES (4) ;

SELECT * FROM ADMINISTRATEUR ;

¨ Table CHEF_RAYON
USE PROJET_SQL;
CREATE TABLE CHEF_RAYON(
ID_utilisateur INT NOT NULL,
ID_rayon INT NOT NULL,
CONSTRAINT CHEF_RAYON_PK PRIMARY KEY (ID_utilisateur),
CONSTRAINT CHEF_RAYON_AK UNIQUE (ID_rayon),
CONSTRAINT CHEF_RAYON_UTILISATEUR_1 FOREIGN KEY (ID_utilisateur)
REFERENCES UTILISATEUR(ID_utilisateur) ON DELETE CASCADE
);

INSERT INTO CHEF_RAYON (ID_utilisateur, ID_rayon) VALUES (2, 1) ;


INSERT INTO CHEF_RAYON (ID_utilisateur, ID_rayon) VALUES (3, 2) ;
INSERT INTO CHEF_RAYON (ID_utilisateur, ID_rayon) VALUES (5, 3) ;
INSERT INTO CHEF_RAYON (ID_utilisateur, ID_rayon) VALUES (6, 4) ;

SELECT * FROM CHEF_RAYON ;

30-06-2020 12
ð

¨ Table RAYON
USE PROJET_SQL;
CREATE TABLE RAYON(
ID_rayon INT NOT NULL,
Nom_rayon VARCHAR(48) NOT NULL,
ID_utilisateur INT NOT NULL,
CONSTRAINT RAYON_PK PRIMARY KEY (ID_rayon),
CONSTRAINT RAYON_AK UNIQUE (ID_utilisateur)
);
INSERT INTO RAYON (ID_rayon, ID_utilisateur, Nom_rayon) VALUES (1, 2, 'Pâtisserie')
;
INSERT INTO RAYON (ID_rayon, ID_utilisateur, Nom_rayon) VALUES (2, 3, 'Fruit et
Légume') ;
INSERT INTO RAYON (ID_rayon, ID_utilisateur, Nom_rayon) VALUES (3, 5, 'Boisson') ;
INSERT INTO RAYON (ID_rayon, ID_utilisateur, Nom_rayon) VALUES (4, 6, 'Boucherie')
;

SELECT * FROM RAYON ;

30-06-2020 13
¨ Table FOURNISSEUR
USE PROJET_SQL;
CREATE TABLE FOURNISSEUR(
ID_fournisseur INT NOT NULL,
Nom_fournisseur VARCHAR(48) NOT NULL,
CONSTRAINT FOURNISSEUR_PK PRIMARY KEY (ID_fournisseur)
);
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (1, 'CongelCAM') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (2, 'Brasserie') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (3, 'Ngoune') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (4, 'Pattisserie à
Gogo 237') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (5, 'Supermont') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (6, 'UCB') ;
INSERT INTO FOURNISSEUR (ID_fournisseur, Nom_fournisseur) VALUES (7, 'Pommes en
gros SARL') ;

SELECT * FROM FOURNISSEUR ;

30-06-2020 14
¨ Table COMMANDE
USE PROJET_SQL;
CREATE TABLE COMMANDE(
ID_commande INT NOT NULL,
ID_utilisateur INT NOT NULL,
Date_commande DATETIME DEFAULT now(),
CONSTRAINT COMMANDE_PK PRIMARY KEY (ID_commande),
CONSTRAINT COMMANDE_CHEF_RAYON_FK FOREIGN KEY (ID_utilisateur)
REFERENCES CHEF_RAYON (ID_utilisateur)
);
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (1, 2) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (2, 3) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (3, 2) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (4, 2) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (5, 2) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (6, 2) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (7, 3) ;
INSERT INTO COMMANDE (ID_commande, ID_utilisateur) VALUES (8, 2) ;

SELECT * FROM COMMANDE ;

30-06-2020 15
¨ Table COMMANDE_INTERNE
USE PROJET_SQL;
CREATE TABLE COMMANDE_INTERNE (
ID_commande INT NOT NULL,
No_commandeINT VARCHAR(16) NOT NULL,
CONSTRAINT COMMANDE_INTERNE_PK PRIMARY KEY (ID_commande),
CONSTRAINT COMMANDE_INTERNE_AK UNIQUE (No_commandeINT),
CONSTRAINT COMMANDE_INTERNE_COMMANDE_FK FOREIGN KEY (ID_commande)
REFERENCES COMMANDE (ID_commande) ON DELETE CASCADE
);
INSERT INTO COMMANDE_INTERNE (ID_commande, No_commandeINT) VALUES (1, 'I-2020-
0012345') ;
INSERT INTO COMMANDE_INTERNE (ID_commande, No_commandeINT) VALUES (5, 'I-2020-
0045671') ;

SELECT * FROM COMMANDE_INTERNE ;

¨ Table COMMANDE_EXTERNE
USE PROJET_SQL;
CREATE TABLE COMMANDE_EXTERNE(
ID_commande INT NOT NULL,
No_commandeEXT VARCHAR(16) NOT NULL,
ID_fournisseur INT NOT NULL,
CONSTRAINT COMMANDE_EXTERNE_PK PRIMARY KEY (ID_commande),
CONSTRAINT COMMANDE_EXTERNE_AK UNIQUE (No_commandeEXT),
CONSTRAINT COMMANDE_EXTERNE_COMMANDE_FK FOREIGN KEY (ID_commande)
REFERENCES COMMANDE(ID_commande) ON DELETE CASCADE,
CONSTRAINT COMMANDE_EXTERNE_FOURNISSEUR_FK FOREIGN KEY (ID_fournisseur)
REFERENCES FOURNISSEUR (ID_fournisseur)
);
INSERT INTO COMMANDE_EXTERNE (ID_commande, No_commandeEXT, ID_fournisseur) VALUES
(3, 'E-2000-000001', 2) ;
INSERT INTO COMMANDE_EXTERNE (ID_commande, No_commandeEXT, ID_fournisseur) VALUES
(6, 'E-2001-000124', 5) ;
INSERT INTO COMMANDE_EXTERNE (ID_commande, No_commandeEXT, ID_fournisseur) VALUES
(8, 'E-2002-000286', 3) ;
INSERT INTO COMMANDE_EXTERNE (ID_commande, No_commandeEXT, ID_fournisseur) VALUES
(7, 'E-2000-000478', 5) ;
SELECT * FROM COMMANDE_EXTERNE ;

30-06-2020 16
ð

¨ Table ARTICLE
USE PROJET_SQL;
CREATE TABLE ARTICLE (
ID_article INT NOT NULL,
Nom_article VARCHAR(48) NOT NULL,
ID_rayon INT NOT NULL,
CONSTRAINT ARTICLE_PK PRIMARY KEY (ID_article),
CONSTRAINT ARTICLE_RAYON_FK FOREIGN KEY (ID_rayon)
REFERENCES RAYON (ID_rayon)
);

INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (1, 1, 'Gâteau au


chocolat') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (2, 1, 'Tarte aux
pommes') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (3, 1, 'Croissant')
;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (4, 4, 'Côte de
Porc') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (5, 1, 'Pain') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (6, 2, 'Ananas') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (7, 2, 'Salade') ;
INSERT INTO ARTICLE (ID_article, ID_rayon, Nom_article) VALUES (8, 3, 'Eau
Minérale') ;

SELECT * FROM ARTICLE ;

30-06-2020 17
ð

¨ Table LIGNE_COMMANDE

USE PROJET_SQL;
CREATE TABLE LIGNE_COMMANDE (
ID_commande INT NOT NULL,
ID_lignecmd INT NOT NULL,
ID_article INT NOT NULL,
Quantite INT NOT NULL,
CONSTRAINT LIGNE_COMMANDE_PK PRIMARY KEY (ID_commande, ID_lignecmd),
CONSTRAINT LIGNE_COMMANDE_COMMANDE_FK FOREIGN KEY (ID_commande)
REFERENCES COMMANDE (ID_commande) ON DELETE CASCADE,
CONSTRAINT LIGNE_COMMANDE_ARTICLE_FK FOREIGN KEY (ID_article)
REFERENCES ARTICLE (ID_article)
) ;

INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES


(1, 1, 1, 10) ;
INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES
(3, 1, 1, 3) ;
INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES
(3, 2, 5, 4) ;
INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES
(6, 1, 3, 2) ;
INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES
(7, 1, 6, 10) ;

30-06-2020 18
INSERT INTO LIGNE_COMMANDE (ID_commande, ID_lignecmd, ID_article, Quantite) VALUES
(8, 1, 6, 4) ;

SELECT * FROM LIGNE_COMMANDE ;

¨ Table CATALOGUE
USE PROJET_SQL;
CREATE TABLE CATALOGUE(
ID_article INT NOT NULL,
ID_fournisseur INT NOT NULL,
CONSTRAINT CATALOGUE_PK PRIMARY KEY (ID_article, ID_fournisseur),
CONSTRAINT CATALOGUE_ARTICLE_FK FOREIGN KEY (ID_article)
REFERENCES ARTICLE (ID_article),
CONSTRAINT CATALOGUE_FOURNISSEUR_FK FOREIGN KEY (ID_fournisseur)
REFERENCES FOURNISSEUR (ID_fournisseur)
) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (1, 4) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (3, 3) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (2, 4) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (3, 4) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (6, 7) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (4, 1) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (5, 4) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (7, 7) ;
INSERT INTO CATALOGUE (ID_article, ID_fournisseur) VALUES (8, 2) ;

SELECT * FROM CATALOGUE ;

30-06-2020 19
ð

30-06-2020 20
III. Quelques requêtes
¨ Les article du rayon de Raoul

USE PROJET_SQL;
SELECT Nom_utiisateur, Nom_rayon, Nom_article
FROM CHEF_RAYON AS a JOIN UTILISATEUR AS b ON a.ID_utilisateur =
b.ID_utilisateur
JOIN RAYON AS c ON a.ID_utilisateur = c.ID_utilisateur
JOIN ARTICLE AS d ON c.ID_rayon = d.ID_rayon
WHERE Nom_utiisateur = 'Raoul' ;

¨ Les commandes internes

USE PROJET_SQL;
SELECT Nom_utiisateur, Nom_rayon, No_commandeINT, Date_commande, Nom_article,
Quantite
FROM CHEF_RAYON AS a JOIN UTILISATEUR AS b ON a.ID_utilisateur = b.ID_utilisateur
JOIN RAYON AS c ON a.ID_utilisateur = c.ID_utilisateur
JOIN COMMANDE AS d ON a.ID_utilisateur = d.ID_utilisateur
JOIN COMMANDE_INTERNE AS e ON d.ID_commande = e.ID_commande
JOIN LIGNE_COMMANDE AS f ON d.ID_commande = f.ID_commande
JOIN ARTICLE AS g ON f.ID_article = g.ID_article ;

30-06-2020 21
IV. OUTILS UTILISER

Visual Studio Code est un éditeur


de code extensible développé par
Microsoft pour Windows, Linux et
macOS.

MySQL est un système de gestion


de bases de données
relationnelles. Il est distribué sous
une double licence GPL et
propriétaire.

PowerAMC est un logiciel de


conception créé par la société
SAP, qui permet de modéliser
les traitements informatiques et
leurs bases de données
associées.

30-06-2020 22
CONCLUSION
En définitive, ce projet nous a permit de nous expérimenté en base de données er
SQL. Le MCD, MPD et MLD on été réaliser sur PowerAMC, La base de données SQL
écrit en utilisant MySQL sur Visual Studio Code. Ce projet nous a données l’envie de
développer des applications professionnelles et de creuser de plus en plus dans le
domaine.

30-06-2020 23
WEBOGRAPHY
ð https://openclassrooms.com

ð https://dev.mysql.com

ð https://www.mysqltutorial.org

ð https://www.mysql.com

BIBLIOGRAPHIE
ð Programmer avec MySQL, de Christian SOUTOU

30-06-2020 24
Table des matières
DEDICACES..................................................................................................................... 2

REMERCIEMENTS ......................................................................................................... 3

SOMMAIRE ...................................................................................................................... 4

INTRODUCTION ............................................................................................................. 5

Chapitre 1 : CONTEXTE ....................................................................................................... 6

Chapitre 2 : DESCRIPTION DU PROJET................................................................................. 7

Chapitre 3 : CONCEPTION ................................................................................................... 8

I. Conception de la base de données ...................................................................................... 8

II. Code SQL......................................................................................................................... 11

III. Quelques requêtes ........................................................................................................ 21

IV. OUTILS UTILISER .................................................................................................... 22

CONCLUSION ................................................................................................................ 23

WEBOGRAPHY .............................................................................................................. 24

BIBLIOGRAPHIE .......................................................................................................... 24

30-06-2020 25