MLD_OO 3.07 KB
Newer Older
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
1 2 3
Type ClasseEspece: <
  nomClasse:string
>
Gaetan Carabetta's avatar
Gaetan Carabetta committed
4

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
5
tClasseEspece de ClasseEspece (#nomClasse)
Gaetan Carabetta's avatar
Gaetan Carabetta committed
6

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
7 8 9 10 11 12
Assistant(
  #idAssistant: entier,
  nom:string,
  prenom: string,
  ddn: date,
  adresse:string,
13
  numero:string,
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
14
)
Gaetan Carabetta's avatar
Gaetan Carabetta committed
15
avec {(nom,prenom,ddn) key, (adresse,numero) NOT NULL, 0100000000 < numero < 0799999999}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
16

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
17 18 19 20 21 22
Veterinaire(
  #idVeterinaire: entier,
  nom:string,
  prenom: string,
  ddn: date,
  adresse:string,
23
  numero:string,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
24
  specialite =>o ClasseEspece
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
25
)
Gaetan Carabetta's avatar
Gaetan Carabetta committed
26
avec {(nom,prenom,ddn) key, (adresse,numero) NOT NULL, 0100000000 < numero < 0799999999, specialite NOT NULL}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
27

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
28 29
Type Espece: <
  espece:string,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
30
  Classe =>o ClasseEspece
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
31
>
Gaetan Carabetta's avatar
Gaetan Carabetta committed
32
tEspece de Espece(#espece) avec Classe NOT NULL
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
33 34
Type RefEspece : <refEspece =>o tEspece>
Type ListeRefEspece : collection de <RefEspece>
35

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
36 37 38 39 40 41
Type Medicament:<
  nomMolec: string,
  description: string,
  especes: ListeRefEspece,
  =espece_autoriser(string):boolean
>
Gaetan Carabetta's avatar
Gaetan Carabetta committed
42

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
43 44
tMedicament de Medicament(#nomMolec) avec (description) NOT NULL,
{ la methode espece_autoriser() qui renvois vrai si l'animal peut prendre le médicament }
Gaetan Carabetta's avatar
Gaetan Carabetta committed
45 46


Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
47
Type Posologie: <
Gaetan Carabetta's avatar
Gaetan Carabetta committed
48
  nomMolec =>o Medicament,
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
49 50 51 52 53 54 55 56 57 58 59 60 61
  debut:date,
  duree:entier,
  nbJours:entier
>

Type ListePosologie : collection de <Posologie>


Type Traitement : <
  idVeterinaire=>Veterinaire(idVeterinaire),
  l_posologie:ListePosologie
>

Gaetan Carabetta's avatar
Gaetan Carabetta committed
62
tTraitement de Traitement (#idTraitement) avec (idVeterinaire) NOT NULL
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
63

Gaetan Carabetta's avatar
Gaetan Carabetta committed
64
Type RefTraitement : <refTraitement =>o tTraitement>
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
65 66 67 68 69 70 71
Type ListeRefTraitement : collection de <RefTraitement>

Type Animal : <
  nom: string,
  poids: float,
  taille: float,
  naissance: date,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
72
  espece =>o Espece,
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
73 74 75
  l_Traitements:ListeRefTraitement
>

Gaetan Carabetta's avatar
Gaetan Carabetta committed
76
tAnimal de Animal avec (nom,poids,taille,espece) NOT NULL, poids>0, taille>0
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
77 78 79 80 81 82 83 84 85 86

Type RefAnimal : <refAnimal =>o tAnimal>
Type ListeRefAnimal : collection de <RefAnimal>

Client(
  #idClient:entier,
  nom:string,
  prenom: string,
  ddn: date,
  adresse:string,
87
  numero: string,
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
88 89
  animaux:ListeRefAnimal
)
Gaetan Carabetta's avatar
Gaetan Carabetta committed
90
avec {(nom, prenom, ddn) key, (adresse,numero) NOT NULL, 0100000000 < numero < 0799999999}
Gaetan Carabetta's avatar
Gaetan Carabetta committed
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117


#### 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),
	)
)