Tema: Re: MS SQL : rows vs columns
Autorius: JAlexoid
Data: 2009-04-29 17:51:16
Trumpai tariant nebandyk padaryti "the smart way", nes KISs principas 
vis dar galioja.
Tavo atveju, tavo joinus susi**s tie PropertyName PropertyValue stulpeliai.
Ir antram atvejui vistiek reikia antros lenteles, sakykim 
,key},PropertyName,PropertyValue. Pasijieskok info apie 3 Normal Form.

O del performance'o, tai atsiprasau, zenkliai tai su kokiais kruviais? 
Gali buti kad ir 1000 eiluciu lentele tures performance'o problemas jei 
SELECT'ai su INSERT'ais ir UPDATE'ais kirsis dideliam kruviui.

bala nemate wrote:
> hoj hoj,
> 
> reiktų protingo patarimo, kaip optimaliau db struktųrą susidėlioti...
> 
> Yra tam tikros objetų klasės, kurios turi savo savybes. Dalis jų yra
> bendros (kaip Gamintojas, ProduktoKodas), dalis – kiekvienai klasei savos
> (vieni objektai turi Galiojimo Laiką, kiti – Kainą ir t.t.) Reikia
> duombazėje sukrauti informaciją apie objektus, kurie priklauso tom klasėms. 
> Misliju, kaip geriau lentelės struktūrą susidėlioti – ar standartiškai –
> kiekvienai sąvybei po stulpą
> 
> Manufacturer | ProductCode | Price | ValidTo |ClassId |
> -------------+-------------+-------+---------+--------+
> ABB          | AC500       | 1000  | NULL    | 1      |
> Siemens      | DKS45kW     | NULL  | 2015    | 2      |
> Danfoss      | DKD6kW      | 500   | 2010    | 3      |
> 
> ar daryti stulpus tik tom sąvybėms, kurios yr vienodos visiems objektams, o
> kitas – dėti į eilutes (PropertyName ir PropertyValue)
> 
> Manufacturer | ProductCode | PropertyName | PropertyValue | ClassId |
> -------------+-------------+--------------+---------------+---------+
> ABB          | AC500       | Price        | 1000          | 1       |
> Siemens      | DKS45kW     | ValidTo      | 2015          | 2       |
> Danfoss      | DKD6kW      | Price        | 500           | 3       |
> Danfoss      | DKD6kW      | ValidTo      | 2010          | 3       |
> 
> Antras būdas gal painesnis, bet leidžia turėti didesnį objektų aprašo
> lankstumą – jei atsirastų naujų sąvybių, tiem objetam pridedi po papildomą
> eilutę ir viskas. Pirmu atveju, reikia keisti lentos struktūrą, pridedant
> naują stulpą (arba atimant, jei sąvybė dingsta). Faktas, kad struktūra
> dažnai keisis, todėl reikia kiek įmanoma lanksčiau pasidaryt.
> 
> Kitas klausimas dėl performanc’o – ar antru atveju jis ženkliai nekris?
> Kalba eina apie lenta su <= 300k įrašų. Ar vienu ar kitu atveju, duomenys
> pasiimami per view‘us, nes reiks join‘int su kitom lentom.
> 
> dėkui už pamastymus,