-
Notifications
You must be signed in to change notification settings - Fork 17
Script de réparation de la base de données
Dans base contenant 4 ans de données (quelque 80 méga-octets),des erreurs se cachent dans les données (principalement des relations cassées), il s’agit d'un très faible pourcentage consécutif à des bugs (corrigés depuis...)
ceci est un premier jet un peu candide, évidement à réviser, l'ordre d’exécution de ces taches parait important, sans quoi il se pourrait qu'il ne soit pas efficace à la première itération
il s’agit ici de mettre en place une 'politique de traitement' de ces entrées dans la base, de cette réflexion émergera un script de nettoyage de la base
- si point inexistant, créer le point (non visible)
- si une relation à un utilisateur n'est plus valable, l'objet sera lié au compte utilisateur de l'admin exécutant le script
- si le droit d’accès d'un utilisateur font allusion à un point inexistant, lui supprimer ce droit
- si une relation à une localité n'est plus valable, l'objet sera lié à la première localité disponible en base
- si une relation à un type d'objet collecté ou évacué n'est plus valable, créer ce type ?(nom bidon et proposer à l'admin. de renommer ce type d'objet dans la foulée?)
ça sera vraiment dommage, mais tentons de prendre en compte toutes les cas de figure envisageables
- si une relation à un type d'objet collecté ou évacué n'est plus valable, créer ce type ?(nom bidon et proposer à l'admin. de renommer ce type d'objet dans la foulée?)
- Si une pesée collecte ne correspond à aucune collecte : créer la collecte , première localité, premier type de collecte disponible en base.
- 👎 Si une relation à un type de collecte n'est plus valable, la collecte sera liée au premier type de collecte en base (moyen bonne idee actuellement ils sont hors bilan dans ce cas)
- ✔️ Si une collecte n'a pas de pesée collecte on supprime la collecte.
-- pesee_collectes sans collectes
select p.*
from pesees_collectes as p
left outer join collectes as c
on c.id = p.id_collecte
where c.id is null;
-- Collectes sans pesee_collectes
select c.*
from collectes as c
left outer join pesees_collectes as p
on c.id = p.id_collecte
where p.id_collecte is null;
- type poubelle inexistant: on crée le type poubelle, nom bidon tare à zéro et propose à l'admin de modifier le type poubelle dans la foulée
- partenaire inexistant : même punition que le type poubelle
- recycleur inexistant : on crée le recycleur, capable d'enlever TOUT types de déchets possible(?) et on propose à l'admin. d'éditer ce recycleur
- type de sortie (don) inexistant : même punition que le type poubelle
- Si une sortie n'a pas de pesée sortie on supprime la sortie.
à priori les tables concernant les ventes sont un sujet un peu plus délicat que le reste, ceci étant dit une attention particulière a été donnée dès les premiers commit en branche master pour obtenir un listing de caisse propre.Les fonctionnalités 'pesées à la caisse' et grilles d'objets posent quant à elles des problèmes de relations mortes , à développer