ALTE DOCUMENTE
|
||||||||
Modelul relational-obiectual
Necesitatea gestionarii obiectelor complexe (precum texte foarte lungi, grafice, harti, imagini, sunete, etc.) a condus la introducerea conceptului de obiect īn cadrul schemelor relationale. Īn prezent tehnologia bazelor 646f57g de date orientate obiect este īnca la īnceput, neexistậnd un model general de SGBD orientat obiect. S-a impus īnsa un model relational care suporta majoritatea principiilor modelarii orientate pe obiect. Īncepậnd cu versiunea Oracle 8 putem vorbi de SGBD-uri relational-obiectuale ce faciliteaza integrarea tehnologiei orientate pe obiect īn modelul relational.
Un obiect este un model informational al unei entitati reale, care poseda o multime de proprietati si care are īn acelasi timp un anumit comportament. Avậnd īn vedere proprietatile comune si comportamentul similar al entitatilor pe care le modeleaza, obiectele pot fi īmpartite īn multimi. Daca īn limbajele de programare orientate obiect avem notiunea de clasa pentru a desemna o multime de obiecte de acelasi fel, īn sistemul Oracle se poate defini un tip obiect, obiectele individuale similare constituind manifestari/realizari/instantieri ale acestuia. Proprietatile obiectelor se pot defini cu ajutorul atributelor din definitia tipului obiect, iar comportamentul acestora va fi stabilit prin metodele precizate.
Tipul obiect poate fi folosit īn modelul relational pentru a defini tabele obiect sau atribute (coloane) ale unui tabel relational. Oracle permite abordarea tabelelor obiect īn doua maniere :
ca si tabele cu o singura coloana, īn care fiecare linie este un obiect de tipul obiect ce a stat la baza definirii acestora ;
ca si tabele cu mai multe coloane, īn care acestea corespund atributelor din definitia tipului obiect considerat.
Totodata se pot defini vederi obiect, ce reunesc īntr-un singur obiect date din mai multe tabele si care permit navigarea orientata obiect prin structurile relationale existente.
Exemplu : |
Se va creea tabela « personal » ce va contine obiectul coloana « angajat ». Codul angajatului va constitui cheia primara a tabelei. |
CREATE TYPE tip_adresa AS OBJECT (
strada VARCHAR2 (20),
numar NUMBER (3),
oras VARCHAR2 (20),
tara VARCHAR2 (20));
CREATE TYPE tip_angajat AS OBJECT (
cod_personal NUMBER (9),
nume VARCHAR2 (20),
prenume VARCHAR2 (20),
salar NUMBER (8),
adresa tip_adresa);
CREATE TABLE personal (
angajat tip_angajat,
titlu VARCHAR2 (10),
functie VARCHAR2 (10),
CONSTRAINT pk_cod PRIMARY KEY (angajat.cod_personal ));
Obiectele definite īn exemplul anterior sunt obiecte relativ simple avậnd numai atribute specificate. Comportamentul lor poate fi descris īnsa cu ajutorul unor metode. Acestea vor fi functii sau proceduri PL/SQL si stocate īn baza de date[2].
Popularea cu date a tabelelor relationale ce contin obiecte coloana sau a tabelelor obiect se realizeaza cu ajutorul unor metode specifice predefinite - constructori. Se va crea un nou obiect dupa specificatia tipului obiect utilizat. Constructorul are acelasi nume ca si tipul obiect, iar parametrii sai vor fi de acelasi tip cu atributele tipului obiect.
Exemplu : |
Se va insera īn tabela « personal » angajatul « Georgescu Bogdan » |
INSERT INTO personal (angajat, titlu, functie) VALUES (
tip_angajat (111111, 'Georgescu','Bogdan',24000000,
tip_adresa ('Iuliu
Maniu', 18, '
'Economist', 'Director economic');
Pentru a referi īntr-o interogare atributele unui obiect din componenta unei tabele se va folosi un alias al acesteia.
Exemplu : |
Se vor afisa informatiile referitoare la angajatul «111111». |
SELECT p.angajat.nume, p.angajat.prenume, salar
FROM personal p
WHERE p.angajat.cod_personal = 111111;
O baza de date relational-obiectuala este o fuziune a tehnologiilor relationale si a celor orientate obiect, ea permitậnd utilizatorilor sa integreze gradat tehnologia obiect cu aplicatiile relationale deja existente.
|