WATERBEAR:Conception du logiciel

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

But

Ce poste passe en revue quelques aspects de l'organisation du logiciel.


Organisation

Le logiciel est composé de deux parties principales:

  • Les scripts PHP, s'exécutant sur le serveur, et les scripts JavaScript, s'exécutant dans le navigateur Internet de votre PC.
  • La base de données relationnelle contenant les données et la logique de fonctionnement du logiciel. (MySQL)


Base de données

La base de données rassemble nombre de tables. Nous nous intéresserons à deux blocs de tables:

  • Le registre
  • Les données proprement dites

La fonction principale du registre (table: tvs_registre) consiste au pilotage du fonctionnement du logiciel, de définir quand et comment exécuter les scripts. Ce qui le rend très modulable.

En outre, une partie des données de gestion se trouvent dans le registre. D'une part, nous y trouvons les données nécessaires pour l'authentification: utilisateurs et postes. Elles se trouvent sous le noeud "system". Les autres rassemblent ce qu'on nomme usuellement, les tables d'aide. Toutes ces données ont la particularité de pouvoir être traduites en plusieurs langues. Elles se trouvent sous le noeud "profiles/defaut/langues/listes". Leur modifications sont accessibles partiellement dans l'interface via le menu "Administration" sous les dénominations "Listes...".

La majorité des autres tables de la base de données sont groupées par deux, du style "obj_XXXX_acces" et "obj_XXXX_liens". Le "XXXX" est à remplacer par le nom repris dans chaque case du schéma ci-dessous. Les tables "obj_XXXX_acces" contiennent les données, ce sont les boites du schéma ci-dessous; les tables "obj_XXXX_liens" définissent les liens entre les enregistrements des données de la boite du même nom et les enregistrements des données d'une autre table, ils sont représentés par une flèche dans le schéma ci-dessous. Chaque case regroupe un ensemble de données concernant un sujet. Les deux cases du dessous ("collection" et "oeuvre") ne sont pas utilisées ni référencées dans le registre. La boite "vedette_mat" est référencée mais ne semble pas utilisée. Les données correspondantes semblent se retrouver dans la boite "autorite_mat". Deux boites sont centrales: "biblio" et "lecteur". "biblio" contient les données des documents (livres, périodiques, CD, DVD,...); "exemplaire" est le pendant physique du document. En dessous, on trouve le système d'approvisionnement en documents physiques. "lecteur" contient les caractéristiques des lecteurs. Respectivement à gauche et à droites, les tables périphériques complètent ces deux groupes d'informations centrales. Au centre, on retrouve la liaison entre ces deux modules. En effet, le but principal d'une bibliothèque est d'organiser le prêt de document à des lecteurs avec une réservation préalable optionnelle ("resa").


WATERBEAR:Db.waterbear.jpg


Le nom dans les boites sont assez explicites et leurs liens logiques. Quelques uns méritent une explication:

  • resa: réservation de document
  • abo: abonnement à un périodique de la part du fond de bibliothèque
  • abonnement: abonnement d'un lecteur aux bibliothèques

Si vous voulez intervenir directement dans les tables de la base de données, il faut y aller avec beaucoup de précautions. Son organisation n'est pas classique. En effet, voici quelques points:

  • une table contient souvent les données d'une autre table en doublon
  • certains champs peuvent contenir plusieurs informations séparées par une barre verticale
  • certaines colonnes sont dédoublées, l'un servant aux données (préfixée par "a_", l'autre comme clé de tri (préfixée pat "t_")
  • chaque enregistrement contient un champs de type XML rassemblant l'ensemble des données à afficher dans une page

Normalement chaque information doit être présente de façon unique. Vous comprendrez facilement que si vous changez une données, il faut connaitre où se trouvent les informations équivalentes et les remplacer aussi. Je conseille de laisser le logiciel travailler. Il fait très bien cela.

Je suppose que cette organisation des données a été adoptée afin de faciliter et d'optimiser le déroulement du logiciel.


Parmi les autres tables, on retrouve un journal du suivi des modifications faites dans le registre et une série de tables pouvant journaliser le suivi de l'exécution du logiciel dans un but de "debugging". Ces tables sont utiles pour le développement du logiciel. La table "tvs_paniers" gère les paniers comme on peut s'en douter d'après son nom, ainsi que les statistiques.




->retour au menu de Waterbear