B1 - DB - Ajoute MPD
This commit is contained in:
parent
f0cf67e015
commit
d993bfb2cc
3 changed files with 93 additions and 6 deletions
BIN
src/cours/CIEL1/07-bases-de-donnees/loueur_mcd.lo1
Normal file
BIN
src/cours/CIEL1/07-bases-de-donnees/loueur_mcd.lo1
Normal file
Binary file not shown.
|
|
@ -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
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 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;
|
||||
```
|
||||
|
|
|
|||
BIN
src/slides/B1/db/images/mpd.png
Normal file
BIN
src/slides/B1/db/images/mpd.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
Loading…
Add table
Add a link
Reference in a new issue