Re: How best to represent relationships in a database generically?

Поиск
Список
Период
Сортировка
От Edward Macnaghten
Тема Re: How best to represent relationships in a database generically?
Дата
Msg-id 46AA3E5D.7000409@edlsystems.com
обсуждение исходный текст
Ответ на How best to represent relationships in a database generically?  (Lincoln Yeoh <lyeoh@pop.jaring.my>)
Список pgsql-general
Lincoln Yeoh wrote:
> Hi, importantly do searches and other processing by those relationships.
>
> So, what would be the best way to store them so that a search for the
> relationship like "grass is to cow", will also turn up cow is to
> tiger, and goat is to tiger, and fish is to penguin (and penguin is to
> bigger fish ;) ), and electricity is to computer. And a search for cow
> is to goat, could turn up tiger is to lion, and goat is to cow.
>
> Is the only way to store all the links explicitly? e.g. have a huge
> link table storing stuff like obj => cow, subj => grass, type =>
> consumes, probability=90% ( => means points/links to). Or even just
> have one table (links are objects too).

Hi

This is a generic database design problem rather than a Postgres or SQL
one, but here goes

Excuse ASCII art..

What you really have is a multi - multi relationship, such as....


    A  <--->  B


Where A is a table containing grass, cow, fish
and B is the table containing cow, tiger and penguin

I know, A and B are the same table, so the multi - relationship is in fact

   A <----> A

As you cannot have a multi-multi relationship in a RDBMS, you need a
"link" table...

  A  ---> C <----B

or more precisely

 A  ---> C < --- A

This would be represented as tables as something like

create table thingy (
   thingy_key varchar(12)  primary key,
   thingy_desc  varchar(30)
   ....
  );
or whatever

 and...

create table munchies (
  eater varchar(12) not null,
  dinner varchar(12)  not null
  probablility_pc number(4,2)
  constraing pkey_munchies primary key(eater, dinner) );

or whatever, where "eater" and "dinner" are foreign keys for "thingy_key"

The munchies table can get big, but do not worry about that.  It is
small and RDBMS (especially Postgres) should handle it well even on a
smallish machine.

Hope that makes sense

Eddy



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

Предыдущее
От: Lincoln Yeoh
Дата:
Сообщение: How best to represent relationships in a database generically?
Следующее
От: Ted Byers
Дата:
Сообщение: Re: How best to represent relationships in a database generically?