Objektorientierte Datenbanken zBeim vorigen Mal: yTransaktionen, Sperren yODMG-OQL zHeute: yODMG-OQL und FastObjects-OQL yIntegritätsbedingungen und Schema-Evolution.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Imperative Programmierung
der Universität Oldenburg
ER-Datenmodell und Abfragen in SQL
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Dynamische Webseiten mit PHP
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Der letzte Schliff für Abfragen Übersicht über die Aggregatfunktionen.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Transaction Script Software Component Technology for Distributed Applications.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
Datenbankentwicklung IV-LK
Wir bauen uns eine Webapplikation!
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
Dynamische Datentypen
2.4 Rekursion Klassifikation und Beispiele
Befehle in SQL Erläuterungen.
Datenbanksysteme für hörer anderer Fachrichtungen
Aggregatsfunktion SQL = Structured Query Language.
Parameterübergabemechanismen für den Methodenaufruf
Aggregatsfunktion mit Group by und having SQL = Structured Query Language.
Semantische Integritätsbedingungen AIFB SS assert-Klausel (2/6) Beispiel 3-2: Angestellter: (Ang-Nr, Ang-Name, Gehalt, Familienstand, Abt-Bez).
Programmieren in C Grundlagen C 2
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
Structured Query Language
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Objektorientierte Datenbanken
Objektorientierte Datenbanken
Objektorientierte Datenbanken zBeim vorigen Mal: yJava Data Objects zHeute: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung.
Objektorientierte Datenbanken zBeim vorigen Mal: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung FastObjects (t7)
Tutorium Software-Engineering SS14 Florian Manghofer.
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Konstruktoren.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Einführung in die Programmierung mit Java
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
(Structured Query Language)
 Präsentation transkript:

Objektorientierte Datenbanken zBeim vorigen Mal: yTransaktionen, Sperren yODMG-OQL zHeute: yODMG-OQL und FastObjects-OQL yIntegritätsbedingungen und Schema-Evolution zLernziele: yAnwendung und Bewertung des ODMG-Standards Ralf Möller, FH-Wedel

Literatur

Select-From-Where-Anfragen zselect query from var_def (, var_def )* [ where query ] [ group by name: query (, name: query )* [ having (query (, query)* ) ]] [ order by query [ asc | desc ] (, query [ asc | desc ])* zvar_def = extent | var in extent | extent [as] var

Beispiel (1) zselect a from a in AuthorExtent where exists p in a.publication: count(p.keywords) > 10 zselect p.publkey from p in flatten(select a.publications from Authorextent a where a.name like "G*") zelement(select a from a in Authorextent where a.name = "Dittrich")

Beispiel (2) zmax( select p.accesses from p in PublicationExtent) zselect author1: a, author2: b, publication: p from PublicationsExtent p, a in p.getAuthors(), b in p.getAuthors() where a.name < b.name

Beispiel (3) zselect aucount, kwcount, partition from publ in PublicationExtent group by aucount: count(publ.getAuthors()), kwcount: count(publ.keywords) having count(partition) > 1 zErgebnistyp: set(struct(aucount: integer, kwcount: integer, partition: bag(struct(publ: Publication))))

Definitionen zdefine [query] query-name [ params ] as query yparams = ( type identifier (, type identifier )* ) zdefine extent extent-name class-name

Einschränkungen in FastObjects-OQL zExtraktion einzelner Attributwerte oder ganzer Objekte (kein struct) zKeine Methodenaufrufe znur Aggregatfunktion count

Integritätsüberprüfung zIntegrität: semantische (oder auch logische) Korrektheit der Datenbank in bezug auf den modellierten Weltausschnitt zIm ODMG-Standard Überprüfung durch Java-Prozeduren möglich zInterface: com.poet.odmg.Constraints ypreDelete() ypreWrite() ypostRead()

Beispiel (1) class Person implements Constraints { String name_; Date dateBorn_; transient int age_; public void postRead() { Date now = new Date(); age_ = now.getYear() - dateBorn_.getYear(); } public void preWrite() { //... } public void preDelete() { //... }

Beispiel (2) zEach manager has references to the products on which the manager has worked. class Manager extends Person { //... SetOfObject products_; // Product objects //... }

Beispiel (3) class Product implements Constraints { //... public void postRead() { //... } public void preWrite() { //... } public void preDelete() { Iterator iter = managers_.iterator(); while ( iter.hasNext() ) { ((Manager) iter.next()).removeProduct( this ); } //... }

Integritätsbedingungen zDas Gehalt des Mitarbeiters `Mario De Monti' darf nicht unter 4000,- DM liegen. ybetrifft genau ein einzelnes Objekt einer Klasse zKein Qualitätssicherer darf mehr als 5000,- DM im Monat verdienen. ybetrifft zwar alle möglichen Objekte einer Klasse, kann aber jeweils für die einzelnen Objekte überprüft werden zProdukte werden durch ihre Nummern identifiziert, das heißt, keine Produktnummer darf mehrfach vorkommen. ybetrifft alle Objekte einer Klasse und kann nicht einzeln für die jeweiligen Objekte überprüft werden

Integritätsbedingungen (2) zFür die Mitarbeiter gilt, daß das Durchschnittsgehalt der Qualitätssicherer unter dem der Arbeitsplaner liegen muß. ybetrifft eine Teilmenge einer Klasse zZu jedem Produkt muß es mindestens eine Unterlage geben. yklassenübergreifende Integritätsbedingung zDer Status eines Projekts darf nicht direkt von dem Zustand "in Planung" nach "abgeschlossen" übergehen. ybetrifft Zustandsübergänge anstelle einzelner Datenbankzustände

Integritätsbedingungen (3) zEine Gehaltserhöhung eines Mitarbeiters darf nur dann ausgeführt werden, wenn das neue Gehalt nicht zehn Prozent über dem alten Gehalt liegt. ybetrifft Zustandsübergänge, bezieht sich aber explizit auf die Änderungsoperation, die den Übergang durchführt zDer Durchschnittsverkaufspreis eines Produktes bezogen auf die letzten zwölf Monate darf nicht mehr als fünf Prozent vom Durchschnittspreis der letzten beiden Jahre abweichen. ylangfristig zu überprüfende Bedingung, für die historische Preisinformationen zusätzlich gespeichert werden müssen

Integritätsbedingungen (4) zEinkaufsteile müssen gelöscht werden, wenn sie von keinem Lieferanten mehr beziehbar sind. yIntegritätsregel, die bei bestimmten Änderungen der DB als Folgeaktion auslöst wird zQualitätssicherer, Arbeitsplaner sowie Konstrukteure sind spezielle Mitarbeiter. ydefiniert eine Untermengenbeziehung zwischen Klassen zJeder Mitarbeiter muß entweder ein Qualitätssicherer, ein Arbeitsplaner oder ein Konstrukteur sein. yerzwingt eine Klassenpartitionierung

Schema-Evolution zNicht ist stetiger als der Wandel zÄnderung von Klassendefinitionen durch Anpassung von Software an neue Einsatzbedingungen zWas passiert mit "alten" Objekten? zVerzögerte vs. eifrige Anpassung

Arten der Schema-Evolution (1) zÄnderung des Status von Instanzvariablen von transient (oder static) auf persistent zHinzufügung oder Entfernung von Instanzvariablen zÄnderung der Typen von Werten von Instanzvariable yneuer Typ ist allgemeiner: verlustfreie Anpassung yneuer Typ ist spezieller: Informationsverlust mögl. yneuer Typ ist unvergleichbar

Typumwandlung in FastObjects (Auszug) VonNachBermerkung short, int, long, float,double numerischer TypVerlust mögl. numerischer Typjava.lang.String numerischer TypbyteVerlust mögl. numerischer TypcharVerl. mög., undefi- niert bei neg. Werten numerischer Typboolean1 -> true, sonst false booleannumerischer Typfalse -> 0, sonst true

Umwandlung von Kollektionen VonNachBermerkung Array elementweise Umwandlung ObjektreferenzKollektion oder Array einelementige Koll. oder Array Kollektion Typ AKollektion Typ B Kollektion oder Array Objektreferenznur erstes Objekt betrachtet

Standardwerte

Arten der Schema-Evolution (2) zÄnderung der Vererbungsbeziehungen zRestrukturierung von Klassen yEinfügung, Löschung, Aufspaltung, Kombination, Namensänderung

Zusammenfassung, Kernpunkte zObject Query Language zAspekte der Schema-Evolution und Versionsverwaltung

Was kommt beim nächsten Mal? zObjektrelationale Datenbanken