Objektum relációs adatmodell

Slides:



Advertisements
Hasonló előadás
A kétdimenziós tömbök Páll Boglárka. Ismétlés: Az egydimenziós tömbök  Meghatározás: A tömb egy olyan összetett adatszerkezet amely több rögzített számú,
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
Delphi programozás alapjai
SQL Structured Query Language
System Statistical Functions. CPU Tesztelése SELECT AS busy Vissza adja milliszekundumban, mennyi időt töltött munkával a szerverünk indítás.
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
Bevezetés a tárgyakhoz Tárgyak  Objects are the containers for values of a specified type  Objects are either signals, variables or constants  Once.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
SQL – DQL (Data Query Language ) adat lekérdezések
Neo4j bevezető Rácz Gábor
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
Adatbázis rendszerek II.
Adatbáziskezelés Horváth Ernő 1. Elérhetőségek Kiss Jenő Horváth Ernő Tanszéki honlap
Adatbáziskezelés Horváth Ernő 1. Elérhetőségek Kiss Jenő Horváth Ernő Tanszéki honlap
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
SQL 1 SEQUEL, Structured English Query Language: SQL ANSI, ISO: SQL86, SQL89, SQL92. Alap (entry), közbenső (intermediate), teljes (full) szint. A DDL.
SQL – OLAP 2. óra.
VFP programozása report készítése menü készítése dinamikus elemek
SQL – OLAP 8. óra.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
Delegátumok C#-ban Krizsán Zoltán iit 1.0.
Course Situation and Event Driven Models for Multilevel Abstraction Based Virtual Engineering Spaces Óbuda University John von Neumann Faculty of Informatics.
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
1 SQL – Structured Query Language IBM fejlesztette ki 70-es években (SEQUEL) 1986-ban lett szabvány (SQL86) SQL86, SQL89, SQL92, SQL99, SQL3, SQL2003 DDL,
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Nézettáblák létrehozása, módosítása és törlése
Oracle – ORDMS lehetőségek UDT:- objektum típusok - kollekció típusok SQL> CREATE TYPE SZEMELY AS OBJECT ( 2 NEV VARCHAR2(20), 3 TEL VARCHAR2(14)); SQL>
VFP xBase adatkezelés - munkaterületek - DML - DDL - navigáció - eljárások, függvények - vezérlési szerkezetek - változók - képernyő IO - mintaprogram.
PHP VI Adatbázisok, MySQL
PHP V Osztályok, Objektumok. Osztály class Person { var $name; // tulajdonság, változó function getName() { // metódus, tagfüggvény return $this->name;
Windows Server 2008 { PowerShell }
Alertet indíthat egy: SQL Server esemény (LOG) SQL Server performancia érték WMI events Alert végezhet: Operátor értesítést JOB indítás (válasz az eseményre)
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
Az SQL nyelv alapjai.
Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - III. / 1 13.Állományok, bejegyzések 14.Folyamok 15.Közvetlen hozzáférésű állomány.
DDL – Adatdefiníciós nyelv
Hasznos ismeretek Hogyan bővítsük ismereteinket AVRDUDEflags -E noreset.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis-kezelés SQL-lel
var q = ( from c in dc.Customers where c.City == "London" where c.City == "London" select c).Including( c => c.Orders ); select c).Including(
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
Típusváltás (Type Conversion) n Áttekintés n Példák.
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Adatbázis rendszerek I Relációs adatmodell strukturális része Általános Informatikai Tsz. Dr. Kovács László.
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
1 Objektumorientált adatbázisnyelvek Objektumleíró nyelv Objektumlekérdező nyelv.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Adatbázis rendszerek II
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
Adatbázis rendszerek I
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Adatbázisok SQL.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Előadás másolata:

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 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

OBST rendszer C++-ban megírt objektum tároló modulok alkalmazása nincs DBMS

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 …

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)

Ö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

típusok megadása Atomi típusok: integer, float, character, string, boolean - Komplex típusok: Set(...) Bag(...) List(...) Array(...) Struct(...)  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) )  

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); };

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); }

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()

select m.year from Movies m where m.title = "Gone With the Wind" 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

from (select m from Movies m where m.ownedBy.name = "Disney") d, 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)

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

where s.name = "Harrison Ford") except from Movies m (select distinct m from Movies m, m.stars s where s.name = "Harrison Ford") except from Movies m where m.ownedBy.name = "Disney") SELECT DISTINCT STRUCT (kod : x.azonosito, jegyek: (SELECT y.jegyek FROM x.targyak AS y WHERE y.ev = 2004)) FROM hallgatok AS x SELECT AVG(SELECT t.jegy FROM h.targyak AS t) FROM hallgatok AS h WHERE h.evfolyam = 4

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ó

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)

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

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

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

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 …

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

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, …)

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

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

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,..

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

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); SET nyelv = NEW NYELVISMERET(nyelv.nyelvi,3); SET nyelv = nyelv.szint(3); SET nyelv.szint = 3; SELECT kod, CAST (nyelvi AS CHAR(20)) FROM dolgozo;

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 helyes hibás

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

CREATE TYPE CSAPAT_T AS ( NEV CHAR(20), LETSZAM NUMBER(3) SZEKHELY CÍM); CREATE TYPE JATEKOS_T AS ( 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

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

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

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 …

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

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

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

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

Ö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 helyettesíthetőség: minden ős osztályú hivatkozáskor egy al-osztályú példány is megadható DECLARE v1 al; SET v1 = NEW al();

CREATE TYPE dolgozo AS ( METHOD elszamol() RETURNS BOOLEAN, 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 OVERLOAD: ELTÉRŐ PARAMÉTEREZÉS TREAT : NEM VALTOZTATJ A MEG AZ ADATTÍPUST OVERRIDE: ELTÉRŐ HIERARCHIA (ALAPTIPUS) SET x = (gabi AS dolgozo).novel() SET x = TREAT (gabi AS dolgozo).novel()

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’

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

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);