Am 23.07.2014 um 23:32 schrieb Heiko Schlittermann:
> 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?
> 
> Konnte ich mich verständlich ausdrücken?


Du kannst eine Spalte als Array definieren[1], was so ungefähr das ist,
was Du Dir vorstellst.

Man könnte es aber auch so machen -- so wie man es auf der Schule lernt ;)

CREATE TABLE item (
        id serial primary key,
        name varchar(100)
);

CREATE TYPE colorz AS ENUM ('red', 'green');

CREATE TABLE item_options(
        id serial primary key,
        item_id integer references item,
        size integer,
        color colorz
);

Damit sparst Du Dir die Array-Spezifika, trittst Du Dir aber eine Menge
an Joins ein.

Ist am Ende halt eine Frage, was Du damit machen willst und wie die
Querys aussehen sollen.

Gruß Frank

[1] http://www.postgresql.org/docs/9.3/static/arrays.html


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an