From: | Christof Glaser <gcg(at)gl(dot)aser(dot)de> |
---|---|
To: | "Christian Anton" <christiananton(at)hotmail(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Link many attributes in one table to one attribute in another?? |
Date: | 2001-06-28 14:45:17 |
Message-ID: | 01062816451700.00740@pinguin |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thursday, 28. June 2001 06:44, Christian Anton wrote:
> Hello all,
>
> I am fairly new at db design, I have built a few simple in the past
> and have never dealt with this type of problem before, any help would
> be appreciated.
>
> I have three attributes in one table that should reference one, and
> only one, attribute in another table. Here's an analogy of the
> problem:
>
> I have a table with a list of marbles, each marble has three colors
> in it (color1, color2, color3) and a serial number. In another table
> I have eight colors to choose from but the list of colors grows
> regularly. How do I associate a marble with three colors from the
> color table (a marble may have three red sides or red-yellow-blue)?
Quite easy:
-- The list of colors. id is a automatically assigned unique number.
-- You could use INT4 instead of SERIAL and make numbers of your own.
CREATE TABLE color (
id SERIAL PRIMARY KEY,
name text
);
-- The list of marbles. The colors reference to the table color.
-- Postgres makes sure that only existing colors are entered.
CREATE TABLE marble (
number SERIAL PRIMARY KEY,
color1 int4 REFERENCES color,
color2 int4 REFERENCES color,
color3 int4 REFERENCES color
);
-- But you want to see the color's name rather its id, isn't it?
CREATE VIEW v_marble AS
SELECT m.number,
c1.name as color1,
c2.name as color2,
c3.name as color3
FROM marble m, color c1, color c2, color c3
WHERE m.color1 = c1.id
AND m.color2 = c2.id
AND m.color3 = c3.id;
Hope that helps.
Christof
--
gl.aser . software engineering . internet service
http://gl.aser.de/ . Planckstraße 7 . D-39104 Magdeburg
Tel. +49.391.7 44 77 10 . Fax +49.391.7 44 77 13 . Mobil 0177.77 92 84 3
From | Date | Subject | |
---|---|---|---|
Next Message | Wei Weng | 2001-06-28 14:46:12 | Re: Subquery error. Help please!! |
Previous Message | Richard Huxton | 2001-06-28 14:44:38 | Re: Using DateDiff with Postgres |