B1 - DB - Ajoute MPD

This commit is contained in:
Alexis Fourmaux 2025-11-27 22:47:49 +01:00
parent f0cf67e015
commit d993bfb2cc
3 changed files with 93 additions and 6 deletions

Binary file not shown.

View file

@ -43,6 +43,7 @@ C'est une représentation **abstraite** : on ignore les données individuelles e
- **MCD** : Modèle Conceptuel de Données
- **MLD** : Modèle Logique de Données
- **MPD** : Modèle Physique de Données
- **LDD** : Langage de définition de données
---
#### Dictionnaire de données
@ -83,6 +84,12 @@ C'est une représentation **abstraite** : on ignore les données individuelles e
---
#### LDD - Langage de définition de données
- Il s'agit de la création des tables sous forme de commandes SQL
---
## Merise en détails
---
@ -344,10 +351,9 @@ section {
Il faut se baser sur la cardinalité de chaque association.
Cas possibles (x vaut 0 ou 1) :
2 cas possibles (x vaut 0 ou 1) :
- (x, n) - (x, 1) : Many to One / One to Many
- (x, n) - (x, n) : Many to Many
- Associations réflexives
---
@ -358,7 +364,8 @@ Cas possibles (x vaut 0 ou 1) :
!!!
- La clé étrangère est la clé primaire de la table côté **Many**
- L'héritage entre dans ce cas :
- Elle vient servir de référence à un enregistrement
- L'**héritage** entre dans ce cas :
- On considère qu'une entité spécialisée peut spécialiser exactement 1 entité générique (1,1)
- Une entité générique peut être spécialisée par n entités spécialisées (0,n)
- On est dans une relation (0,n) - (1,1)
@ -433,8 +440,8 @@ On crée une **table de jointure** qui va relier toutes les tables
##### Cas particuliers
- (0, 1) - (1, 1) : On utilisera une clé étrangère
- comme relation Many to One où n = 1
- (0, 1) - (1, 1) : On utilisera une **clé étrangère**
- Comme si c'était une relation Many to One où n = 1
- (1, 1) - (1, 1) : Ce type de relation n'a pas de sens
- Si cela arrive c'est que vous avez découpé en deux entités ce qui aurait dû n'en faire qu'une
@ -448,4 +455,84 @@ On crée une **table de jointure** qui va relier toutes les tables
---
## MPD - Modèle Physique de données
## MPD - Modèle Physique de données
---
- Dernière étape : ajoute les détails techniques pour implémenter le modèle dans le SGBD
- Détails techniques :
- Types de données
- Taille des colonnes
- Contraintes d'intégrité
- Clés étrangères
- C'est à ce stade qu'on va tenir compte des spécificités de chaque SGBD
---
![mpd height:600px](images/mpd.png)
---
## LDD - Langage de Définition de Données
---
```sql
CREATE TABLE IF NOT EXISTS "louer" (
"id_location" UUID NOT NULL,
"identifiant_conducteur" UUID NOT NULL UNIQUE,
"identifiant_vehicule" UUID NOT NULL,
"debut" DATE NOT NULL,
"fin" DATE NOT NULL,
PRIMARY KEY("id_location")
);
CREATE TABLE IF NOT EXISTS "conducteur" (
"identifiant_conducteur" UUID NOT NULL UNIQUE,
"nom" VARCHAR(255) NOT NULL,
"prenom" VARCHAR(255) NOT NULL,
"numero_de_telephone" VARCHAR(255) NOT NULL,
"numero_de_permis_de_conduire" VARCHAR(255) NOT NULL,
PRIMARY KEY("identifiant_conducteur")
);
CREATE TABLE IF NOT EXISTS "vehicule" (
"identifiant_vehicule" UUID NOT NULL UNIQUE,
"immatriculation" VARCHAR(255) NOT NULL,
"kilometrage" INTEGER NOT NULL,
"prix_journalier" DOUBLE PRECISION NOT NULL,
"identifiant_modele" UUID NOT NULL,
PRIMARY KEY("identifiant_vehicule")
);
```
---
```sql
CREATE TABLE IF NOT EXISTS "modele" (
"identifiant_modele" UUID NOT NULL UNIQUE,
"marque" VARCHAR(255) NOT NULL,
"modele" VARCHAR(255) NOT NULL,
"nombre_de_places" SMALLINT NOT NULL,
PRIMARY KEY("identifiant_modele")
);
CREATE TABLE IF NOT EXISTS "utilitaire" (
"id_utilitaire" UUID NOT NULL UNIQUE,
"volume" DOUBLE PRECISION NOT NULL,
PRIMARY KEY("id_utilitaire")
) INHERITS ("modele");
CREATE TABLE IF NOT EXISTS "vehicule_de_tourisme" (
"id_vehicule_de_tourisme" UUID NOT NULL UNIQUE,
PRIMARY KEY("id_vehicule_de_tourisme")
) INHERITS ("modele");
ALTER TABLE "louer"
ADD FOREIGN KEY("identifiant_conducteur") REFERENCES "conducteur"("identifiant_conducteur")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "louer"
ADD FOREIGN KEY("identifiant_vehicule") REFERENCES "vehicule"("identifiant_vehicule")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "modele"
ADD FOREIGN KEY("identifiant_modele") REFERENCES "vehicule"("identifiant_modele")
ON UPDATE NO ACTION ON DELETE NO ACTION;
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB