Suite du projet

Marc SCHAEFER schaefer at alphanet.ch
Thu Dec 13 13:07:09 CET 2001


On Thu, 13 Dec 2001, Alexandre Galletet wrote:

> > Ma proposition: dans la table ecriture, rajouter un champ "references"
> > qui pointe vers une autre table (a definir plus tard), qui peut
> > continuer le no de la piece et eventuellement une URL (qu'elle soit
> > en http:// ou en file://), ou tout autre moyen de se referer a une
> > piece. Ca ne surcharge pas trop la table des ecritures, et seules les
> > ecritures qui ont besoin des references creent un enregistreement dans
> > la table adequate. Opinion ?

> Au lieu de rajouter un champ "référence" ne peut-on pas se baser sur un
> champ déja existant p.ex. id ? (Marc?)

Effectivement, il y a deux façons de le faire:

   - si on suppose que chaque écriture a au plus une URL p.ex., un
     simple REFERENCES de ecriture à truc suffit.     

   - une autre façon de voir le problème est à l'envers: autrement dit
     de référencer DEPUIS truc jusqu'à écriture.

     Cela a comme conséquences:

        - sauf ajout d'une relation lien on ne peut pas référencer plus
          d'une écriture avec truc.

        - extensibilité accrue: on peut créer N tables truc_url,
          truc_whatever (encore que dans un URL/URI on peut stocker
          finalement tout)

        - multiplicité possible et facile

        - la destruction d'une écriture est maintenant sujette à
          réflexion: est-ce que cela doit également détruire
          le ou les objets référencés à l'envers ?

Il y a même une troisième qui est la plus complexe, et dont la deuxième
est un cas particulier, mais la moins limitée:

   CREATE TABLE truc(id SERIAL NOT NULL, uri TEXT);
   CREATE TABLE truc_de_ecriture(ecriture_id REFERENCES ecriture NOT NULL,
                                 truc_id REFERENCES truc NOT NULL,
                                 _contraintes_);

   avec _contraintes_ dépendant de la cardinalité de cette relation.







More information about the compta mailing list