Opravdu hodně strukturovaná data - EAV rubrika: Databáze: SQL
9
Taco
položil/-a 27.3.2014
Volně navážu na jinou otázku.
Mějme klasický příklad eshopového zboží.
- Tabulka product, kam ukládáme například telefon nokia, počítač apple, monitor HP, hokejka, polohrubá mouka
- Tabulka category, pro typ produktu: telefon, počítač, monitor.
- Budeme chtít u každého produktu evidovat i různé atributy: telefon {výdrž, barva displeje, rozměry}, počítač {RAM, HDD}, monitor {uhlopříčka, rozlišení}, hokejka {materiál, velikost}, mouka {množství, červi}.
- Budeme podle těchto atributů chtít vytvořit systém filtrování, vyhledávání, nějaké statistiky atd.
- Chceme použít relační databázi (PostgreSQL, Oracle, MSSql).
Jak by vypadalo ideální schema pro uložení těch atributů, a proč?
Dík.
odkaz
6
coolmip
odpověděl/-a 30.3.2014
Odporucam pouzit postgres a datove typy hstore alebo json, pripadne kombinaciu oboch.
Vytvoris tabulku:
CREATE TABLE products ( id serial PRIMARY KEY, name varchar, attributes hstore );
A potom insert:
INSERT INTO products (name, attributes) VALUES ( 'pocitac', 'Grafika => "Nvidia 4400", ram => 368, monitor => dell' );
Select
SELECT name, hstore_to_json(attributes) as attributes FROM products WHERE attributes->'ram'= '368'
Asi najvacsia vyhoda je index nad hstore, takze sa to naozaj tvari ako samostatne stlpce. Daju sa spravit aj ciastocne indexy, takzr napriklad:
Create index on products using gist (attributes) where attributes ? Ram
Tento index zaindexuje vsetky riadky ktore maju atribut ram.
Pro zobrazení všech 7 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře