106-rapport/README.md

299 lines
9.4 KiB
Markdown

# Rapport de projet module 106
## Introduction
> Ce rapport documente la réalisation du projet du module 106, axé sur l'administration et la gestion de bases de données relationnelles.
> L'objectif était de concevoir, implémenter et administrer la base de données de l'aéroport fictif **SkyConnect**.
## Base de données
### Conception de la base de données
> Dans un premier temps, nous avons réalisé la conception de la base de données sur Looping, en nous basant sur le contexte défini dans le cahier des charges.
> Lors de la phase de validation, le professeur a validé notre schéma initial, puis nous a transmis une nouvelle structure de base de données pleinement compatible avec les données à intégrer.
### Schema MCD et MLD
|MCD|![MCD](annexes/mcd.png)|
|---|---|
|MLD|![MLD](annexes/mld.png)|
### Création de la base de données
> La base de données a été crée à partir du fichier Looping que le professeur nous a donné.
> J'ai simplement copié le script LDD généré par Looping et je l'ai collé dans le terminal connecté à la base de données.
### Chargement des données
> Pour réaliser ce projet nous avons fait recours à docker pour pouvoir avoir un support sur lequel utiliser MySQL.
> J'ai utilisé le conteneur docker MySQL qui le lance avec la commande `docker run mysql`.
>
> La prochaine étape est de copier les données dans le repertoire de confiance de MySQL :
> ```docker cp C:\Users\%username%\Downloads\exports_tsv_final\* db:/var/lib/mysql-files/```
>
> Maintenant que les données sont prêtes on va pouvoir commancer l'import des données dans un ordre précis pour ne pas avoir de problème avec les clés étrangères. Les tables qui n'ont aucune clé étrangère seront toujours les premières à être importées.
##### Importation des données dans la trable `t_passager`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_passager.tsv'
INTO TABLE t_passager
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
```
```sql
Query OK, 36095 rows affected (0.106 sec)
Records: 36095 Deleted: 0 Skipped: 0 Warnings: 0
```
#### Importation des données dans la trable `t_aeroport`
> REMARQUE :
> La dernière ligne de cette requete permet de :
> 1. Créer une variable sur `code_iata`.
> 2. Assigner la valeur NULL si la valeur string est égale à "NULL".
>
> Ce qui va permettre de pouvoir importer une donnée avec 4 char alors que la colonne `code_iata` n'accepte que 3 char.
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_aeroport.tsv'
INTO TABLE t_aeroport
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(aeroport_id, @code_iata, code_icao, nom)SET code_iata = NULLIF(@code_iata, 'null');
```
```sql
Query OK, 9854 rows affected (0.067 sec)
Records: 9854 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_compagnie`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_compagnie.tsv'
INTO TABLE t_compagnie
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
```
```sql
Query OK, 110 rows affected (0.004 sec)
Records: 110 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_type_avion`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_type_avion.tsv'
INTO TABLE t_type_avion
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
```
```sql
Query OK, 342 rows affected (0.013 sec)
Records: 342 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_avion`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_avion.tsv'
INTO TABLE t_avion
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
```
```sql
Query OK, 3950 rows affected (0.025 sec)
Records: 3950 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_programme_vol`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_programme_vol.tsv'
INTO TABLE t_programme_vol
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
```
```sql
Query OK, 9614 rows affected (0.158 sec)
Records: 9614 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_vol`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_vol.tsv'
INTO TABLE t_vol
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
```
```sql
Query OK, 321911 rows affected (2.249 sec)
Records: 321911 Deleted: 0 Skipped: 0 Warnings: 0
```
##### Importation des données dans la trable `t_reservation`
```sql
LOAD DATA INFILE '/var/lib/mysql-files/t_reservation.tsv'
INTO TABLE t_reservation
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
```
```sql
Query OK, 5455883 rows affected (29.077 sec)
Records: 5455883 Deleted: 0 Skipped: 0 Warnings: 0
```
## Requêtes
##### Requête 1
```sql
SELECT *
FROM t_avion
WHERE compagnie_fk = 60
ORDER BY capacite DESC
LIMIT 2;
```
```
+----------+----------+--------------+---------------+
| avion_id | capacite | compagnie_fk | type_avion_fk |
+----------+----------+--------------+---------------+
| 11 | 380 | 60 | 89 |
| 20 | 380 | 60 | 89 |
+----------+----------+--------------+---------------+
2 rows in set (0.006 sec)
```
##### Requête 2
```sql
SELECT *
FROM t_vol
ORDER BY heure_depart DESC
LIMIT 3;
```
```
+--------+--------------+---------------+----------+--------------+---------------------+--------------------+---------------+
| vol_id | heure_depart | heure_arrivee | avion_fk | compagnie_fk | aeroport_arrivee_fk | aeroport_depart_fk | numero_vol_fk |
+--------+--------------+---------------+----------+--------------+---------------------+--------------------+---------------+
| 680 | 23:59:00 | 13:09:00 | 352 | 16 | 3913 | 5615 | CH2311 |
| 955 | 23:59:00 | 15:17:00 | 4024 | 22 | 2016 | 12744 | DA6839 |
| 4292 | 23:59:00 | 01:17:00 | 3630 | 99 | 1549 | 10840 | TU4730 |
+--------+--------------+---------------+----------+--------------+---------------------+--------------------+---------------+
3 rows in set (0.118 sec)
```
##### Requête 3
```sql
SELECT compagnie_fk, COUNT(*) AS nombre_de_vols
FROM t_vol
GROUP BY compagnie_fk
ORDER BY nombre_de_vols DESC;
```
```
+--------------+----------------+
| compagnie_fk | nombre_de_vols |
+--------------+----------------+
| 76 | 4769 |
| 12 | 3779 |
| 111 | 3772 |
| 105 | 3748 |
| 80 | 3727 |
| ... | ... |
+--------------+----------------+
110 rows in set (0.116 sec)
```
##### Requête 4
```sql
SELECT
P.nom,
P.prenom,
P.numero_passeport,
A.nom AS nom_aeroport_depart
FROM
t_passager AS P
JOIN
t_reservation AS R ON P.passager_id = R.passager_fk
JOIN
t_vol AS V ON R.vol_fk = V.vol_id
JOIN
t_aeroport AS A ON V.aeroport_depart_fk = A.aeroport_id;
```
```
+----------+------------+------------------+---------------------+
| nom | prenom | numero_passeport | nom_aeroport_depart |
+----------+------------+------------------+---------------------+
| Rod | Evans | P106826 | A.T.D. YILMA INTL |
| Michael | Hague | P107373 | A.T.D. YILMA INTL |
| Rita | Tushingham | P104848 | A.T.D. YILMA INTL |
| Michael | Anthony | P108677 | A.T.D. YILMA INTL |
| Carolina | Chiappetta | P128793 | A.T.D. YILMA INTL |
| Mike | Hollis | P119464 | A.T.D. YILMA INTL |
| Zack | Hopkins | P137755 | A.T.D. YILMA INTL |
| Eric | Bledsoe | P139017 | A.T.D. YILMA INTL |
| Darren | Clarke | P132289 | A.T.D. YILMA INTL |
| Daniela | Preisley | P137518 | A.T.D. YILMA INTL |
| ... | ... | ... | ... |
+----------+------------+------------------+---------------------+
5455883 rows in set (16.492 sec)
```
##### Requête 5
```sql
SELECT vol_fk, AVG(prix) AS prix_moyen
FROM t_reservation
GROUP BY vol_fk
ORDER BY prix_moyen ASC;
```
```
+--------+------------+
| vol_fk | prix_moyen |
+--------+------------+
| 127444 | 162.421489 |
| 336974 | 162.713235 |
| 291125 | 165.013415 |
| 156280 | 170.002195 |
| 403524 | 172.109118 |
| 393692 | 173.468621 |
| 213748 | 174.344444 |
| 190835 | 175.164750 |
| 249577 | 176.198372 |
| 33249 | 176.622667 |
| ... | ... |
+--------+------------+
42714 rows in set (1.633 sec)
```
##### Requête 6
```sql
SELECT
A.nom AS nom_aeroport,
C.nom AS nom_compagnie
FROM
t_aeroport AS A
LEFT JOIN
t_compagnie AS C ON A.aeroport_id = C.aeroport_fk;
```
```
+---------------------------+-------------------+
| nom_aeroport | nom_compagnie |
+---------------------------+-------------------+
| A CORUNA | Spain Airlines |
| A R S SPORT STRIP | NULL |
| A. BOUSSOUF AIN BOUCHEKIF | NULL |
| A.T.D. YILMA INTL | Ethiopia Airlines |
| A-306 | Korea Airlines |
| A-511 AAF | NULL |
| AALBORG | Denmark Airlines |
| AARHUS | NULL |
| AARS | NULL |
| AASIAAT | NULL |
| ... | ... |
+---------------------------+-------------------+
9854 rows in set (0.010 sec)
```