Commit c8a08ad3 authored by Gaetan Carabetta's avatar Gaetan Carabetta
Browse files

Update MLD

parent 3dd57f84
......@@ -5,15 +5,8 @@ Tous les héritages sont exclusifs
#### Relationnel
Client(#nom: string, #prenom: string, #ddn: date, adresse: string, numero: int) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Assistant(#nom: string, #prenom: string, #ddn: date, adresse: string, numero: int) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Veterinaire(#nom: string, #prenom: string, #ddn: date, adresse: string, numero: int) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
PersonnelClasseEspece(#nomClasse=>ClasseEspece,
#nomVeto=>Veterinaire(nom), #prenomVeto=>Veterinaire(prenom), #ddnVeto=>Veterinaire(ddn),
#nomAssis=>Assistant(nom), #prenomAssis=>Assistant(prenom), #ddnAssis=>Assistant(ddn))
avec { ( (nomVeto, prenomVeto, ddnVeto) NULL AND (nomAssis, prenomAssis, ddnAssis) NOT NULL) OR
(nomVeto, prenomVeto, ddnVeto) NOT NULL AND (nomAssis, prenomAssis, ddnAssis) NULL)
) }
Assistant(#nom: string, #prenom: string, #ddn: date, adresse: string, numero: int, specialite=>ClasseEspece(nomClasse)) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Veterinaire(#nom: string, #prenom: string, #ddn: date, adresse: string, numero: int, specialite=>ClasseEspece(nomClasse)) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
ClasseEspece(#nomClasse: string) avec {nomClasse = {Mammifères, Reptiles, Oiseaux ou Autres } }
......@@ -23,29 +16,18 @@ Animal(#nom: string, #poids: float, #taille: float, naissance: date,
clientNom=>Client(nom), clientPrenom=>Client(prenom), clientDDN=>Client(DDN),
#especeNom=>Espece(nom)) avec {poids > 0, taille > 0; naissace = (NULL OR date); (nom, poids, taille) KEY}
// Solution 1
Traitement(#idTraitement: int,
nomAnimal=>Animal(nom), poids=>Animal(poids), taille=>Animal(taille),
#nomVeto=>Veterinaire(nom), #prenomVeto=>Veterinaire(prenom), #DDNVeto=>Veterinaire(DDN)) avec {idTraitement > 0}
// Solution 2
TraitementAnimal(#idTraitement=>Traitement, #nomAnimal=>Animal(nom), #poids=>Animal(poids), #taille=>Animal(taille))
Traitement(#idTraitement: int,
#nomVeto=>Veterinaire(nom), #prenomVeto=>Veterinaire(prenom), #DDNVeto=>Veterinaire(DDN)) avec {idTraitement > 0}
Traitement(#nomAnimal=>Animal(nom), #poids=>Animal(poids), #taille=>Animal(taille),
#nomVeto=>Veterinaire(nom), #prenomVeto=>Veterinaire(prenom), #DDNVeto=>Veterinaire(DDN))
Medicament(#nomMolec: string, description: string)
avec la methode espece_autoriser() qui renvois vrai si l'animal peut prendre le médicament
avec { la methode espece_autoriser() qui renvois
vrai si l'animal peut prendre le médicament }
EspeceMedicament(#nomEspece=>Espece, #nomMolec=>Medicament)
Posologie(#idTraitement=>Traitement(idTraitement), #nomMolec=>Medicament(nomMolec),
debut: date, duree: int, nbJourna: int) avec {debut > 0, duree > 0, nbJourna > 0}
Posologie(#nomAnimal=>Traitement(nomAnimal), #poids=>Traitement(poids), #taille=>Traitement(taille),
#nomMolec=>Medicament(nomMolec), #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)
......@@ -53,8 +35,8 @@ Posologie(#idTraitement=>Traitement(idTraitement), #nomMolec=>Medicament(nomMole
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,idTraitement)=Projection(Posologie,idTraitement)
Projection(Médicament,nomMolec)=Projection(Posologie,nomMolec) AND Projection(Traitement,nomAnimal,poids,taille)=Projection(Posologie,nomAnimal,poids,taille)
#### Vues
vPersonne(Union(Projection(Client, nom, prenom, ddn, adresse, numero), Projection(Personnel, nom, prenom, ddn, adresse, numero)))
vPersonnel(Union(Projection(Assistant, nom, prenom, ddn, adresse, numero), Projection(Veterinaire, nom, prenom, ddn, adresse, numero)))
vPersonnel(Union(Projection(Assistant, nom, prenom, ddn, adresse, numero, specialite), Projection(Veterinaire, nom, prenom, ddn, adresse, numero, specialite)))
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment