Re: Problème de clé

From: Jonathan Ballet <jon(at)multani(dot)info>
To: Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Problème de clé
Date: 2005-12-03 11:24:31
Message-ID: 4391806F.2070305@multani.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Merci beaucoup pour ce lien très intéressant, même si le niveau est assez élevé.
Donc, effectivement, je peux mettre de coté le modèle orienté objet de Postgres apparement.

J'ai voulu faciliter le travail de l'application en mappant directement mes objets dans des tables dans la base de données. Il va donc falloir que je
remplace mon schéma de base de données orienté objets en modèle entités-relations.
Pour récupérer des données, je remplacerais facilement mon ancien schéma par des vues. Par contre, pour tout ce qui est manipulation des données,
qu'est-ce que j'ai comme choix ? (mettre à jour manuellement chaque tables, autre chose ?)

Merci d'avoir répondu en tout cas :)

Stephane Bortzmeyer a écrit :
> On Wed, Nov 30, 2005 at 11:31:13PM +0100,
> Jonathan Ballet <jon(at)multani(dot)info> wrote
> a message of 32 lines which said:
>
>
>>une table B qui dérive de A
>
>
> Pas la peine d'aller plus loin : l'héritage en PostgreSQL est *très*
> limité (au point que je ne l'utiliserai plus) et notamment les
> contraints d'intégrité ne sont pas transmises ou pas correctement.
>
> http://archives.free.net.ph/message/20050802.054006.572ae7ba.en.html
>
> Mon expérience :
>
> ssais=> CREATE TABLE Things (id SERIAL UNIQUE NOT NULL);
> NOTICE: CREATE TABLE will create implicit sequence "things_id_seq" for serial column "things.id"
> NOTICE: CREATE TABLE / UNIQUE will create implicit index "things_id_key" for table "things"
> CREATE TABLE
> essais=> CREATE TABLE Users (name TEXT) INHERITS (Things);
> CREATE TABLE
> essais=> CREATE TABLE Groups (name TEXT) INHERITS (Things);
> CREATE TABLE
> essais=> CREATE TABLE Foobar (name TEXT, id INTEGER REFERENCES Things(id));
> CREATE TABLE
> essais=>
> essais=> INSERT INTO Users (name) VALUES ('Wolf');
> INSERT 42132 1
> essais=> INSERT INTO Groups (name) VALUES ('FT');
> INSERT 42133 1
> essais=> SELECT * FROM Things;
> id
> ----
> id
> ----
> 1
> 2
> (2 rows)
>
> essais=> INSERT INTO Foobar VALUES ('computer', 2);
> ERROR: insert or update on table "foobar" violates foreign key constraint "foobar_id_fkey"
> DETAIL: Key (id)=(2) is not present in table "things".
> essais=> INSERT INTO Foobar VALUES ('computer', 1);
> ERROR: insert or update on table "foobar" violates foreign key constraint "foobar_id_fkey"
> DETAIL: Key (id)=(1) is not present in table "things".
> essais=> \d things
> Table "public.things"
> Column | Type | Modifiers
> --------+---------+--------------------------------------------------------
> id | integer | not null default nextval('public.things_id_seq'::text)
> Indexes:
> "things_id_key" UNIQUE, btree (id)
>

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Guillaume LELARGE 2005-12-03 11:27:39 Re: Bonne documentation écrite
Previous Message Sébastien VINOT 2005-12-03 10:29:03 Bonne documentation écrite