Објектно-релационе базе података

21
Објектно-релационе базе података Немања Трбовић Радовић Петар Милош Војиновић

Upload: tejano

Post on 13-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

Објектно-релационе базе података. Немања Трбовић Радовић Петар Милош Војиновић. Објектно-релационе базе података. Пререлационе базе - прва генерација Релационе базе - друга генерација Објектно-релационе базе - ? Примери. Објектно-релационе базе података. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Објектно-релационе базе података

Објектно-релационе базе података

Немања Трбовић

Радовић Петар

Милош Војиновић

Page 2: Објектно-релационе базе података

Објектно-релационе базе података

• Пререлационе базе - прва генерација

• Релационе базе - друга генерација

• Објектно-релационе базе - ?

• Примери

Page 3: Објектно-релационе базе података

Објектно-релационе базе података

• TYPE RECTANGLE POSSREP ( X1 RATIONAL, Y1 RATIONAL,

X2 RATIONAL, Y2 RATIONAL)……

• OPERATOR OVERLAP (R1 RECTANGLE , R2 RECTANGLE )

RETURNS BOOLEAN;

RETURN ( THE_X1 (R1)<=THE_X2(R2) AND

THE_Y1 (R1)<=THE_Y2(R2) AND

THE_X2 (R1)>=THE_X1(R2) AND

THE_Y2 (R1)>=THE_Y1(R2) AND );

END OPERATOR;• RECTANGLES

WHERE OVERLAP ( R , RECTANGLE (0.0, 0.0, 1.0, 1.0)

Page 4: Објектно-релационе базе података

The First Great Blunder

• Потребно је дати одговор на питање шта је у релационом свету оно што је класа у објектном.

• domain=object class

• relvar=object class

Page 5: Објектно-релационе базе података

The First Great Blunder

CREATE TABELE EMP

(EMP# CHAR(5) NOT NULL,

ENAME CHAR(20) NOT NULL,

SAL NUMERIC NOT NULL,

HOBBY ACTIVITY NOT NULL,

WORKS_FOR COMPANY NOT NULL ) ;

Page 6: Објектно-релационе базе података

• Potrebno je dodati:– Izrazi za put(emp.works_for.state)– Literali za n-torke I relacije(srediti sintaksu)– Operatri za poredjenje(podniz ili nesto drugo)– Operatori za prolazak kroz hijerarhiju– Mogucnost da se ubace select i where– Mogucnost da se pristupi pojedinacnim

komponentama cije su vredonsti n-torke ili vrednosti

Page 7: Објектно-релационе базе података

1. Nije klasican ucaureni objekat

2. Tipovi podataka

3. Problem sa upoznavanjem korisnika sa pokazivacima

4. Projekcija bi trebalo da je klasa ali nije

5. Problem definicije domena

Page 8: Објектно-релационе базе података

The Second Great Blunder

• Логичка последица прве грешке• Ситуација после прве грешке

– н-торке и релације ( противимо се идеји да они морају да имају специфичне вредности које су садржане у другим(базним) рел.пром. и томе да они ,у ствари, садрже показиваче на н-торке или релације

– Додељивање метода рел. пром. ( противимо се томе сто се методе користе само у бези са рел.пром. , а не и са типовима или доменима)

– Подкласе и надкласе ( косе се са правилним типовима наслеђивања )

Page 9: Објектно-релационе базе података

The Second Great Blunder

– Изрази везани за путање (нису довољно опширни да би изразили ланце показивача)

– Литерали за н-торке и релације (неопходни, али их је потребно проширити у селекторе)

– Оператори за поређење релација– Оператори за пролазак кроз класну хијерархију

(велика замерка: кршење релационог модела )– Додавање метода SELECT и WHERE – Приступ идивидуалним компонентама унутар

атрибута чије су вредности н-торке или релације

Page 10: Објектно-релационе базе података

The Second Great Blunder

• Друга грешка је везана за кршење формализма и саме дефиниције показивача

• Показивачи и правилан модел наследђивања нису компатибилни

• Пример

Page 11: Објектно-релационе базе података

The Second Great Blunder

VAR E ELIPSE;VAR XC PTR_TO_CIRCLE;

E := CIRCLE (LENGTH (5.0), POINT (0.0 , 0.0)) ;

XC :=TREAT_DOWN_AS_PTR_TO_CIRLCE(PTR_TO(E));

THE_A(E) := LENGTH (6.0);

Page 12: Објектно-релационе базе података

Проблеми имплементације

• Парсирање и провера типа података– Информације које се односе на операторе и типове

дефинисане од стране корисника се чувају у системском каталогу

– Компајлер мора да буде поново написан да би могао да добија информације о типовима и операторима из каталога

• Оптимизација – Трансформације израза

– Селекција

– Цена формула

Page 13: Објектно-релационе базе података

Проблеми имплементације

• Структуре за складиштење података– Нове структуре за складиштење података– Индекси на подацима који су дефинисани од стране

корисника– Индекси на резултатима операција

Page 14: Објектно-релационе базе података

Погодности правилног приступа

Query

No query

2

1

4

3

Simple data Complex data

Page 15: Објектно-релационе базе података

Погодности правилног приступа

• Ad hoc упити• Методи који пореде класе• Динамички дефинисане класе• Двоструки приступ• Транзиције• Семантичка оптимизација• Релације степена већег од 2• Правила страних кључева• Могућност оптимизације• Итд.

Page 16: Објектно-релационе базе података

Погодности правилног приступа

• Брига о показивачима није више у домену корисника

• Дилема у вези објеката је нестала• Добробити капсилирања и даље постоје, али

за скаларне вредности унутар релације, али не и за саме релације

• Рационални системи сада могу користе сложене апликације као што су CAD/CAM

Page 17: Објектно-релационе базе података

Објекти у SQL-у

CREATE TYPE DEPT_TYPE

AS ( DEPT# CHAR(3),

DNAME CHAR(25),

BUDGET MONEY ) …

REF IS SYSTEM GENERATED ;

CREATE TABLE DEPT OF DEPT_TYPE

( REF IS DEPT_ID SYSTEM GENERATED ,

PRIMARY KEY ( DEPT# ) ) … ;

Page 18: Објектно-релационе базе података

Објекти у SQL-у

CREATE TABLE EMP

( EMP# CHAR(5) NOT NULL,

ENAME CHAR(25) NOT NULL,

SALARY MONEY NOT NULL,

DEPT_ID REF (DEPT_TYPE) SCOPE DEPT

REFERENCES ARE CHECKED

ON DELETE CASCADENOT NULL,

PRIMARY KEY ( EMP# ) ) ;

Page 19: Објектно-релационе базе података

Објекти у SQL-у

• наћи број одељења у коме ради запослени Е1

SELECT DEPT_ID -> DEPT# AS DEPT#FORM EMPWHERE EMP# = ‘E1’ ;

• наћи одељење у коме ради запослени Е1

SELECT DEREF ( DEPT_ID ) AS DEPTFROM EMPWHERE EMP# = ‘E1’ ;

• наћи бројеве запослених у одељењу Д1

SELECT EMP#FROM EMPWHERE DEPT_ID -> DEPT# = ‘D1’ ;

Page 20: Објектно-релационе базе података

Објекти у SQL-у

• Подтабеле и надтабеле– Табела Б може да буде подтабела табеле А ако и

само ако су оне обе табеле неког типа и ако је тип табеле Б подтип типа над којим је дефинисана табела А

CREATE TYPE EMP_TYPEAS (EMP# … , DEPT# … , ) … REF IS SYSTEM GENERATED ;

CREATE TYPE PGMR_TYPE UNDER EMP_TYPEAS ( LANG … ) ;

CREATE TABLE EMP OF EMP_TYPE (REF IS EMP_ID SYSTEM GENERATED, PRIMARY KEY (EMP#) ) … ;

CREATE TABLE PGMR OF PGMR_TYPE UNDER EMP ;

Page 21: Објектно-релационе базе података

Објекти у SQL-у

• Манипулација подацима– SELECT на EMP се понаша нормално, а на PGMR се

понаша као да PGMR садржи све колоне које садржи и EMP

– INSERT се за EMP понаша нормално, а на PGMR убацује нове редове и на EMP и на PGMR

– DELETE се за EMP понаша нормално, а на PGMR брише редове из обе табеле

– UPDATE ако се допуњује LANG онда обавезно мора преко PGMR , а допуњавање осталих колона може преко обе табеле