0% ont trouvé ce document utile (0 vote)
12 vues3 pages

Script SQL pour gestion de restaurant

Transféré par

OmInaSs gamer
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues3 pages

Script SQL pour gestion de restaurant

Transféré par

OmInaSs gamer
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1.

Script de création des tables :

CREATE TABLE Utilisateur (


ID_Utilisateur INT PRIMARY KEY,
Nom VARCHAR(100) NOT NULL,
Prénom VARCHAR(100) NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
Téléphone VARCHAR(15) NOT NULL,
Adresse VARCHAR(255) NOT NULL
);

CREATE TABLE Livreur (


ID_Livreur INT PRIMARY KEY,
Nom VARCHAR(100) NOT NULL,
Téléphone VARCHAR(15) NOT NULL,
Statut ENUM('Disponible', 'Indisponible') NOT NULL
);

CREATE TABLE Restaurant (


ID_Restaurant INT PRIMARY KEY,
Nom VARCHAR(100) NOT NULL,
Adresse VARCHAR(255) NOT NULL,
Téléphone VARCHAR(15) NOT NULL,
Type_Cuisine VARCHAR(100) NOT NULL
);

CREATE TABLE Plat (


ID_Plat INT PRIMARY KEY,
Nom VARCHAR(100) NOT NULL,
Description TEXT,
Prix DECIMAL(10, 2) NOT NULL,
Disponibilité BOOLEAN NOT NULL,
ID_Restaurant INT,
FOREIGN KEY (ID_Restaurant) REFERENCES Restaurant(ID_Restaurant) ON
DELETE CASCADE
);

CREATE TABLE Commande (


ID_Commande INT PRIMARY KEY,
Statut ENUM('En attente', 'En préparation', 'Livrée') NOT NULL,
Date DATE NOT NULL,
Heure TIME NOT NULL,
ID_Utilisateur INT,
ID_Livreur INT,
FOREIGN KEY (ID_Utilisateur) REFERENCES Utilisateur(ID_Utilisateur)
ON DELETE CASCADE,
FOREIGN KEY (ID_Livreur) REFERENCES Livreur(ID_Livreur) ON DELETE SET
NULL
);

CREATE TABLE Ligne_Commande (


Quantité INT NOT NULL,
ID_Commande INT,
ID_Plat INT,
PRIMARY KEY (ID_Commande, ID_Plat),
FOREIGN KEY (ID_Commande) REFERENCES Commande(ID_Commande) ON DELETE
CASCADE,
FOREIGN KEY (ID_Plat) REFERENCES Plat(ID_Plat) ON DELETE CASCADE
);

CREATE TABLE Evaluation_Restaurant (


ID_Evaluation_Restaurant INT PRIMARY KEY,
Note INT CHECK (Note BETWEEN 1 AND 5),
Commentaire TEXT,
ID_Utilisateur INT,
ID_Restaurant INT,
FOREIGN KEY (ID_Utilisateur) REFERENCES Utilisateur(ID_Utilisateur)
ON DELETE CASCADE,
FOREIGN KEY (ID_Restaurant) REFERENCES Restaurant(ID_Restaurant) ON
DELETE CASCADE
);

CREATE TABLE Evaluation_Livreur (


ID_Evaluation_Livreur INT PRIMARY KEY,
Note INT CHECK (Note BETWEEN 1 AND 5),
Commentaire TEXT,
ID_Utilisateur INT,
ID_Livreur INT,
FOREIGN KEY (ID_Utilisateur) REFERENCES Utilisateur(ID_Utilisateur)
ON DELETE CASCADE,
FOREIGN KEY (ID_Livreur) REFERENCES Livreur(ID_Livreur) ON DELETE
CASCADE
);
2. Clés primaires et étrangères :

Les clés primaires et étrangères sont déjà incluses dans le script ci-
dessus.

3. Contraintes de domaine :

a. Note entre 1 et 5 : Déjà géré avec CHECK (Note BETWEEN 1 AND 5).

b. Statut de la commande : Géré avec ENUM('En attente', 'En préparation',


'Livrée').

c. Statut du livreur : Géré avec ENUM('Disponible', 'Indisponible').

4. Clauses de suppression automatique :

Déjà inclus avec ON DELETE CASCADE et ON DELETE SET NULL dans le script
de création.

5. Vérification de la création des tables :

Utiliser la commande suivante pour vérifier les tables créées :


SHOW TABLES;
Requêtes d'interrogation :

Afficher tous les utilisateurs :

SELECT * FROM Utilisateur;


Afficher tous les plats du restaurant « La Kasbah » :

SELECT * FROM Plat WHERE ID_Restaurant = (SELECT ID_Restaurant FROM


Restaurant WHERE Nom = 'La Kasbah');
Afficher les noms de tous les plats et leurs prix :

SELECT Nom, Prix FROM Plat;


Afficher les commandes passées par « Amrani » :

SELECT * FROM Commande WHERE ID_Utilisateur = (SELECT ID_Utilisateur FROM


Utilisateur WHERE Nom = 'Amrani');
Afficher les détails des lignes de commande de la commande 4 :

SELECT * FROM Ligne_Commande WHERE ID_Commande = 4;


Afficher la liste des restaurants notés :

SELECT DISTINCT ID_Restaurant FROM Evaluation_Restaurant;


Afficher le nom des livreurs disponibles :

SELECT Nom FROM Livreur WHERE Statut = 'Disponible';


Afficher les évaluations du restaurant « La Kasbah » :

SELECT * FROM Evaluation_Restaurant WHERE ID_Restaurant = (SELECT


ID_Restaurant FROM Restaurant WHERE Nom = 'La Kasbah');
Afficher les livreurs ayant une note ≥ 4 :

SELECT DISTINCT [Link] FROM Livreur L JOIN Evaluation_Livreur E ON


L.ID_Livreur = E.ID_Livreur WHERE [Link] >= 4;
Afficher les commandes en préparation :

SELECT * FROM Commande WHERE Statut = 'En préparation';


Afficher les plats disponibles du restaurant « La Kasbah » :

SELECT * FROM Plat WHERE ID_Restaurant = (SELECT ID_Restaurant FROM


Restaurant WHERE Nom = 'La Kasbah') AND Disponibilité = TRUE;

Vous aimerez peut-être aussi