DML_Exercice_03

Créé parNNadia Egger edufr
DescriptionINSERT / SELECT / CONTRAINTES (DML)
ÉtiquettesExercices DML

Vos tâches…

Voici un script SQL de création de la base de données db_voyage. Cette base de données permet de gérer les aspects clés d'une agence de voyage, en connectant les clients, leurs réservations de vols et d'hôtels, et leurs avis sur les hôtels.

1. Les contraintes

Complétez le script afin que les données soient intègres en rajoutant l’obligation des valeurs de champs quand elles sont nécessaires, en assurant l’unicité des enregistrements.

💡
Pour la table t_reservation : on s’assure que par défaut, la date de fin correspond à une semaine après la date du début

Pour la table
t_avis : les notes possibles sont de 1 à 4. On s’assure que les autres notes ne soient pas possibles.
CREATE DATABASE IF NOT EXISTS db_voyage CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
USE db_voyage;

-- Création de la table Client
CREATE TABLE t_client (
    pk_client INT PRIMARY KEY AUTO_INCREMENT,
    nom VARCHAR(45),
    prenom VARCHAR(45),
    email VARCHAR(45)
);

-- Création de la table Destination
CREATE TABLE t_destination (
    pk_destination INT PRIMARY KEY AUTO_INCREMENT,
    nom_destination VARCHAR(45),
    pays VARCHAR(50)
);

-- Création de la table Hôtel
CREATE TABLE t_hotel (
    pk_hotel INT PRIMARY KEY AUTO_INCREMENT,
    nom_hotel VARCHAR(255),
    fk_destination INT,
    CONSTRAINT fk_hotel_destination FOREIGN KEY (fk_destination) REFERENCES t_destination(pk_destination)
);

-- Création de la table Vol
CREATE TABLE t_vol (
    pk_vol INT PRIMARY KEY AUTO_INCREMENT,
    compagnie_aerienne VARCHAR(80),
    numero_vol VARCHAR(10),
    fk_destination INT,
    CONSTRAINT fk_vol_destination FOREIGN KEY (fk_destination) REFERENCES t_destination(pk_destination)
);

-- Création de la table Réservation
CREATE TABLE t_reservation (
    pk_reservation INT PRIMARY KEY AUTO_INCREMENT,
    fk_client INT,
    fk_vol INT,
    fk_hotel INT,
    date_debut DATE,
    date_fin DATE,
    CONSTRAINT fk_reservation_client FOREIGN KEY (fk_client) REFERENCES t_client(pk_client),
    CONSTRAINT fk_reservation_vol FOREIGN KEY (fk_vol) REFERENCES t_vol(pk_vol),
    CONSTRAINT fk_reservation_hotel FOREIGN KEY (fk_hotel) REFERENCES t_hotel(pk_hotel)
);

-- Création de la table Avis (optionnelle)
CREATE TABLE t_avis (
    fk_client INT NOT NULL,
    fk_hotel INT NOT NULL,
    note INT NOT NULL,
    commentaire TEXT,
    PRIMARY KEY (fk_client, fk_hotel),
    CONSTRAINT fk_avis_client FOREIGN KEY (fk_client) REFERENCES t_client(pk_client),
    CONSTRAINT fk_avis_hotel FOREIGN KEY (fk_hotel) REFERENCES t_hotel(pk_hotel)
);

2. Les requêtes d’insertion

Les clients

Insérez les deux clients suivants avec la requête d’insertion qui commence par :

INSERT INTO t_client (nom, ... ) ...
NomPrénomE-mail
DupontJeanjean.dupont@email.com
MartinsAlicealice.martin@email.com

Pour les trois prochains clients, la requête d’insertion commence par :

INSERT INTO t_client VALUES (...) ;
NomPrénomE-mail
LeroyMarcmarc.leroy@email.com
TellSophietell.sophie@gemail.com
GirardEmilieEmilie.girard@yahoo.fr

Les destinations

DestinationPays
ParisFrance
RomeItalie
New YorkEtats-Unis
TokyoJapon
SydneyAutralie

Les hôtels

HôtelDestination
Le RitzParis
Hôtel EDENRome
The PlazaNew York
Imperial HôtelParis
Park HyattSydney
IbisTokyo

Les vols

CompagnieN° du volLa destination
Air FranceAF123Paris
AlitaliaAZ456New York
American AirlinesAA789Rome
Japan AirlinesJL101Tokyo
QantasQF198Sydney
IberiaEI460Madrid