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)
>
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 |