NDC.md 6.29 KB
Newer Older
Gaetan Carabetta's avatar
Gaetan Carabetta committed
1
# Note de clarification
2
3

[Relationnel](https://gitlab.utc.fr/-/ide/project/gcarabet/projet_nf17_p19_tdg1_groupe2/edit/master/-/NDC.md#relationnel)  
Gaetan Carabetta's avatar
Gaetan Carabetta committed
4
[MongoDB](https://gitlab.utc.fr/-/ide/project/gcarabet/projet_nf17_p19_tdg1_groupe2/edit/master/-/NDC.md#mongodb)  
5
6
[Neo4J](https://gitlab.utc.fr/-/ide/project/gcarabet/projet_nf17_p19_tdg1_groupe2/edit/master/-/NDC.md#neo4j)  

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
7
# Contexte
Gaetan Carabetta's avatar
Gaetan Carabetta committed
8
9
La clinique vétérinaire a besoin d’un système qui gère les données des clients, du personnel, des animaux, des médicaments et traitements.
Le système à développer doit être capable de traiter ces informations et de faire des requêtes spécifiques sur ces dernières, permettant une utilisation facile et efficace.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
10

Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
11
# Projet
Gaetan Carabetta's avatar
Gaetan Carabetta committed
12
Le projet consiste en la création d'une base de données pour une clinique vétérinaire.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
13
14
Cette base de données devra contenir des informations sur les clients, le personnel, les animaux traités et les traitements prescrits.
Cette base de données pourra être manipulée afin de mettre à jour les informations ou d'afficher des statistiques.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
15

Gaetan Carabetta's avatar
Gaetan Carabetta committed
16
17
18
On veut pouvoir lister tous les animaux d'un client qui ont été traités dans la clinique.
On veut garder les traitements prescrits par chaque vétérinaire pour chaque animal.

Gaetan Carabetta's avatar
Gaetan Carabetta committed
19
20
## Relationnel 

Gaetan Carabetta's avatar
Gaetan Carabetta committed
21
#### Hypothèses
Gaetan Carabetta's avatar
Gaetan Carabetta committed
22
* On suppose que l'administrateur ne fait pas partie du personnel soignant,
23
* On suppose que le personnel n'a qu'une seule spécialité,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
24
* Les medicaments peuvent convenir à une ou plusieurs classes d'espèces animales,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
25
26

#### Descriptions opérationnelles
Gaetan Carabetta's avatar
Gaetan Carabetta committed
27
28
29
30
* L'administrateur gère la base de données,
* Un client a au moins un animal traité,
* Le personnel ne peut pas avoir d'animal traité,
* Le personnel a un seul poste,
31
* A chaque membre du personnel est associé une et une seule spécialité,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
32
33
34
35
* Une spécalité est associée à une classe d'espèces animales,
* Une spécialité ne limite pas la prescription d'un traitement à une autre classe d'espèces,
* Un traitement ne peut être prescrit que par un vétérinaire,
* Un traitement contient au moins une molécule,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
36
* Un traitement est prescrit à un seul animal,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
37
* Un médicament n'est autorisé que pour une ou plusieurs espèces,
38
* Un animal appartient à une seule espèce et donc à une seule classe,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
39
* Un animal est associé à un seul client.
Osvaldo Valdivia Salas's avatar
Osvaldo Valdivia Salas committed
40
41

#### Fonctions
Gaetan Carabetta's avatar
Gaetan Carabetta committed
42
43
44
* L’application permettra à l’administrateur d’ajouter des clients avec un nom, un prénom, une date
de naissance, une adresse et un numéro de téléphone.
* L’application permettra à l’administrateur d’ajouter du personnel avec un nom, un prénom, une date
45
46
47
de naissance, une adresse, un numéro de téléphone, un poste et à minima une spécialité:
    * Le poste peut prendre la valeur de vétérinaire ou d'assistant,
    * La spécialité ne limite pas le personnel de soigner les autres classes d'espèces,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
48
    * Le personnel à au moins un poste, il n'est pas possible de n'avoir aucun poste. 
49
50
51
* L’application permettra à l’administrateur d’ajouter des animaux, chacun associé à un client, avec un nom, une espèce, un poids et une taille:
    * La date de naissance n’est pas obligatoire,
    * Le client peut être associé à plusieurs animaux, mais un animal qu'à un seul client,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
52
    * L’espèce d’un animal doit appartenir à une seule classe d´espèces animales.
53
* L’application refusera l'ajout si un client et un personnel ont le même nom, prénom et date de naissance.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
54
* L’application permettra à l’administrateur d’ajouter de nouveaux médicaments avec un
55
nom, une petite description et la liste des espèces qui peuvent le prendre:
Gaetan Carabetta's avatar
Gaetan Carabetta committed
56
    * Ainsi l’application ne permettra pas ajouter le traitement si l'animal n'appartient pas à l’espèce autorisé pour la prise du médicament.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
57
* L’application permettra de garder un historique des traitements effectués par un vétérinaire, avec les informations suivantes : une date de début, une durée, le nom des médicaments et la quantité journalière prescrite.
Gaetan Carabetta's avatar
Gaetan Carabetta committed
58
59
    * Un traitement peut contenir plusieurs médicaments. 

Gaetan Carabetta's avatar
Gaetan Carabetta committed
60
## MongoDB
Gaetan Carabetta's avatar
Gaetan Carabetta committed
61
62
63
64
65
66
67

#### Descriptions opérationnelles
* Un client peut avoir zéro ou plusieurs animaux traités,
* Un traitement contient au moins un médicament,
* Un traitement est prescrit pour un seul animal,
* Un animal peut recevoir plusieurs traitements,
* Un animal appartient à une seule espèce et donc à une seule classe,
Gaetan Carabetta's avatar
Gaetan Carabetta committed
68
69
70
* Un animal est associé à un seul client.

#### Notas
Gaetan Carabetta's avatar
Gaetan Carabetta committed
71
72
73
74
75
76
77
* Plusieurs solutions sont possibles pour représenter la base :
  * Faire une structure JSON Client avec toutes les informations à l'intérieur -> difficulté à récupérer un animal et les traitements associés à celui-ci,
  * Faire plusieurs structures JSON avec l'id qui réfère à une autre structure pour simuler les "relations" entre les structures -> Les jointures des données devront se faire au niveau applicatif car MongoDB ne le propose pas nativement,

Nous avons choisi d'implémenter plusieurs structures :
* Pour ajouter un animal à un client il faut renseigner la clé naturelle (nom, prenom et ddn) ou la clé artificielle créée par MongoDB dans la structure animal,
* Pour ajouter un traitement à un animal il faut renseigner l'identifiant unique de cet animal car il n'y a pas de clé naturelle, dans la structure traitement,
78
79
80
81
82
83
84
85
* Chaque traitement va contenir une liste de médicaments.

## Neo4j

Avec Neo4j nous créons l'ensemble des relations puis nous pourrons choisir lesquelles afficher.
C'est un outil visuel, pratique pour une faible quantité données mais lorsque les relations et noeuds s'accumulent il est très difficile de maintenir la base.

* Nous avons créé plusieurs entité de chaque catégorie (Client, Vétérinaire, Animal, Médicament et Traitement),
Gaetan Carabetta's avatar
Gaetan Carabetta committed
86
87
88
89
90
91
92
93
94
95
96
97
98
* Nous avons ensuite créé les relations entre les entités créées.

#### Contraintes
La base de données orienté graphe ne représente pas bien les contraintes. Il faut les préciser dans un fichier annexe.
Ici nous avons les contraintes suivantes :
* Un client doit avoir au moins un animal traité,
* Un animal n'appartient qu'à un seul client,
* Un animal a reçu, au moins, un traitement,
* Un traitement n'est prescrit qu'à un seul animal,
* Un traitement ne peut être prescrit que par un seul vétérinaire,
* Un traitement comporte au moins un médicament,
* Un médicament n'est pas forcément associé à un traitement,
* Un vétérinaire peut ne pas avoir prescrit de traitement.