Re: Preventing Multiple Inheritance

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Preventing Multiple Inheritance
Дата
Msg-id 12189.1117827191@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Preventing Multiple Inheritance  (Peter Fein <pfein@pobox.com>)
Ответы Re: Preventing Multiple Inheritance
Список pgsql-general
Peter Fein <pfein@pobox.com> writes:
> Let's say I have a base table B (with a PK id, say) and two derived
> tables D1 & D2 (with different cols).  For a given B.id, I'd like to
> allow only a corresponding row in *either* D1 or D2, but not both.  Any
> suggestions on how to do this? Should I not be using inheritance at all?

> My thought was to add a column inherits_to to B with a value indicating
> whether that row is really a D1 or a D2 and enforce it with appropriate
> CHECK constraints on each of the derived tables.

If it can only be one or the other, I think you're misdesigning the
thing.  Use *one* table with all the columns needed to describe either a
D1 or D2.  Leave the unneeded columns NULL in any given row.  (If
needed, you can have a check constraint that specifies that certain
columns are not null when it's a D1, etc.)  Null entries are cheap.

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: Alex Turner
Дата:
Сообщение: Re: Determining when a row was inserted
Следующее
От: Alex Turner
Дата:
Сообщение: Re: Determining when a row was inserted