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.
