Améliorer la modélisation de la numérotaiton et de l'horodatage des sous-échantillons PS
Pour rappel, en mode super échantillonnage, une cuve est échantillonnée en plusieurs passes :
- un premier sous-échantillon en début de débarquement, pour échantillonner le haut de la cuve
- éventuellement un sous-échantillon en milieu de débarquement, pour échantillonner le milieu de la cuve
- un dernier sous-échantillon (donc n°2 ou 3) en fin de débarquement, pour échantillonner le bas de la cuve
Ce protocole part de l'hypothèse que la composition en espèces et en taille de la cuve n'est pas homogène de haut en bas.
Actuellement, l'horodatage des tours d'échantillonnage consiste en des champs Time (simples) sur sampleSpecies. Ce n'est pas totalement satisfaisant.
Localisation dans le modèle
Avoir le numéro de sous-échantillon ainsi que les dates de début et de fin du tour d'échantillonnage sur sampleSpecies n'est pas optimal :
car il faut les ressaisir pour chaque sampleSpecies. Or ces 3 valeurs sont communes à tous les sampleSpecies d'une même tour. Il y a donc redondance.
Pour améliorer cela :
- Pas d'autre solution que de créer une nouvelle entité/table entre Sample et Sample Species qui serait SampleBatch. Sur cette table seraient déportés les champs :
- SampleSpecies.subSampleNumber
- SampleSpecies.startTime
- SampleSpecies.endTime
Type des horodatages
Le champs SampleSpecies.startTime (déporté dans SampleBatch) devrait être passés en Date+Time (Timestamp) sans timezone. Et nommé SampleBatch.startTimestamp.
x.endTime peut rester en Time car on a la certitude que le tour d'échantillonnage se termine le même jour que sa date de début ; les tours ne sont jamais à cheval sur 2 journées.
Algorithme de migration
Pour renseigner SampleBatch :
- Faire un SELECT DISTINCT SampleSpecies.subSampleNumber
- Créer un enregistrement SampleBatch par subSampleNumber distinct
- Pour SampleBatch.startTimestamp, prendre Trip.endDate + SampleSpecies.startTime du premier enregistrement SampleSpecies trouvé ayant subSampleNumber
- Pour SampleBatch.endTime, prendre SampleSpecies.endTime du premier enregistrement SampleSpecies trouvé ayant subSampleNumber
On assume que les SampleSpecies.startTime et endTime avec subSampleNumber seront perdus.