Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-fr-generale by date

Next:From: Guillaume LELARGEDate: 2005-12-03 11:27:39
Subject: Re: Bonne documentation écrite
Previous:From: Sébastien VINOTDate: 2005-12-03 10:29:03
Subject: Bonne documentation écrite

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group