ajout du reste
This commit is contained in:
parent
529fc55c4f
commit
840d285b2c
119
README.md
119
README.md
@ -454,3 +454,122 @@ CREATE INDEX idx_vol_heure_depart ON t_vol(heure_depart);
|
|||||||
Query OK, 0 rows affected (0.205 sec)
|
Query OK, 0 rows affected (0.205 sec)
|
||||||
Records: 0 Duplicates: 0 Warnings: 0
|
Records: 0 Duplicates: 0 Warnings: 0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Utilisateurs et rôles
|
||||||
|
|
||||||
|
##### Création des rôles
|
||||||
|
```sql
|
||||||
|
CREATE ROLE 'administarteur';
|
||||||
|
CREATE ROLE 'gestionnaire_vols';
|
||||||
|
CREATE ROLE 'agent_reservation';
|
||||||
|
CREATE ROLE 'agent_comptoir';
|
||||||
|
CREATE ROLE 'analyste';
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 1. Administrateur: Contrôle total [cite: 184]
|
||||||
|
GRANT ALL PRIVILEGES ON db_aeroport.* TO 'administrateur'@'localhost' WITH GRANT OPTION;
|
||||||
|
|
||||||
|
-- 2. Gestionnaire des Vols: Ajout/modif vols et programmes [cite: 192, 195-197]
|
||||||
|
GRANT INSERT, UPDATE ON db_aeroport.t_vol TO 'role_flight_manager'@'localhost';
|
||||||
|
GRANT INSERT, UPDATE ON db_aeroport.t_programme_vol TO 'role_flight_manager'@'localhost';
|
||||||
|
GRANT SELECT ON db_aeroport.t_avion TO 'role_flight_manager'@'localhost';
|
||||||
|
|
||||||
|
-- 3. Agent de Réservation: Gère passagers et réservations [cite: 199-204]
|
||||||
|
GRANT INSERT ON db_aeroport.t_passager TO 'role_booking_agent'@'localhost';
|
||||||
|
GRANT INSERT, UPDATE ON db_aeroport.t_reservation TO 'role_booking_agent'@'localhost';
|
||||||
|
-- Droits de lecture nécessaires pour travailler :
|
||||||
|
GRANT SELECT ON db_aeroport.t_passager TO 'role_booking_agent'@'localhost';
|
||||||
|
GRANT SELECT ON db_aeroport.t_vol TO 'role_booking_agent'@'localhost';
|
||||||
|
|
||||||
|
-- 4. Agent de Comptoir: Vérifie réservations, modifie siège [cite: 206-210]
|
||||||
|
GRANT SELECT ON db_aeroport.t_reservation TO 'role_counter_agent'@'localhost';
|
||||||
|
GRANT SELECT ON db_aeroport.t_passager TO 'role_counter_agent'@'localhost';
|
||||||
|
GRANT SELECT ON db_aeroport.t_vol TO 'role_counter_agent'@'localhost';
|
||||||
|
GRANT UPDATE (siege) ON db_aeroport.t_reservation TO 'role_counter_agent'@'localhost';
|
||||||
|
|
||||||
|
-- 5. Analyste: Lecture seule sur tout [cite: 216, 222]
|
||||||
|
GRANT SELECT ON db_aeroport.* TO 'role_analyst'@'localhost';
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Création des utilisateurs et assignation des rôles
|
||||||
|
```sql
|
||||||
|
-- Création des utilisateurs
|
||||||
|
CREATE USER 'usr_admin'@'localhost' IDENTIFIED BY 'P@sswordAdmin123';
|
||||||
|
CREATE USER 'usr_flight_manager'@'localhost' IDENTIFIED BY 'P@sswordFlight123';
|
||||||
|
CREATE USER 'usr_booking_agent'@'localhost' IDENTIFIED BY 'P@sswordBooking123';
|
||||||
|
CREATE USER 'usr_counter_agent'@'localhost' IDENTIFIED BY 'P@sswordCounter123';
|
||||||
|
CREATE USER 'usr_analyst'@'localhost' IDENTIFIED BY 'P@sswordAnalyst123';
|
||||||
|
|
||||||
|
-- Assignation des rôles
|
||||||
|
GRANT 'role_admin'@'localhost' TO 'usr_admin'@'localhost';
|
||||||
|
GRANT 'role_flight_manager'@'localhost' TO 'usr_flight_manager'@'localhost';
|
||||||
|
GRANT 'role_booking_agent'@'localhost' TO 'usr_booking_agent'@'localhost';
|
||||||
|
GRANT 'role_counter_agent'@'localhost' TO 'usr_counter_agent'@'localhost';
|
||||||
|
GRANT 'role_analyst'@'localhost' TO 'usr_analyst'@'localhost';
|
||||||
|
|
||||||
|
-- Activer les rôles par défaut
|
||||||
|
SET DEFAULT ROLE ALL TO
|
||||||
|
'usr_admin'@'localhost',
|
||||||
|
'usr_flight_manager'@'localhost',
|
||||||
|
'usr_booking_agent'@'localhost',
|
||||||
|
'usr_counter_agent'@'localhost',
|
||||||
|
'usr_analyst'@'localhost';
|
||||||
|
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Transaction
|
||||||
|
|
||||||
|
##### Cas 1
|
||||||
|
```sql
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
-- 1. Supprimer les réservations (table enfant)
|
||||||
|
DELETE FROM t_reservation
|
||||||
|
WHERE vol_fk = 25;
|
||||||
|
|
||||||
|
-- 2. Supprimer le vol (table parent)
|
||||||
|
DELETE FROM t_vol
|
||||||
|
WHERE vol_id = 25;
|
||||||
|
|
||||||
|
-- Valider les changements
|
||||||
|
COMMIT;
|
||||||
|
-- En cas d'erreur (gérée par un bloc TRY...CATCH en SQL procédural),
|
||||||
|
-- on utiliserait ROLLBACK;
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Cas 2
|
||||||
|
```sql
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO @seat_taken
|
||||||
|
FROM t_reservation
|
||||||
|
WHERE vol_fk = 10 AND siege = '12A';
|
||||||
|
|
||||||
|
IF @seat_taken = 0 THEN
|
||||||
|
INSERT INTO t_reservation (passager_fk, vol_fk, siege, prix)
|
||||||
|
VALUES (5, 10, '12A', 250.00);
|
||||||
|
COMMIT;
|
||||||
|
ELSE
|
||||||
|
ROLLBACK;
|
||||||
|
END IF;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
> `START TRANSACTION;` Démarre un bloc d'opérations
|
||||||
|
> ``
|
||||||
|
|
||||||
|
START TRANSACTION; : Démarre un bloc d'opérations atomiques.
|
||||||
|
|
||||||
|
SELECT COUNT(*)... : Elle vérifie d'abord si le siège '12A' est déjà pris (COUNT(*) > 0) sur le vol '10'. Le résultat (0 ou 1, ou plus) est stocké dans la variable @seat_taken.
|
||||||
|
|
||||||
|
IF @seat_taken = 0 THEN : Si la variable est à 0 (le siège est libre) :
|
||||||
|
|
||||||
|
INSERT INTO... : Elle insère la nouvelle réservation pour le passager 5 sur ce vol 10 à ce siège '12A'.
|
||||||
|
|
||||||
|
COMMIT; : La réservation est confirmée et la transaction se termine avec succès.
|
||||||
|
|
||||||
|
ELSE : Si @seat_taken n'est pas 0 (le siège est déjà occupé) :
|
||||||
|
|
||||||
|
ROLLBACK; : La transaction est annulée. L'INSERT n'a jamais lieu, et la base de données revient à son état initial, empêchant ainsi une double réservation.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user