210 likes | 361 Views
Објектно-релационе базе података. Немања Трбовић Радовић Петар Милош Војиновић. Објектно-релационе базе података. Пререлационе базе - прва генерација Релационе базе - друга генерација Објектно-релационе базе - ? Примери. Објектно-релационе базе података.
E N D
Објектно-релационе базе података Немања Трбовић Радовић Петар Милош Војиновић
Објектно-релационе базе података • Пререлационе базе - прва генерација • Релационе базе - друга генерација • Објектно-релационе базе - ? • Примери
Објектно-релационе базе података • 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)
The First Great Blunder • Потребно је дати одговор на питање шта је у релационом свету оно што је класа у објектном. • domain=object class • relvar=object class
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 ) ;
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
Nije klasican ucaureni objekat • Tipovi podataka • Problem sa upoznavanjem korisnika sa pokazivacima • Projekcija bi trebalo da je klasa ali nije • Problem definicije domena
The Second Great Blunder • Логичка последица прве грешке • Ситуација после прве грешке • н-торке и релације ( противимо се идеји да они морају да имају специфичне вредности које су садржане у другим(базним) рел.пром. и томе да они ,у ствари, садрже показиваче на н-торке или релације • Додељивање метода рел. пром. ( противимо се томе сто се методе користе само у бези са рел.пром. , а не и са типовима или доменима) • Подкласе и надкласе ( косе се са правилним типовима наслеђивања )
The Second Great Blunder • Изрази везани за путање (нису довољно опширни да би изразили ланце показивача) • Литерали за н-торке и релације (неопходни, али их је потребно проширити у селекторе) • Оператори за поређење релација • Оператори за пролазак кроз класну хијерархију (велика замерка: кршење релационог модела ) • Додавање метода SELECT и WHERE • Приступ идивидуалним компонентама унутар атрибута чије су вредности н-торке или релације
The Second Great Blunder • Друга грешка је везана за кршење формализма и саме дефиниције показивача • Показивачи и правилан модел наследђивања нису компатибилни • Пример
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);
Проблеми имплементације • Парсирање и провера типа података • Информације које се односе на операторе и типове дефинисане од стране корисника се чувају у системском каталогу • Компајлер мора да буде поново написан да би могао да добија информације о типовима и операторима из каталога • Оптимизација • Трансформације израза • Селекција • Цена формула
Проблеми имплементације • Структуре за складиштење података • Нове структуре за складиштење података • Индекси на подацима који су дефинисани од стране корисника • Индекси на резултатима операција
Погодности правилног приступа Query 2 4 No query 1 3 Simple data Complex data
Погодности правилног приступа • Ad hoc упити • Методи који пореде класе • Динамички дефинисане класе • Двоструки приступ • Транзиције • Семантичка оптимизација • Релације степена већег од 2 • Правила страних кључева • Могућност оптимизације • Итд.
Погодности правилног приступа • Брига о показивачима није више у домену корисника • Дилема у вези објеката је нестала • Добробити капсилирања и даље постоје, али за скаларне вредности унутар релације, али не и за саме релације • Рационални системи сада могу користе сложене апликације као што су CAD/CAM
Објекти у 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# ) ) … ;
Објекти у 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 CASCADE NOT NULL, PRIMARY KEY ( EMP# ) ) ;
Објекти у SQL-у • наћи број одељења у коме ради запослени Е1 SELECT DEPT_ID -> DEPT# AS DEPT# FORM EMP WHERE EMP# = ‘E1’ ; • наћи одељење у коме ради запослени Е1 SELECT DEREF ( DEPT_ID ) AS DEPT FROM EMP WHERE EMP# = ‘E1’ ; • наћи бројеве запослених у одељењу Д1 SELECT EMP# FROM EMP WHERE DEPT_ID -> DEPT# = ‘D1’ ;
Објекти у SQL-у • Подтабеле и надтабеле • Табела Б може да буде подтабела табеле А ако и само ако су оне обе табеле неког типа и ако је тип табеле Б подтип типа над којим је дефинисана табела А CREATE TYPE EMP_TYPE AS (EMP# … , DEPT# … , ) … REF IS SYSTEM GENERATED ; CREATE TYPE PGMR_TYPE UNDER EMP_TYPE AS ( LANG … ) ; CREATE TABLE EMP OF EMP_TYPE (REF IS EMP_ID SYSTEM GENERATED, PRIMARY KEY (EMP#) ) … ; CREATE TABLE PGMR OF PGMR_TYPE UNDER EMP ;
Објекти у SQL-у • Манипулација подацима • SELECT на EMP се понаша нормално, а на PGMR се понаша као да PGMR садржи све колоне које садржи и EMP • INSERT се за EMP понаша нормално, а на PGMR убацује нове редове и на EMP и на PGMR • DELETE се за EMP понаша нормално, а на PGMR брише редове из обе табеле • UPDATE ако се допуњује LANG онда обавезно мора преко PGMR , а допуњавање осталих колона може преко обе табеле