Skip to content

Script de réparation de la base de données

Axel Viala edited this page Jun 17, 2018 · 4 revisions

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

Points de collecte sortie et vente:

  • si point inexistant, créer le point (non visible)

Utilisateur:

  • 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

Localité:

  • si une relation à une localité n'est plus valable, l'objet sera lié à la première localité disponible en base

Types d'objets collectés et évacués:

  • 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?)

Moyens de paiement:

ç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?)

Collectes:

  • 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;

Sorties Hors Boutique:

  • 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.

Ventes

à 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