AwakeningOrganiserOutilsLes bullesMémoriser

Mémoriser le chemin des bulles

Présentation

Cette partie est plutôt technique et présente comment la mémorisation des chemins est réalisée.

On pourrait penser que c'est simple mais comme des remplacements sont possibles un peu partout, il est nécessaire de réfléchir à la question.

La représentation des données

On ne détaille ici que ce qui a de l'importance pour notre but. Par exemple il existe aussi des champs pour l'évaluation, la date, les signalements.

Un texte
Il comprend le contenu et son auteur.
À la base un auteur crée une bulle plus un texte, mais par le truchement des remplacement un texte peut se trouver dans plusieurs bulles: celle de base, celle à l'origine du bouillonnement où elle se trouve etc. Un texte remplacé se trouve aussi dans une bulle du bouillonnement qui a servi à le remplacé. C'est pourquoi un texte se trouve toujours dans au moins une bulle.
Une bulle
Elle contient une référence à un texte et une référence à son bouillonnement.
Donc une bulle n'est que dans un seul bouillonnement.
Un bouillonnement
Il représente un ensemble de bulles, le bouillonnement Improvements a une référence vers la meilleure bulle et un rang de profondeur.

Le but

Il nous faut établir un graphe de la relation "est l'amélioration de" entre les textes.

Ainsi en partant du texte choisi on obtient tout l'historique des améliorations.

Solution retenue

On utilise une nouvelle table comprenant 3 champs:

Avec la contrainte que le couple de références est unique (voir Étude sur un bouillonement isolé).

Avec ce système on a besoin de la chronologie, elle est donnée par l'identifiant de l'enregistrement (qui est sauvé dans les sauvegardes). Il est aussi nécessaire de créer un enregistrement pour la bulle initiale.

Quand on veut enregistrer un couple qui existe déjà, c'est que l'on a bouclé. Pour enlever la boucle on efface tous les enregistrements du même bouillonnement qui ont succédés à l'enregistrement que l'on a tenté d'effacé.

C'est une solution économique et fiable. Économique car on n'ajoute pas d'information aux éléments existant, champs qui serait souvent vide. Fiable car on enregistre toutes les améliorations (sauf les boucles, mais on a tourné en rond donc c'était inutile).

Mauvaises pistes

Une reférence dans les textes

Il peut sembler que la solution est d'ajouter une référence "est l'amélioration de" dans les textes. Mais un texte peut être une amélioration dans son propre bouillonnement ainsi que dans son bouillonnement parent, donc on ne peut pas se contenter d'une seule référence.

Double référence

Étude sur un bouillonement isolé

Pour étudier un problème plus simple nous supposons qu'il n'y a qu'un bouillonement. Donc une bulle = un texte.

Tant qu'il n'y a pas de cycle, avoir une référence "est l'amélioration de" dans une bulle (ou un texte, c'est ici pareil) ne pose pas problème. Mais on peut avoir une boucle: par exemple A améliore B qui améliore A (les gens peuvent changer d'avis). Dans ce cas il faudrait écraser de l'information. Mais si on écrasait de l'information on perdrait le lien au texte originel, par exemple (→ = est l'amélioration de): B → C → B → A, dans ce cas si on écrit au fur et à mesure B → C remplace B → A et on ne retrouve à la fin que B → C → B

Pour éviter ce problème on refuse d'écraser une relation, cela a pour effet d'oublier la boucle, ce qui ne dérrange pas puisque l'on a tourné en rond. Donc dans notre exemple on obtient à la fin B → A.

Cas général

On a vue que la relation ne pouvait être stockée par le texte. Essayons de l'écrire dans la bulle. Mais si on n'écrit que cette relation, comme les textes dans les bulles peuvent changer, on perd de l'information. Pour éviter cela on stoke dans chaque bulle deux informations:

Partons de la bulle A "top" choisie, son texte est donc le texte choisi. Si on a A → B alors B est l'ancienne meilleure bulle du bouillonnement. Le texte de B n'est pas forcément le texte qui était dans B quand A a détrôné B, car B a pû avoir eu des améliorations entre temps, mais on a une référence du texte de B au moment du remplacement.

Mais on élimine les boucles de bulles qui ne sont pas forcément des boucles du point de vue des textes puisque les bulles peuvent avoir été améliorées.