Makub wrote:
> Ondřej Kvasnovský wrote:
> > Ahoj,
> > ja v tom teda problem nevidim... myslim ty vozidla. prece si vytvoris napr.:
> hlavni objekt Vozidlo  a od neho budes dedit vsechny ostatni vozidla (traktor,
> vlak, osobni automobil... ).
>
> Na strane objektoveho jazyka Java samozrejme problem s objekty neni :-))
>
> > Jak to namapujes do relacni databaze je uz plne na tobe.
>
> No ale tady je prave ten problem, ze to spravne namapovat nejde,
> protoze mezi objekty a relacemi zeje filozoficka propast :-)
>
> > Samozdrejme to muzes narvat do jedne tabulky, ale tim ti vznikne hodne 
> > volnych
> mist a hodne velkaaa tabulka. Proste peklo... Ani se tento zpusob nikde
> nedoporucuje....
>
> To jsem psal.
>
> > Nebo to muzes namapovat do tolika tabulek kolik je potomku tridy vozidlo, to
> je jeste lepsi reseni. Akorat se tam bude mit duplicitni sloupce....
>
> Cimz ztratim moznost delat SQL dotazy na vsechna vozidla, nejdriv se musim
> podle typu vozidla vybrat tabulku, a pak teprve udelat dotaz.
>
> Krome toho co kdyz mi casem pribude dalsi typ vozidla ?
> To bych pak musel pridelat dalsi tabulku, a pritom je to
> jenom potomek Vozidla. Skutecna objektova databaze mi
> by to mela usnadnit.

Jo jo, mas pravdu. Neni to dobry zpusob, ale slo by to :) ikdyz nechtel bych 
byt u toho az nekdo bude chtit delat update a pridavat dalsi tabulku :)

>
> Slysel jsem, ze PostgreSQL ma objektove rozsireni,
> ktere umi tabulky dedit, takze pak  muzu snadno delat
> dotazy na vsechna vozidla i na konkretni typy.
> Ale neni to standard, a pri pridani dalsiho
> potomka porad musim pridat dalsi tabulku.

V PostgreSQL jsem narazil na jednu zvlastnost. Kdyz jsem poprve delal s 
Hibernate, tak jsem ji pripojoval na PostgreSQL. Mel jsem tam chyby, ktere 
vzplynuly z objektoveho mysleni. PostgreSQL to ale pochopil a nestezoval si. 
Kdezto kdyz jsem to spustil na MySql tak to nejelo, sice se to v poradku 
namapovalo, ale to bylo vsechno. :) Coz me trochu zmatlo, myslel jsem ze kdyz 
uz to jede na jedne databazi tak to musi jet na vsech databazich co hibernate 
podporuje... ale ono ne. ;) Pak jsem zjistil ze PostgreSQL je tak trochu 
objektove orientovane a bylo to jasne.

>
> > A nebo udelas jednu hlavni tabulku Vozidlo, v ktere budou reference mezi
> jejimy potomky. Ja osobne bych to udelal timto zpusobem.
>
> Tohle jsem nepochopil. Jak reference mezi potomky ?

Mozna jsem to napsal ne uplne spravne, myslel jsem reference mezi rodicem a 
potomkem. Kdezto v rodicovske tabulce by byli vsechny atributy (sloupce), ktere 
by potomci dedili. Pak by byly tabulky potomku a v nich by byla uz jim 
specificka data (atributy, sloupce.. ).
Myslim ze je to doporuceny postup jak namapovat databazi do relacni db.

>
>
> Pak je samozrejme ctvrte reseni, ze budu mit jednu tabulku VOZIDLA
> a druhou tabulku VLASTNOSTI_VOZIDEL, ktera bude mit sloupce
> (VOZIDLO_ID int, VLASTNOST varchar, HODNOTA varchar)
> kde VOZIDLO_ID je foreign key do tabulky vozidel,
> do sloupce VLASTNOST budu strkat nazvy vlastnosti a
> do HODNOTA jejich hodnoty, cimz budu simulovat promenny pocet sloupcu.
> Ale je to dost neefektivni.

Tak to se mi moc nelibi... ale taky moznost :)

>
> Cache pry dela interne neco takoveho, ale efektivne.
>
Asi to Cache zkusim... Bylo by dobre, kdyby nekdo dal nejaky osvedseny a 100% 
nabuseny link na tutorialek :)

> > Takze bych to jako hlavni problem mezi OBD a ORM nevidel... proste tam musi
> byt neco asi jineho. Nebo Cache, coz by mela prej byt ODB, je "jen" pseudo
> objektova databaze. Ma v tom nekdo jasno? Jesti jo tak to rad "uslysim". :)
>
> Jasno v tom nemam, ale ten priklad s vozidly mam z jedne knizky
> o databazich, kde vysvetlovali rozdil mezi relacnimi,
> relacne-objektovymi a objektovymi databazemi.

A jestli to fakt dela... tak je to mazec. Zase by bylo o starost min. Ikdyz  
stejne, ani principialne, mi neni jasne jak vi ktere atributy chci ulozit. 
Stejne bych to nejak musel na mapovat, ne? Prece nebudu ukladat cele objekty... 
i s tim co nechci aby bylo persistentni... Snad ze by se to serializovalo...a 
urcovalo by se u atributu jestli jsou transient nebo ne...


>
>
> Makub

Ondra.

Odpovedet emailem