langage de description de
modélisation LMD
Modélisation
Déclaration-relation
Déclaration-domaine
Type
Liste-valeur
Liste-intervalle
Hôtel
client no 300
Dupont, Paul
13 rue de la voirie
arrivée 13-nov-90
départ 16-nov-90
chambre 12,
120 frs, WC,TV
2 lits, 3 pers
Hôtel en MDL (version 1)
Hôtel(NumChambre, NumClient, Nom, Prenom, Adresse,
Prix, NbrLit, NbrPers, DateArr, DateDep, Confort,
Equipement) :
"||Hôtel(a,b,c,d,e,f,g,h,i,j,k,l)|| Le client, portant le numéro
b nommé d,c habitant e arrive le i et partant le j, a réservé
la chambre portant le numéro a qui contient g lits et peut
loger h personnes ayant pour confort k et équipement l et
coûte f francs par nuit"
NumChambre dom numérique entier [1..50]
NumClient dom numérique entier [1..999999]
Nom dom texte
Prenom dom texte
Adresse dom texte
Prix dom numérique réel [100..1000]
NbrLit dom numérique entier [1..3]
NbrPers dom numérique entier [1..3]
DateArr dom date
DateDep dom date
Confort dom mot ordonné (wc,douche,bain)
Equipement dom mot (sans,TV)
(12, 300, Dupont, Paul, 13 rue de la voirie, 120, 2, 3, 13-
Nov-90, 16-Nov-90, WC, TV)
Hôtel en MDL (version 2)
Chambres(NumChambre, Prix, NbrLit, NbrPers, Confort,
Equipement) :
"||Chambres(a,b,c,d,e,f)|| La chambre portant le numéro a qui
contient c lits et peut loger d personnes a pour confort e et
équipement f et coûte b francs par nuit"
Clients(NumClient, Nom, Prenom, Adresse) :
"||Clients(a,b,c,d)|| Le client portant le numéro a se nomme c,b
et habite d"
Réservation(NumChambre, NumClient, DateArr, DateDep) :
"||Réservation(a,b,c,d)|| Le client, portant le numéro b arrivant
le c et partant le d, a réservé la chambre portant le numéro a"
NumChambre dom numérique entier [1..50]
NumClient dom numérique entier [1..999999]
Nom dom texte
Prenom dom texte
Adresse dom texte
Prix dom numérique réel [100..1000]
NbrLit dom numérique entier [1..3]
NbrPers dom numérique entier [1..3]
DateArr dom date
DateDep dom date
Confort dom mot ordonné (wc,douche,bain)
Equipement dom mot (sans,TV)
(300, Dupont, Paul, 13 rue de la voirie)
(12, 120, 2, 3, WC, TV)
(12, 300, 13-Nov-90, 16-Nov-90)
SQL- LDD Langage de Description
de Données
New-table
New-column
Datatype
Character-type
Date-type
Float-type
Decimal-type
Integer-type
Binary-type
Exemple: SQL -DDL Hôtel
CREATE table CLIENTS (
NUM_CLIENT NUMBER( 6) not null ,
NOM CHAR( 20) not null ,
PRENOM CHAR( 20) not null ,
ADRESSE CHAR( 40) not null )
CREATE table CHAMBRES (
NUM_CHAMBRE NUMBER( 2) not null ,
PRIX NUMBER( 8, 2) not null,
NBR_LITS NUMBER( 1, 0) not null ,
NBR_PERS NUMBER( 1, 0) not null ,
CONFORT CHAR( 6, 0) not null ,
EQUIPEMENT CHAR( 3, 0) not null )
CREATE table RESERVATIONS (
NUM_CLIENT NUMBER( 6) not null ,
NUM_CHAMBRE NUMBER( 2) not null ,
DATE_ARR DATE not null ,
DATE_DEP DATE not null )
Clé d'une relation en terme d'entité
Clé K de R
Une clé d'une relation R est un ensemble minimal de
constituants de R tel que si deux entités de R
prennent les mêmes valeurs pour ces constituants
dans une même instance de R alors elles sont
identiques.
K est une clé de R si et seulement si
1) K ⊆ R+
2) ∀ r1,r2 ∈ iR (r1.K =r2.K → r1=r2)
3) ¬∃K,K ⊃ K' tel que K' vérifie la condition 2)
Remarques:
- Toute relation admet une clé (éventuellement R+)
- Il peut exister plusieurs clés
- La clé permet de distinguer les entités -> pas de
valeur inconnue pour les clés obligatoires
Exemple Hôtel:
Clé de Chambre (NumChambre)
Clé de Client (NumClient)
Clé de Réservation (NumChambre, DateArr),
(NumChambre, DateDep)
Du Champ d'application à la BD
objets
du
modélisation C.A.
Md interprétation
concrétisation iR1
...
iRn
Exemple TT3
La compagnie de transport TT3 (Tout Transport, Tout
Type, Tout Temps) a choisi de se diversifier. Son
domaine d'activité principal est lié aux taxis et aux
transports de groupes. Cette diversification récente a
entraîné des problèmes de gestion et la direction a
compris que les difficultés étaient en partie incriminables
à l'obsolescence de son système d'information. La
décision d'informatiser a été prise. Le PDG de la
compagnie, sur les conseils d'un ami, a décidé de
procéder à une modélisation du champ d'application
avant d'acheter les ordinateurs personnels que lui
réclament les gestionnaires de la compagnie (proverbe
du routier: "Ne pas mettre la charrue avant les boeufs").
Le champ d'application couvert par les impératifs de la
gestion de cette compagnie de transport concerne le parc
de véhicules, son entretien, l'administration de chauffeurs
et de leur emploi du temps, la gestion des appels des
clients à la centrale téléphonique.
Le texte qui suit est une description du champ
d'application tel qu'il apparaît à la suite d'une réunion
avec les différents cadres de la direction (les mots en
style gras sont les constituants qui sont retenus dans la
modélisation).
Compte rendu de la réunion:
Pour le chef mécanicien, un véhicule est identifié par un
numéro de châssis noChassis. Chaque véhicule
possède un numéro de plaque noPlaque ainsi qu'une
date de mise en service miseEnService. Le parc de
véhicules est divisé en plusieurs types. Un type est connu
par le modèle modèle, par exemple: Mercedes 300. Un
véhicule ne peut bien entendu appartenir qu'à un seul
modèle. La description d'un modèle permet de connaître
le nombre de personnes pouvant prendre place dans les
véhicules nbPlaces de ce modèle; le type de carburant
typeCarburant consommé; la catégorie de permis
catégorie que doit posséder le chauffeur; le type de
boîte à vitesses automatique et le poids du modèle
poids.
Un des objectifs de ce système d'information est de
surveiller la consommation journalière en carburant des
véhicules. Ainsi une augmentation de cette
consommation sera le signe que le moteur nécessite un
réglage. A chaque fois que le chauffeur fait le plein, il
remplit une fiche indiquant le numéro de plaque, la date
noJour, le nombre de kilomètres roulés depuis le dernier
plein kilometrage, la quantité litres et le type de
carburant mis dans le réservoir.
L'équipe des mécaniciens s'occupe de l'entretien. Ce qui
est mémorisé sur l'entretien des véhicules est donné par
une description description associée à une date et un
numéro de chassis.
Le responsable de la planification a besoin des
informations suivantes pour établir l'emploi du temps de
ces chauffeurs. Il dispose jusqu'à maintenant de fiches
sur les chauffeurs où l'on trouve le numéro du chauffeur
noChauffeur, son nom nom, son prénom prénom, son
adresse adresse. La fiche contient aussi un
emplacement où sont notées les catégories de permis
que possèdent le chauffeur.
L'emploi du temps des chauffeurs et des véhicules est
défini sur un grand tableau qui occupe une paroi entière
de son bureau. Les numéros des chassis des véhicules
se trouvent sur les entêtes de ligne. Les entêtes de
colonne sont des dates subdivisées en trois tranches
horaire trancheHoraire. Un seul numéro de chauffeur
est inscrit dans une case du tableau.
Le responsable de planification doit faire attention à ce
que les modèles conduits par les chauffeurs soient
compatibles avec les permis qu'ils possédent.
Le central téléphonique pour gérer les appels
téléphoniques est équipé d'un système qui permet aux
chauffeurs de donner leur position en indiquant la zone
noZone dans laquelle ils sont inoccupés avec un
véhicule. Lorsqu'un client demande un taxi, il suffit de lui
assigner un véhicule dans sa zone de prise en charge. Si
aucun taxi ne se trouve dans la zone, il faut trouver le plus
proche véhicule. Afin d'effectuer cette recherche d'une
manière optimale, il existe des tabelles, qui, pour chaque
heure de la journée heure indique le temps de parcours
tempsParcours d'une zone zoneDe à une autre
zoneA. On encode ainsi le variation de fluidité du trafic
dans la ville au cours de la journée.
La compagnie TT3 est répartie dans la ville en stations où
sont garés les véhicules. Une station possède un numéro
de station noStation. La station se trouve dans une zone.
Un véhicule est associé à une seule station. Un chauffeur
est aussi assigné à une et une seule station. C'est à cette
station qu'il vient prendre et rendre son véhicule.
Domaine de TT3
adresse texte
automatique booléen
catégorie mot (A,B1,B2,C ...)
description texte
heure entier [0..23]
kilometrage entier positif
litres réel [0..500]
miseEnService date
modèle mot
(mercedes300,audi200,car80pl,...)
nbPlaces entier [4..80]
noChassis entier positif
noChauffeur entier positif
noJour entier [1..366]
nom mot (Dupont, Durant, ...)
noPlaque entier [1..9999]
noStation entier [1..6]
noZone entier [1..99]
poids entier [500..15000]
prénom mot (Jean, Marie, ...)
tempsParcoursentier positif (en minutes)
trancheHoraire mot (A,B,C)
typeCarburant mot (super,normal,sansplomb,diesel)
zoneA entier [1..99]
zoneDe entier [1..99]
relation de TT3
Véhicule (noChassis, noPlaque, miseEnService, modèle,
noStation)
Type (modèle,nbPlaces,catégorie,typeCarburant,
automatique, poids)
Chauffeur (noChauffeur,nom, prénom, adresse,
noStation)
Carburant (noPlaque, noJour, kilometrage, litres,
typeCarburant)
Entretien (noChassis, noJour, description)
Permis (noChauffeur, catégorie)
Planning (noChauffeur, noChassis, noJour,
trancheHoraire)
Station (noZone, noStation)
Distance (heure, zoneDe, zoneA, tempsParcours)
Situation (noChassis, noZone)
Prédicat de TT3
Véhicule(noChassis, noPlaque, miseEnService, modèle,
noStation)
predicat: "||Véhicule(nc,np,s,m,ns)|| Le véhicule
portant le numéro de Chassis nc et immatriculé np a
été mis en service le s, il est du modèle m et
appartient à la station ns"
Type(modèle,nbPlaces,catégorie,typeCarburant,
automatique, poids)
predicat: "||Type(m,s,c,tc,a,p)|| Le modèle m de
véhicule peut contenir s personnes, pèse p [kg],
consomme du carburant tc, la boîte à vitesse est a, le
permis c est nécessaire pour le conduire"
Chauffeur(noChauffeur, nom, prénom, adresse,
noStation)
predicat: "||Chauffeur(nch,n,p,a,ns)|| Le chauffeur
portant le nom n est le prénom p habite a. il est
identifié par le numéro nch et il est assigné à la station
ns"
Carburant(noPlaque, noJour, kilometrage, litres,
typeCarburant)
predicat: "||Carburant(np,j,k,l,tc)|| Le jour j, le véhicule
immatriculé np a effectué un plein de l litres de tc
carburant après avoir roulé k kilomètres"
Entretien(noChassis, noJour, description)
predicat: "||Entretien(nc, j, d)|| Le jour j, le véhicule
avec numéro de chassis nc a subi l'entretien d"
Permis(noChauffeur, catégorie)
predicat: "||Permis(nch,c)|| Le chauffeur portant le
numéro nch possède un permis c"
Planning(noChauffeur, noChassis, noJour,
trancheHoraire)
predicat: "||Planning(nch,nc,j,h)|| Le chauffeur portant
le numéro nch doit conduire le véhicule portant le
numéro de chassis nc le jour j durant la tranche
horaire h"
Station(noZone, noStation)
predicat: "||Station(nZ,nS)|| La station nS se trouve
dans la zone nZ"
Distance(heure, zoneDe, zoneA, tempsParcours)
predicat: "||Distance(h,zd,za,t)|| A l'heure h, pour aller
de zd à za, on estime qu'il faut t minutes"
Situation(noChassis, noZone)
predicat: "||Situation(nc,nz|| Actuellement, le véhicule
portant le numéro de chassis nc attend dans la zone
nz"
en terme informatique de TT3
adresse texte char(80)
automatique booléen char(1)
catégorie mot (A,B1,B2,C ...) char(2)
description texte char(240)
heure entier [0..23] number(2)
kilometrage entier positif number
litres réel [0..500] number(3)
miseEnService date date
modèle mot (mercedes300,...)char(12)
nbPlaces entier [4..80] number(2)
noChassis entier positif number
noChauffeur entier positif number
noJour entier [1..366] number(3)
nom mot (Dupont, ...) char(24)
noPlaque entier [1..9999] number
noStation entier [1..6] number(1)
noZone entier [1..99] number(2)
poids entier [500..15000] number(5)
prénom mot (Jean, Marie, ...) char(24)
tempsParcours entier positif number(3)
trancheHoraire mot (A,B,C) char(1)
typeCarburant mot (super,) char(12)
zoneA entier [1..99] number(2)
zoneDe entier [1..99] number(2)
en terme informatique de TT3
Create table Vehicule( noChassis
number,
noPlaque n u m b e r ,
miseEnService d a t e ,
modele char(12),
noStation n u m b e r ( 1 ) )
Create table Type( modele c h a r ( 1 2 ) ,
nbPlaces number(2),
categorie c h a r ( 2 ) ,
typeCarburant char(12),
automatique char(1),
poids number(5))
Create table Carburant( noPlaque
number,
noJour number(3),
kilometrage n u m b e r ,
litres number(3),
typeCarburant char(12))
Create table Entretien( noChassis
number,
noJour number(3),
descriptionchar(240))
Create table Chauffeur( noChauffeur
number,
nom char(24),
prenom char(24),
adresse char(80),
noStation n u m b e r ( 1 ) )
Create table Permis( noChauffeur
number,
categorie c h a r ( 2 ) )
Create table Planning( noChauffeur
number,
noChassis n u m b e r ,
noJour number(3),
trancheHoraire char(1))
Create table Station( noZone
number(2),
noStation n u m b e r ( 1 ) )
Create table Distance( h e u r e
number(2),
zoneDe number(2),
zoneA number(2),
tempsParcours number(3))
Create table Situation( noChassis
number,
noZone number(2))