pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Joe <svn@freedomcircle.net>
To: Todd Kennedy <todd.kennedy@gmail.com>
Cc: D'Arcy J.M. Cain <darcy@druid.net>
Cc: pgsql-sql@postgresql.org
Subject: Re: Question about One to Many relationships
Date: Fri, 24 Mar 2006 13:34:34 -0500
Message-ID: <44243BBA.8030802@freedomcircle.net> (raw)
In-Reply-To: <226d83de0603240937o7b5608f9je5179238ee3c9c5a@mail.gmail.com>
References: <226d83de0603240852q54af3512odfce218d69718c8b@mail.gmail.com>
	<20060324120142.d3fdf477.darcy@druid.net>
	<226d83de0603240937o7b5608f9je5179238ee3c9c5a@mail.gmail.com>

Todd Kennedy wrote:
> They haven't responded me as of yet. There should be a band associated
> with each album -- this is handled in code, but other than that this
> is the only relational db way I can think of to do it.

But if a band can have songs in many albums and an album can have songs 
from multiple bands, it's a many-to-many relationship, NOT one-to-many. 
  Short of the full track design suggested by PFC, you'd normally 
implement a many-to-many table as follows:

CREATE TABLE bands_on_album (
band_id integer REFERENCES band (id),
album_id integer REFERENCES albums (id),
PRIMARY KEY (band_id, album_id)
)

This of course precludes the same band being listed twice in a given 
album.  If you do need that info, then you're really asking for "tracks".

Joe




view thread (9+ messages)  latest in thread

Message-ID: <44243BBA.8030802@freedomcircle.net>
Permalink:  ../44243BBA.8030802@freedomcircle.net/
Also on:    postgresql.org/message-id/44243BBA.8030802@freedomcircle.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: svn@freedomcircle.net, todd.kennedy@gmail.com, darcy@druid.net
  Subject: Re: Question about One to Many relationships
  In-Reply-To: <44243BBA.8030802@freedomcircle.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox