David Pradier wrote:
Most of the inheritance i've seen done in databases retain the parent primary 
as a foreign key and a primary key. That being said, only you and your team can 
decide if more than one object will extend a base class. If you were doing 
something more like this
person -> sweepstakes entry
to model a sweepsakes entry is a person, and you allow a person to enter a 
sweepstakes more than once, but to enter a contest the user must provide a 
unique email address, then you could not just use a foreign key as the primary 
key in sweepstakes, since the primary key would disallow multiple entries in 
sweepstakes entry, you would then use a serial data type in both person and 
sweepstakes along with the foriegn key in sweepstakes from person.
The answer depends on the need. Hope that helps.


Thanks Russ, but well...
It doesn't help me a lot. Our needs seem to allow that we use an id as
primary key and foreign key at the same time.
What i fear more is that it be against a good database design practice,
because leading to potential problems.

I give a clearer example :

CREATE TABLE actor (
id_actor serial PRIMARY KEY,
arg1 type1,
arg2 type2
)

CREATE TABLE person (
id_person INTEGER PRIMARY KEY REFERENCES actor,
arg3 type3,
arg4 type4
)

Don't you think it is a BAD design ?
If it isn't, well, it will expand my database practices.


It *is* a bad design. You should not do this. After all, how is that any different than this?

CREATE TABLE actor_person (
 id_actor serial PRIMARY KEY,
 arg1 type1,
 arg2 type2
 arg3 type3,
 arg4 type4
 )

Furthermore, inheritance is almost certainly the wrong relationship type here. Normally, Actor would be a Role that a Person would be playing:

create table role(
  id serial primary key,        -- 1
  name char(20) not null        -- "Actor"
);

create table person(
  id      serial primary key,           -- 1
  name    char(20) not null,            -- "David"
  role_id int not null references role  -- 1
);

David



--
Daryl Richter
Director of Technology

((         Brandywine Asset Management          )
 ( "Expanding the Science of Global Investing"  )
 (          http://www.brandywine.com           ))


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to