Specifications

Didier Dubois Didier.Dubois at linkvest.com
Wed Oct 10 13:34:21 CEST 2001


Hello,

Si je puis me permettre une suggestion:

peut-etre faudrait-il eviter d'utiliser des "features" speciaux tels que
les triggers, etc,.... a moins d'etre sur qu'on n'utilisera QUE
PostgresSQl (???).

Idem pour les autonum, etc,... qui ne sont pas compatibles d'une DB a
l'autre.

Pour plus d'infos je conseille le lien suivant (c'est une reference en
la matiere): http://www.ambysoft.com/persistenceLayer.html 
Cela vaut aussi le coup de surfer a partir de la...


Didier.

> -----Original Message-----
> From: Marc SCHAEFER [mailto:schaefer at alphanet.ch]
> Sent: 10 October 2001 12:34
> To: compta at linux-gull.ch
> Subject: Re: Specifications
> 
> 
> On Wed, 3 Oct 2001, Frederic Schutz wrote:
> 
> > Ce serait bien si on pouvait faire quelque chose à partir de ça, en
> > particulier définir quelques tables en SQL. 
> Personnellement, je n'ai pas
> > peur de partir sur une mauvaise voie et de tout jeter après quelques
> > essais, tant que ça avance.
> 
> Ben alors voilà:
> 
> -- Projet GULL Compta
> -- initial.sql -- Définitions des structures de données de la BD
> -- AUTHOR
> --    Marc SCHAEFER <schaefer at alphanet.ch>
> -- LICENSE
> --    (C) 2001 by Marc SCHAEFER, licensed under the terms of the
> --    GNU General Public License as published by the Free Software
> --    Foundation; either version 2 or later (at your option).
> -- DESCRIPTION
> --    Ceci définit les structures de données, en fonction des 
> contraintes
> --    décrites sur: http://www.linux-gull.ch/projets/compta/.
> -- NOTES
> --    - Cette première version suppose:
> --         - une base de données PostgreSQL 7.x
> --         - une allocation assez large des données 
> (utilisation de TEXT
> --           plutôt que VARCHAR p.ex.)
> --         - une insistance sur l'adéquation à la spécification.
> --         - pour l'instant une simplification: on évite la 
> prolifération
> --           de tables adresse, code_pays, localité, etc. Ce 
> qui pourra être
> --           fait dans une deuxième étape.
> --         - il manque des contraintes/triggers pour empêcher 
> la modification
> --           de données sensibles.
> --         - il faut décider si l'on autorise des valeurs par défaut.
> -- BUGS
> --    - Mix of French and English
> --    - INT4 in REFERENCES to SERIAL must be specified.
> -- TODO
> --    - Check with PG7 if ok.
> -- BASED-ON
> --    Original work
> -- $Id$
> -- 
> 
> -- BUGS
> --    - This shouldn't be an active table, it's just 
> inherited. Alternatively
> --      this could be REFERRED to.
> CREATE TABLE adresse (adresse_1 TEXT NOT NULL,
>                       adresse_2 TEXT,
>                       adresse_3 TEXT,
>                       localite TEXT NOT NULL,
>                       code_ville TEXT NOT NULL,
>                       code_pays TEXT DEFAULT 'CH' NOT NULL);
> 
> CREATE TABLE societe (id SERIAL NOT NULL, -- interne à la 
> base de données
>                       libelle TEXT NOT NULL,  -- libellé
>                       UNIQUE(id), PRIMARY KEY(id))
>    INHERITS (adresse);
> 
> -- NOTES
> --    - REFERENCES ensures societe exists.
> -- TODO
> --    - Add trigger to disable add/modify once clotured, probably
> --      on another table.
> --    - Add trigger so that the devise cannot be changed once set.
> --    - Add trigger to check that (societe, [intervalle]) is not
> --      within any other intervalle (debut, fin).
> CREATE TABLE exercice (id SERIAL NOT NULL, -- interne à la 
> base de données
>                        societe INT4 REFERENCES societe NOT NULL,
>                        debut DATE DEFAULT CURRENT_DATE NOT NULL,
>                        fin DATE NOT NULL,
>                        cloture BOOLEAN DEFAULT 'f' NOT NULL,
>                        devise VARCHAR(3) DEFAULT 'CHF' NOT NULL,
>                        UNIQUE(id), PRIMARY KEY(id));
> 
> -- BUGS
> --    - libellé non unique dans la spécification.
> CREATE TABLE provenance (id SERIAL NOT NULL, -- interne à la 
> base de données
>                          libelle TEXT NOT NULL, -- libellé
>                          UNIQUE(libelle),
>                          UNIQUE(id), PRIMARY KEY(id));
> 
> CREATE TABLE lot (id SERIAL NOT NULL, -- interne à la base de données
>                   libelle TEXT NOT NULL, -- libellé
>                   UNIQUE(id), PRIMARY KEY(id));
> -- BUGS
> --    - This shouldn't be an active table
> --    - Should that reference exercice, or not ?
> --    - Missing tables: compte, 
> -- TODO
> --    - Complete, inclusive comments for triggers. See specification.
> --      This is the most complicated table.
> CREATE TABLE ecriture (id SERIAL NOT NULL, -- interne à la 
> base de données
>                        libelle TEXT NOT NULL,
>                        societe INT4 REFERENCES societe NOT NULL,
>                        provenance INT4 REFERENCES provenance NOT NULL,
> 
>                        numero INT4 NOT NULL,
>                        lot INT4 REFERENCES lot NOT NULL,
> 
>                        date_valeur DATE NOT NULL,
> 
>                        date_saisie DATE DEFAULT CURRENT_DATE NOT NULL,
>                        date_modification DATE DEFAULT 
> CURRENT_DATE NOT NULL,
> 
>                        compte INT4 REFERENCES compte NOT NULL,
> 
>                        montant_signe MONEY NOT NULL,
>                        montant_devise VARCHAR(3) DEFAULT 
> 'CHF' NOT NULL,
>                        taux_change MONEY, -- BUGS: type
>                        montant_devise_signe MONEY NOT NULL,
> 
>                        createur INT4 REFERENCES utilisateur 
> NOT NULL, -- ??
>                        modificateur INT4 REFERENCES 
> utilisateur NOT NULL,
> 
>                        comptabilise BOOLEAN NOT NULL,
> 
>                        UNIQUE(id), PRIMARY KEY(id));
> 
> CREATE TABLE groupe(id SERIAL NOT NULL, -- interne à la base 
> de données
>                     nom TEXT NOT NULL,
>                     UNIQUE(nom),
>                     UNIQUE(id), PRIMARY KEY(id));
> 
> CREATE TABLE utilisateur(id SERIAL NOT NULL,
> 			 nom TEXT NOT NULL,                         
>                          pw_hash CHAR(32), -- md5sum en texte 
> par exemple.
> 			 UNIQUE(nom),
> 			 UNIQUE(id), PRIMARY KEY(id));
> 
> CREATE TABLE membre_de(utilisateur INT4 REFERENCES 
> utilisateur NOT NULL,
>                        groupe INT4 REFERENCES groupe NOT NULL,
>                        UNIQUE(utilisateur, groupe));
> 
> CREATE TABLE autorisation(groupe INT4 REFERENCES groupe NOT NULL,
>                           societe INT4 REFERENCES societe NOT NULL,
>                           exercice INT4 REFERENCES exercice NOT NULL,
>                           lecture BOOLEAN NOT NULL,
>                           ecriture BOOLEAN NOT NULL,
>                           modification BOOLEAN NOT NULL,
>                           cloture BOOLEAN NOT NULL,
>                           comptabilisation BOOLEAN NOT NULL,
>                           UNIQUE(groupe, societe, exercice));
> 
> -- BUGS
> --    - Not clear to me. Is that a session ?
> CREATE TABLE parametre (id SERIAL NOT NULL, -- interne à la 
> base de données
>                         societe INT4 REFERENCES societe NOT NULL,
>                         utilisateur INT4 REFERENCES 
> utilisateur NOT NULL,
>                         parametre TEXT, -- peut être NULL
>                         UNIQUE(id), PRIMARY KEY(id));
> 
> 
> 
> 
> 



More information about the compta mailing list