objektum rel ci s adatmodell n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Objektum relációs adatmodell PowerPoint Presentation
Download Presentation
Objektum relációs adatmodell

Loading in 2 Seconds...

play fullscreen
1 / 43

Objektum relációs adatmodell - PowerPoint PPT Presentation


  • 140 Views
  • Uploaded on

Objektum relációs adatmodell. Objektum orientált adatmodellek. RDBMS. OOP. OOPPD. ORDBMS. OODBMS. SDM. Heterogén megközelítés : mit jelent az OODB ?. Third Generation Database System Manifesto (~1990). Őrizze meg a (relációs) DBMS funkcionalitását Támogassa az OO alapelveit

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Objektum relációs adatmodell' - berke


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2

Objektum orientált adatmodellek

RDBMS

OOP

OOPPD

ORDBMS

OODBMS

SDM

Heterogén megközelítés : mit jelent az OODB ?

slide3

Third Generation Database System Manifesto (~1990)

  • Őrizze meg a (relációs) DBMS funkcionalitását
  • Támogassa az OO alapelveit
  • Nyílt rendszert alkosson

ADT kezelése : összetett gyári típusok

: saját típusok

: metódusok létezése

ADT egyedisége : belső objektum azonosító + látható kulcs

ADT öröklési kapcsolat : Specializált típusok

NULL, VIEW, integritási feltételek, halmaz megközelítés,

ad-hoc query, függetlenségi szintek

slide4

OBST rendszer

C++-ban megírt objektum tároló modulok alkalmazása

nincs DBMS

slide5

ODL-OQL modell

ODMG szabvány

objektumtípusok sémaszerű megadása

class onév {

attributumok

metódusok

kapcsolatok

integritási felt.

}

reláció (

attributumok

integritási felt.

)

attribute …

relationship …

slide6

ODL adattípusok

ODL kapcsolatok

atomi típusok

struktúra

halmaz

multihalmaz

tömb

lista

relationship

céltípus

knev

[ inverse knev2 ]

ODL metótusok

mnev (paraméterlista)

raises (kivétel);

ODL integritási felt.

key (attributumlista)

slide7

Öröklés

class

interface

literal

interface onév : ős-i{

}

struct onév : ős-o {

}

class onév EXTENDS ős – o : ős-i

(extent enev)

{

}

extent : osztály objektumainak halmaza

slide8

típusok megadása

  • - Komplex típusok:
    • Set(...)
    • Bag(...)
    • List(...)
    • Array(...)
    • Struct(...) 
  • Atomitípusok:
    • integer,
    • float,
    • character,
    • string,
    • boolean

bag(2,1,2)

struct(foo:bag(2,1,2), bar: „dog")

set(struct(title:"My Fair Lady",year:1965),

struct(title:"ET",year:1985),

struct(title:"Jaws",year:1981)

)

slide9

CLASS Movie : Product

{

extent Movies;

key (title,year);

attribute string title;

attribute integer year;

attribute integer length;

attribute enumeration(color,blackAndWhite) filmType;

relationship Set stars inverse Star::starredIn;

relationship Studio ownedBy inverse Studio::owns;

float lengthInHours() raises (noLengthFound);

starNames(out Set);

otherMovies(in Star, out Set) raises(noSuchStar);

};

slide10

interface Course {

keys name,number;

attribute string name;

attribute string number;

relationship List<Section> has_sections

inverse Section::is_section_of;

relationship Set<Course> has_prerequisites

inverse Course::is_prerequisite_for;

relationship Set<Course> is_prerequisite_for

inverse Course::has_prerequisites;

offer(in Semester) raises(already_offered);

drop(in Semester) raises(not_offered);

}

slide11

OQL: Az alap SQL nyelvre épül

SELECT .. FROM .. WHERE .. GROUP BY .. HAVING .. ORDER

Útvonal kifejezés:

m1.m2.m3…

m1m2  m3 

elemei tagokon vezet keresztül

azonosító név:

név : kifejezés

Az útvonalnak egyértelműnek kell lennie

Többértékű elemnél külön változóhoz rendeljük

(…expr… ) AS| |IN iterator_változó

kvantorok:

for all x in S: C(x)

exists x in S: C(x)

aggregátorok:

avg( select-kif.)

max(), min(), sum(), count()

slide12

Melyik évben készült a "Gone With the Wind„ film?

select m.year from Movies m

where m.title = "Gone With the Wind"

A Casablance film szereplőinek neve?

select s.name from Movies m, m.stars s

where m.title = "Casablanca"

A Disney filmekben szereplők nevei?

select distinct s.name from Movies m, m.stars s

where m.ownedBy.name = "Disney"

Az azonos helyen lakó sztárok párjai?

select distinct Struct(star1: s1, star2: s2)

from Stars s1, Stars s2

where s1.addr = s2.addr and s1.name < s2.name

slide13

A Disney filmekben szereplők nevei rendezve?

select distinct s.name

from (select m from Movies m

where m.ownedBy.name = "Disney") d,

d.stars s

order by s.name

A Disney filmekben szereplők rendezve?

select s from Stars s

where exists m in s.starredIn :

m.ownedBy.name = "Disney"

A filmek átlagos hossza?

avg(select m.length from Movies m)

slide14

select std, yr, sumLength:

sum(select q.m.length from partition q)

from Movies m

group by std:m.studio, yr:m.year

select std, yr, sumLength:

sum(select q.m.length from partition q)

from Movies m

group by std:m.studio, yr:m.year

having max(select q.m.length from partition q) > 120

slide15

(select distinct m

from Movies m, m.stars s

where s.name = "Harrison Ford")

except

(select distinct m

from Movies m

where m.ownedBy.name = "Disney")

SELECT DISTINCT STRUCT (kod : x.azonosito,

jegyek: (SELECTy.jegyek FROM x.targyak AS y

WHERE y.ev = 2004))

FROM hallgatok AS x

SELECT AVG(SELECT t.jegy FROM h.targyak AS t)

FROMhallgatok AS h WHERE h.evfolyam = 4

slide16

Relációs és ODL/OQL modell összehasonlítása

1. minta feladat: leckekönyv ábrázolása

engedélyek

hallgató

szak

beiratkozás

félév

tanszék

index

bejegyzés

tárgy

oktató

slide17

relációs modellbeli megvalósítás

OKTATO(okod, nev, szido, lakcim, tanszek, beosztas)

TANSZEK(tkod, nev, cím, tvezeto, terulet)

HALLGATO(hkod, nev, szido, lakcim, status)

ENGEDELY(hallgato, datum, leiras, tipus)

SZAK(szkod, nev, leiras)

FELEV(fkod, ev, szak, leiras)

TARGY(tkod, nev, oktato, tanszék, leiras, lezaras)

BEIRATKOZAS(bkod, hallgato, felev,atlag, lezaras)

INDEXB (bkod, beiratkozas, targy,tipus)

BEIRAS(indexb, datum, tipus, érték, oktato)

slide18

ODL megvalósítás

nagyobb tervezési munka, az összetett szerkezetek és azok

viszonyát is fel kell fedezni

class szemely {

struct lcim {string varos, string utca,..}

attribute string nev;

attribute date szido;

attribute lcim lakcim;

}

class oktato extends szemely

(extent oktatok) {

attribute string beosztas;

relationship tanszek egyseg inverse tanszek::oktatok;

void indit (in targy t) raises (no_targy);

}

csak a beépített kapcsolatok működnek hatékonyan

slide19

Minta lekérdezés

tanszékenkénti átlagjegy az X szak hallgatóinál Y évben

relációs algebra:

SELECT AVG(b.ertek), k.nev FROM beiras b, indexb i,

targy t, tanszek k, beiratkozas s, felev f, szak z

WHERE f.ev = Y AND z.nev = X AND b.indexb = i.bkod

AND i.targy = t.tkod AND t.tanszek = k.tkod AND

i.beiratkozas = b.bkod AND b.felev = f.fkod AND f.szak = z.szkod

GROUP BY k.nev

nehézség: a kapcsolódó adatelemek illesztése

lassú végrehajtás

slide20

OQL megvalósítás:

SELECT atl: AVG(SELECT b.ertek FROM i.beiras b),

tsz: i.targy.tanszek

FROM indexb i

WHERE i.beiratkozas.felev.szak.nev= X AND

i.beiratkozas.felev.ev= Y

Sok esetben egyszerűbb a kapcsolatok megfogalmazása

gyorsabb művelet végrehajtás

az implementáció bonyolultabb

slide21

SQL1999

1975: SEQUEL

SQL86

SQL89

SQL92

SQL1999 (SQL3)

SQL2003 (SQL4)

SQL-FRAMEWORK

SQL-FOUNDATION

SQL-CLI

SQL-PSM

SQL-BINDINGS

SQL-MED

SQL-OLB

SQL-JRT

SQL-XML

SQL-OLAP

slide22

SQL1999 ORDB modell

új struktúra elemek: UDT (felhasználói típusok)

VALUE

OBJECT

komplex struktúra

egységbe zárás

öröklés

azonosítás

overloading

UDT-TABLES (objektum táblák)

táblák

nézetek

slide23

megkülönböztető elemi típus

saját adattípusok

érték

struktúra típus

objektum

Elemi UDT

CREATE TYPE tnev AS gytipus FINAL;

CREATE TYPE TESTMAGASSAG AS INTEGER FINAL;

CREATE TYPE SZULEV AS INTEGER FINAL;

CREATE TABLE DIAKOK ( …

TM TESTMAGASSAG CHECK (….),

SZEV SZULEV,

…)

slide24

szigorú típusegyezés

SELECT 2004-SZEV, TM FROM DIAKOK

WHERE TM > 180 OR SZEV < 10*TM;

megoldás

SELECT 2004-CAST(SZEV AS INTEGER), TM

FROM DIAKOK

WHERE CAST(TM AS INTEGER) > 180 OR

CAST(SZEV AS INTEGER) < 10*CAST(TM AS INTEGER);

a DOMAIN koncepciót hivatott kiváltani

slide25

Struktúrált UDT

CREATE TYPE tnev

UNDER őstnev

AS szerkezet

[NOT] INSTANTIABLE

[NOT] FINAL

hivatozas-szerkezet

cast-szerkezet

egyszeres öröklés megengedett

szerkezet megadása

attributum-nev típus [speciális integritási elem]

gyári

rugalmasan konstruálható

típus :

UDT

slide26

gyári adattípusok (bővebb mint SQL92)

INTEGER

NUMERIC(N,M)

REAL

FLOAT(M)

CHAR(N)

VARCHAR(N)

CLOB

BIT(N)

BLOB

DATE

TIME

TIMESTAMP

BOOLEAN

ARRAY[N]

ROW(…)

CREATE TYPE DIAK AS

(

NEV VARCHAR(30),

SZDAT SZEV,

TESTM TM DEFAULT 180,

CÍM ROW (

VAROS CHAR(20),

HSZ INTEGER

),

TEL CHAR(13) ARRAY [3]

)

itt nem állhat

NOT NULL,..

PRIMARY KEY,..

nincs

LIST,BUG,..

slide27

Hivatkozás az adatelemekre

objektum.tag.tag….

de! : SQL parancsokban csak alias-néven keresztül lehet

struktúra elemekre hivatkozni

SELECT vevok.nev, vevok.cím.utca

FROM vevok

WHERE vevok.id = 34

SELECT c.nev, c.cím.utca, d.utca

FROM vevok AS c, vevok.cím AS d

WHERE c.id = 34

SELECT vevok.nev, vevok.cím.utca

FROM vevok, vevok.cim

WHERE vevok.id = 34

slide28

UDT típusú mezők kezelése

CREATE TABLA dolgozo (

kod INTEGER,

nyelvi NYELVISMERET )

INSERT INTO dolgozo VALUES (

3, NEW NYELVISMERET(‘ANGOL’,3));

UPDATE dolgozo

SET nyelv = NEW NYELVISMERET(‘ANGOL’,3);

UPDATE dolgozo

SET nyelv = NEW NYELVISMERET(nyelv.nyelvi,3);

UPDATE dolgozo

SET nyelv = nyelv.szint(3);

UPDATE dolgozo

SET nyelv.szint = 3;

SELECT kod, CAST (nyelvi AS CHAR(20)) FROM dolgozo;

slide29

UDT táblák használata

UDT típusú objektumok halmazát tárolja:

UDT érték + OID (self-referencing column)

a kapcsolódó táblák öröklési viszonya megegyezik az UDT-ék

öröklési viszonyával, nem lehet ugrás a láncolatban

CREATE TABLE táblanév UNDER tnev OF típus

hibás

helyes

slide30

Hivatkozás adattípusa

DECLARE SECTION

mm AS LOCATOR film

END DECLARE SECTION

lokátorok a LOB elemekhez

CREATE TYPE nn AS (

mm REF (típus)

)

hivatkozást tartalmazó attribútum

mm->nn

DEREF(mm)

a hivatkozott objektum eleme

a teljes hivatkozott objektum

slide31

CREATE TYPE CSAPAT_T AS (

NEV CHAR(20),

LETSZAM NUMBER(3)

SZEKHELY CÍM);

CREATE TYPE JATEKOS_T AS (

NEV CHAR(20),

CSAPAT REF (CSAPAT_T) )

INSTANTIABLE

NOT FINAL ;

CREATE TABLE CSAPATOK OF CSAPAT_T;

CREATE TABLE JATEKOSOK OF CSAPAT_T;

INSERT INTO CSAPATOK VALUES (‘ELORE’,23,..);

SELECT J.CSAPAT->SZEKHELY FROM JATEKOSOK J …

SELECT DEREF (J.CSAPAT) FROM JATEKOSOK J …

még nem lehet a

NEW operátort

használni

slide32

Hivatkozás a procedurális elemekre

eljárás függvény metódus

CALL e() fv() o.m()

típushoz kötött

rutinok legfontosabb jellemzői

- belső vagy külső

- SQL vagy más nyelv

- adatkezelés módja

- determinisztikusság

- paraméterátadás módja

slide33

Metódusok kezelése

- deklaráció

- definiálás

CREATE TYPE otip .. ( struktúra )

METHOD mnév (par.lista) RETURNS tipus

LANGUAGE SQL | C … ;

CREATE METHOD mnev()…;

metódusok típusai:

- original

- overriding

- static

- instance

- constructor

slide34

CREATE TYPE otip .. ( struktúra )

[OVERRIDING]

STATIC | INSTANCE | CONSTRUCTOR METHOD

mnév (par.lista) RETURNS tipus

LANGUAGE SQL | C …

CREATE INSTANCE | STATIC | CONSTRUCTOR

METHOD mnév(..) RETURNS tipus FOR otip

BEGIN

sql vagy külső

RETURN …

END

SELECT m1.m2.mnév() FROM …

slide35

CREATE TYPE DIAK AS

(

NEV VARCHAR(30),

SZDAT SZEV

)

METHOD KOR () RETURNS INTEGER;

CREATE INSTANCE METHOD KOR() RETURNS INTEGER

FOR DIAK

BEGIN

RETURN 2004 – CAST (SELF.SZEV AS INTEGER);

END

slide36

Speciális metódusok

OBSERVER: diak.nev()

MUTATOR: diak.nev(”Peter”)

CONSTRUCTOR: NEW diak()

STATIC: típus::nev()

Hivatkozás-szerkezet

REF IS SYSTEM GENERATED

REF USING típus

REF FROM attributumok

CAST-szerkezet

CAST bal SOURCE AS DISTINCT jobb WITH konv

CAST bal DISTINCT AS SOURCE jobb WITH konv

slide37

Saját inicializáló metódus

CREATE TYPE nyelvismeret AS (

nyelv VARCHAR(20),

szint INTEGER

)

CONSTRUCTOR METHOD nyelvismeret (

n1 VARCHAR(20), n2 INTEGER) RETURNS nyelvismeret;

CREATE METHOD nyelvismeret (

n1 VARCHAR(20), n2 INTEGER)

RETURNS nyelvismeret

BEGIN

SET SELF.nyelv = n1;

SET SELF.szint = n2+1;

RETURN SELF;

END

slide38

Saját konverziós metódus

CREATE TYPE nyelvismeret AS (

nyelv VARCHAR(20),

szint INTEGER

)

CREATE FUNCTION konv ( ni nyelvismeret)

RETURNS CHAR(20)

BEGIN

DECLARE re CHAR(20);

SET re = ni.nyelv || CAST(ni.szint AS CHAR(5));

RETURN re;

END

CREATE CAST (nyelvismeret AS CHAR(20))

WITH konv

slide39

Örökléshez kapcsolódó elemek

CREATE TYPE os AS ( )

CREATE TYPE al UNDER os AS ()

A strukturált UDT-k példányai értékek és nem objektumok

NEW os()

NEW os(paramlista)

példány létrehozás

DECLARE v1 os;

SET v1 = NEW os();

SET v1 = NEW al();

helyettesíthetőség elve

DECLARE v1 al;

SET v1 = NEW al();

slide40

metódusok kezelése

öröklés

overloading

overriding

CREATE TYPE dolgozo AS (

METHOD elszamol() RETURNS BOOLEAN,

METHOD novel() RETURNS INTEGER

)

CREATE TYPE oktato UNDER dolgozo AS (

METHOD novel() RETURNS INTEGER,

METHOD novel(IN ert INTEGER) RETURNS INTEGER

)

SET x = (gabi AS dolgozo).novel()

SET x = TREAT (gabi AS dolgozo).novel()

slide41

Integritási elemek megadása az UDT táblákban

CREATE TABLE táblanév UNDER tnev OF típus

( ref-szerkezet | tábla-interitás | mező-integritás )

CREATE TYPE DIAK AS (

NEV VARCHAR(30),

SZDAT SZEV)

CREATE TABLE s_v OF diak

( REF IS diak_id SYSTEM GENERATED

szdat WITH OPTIONS o_1 CHECK szdat < SYSDATE

nev WITH DEFAULT VALUE ‘PETER’

slide42

UDT táblák lekérdezése

CREATE TABLE A OF T1A

CREATE TABLE B UNDER A OF TB

alapesetben a hierarchiában végig lekérdez

SELECT * FROM B

leszűkítés

SELECT * FROM ONLY (B)

A view-k között is értelmezhető hierarchia

CREATE VIEW v1 OF t1 (REF IS DERIVED) AS SELECT…

CREATE VIEW v2 OF t2 UNDER v1 AS SELECT …

szigorú illeszkedési feltételek

slide43

CREATE TYPE VERSENYZO_T AS (

NEV CHAR(20),

LAKCIM LAKCIM_T,

CSAPAT REF(CSAPAT_T),

SZULIDO DATE,

PONTOK ROW (

DATUM DATE,

PONTSZAM INTEGER ARRAY[3]

)

)

NOT FINAL

INSTANTIABLE

INSTANCE METHOD ELETKOR () RETURNS INTEGER;

CREATE INSTANCE METHOD ELETKOR () RETURNS

INTEGER FOR VERSENYZO_t

RETURN YEAR(SYSDATE) - YEAR(SELF.SZULIDO);