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