🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #25

Re: OO system over RDB (fwd)

#25
From: quas... Robert Perlinski
Date: Wed, 29 Nov 1995 00:00
72 lines
2464 bytes
Kuba Chabik/Duncan Pierce napisali:

> But I have heard about some pretty general techniques for 
> "objectising" a relational database (why would you want 
> to do this? nobody knows). 

Jakbym siebie slyszal.

> The obvious solution is to start by writing a class for 
> every database table.

Rzeczywiscie ten sposob na pierwszy rzut oka wydaje sie 
oczywisty. Kazda klasa posiada odpowiadajaca jej relacje,
co sprawia, ze pod wzgledem logicznym, modele relacyjny
i obiektowy sa zblizone. Problem zaczyna sie jednak w 
momencie, gdy pojawia sie dziedziczenie. Oto przyklad:

dane sa klasy

A <- B <- C <- D <- E 

gdzie <- oznacza dziedziczenie (A jest klasa pierwotna). 
Zgodnie z wczesniej przyjeta zasada "1 klasa 1 relacja" 
nasza RBD zawierac bedzie nastepujace relacje

Tab_A, Tab_B, Tab_C, Tab_D, Tab_E

Zalozmy, ze gdzies w naszym programie pojawia sie 
potrzeba inicjalizacji obiektu klasy E wartosciami 
pobranymi z bazy danych. Pomijajac szczegoly nasze 
zdanie SQL bedzie wygladalo nastepujaco

select cos-tam-cos-tam
from Tab_A, Tab_B, Tab_C, Tab_D, Tab_E
where warunek-laczacy-ze-soba-ww-relacje

Jak wiec wyraznie widac, aby otrzymac dane obiektu klasy
E nalezy uzyc "multiple join" laczacy 5 (!) relacji.
Przy odpowiednio duzej liczbie rekordow, jest to, biorac
pod uwage szybkosc, samobojstwo dla kazdej aplikacji.

Co bedzie, gdy nasza klasa zamiast 4 przodkow bedzie 
miala ich np. 10. Np.

A <- B <- C <- D <- E <- F <- G <- H <- I <- J <- K

i odpowiednio

Tab_A, Tab_B, Tab_C, Tab_D, Tab_E, Tab_F, Tab_G, Tab_H, 
Tab_I, Tab_J, Tab_K

Oto nasze zdanie SQL, ktorego nie radze uruchamiac

select cos-tam-cos-tam
from Tab_A, Tab_B, Tab_C, Tab_D, Tab_E, Tab_F, Tab_G, 
Tab_H,Tab_I, Tab_J, Tab_K
where warunek-laczacy-ze-soba-ww-relacje

Jaki sa z tego wszystkiego wnioski. Proponuje 
nastepujace:

1. Zasada "1 klasa 1 relacja" nie zawsze zdaje egzamin.
W takich sytuacjach nalezy sprobowac odwzorowania 
"N klas 1 relacja"
2. RBD + OO = same_klopoty


I to by bylo na tyle



Robert
Technical Details
Message-ID: <95112915135838@cig.com>
Path: mbox-mo1.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
From: quas...@cig.com (Robert Perlinski)
Subject: Re: OO system over RDB (fwd)
Date: 1995/11/29
Message-ID: <95112915135838@cig.com>
X-Deja-AN: 120631048
sender: obj...@sprocket.ict.pwr.wroc.pl
organization: Lista dyskusyjna obj...@sprocket.ict.pwr.wroc.pl
newsgroups: pl.comp.objects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit