Re: Table relationships - Mailing list pgsql-sql

From D'Arcy J.M. Cain
Subject Re: Table relationships
Date
Msg-id 20070109094113.064bae02.darcy@druid.net
Whole thread Raw
In response to Re: Table relationships  (Curtis Scheer <Curtis@DAYCOS.com>)
Responses Re: Table relationships  ("Aaron Bono" <postgresql@aranya.com>)
List pgsql-sql
On Mon, 8 Jan 2007 17:07:56 -0600 
Curtis Scheer <Curtis@DAYCOS.com> wrote:
> -> Is there a difference between an address for the customer detail and an
> address for the customer?
> 
> Not really an address is an address, it's a matter of specify an address for
> the customer master record which basically represents an entire customer
> while the customerdetail represents departments within that company that
> might be at a different address then the company's main office for instance.

Could be that you need another table.  Sounds like you have something
like;
  company  <===> address  <===> detail

Now you just have to indicate which address is the primary or head
office.  You can do that with a bool in the address table.  You can
even add a unique, partial index to address to assure that you only
have one head office per company.

Another alternative is to add another table which just holds the
address:
 company  <===>  department  <===>  detail    ^               ^    |               |    \==> address <==/

Obviously the address attached to the company is the head office.  For
departments you can either duplicate the reference to the address table
or have NULL indicate a default to the head office.

There are many possibilities.  Which one is best will depend on
analysing your particular business model.

-- 
D'Arcy J.M. Cain <darcy@druid.net>         |  Democracy is three wolves
http://www.druid.net/darcy/                |  and a sheep voting on
+1 416 425 1212     (DoD#0082)    (eNTP)   |  what's for dinner.


pgsql-sql by date:

Previous
From: Curtis Scheer
Date:
Subject: Re: Table relationships
Next
From: "Aaron Bono"
Date:
Subject: Re: Table relationships