Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierte Datenbanken zBeim vorigen Mal: yTransaktionen, Sperren yODMG-OQL zHeute: yODMG-OQL und FastObjects-OQL yIntegritätsbedingungen und Schema-Evolution."—  Präsentation transkript:

1 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

2 Literatur

3 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

4 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")

5 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

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

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

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

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

10 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() { //... }

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

12 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 ); } //... }

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 Standardwerte

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

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

24 Was kommt beim nächsten Mal? zObjektrelationale Datenbanken


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

Ähnliche Präsentationen


Google-Anzeigen