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

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Problème de clé



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)




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group