MLD_OO 2.87 KB
Newer Older
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
1
2
3
4
5
6
#### Notes
Tous les attributs sont NOT NULL par défaut
Tous les héritages sont exclusifs

#### Relationnel

Gaetan Carabetta's avatar
Gaetan Carabetta committed
7
Client(#idClient:int, nom: string, prenom: string, ddn: date, adresse: string, numero: int, animaux[1..*]: OID_tAnimaux) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
8

Gaetan Carabetta's avatar
Gaetan Carabetta committed
9
Assistant(#idAssistant: int, nom: string, prenom: string, ddn: date, adresse: string, numero: int, specialite=>o tClasseEspece) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
10

Gaetan Carabetta's avatar
Gaetan Carabetta committed
11
Veterinaire(#idVeterinaire: int, nom: string, prenom: string, ddn: date, adresse: string, numero: int, specialite=>o tClasseEspece) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
12

Gaetan Carabetta's avatar
Gaetan Carabetta committed
13
14
15
16
17
18
19
type tyClasseEspece : <nomClasse: string>
tClasseEspeces de tyClasseEspece(#nomClasse)

type tyEspece : <nomEspece: string, nomClasse=>o tClasseEspeces>
tEspeces de tyEspece(#nomEspece)

type tyAnimal : <idAnimal: int, nom: string, poids: float, taille: float, naissance: date, idClient=>Client(idClient), especeNom=>o tEspeces, traitements[0..*]: OID_tTraitements>
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
20
		avec {poids > 0, taille > 0; naissace = (NULL OR date)}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
21
tAnimaux de tyAnimal(#idAnimal)
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
22

Gaetan Carabetta's avatar
Gaetan Carabetta committed
23
24
type tyTraitement : <idTraitement: int, idAnimal=>o tAnimaux, idVeterinaire=>Veterinaire(idVeterinaire), medicaments[1..*]: OID_tMedicaments>
tTraitements de tyTraitement(#idTraitement)
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
25

Gaetan Carabetta's avatar
Gaetan Carabetta committed
26
type tyMedicament: <nomMolec: string, description: string, especes[1..*]: OID_tEspeces>
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
27
28
    avec { la methode espece_autoriser() qui renvois
		vrai si l'animal peut prendre le médicament }
Gaetan Carabetta's avatar
Gaetan Carabetta committed
29
tMedicaments de tyMedicament(#nomMolec)
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
30

Gaetan Carabetta's avatar
Gaetan Carabetta committed
31
tEspeceMedicament(nomEspece=>o tEspeces, nomMolec=>o tMedicaments)
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
32

Gaetan Carabetta's avatar
Gaetan Carabetta committed
33
Posologie(idAnimal=>o tAnimaux, nomMolec=>o tMedicaments,
Gaetan Carabetta's avatar
add uml  
Gaetan Carabetta committed
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
		#debut: date, duree: int, nbJourna: int)
		avec {debut > 0, duree > 0, nbJourna > 0; debut {local key}}

#### Contraintes
<nomClasse NOT NULL> AND Projection(ClasseEspece, nomClasse) = Projection(Espece, nomClasse)
Projection(Veterinaire, nom,prenom,DDN) = Projection(Traitement, nomVeto, prenomVeto,DDNVeto)
Dans la classe Client: <(nom,prenom,DDN) NOT NULL> AND Projection(Client, nom,prenom,DDN)=Projection(Animal,clientNom,clientPrenom,ClientDDN)
<nomEspece NOT NULL> AND Projection(Espece,nomEspece)=Projection(Animal,nomEspece)
Projection(Médicament,nomMolec)=Projection(EspeceMédicament,nomMolec) AND Projection(Espece,nomEspece)=Projection(EspeceMédicament, nomEspece)
Projection(Médicament,nomMolec)=Projection(Posologie,nomMolec) AND Projection(Traitement,nomAnimal,poids,taille)=Projection(Posologie,nomAnimal,poids,taille)

#### Vues
vPersonnel(
Union(
	Projection(Assistant, nom, prenom, ddn, adresse, numero, specialite),
	Projection(Veterinaire, nom, prenom, ddn, adresse, numero, specialite)
	)
)

vPersonne(
Union(
	Union(
		Projection(Veterinaire, nom, prenom, ddn, adresse, numero, specialite)
		Projection(Assistant, nom, prenom, ddn, adresse, numero)
		),
	Projection(Client, nom, prenom, ddn, adresse, numero),
	)
)