Re: Link many attributes in one table to one attribute in another??
От | Christof Glaser |
---|---|
Тема | Re: Link many attributes in one table to one attribute in another?? |
Дата | |
Msg-id | 01062816451700.00740@pinguin обсуждение исходный текст |
Ответ на | Link many attributes in one table to one attribute in another?? ("Christian Anton" <christiananton@hotmail.com>) |
Список | 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 ASSELECT m.number, c1.name as color1, c2.name as color2, c3.name as color3FROM marble m, color c1, colorc2, color c3WHERE 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
В списке pgsql-sql по дате отправления: