class BaseType {
param_1;
param_2;
param_3;
}
class TypeA extends BaseType {
param_A1;
param_A2;
param_A3;
...
}
class TypeB extends BaseType {
param_B1;
param_B2;
param_B3;
...
}
Atributi param_Ai i param_Bi su različitog broja i tipa.
Do sad sam ih smeštao u tabele: TABLE_BASE, TABLE_TYPE_A, TABLE_TYPE_B. Tabele TABLE_TYPE_A, TABLE_TYPE_B imaju foreign key do primary key-a iz tabele TABLE_BASE, i na taj način kreiram select ili view preko koji mogu da vidim sve atribute za određeni TypeA (param_1; param_2; param_3; param_A1; param_A2; param_A3; ...) ili TypeB (param_1; param_2; param_3; param_B1; param_B2; param_B3; ...).
Kako je verovatnost velika da se u budućnosti pojave i TypeC, TypeD itd. došla mi je ideja da za sve tipove imam samo jednu tabelu:
TABLE_ALL (
param_1;
param_2;
param_3;
param_type : XMLType;
)
Atribut param_type sadrži sve ostale atribute koji su specifični za određeni tip (TypeA, TypeB itd).
Koristeći tabelu TABLE_ALL, nadgradnja sistema bi bila mnogo jednostavnija, ne bi bilo potrebno da se kreiraju nove tabele TABLE_TYPE_C, TABLE_TYPE_D itd. Znači prilikom nadgradnje ne bi se vršile nikakve promene u bazi (ili možda samo minimalno, dodavanje nekog novog view-a), već samo u klientskoj aplikaciju koja čita bazu.
Do sad sam našao sve za to kako se radi insert, select i update na XMLType. Interesuje me kakva je razlika u performanse između ova dva načina i možda vaš komentar na sve ovo.
--
Vojčo
Vojčo