Heiko Schlittermann hs@schlittermann.de hat am 23. Juli 2014 um 23:32 geschrieben:
Hallo,
ich bin gerade irgendwie nicht in der Lage, in PostgreSQL etwa folgendes zu haben:
Ein Objekt kann beschrieben werden durch eine Reihe von Attributen Name ist Text Size ist ein Integer Colors ist ein Set von Werten aus dem Bereich 'red', 'green', 'blue'
Also:
Name|Sz.|Colors -------+---+-------- Foo|12 |red Bar|10 |red,blue Baz|7 |green Baf|42 |green,blue
CREATE TYPE colors AS ENUM ('red', 'green', 'blue'); -- so stelle ich mir das vor: CREATE TYPE colors AS SET ('red', 'green', 'blue');
Aber so geht das nicht. Wie dann? MySQL kann doch Mengen, oder?
Mir scheint, Du suchst sowas wie:
test=# create type colors as enum ('red','green', 'blue'); CREATE TYPE test=*# create table foobar (id int, color colors[]); CREATE TABLE test=*# insert into foobar values (1, array['red'::colors, 'blue'::colors]); INSERT 0 1 test=*# select * from foobar; id | color ----+------------ 1 | {red,blue} (1 row) test=*# select id, array_to_string(color,',') as color from foobar; id | color ----+---------- 1 | red,blue (1 row)
Also, erst einmal den Typ als ENUM und davon dann ein ARRAY.
Warum magst Du keine normalisierte Speicherung hier?