Grenzen des relationalen Datenmodells
|
|
- Edwina Pohl
- vor 8 Jahren
- Abrufe
Transkript
1 Frühjahrsemester 2013 CS243 Datenbanken Kapitel 2: Objektorientierte und Objekt-relationale Datenbanken H. Schuldt Grenzen des relationalen Datenmodells Relationale Datenbanksysteme sind sehr gut geeignet für die Verwaltung von klar strukturierten Daten, die sich einfach auf Relationen abbilden lassen Allerdings gibt es komplexere Anwendungen, bei denen sich das relationale Datenmodell nicht unbedingt gut eignet. Ingenieurwissenschaftliche Anwendungen (z.b. Verwaltung von Volumendaten, CAD-Daten, ) Multimedia-Anwendungen (z.b. Audio-Daten, Video-Daten, etc.)... Als Reaktion hierauf haben sich weitere Datenmodelle herausgebildet Objektorientierte Datenmodellierung: Kombination der strukturellen Repräsentation zusammen mit der operationalen Repräsentation (Verhalten) in einem Objekttyp T OODBMS, Kapitel 2.1 Objektrelationale Datenmodellierung: Erweiterung des relationalen Datenmodells um komplexe, benutzerdefinierte Objekte und benutzerdefinierte Funktionen T ORDBMS, Kapitel
2 Grenzen des relationalen Datenmodells Beispiel: Modellierung von geometrischen Körpern in boundary representation (BREP) Objekte werden durch eine Menge von Polyedern beschrieben, jeder Polyeder besitzt 4 Flächen, jede Fläche drei Kanten, jede Kante ist durch zwei Endpunkte beschrieben. 2-3 Grenzen des relationalen Datenmodells Nachteile des relationalen Entwurfs in Anwendungen wie der vorigen: Segmentierung: Ein Anwendungsobjekt wird in der relationalen Repräsentation auf eine Vielzahl von Relationen verteilt (segmentiert). Bei einem Zugriff auf das Anwendungsobjekt müssen die einzelnen Teile über (teure) Joins zusammengeführt werden. Künstliche Schlüsselattribute: Um die Eindeutigkeit von Tupeln zu erzwingen müssen oftmals künstliche Schlüssel vergeben werden. Diese Schlüssel sind relevant um zusammengehörige Teile über einen Join wieder zusammenführen zu können. Fehlendes Verhalten: Objekte besitzen in der Regel ein anwendungsspezifisches Verhalten. Dies wird in der relationalen Repräsentation nicht berücksichtigt sondern muss ausserhalb des DBMS realisiert werden (Ausnahme: Stored Procedures). Einbettung in Programmiersprachen (Mengenorientierung vs. Satzorientierung): relationale Anfragesprachen sind mengenorientiert. Programmiersprachen verarbeiten jedoch zu jedem Zeitpunkt nur einen Datensatz. Dies wird auch als Impedance Mismatch bezeichnet
3 2.1 Objektorientierte Datenbanken Grundidee objektorientierter Datenbanken (OODBMS) ist es, die Beschreibung des Verhaltens von Anwendungsobjekten mit ihrer Strukturbeschreibung in einer Objekttyp-Definition zu verbinden (und damit die vier zuvor identifizierten Nachteile des Relationenmodells zu überwinden). Operationen werden damit zu einem wesentlichen Bestandteil der Datenbank. Datenstrukturen in der Anwendung Relationale Repräsentation Kopie und Umwandlung Transparenter Zugriff auf OODBMS RDBMS OODBMS 2-5 Objektorientierte Datenbanken Daher findet auch die aus der objektorientierten Programmierung bekannte Objektkapselung in objektorientierten Datenbanken Anwendung Die Operationen, die einem Objekt zugeordnet sind können direkt ausgeführt werden, ohne die strukturelle Repräsentation eines Objekts zu kennen (information hiding). Es muss lediglich die Signatur der Operationen an der Schnittstelle des Objekts bekannt sein. Operation 1 Jedes Objekt ist eindeutig über eine automatisch vom System generierte Objekt-ID repräsentiert (und nicht über ein [künstliches] Schlüsselattribut) Operation 2 Struktur OO- DBMS 2-6 3
4 ODMG: Standard für Objektorientierte DBMS Im Gegensatz zum SQL-Standard für relationale Datenbanksysteme gibt es keinen allgemeingültigen Standard für OO-DBMS Ziel der Object Database Management Group (ODMG), ein Zusammenschluss von Herstellern objektorientierter DB-Produkte, war es, ein einheitliches Objektmodell festzulegen (und damit eine de facto-standard zu definieren) Terminologie: Objekttyp: Beschreibung von Struktur und Verhalten (properties & operations) Objekt: Instanz eines Objekttyp Extension (engl. extent): Menge aller Instanzen eines Objekttyps OID: Objektidentifikator (systemweit eindeutig; bei der Instanziierung vom System vergeben, unveränderlich) 2-7 ODMG-Modell Ursprüngliche Zielsetzung von OODBMS: Kein Impedance Mismatch sondern: Programmiersprache = Datenbanksprache Daher zunächst keine Wirtsprachen-unabhängige Datendefinition, Datenabfrage und Datenmanipulation wie es in SQL ist. Vorteil: homogene Umgebung für Entwurf und Entwicklung von IS Nachteile: eine Datenbank kann nicht von mehreren Anwendungsprogrammiersprachen angesprochen werden ein OODBMS eines Herstellers kann nicht durch ein OODBMS eines anderen Herstellers ersetzt werden, es sei denn, die gleiche Programmiersprache wird verwendet (Widerspruch zur Realität: Smalltalk, C, C++, Java,...) Das ODMG-Modell enthält daher einen Vorschlag für ODL = sprachunabhängige (stand-alone) Objektdefinition OQL = sprachunabhängige (stand-alone) Objekt-Abfragesprache keine OML, stattdessen Standard für C++OML, SmalltalkOML, JavaOML, sowie die Einbettung der ODL und OQL in diese Sprachen 2-8 4
5 Objekt-Definition (ODL): ODMG-Typen Im ODMG-Modell sind einige wichtige Objekttypen vorgefertigt (z.b. Datum, Zeit, Zeitintervall). Ausserdem gibt es einen Set-Konstruktor sowie Bag (Menge mit Duplikaten), List, Array und Dictionary (Liste von Attribut-Wertpaaren) zur Mengendefinition. Alle diese Typen treten zweifach auf: in Kopiersemantik ( Literal_type ) in Referenzsemantik ( Object_type ) Types Literal_type Atomic_literal Collection _literal Structured_literal Object_type Atomic_object Collection_object Structured_object 2-9 Objekt-Definition (ODL): ODMG-Typen Atomic_literal ::= long, short, unsigned long, unsigned short, float, double, boolean, octet, char, string, enum<> Collection_literal ::= set<>, bag<>, list<>, array<>, dictionary<> Structured_literal ::= structure<>, date, time,... Atomic_object ::= benutzerdefiniert durch interface{} und class {} Collection_object ::= Set<>, Bag<>, List<>, Array<>, Dictionary<> Structured_object ::= Structure<>,... Collection_object unterscheidet sich vom Collection_literal durch Referenzsemantik bei Zuweisungen. Analog ist der Zusammenhang zwischen Structured_literal und Structured_object
6 Definition von Atomic_object-Typen interface{} ist die Beschreibung eines Atomic_object-Typs unter Verwendung seiner Struktur ( Properties ) und seines Verhaltens ( Operations ). Zu einem Interface gibt es keine Instanzen. Ein Interface dient der Beschreibung der Schnittstelle mehrerer Typen. class{} ist die Beschreibung eines Atomic_object-Typs unter Verwendung von höchstens einer (Super-)Class-Beschreibung (IS-A), keiner, einer oder mehrerer Interface-Beschreibungen, einer EXTENT und KEY- Festlegung. Deklaration von properties und operations Klassen werden also instanziiert, die Instanzen finden sich dann im Extent (Ausprägung) der Klasse. Durch die Key-Festlegung können Duplikate im Extent verhindert werden. Keys werden nur im Sinne einer Integritätsbedingung verwendet, nicht aber um Objekte zu referenzieren (dies geschieht über deren OID) Attribute, Beziehungen und Methoden Ein Atomic_object Typ wird beschrieben durch Properties: dies sind Attribute und Beziehungen. Ein Attribut (attribute) besitzt einen Wertebereich (häufig mit Literal-Typ). Objektwertige Attribute sind auch zugelassen, es ist jedoch empfehlenswert, diese Attribute als Beziehung zu modellieren. Eine Beziehung (relationship) verweist auf ein Objekt (bzw. auf eine Menge von Objekten). Für die Garantie, dass eine Beziehung auch in umgekehrter Richtung eingehalten wird gibt es die Möglichkeit, gleichzeitig auch die Inverse (inverse) einer Beziehung zu spezifizieren (unabhängig von den jeweiligen Kardinalitäten). Operations: Methoden, die durch ihre Signatur beschrieben werden, insbesondere durch zusätzliche Input ( in ) und Output ( out, inout ) -Parameter. Standard-Inputparameter ist die Objekt-Instanz, auf der die Methode aufgerufen wird
7 ODL-Beispiel Studierende {interface} name : string MatNr : string adr Adresse 1 strasse : string 1 ort : string plz : short adr Angestellter name : string AHVNr : string gehalt 1 Gehalt brutto : float währung erhöhen() Student Doktorand Professor doktorvater 1 rang: Professur setzt_voraus 0.. * 0..* 1 {ordered} 0..* {ordered} dozent hört betreut Vorlesung 1.. * 0..* titel : string nummer:string 0..* liest ist_angeboten() 2-13 ODL-Beispiel: Typdefinitionen class Vorlesung ( extent Vorlesungen key nummer ) { attribute string titel; attribute string nummer; relationship Professor dozent inverse Professor::liest; relationship list<doktorand> betreut_von inverse Doktorand::betreut; relationship list<vorlesung> setzt_voraus inverse Vorlesung::ist_voraussetzung_für; relationship set<vorlesung> ist_voraussetzung_für inverse Vorlesung::setzt_voraus; }; boolean ist_angeboten ( in unsigned short semester );
8 ODL-Beispiel: Typdefinitionen class Gehalt { readonly attribute float brutto; readonly attribute enum Waehrung {CHF,EUR, } waehrung; }; void erhoehen ( in float betrag, in Waehrung curr ); struct Adresse { attribute string attribute string attribute short }; strasse; ort; plz; 2-15 ODL-Beispiel: Typdefinitionen class Angestellter ( extent Angestellte key AHVNr ) { attribute string name; attribute string AHVNr; attribute Adresse adr; attribute Gehalt gehalt; }; class Professor extends Angestellter (extent Professoren) { attribute enum Professur {Ord, Extraord, Asst} rang; relationship set<vorlesung> liest inverse Vorlesung::dozent; };
9 ODL-Beispiel: Typdefinitionen interface Studierende { attribute string name; attribute string MatNr; attribute Adresse adr; }; class Student : Studierende ( extent Studenten key MatNr ) { attribute string name; attribute string MatNr; attribute Adresse adr; attribute set<vorlesung> hört; }; class Doktorand extends Angestellter : Studierende (extent Doktoranden) { attribute string MatNr; attribute Professor doktorvater; relationship set<vorlesung> betreut inverse Vorlesung::betreut_von; }; 2-17 Klassen als Implementierung von Schnittstellen Einer interface-definition werden keine Instanzen zugeordnet. Es wird nur die Art der Eigenschaften und Beziehungen festgelegt. Zu einer class-definition gibt es Instanzen in dem dazu eingeführten Extent. Über die extends-anweisung bekommt daher eine Subclass nicht nur die Art sondern auch die Werte der Properties (also der Attributwerte und Beziehungspartner). Zu jeder Instanz einer subclass gibt es genau eine Instanz in der übergeordneten class. Mehrfachvererbung ist im ODMG-Modell ausgeschlossen. Wenn in einer Interface-Definition I Properties spezifiziert sind, so müssen diese in einer class C, für die C HAS-A I gilt, nachgereicht werden. Man sagt dann auch, dass class C eine Schnittstelle für I implementiert. Dies muss allerdings unterschieden werden von der Implementierung der Schnittstellenoperationen einer Klasse
10 ODMG-Modell vs. Relationales Datenmodell Im relationalen Datenmodell sind nur Tupelmengen erlaubt. Im ODMG-Modell (OO-Datenmodell) sind ebenfalls nur Mengen erlaubt, die aber jetzt Objekte als Elemente haben. Relationenmodell (1NF) Relation: Menge von Tupeln (Ausprägung) Atomares Attribut ODMG-Datenmodell Extent: Menge von Objekten Funktion, die elementaren Wert liefert Funktion, die Menge von Objekten liefert (Tupeltyp) Objekttyp Subtyp Subklasse 2-19 Objektabfragesprache: OQL OQL ist eine SQL-ähnliche Abfragesprache für Objekte, die mit der ODL definiert wurden OQL enthält SQL-92 (den Anfrageteil, ohne DML) OQL enthält Konstrukte für den Zugriff auf einzelne Objekte, nicht nur für Kollektionen. OQL kann auch wie SQL in Programmiersprachen und damit in Anwendungsprogramme eingebettet werden (z.b. in C++, Smalltalk, Java), zusätzlich zu stand-alone -Verwendung. Durch das Bemühen, SQL-kompatibel zu sein, verliert man Eleganz. Die Unterstützung von vielen Collection Types geht auf Kosten der Einfachheit
11 Von der Relationenalgebra zur Objektalgebra Beobachtungen: die Selektion/Filterung ( ) der Relationenalgebra hängt nicht davon ab, dass die Elemente der Mengen Tupel sind. Sie verändern den Typ der Elemente in der Ergebnismenge nicht. Also kann man sie auf Klassen anwenden: Sei S eine Klasse mit Elementen vom Typ T und P ein Prädikat definiert auf Instanzen von T. Dann erhält man eine abgeleitete Klasse S durch Filterung wie folgt S' := filter [P] (S) mit ext(s') = { e in ext(s) P(e) } die Projektion ( ) der Relationenalgebra verändert den Typ. Daher muss bei der Übertragung der Relationenalgebra auf eine Objektalgebra unterscheiden werden, ob Sub- oder Supertypen erzeugt werden und ob Objekte erhalten oder neu erzeugt werden Prinzipien einer Objektalgebra (bzw. OQL) Mengen-orientiert Input: Menge(n) von Objekten Output: Menge von Objekten Objekterhaltend Output-Objekte sind Elemente der Eingabeobjektmenge(n) Objekterzeugend Output-Objekte werden aus den Elementen der Eingabeobjektmenge(n) gebildet Die objekterhaltenden Operationen sollen für Sichtdefinitionen zur Verfügung stehen. Mit diesen Operationen bewegt man sich innerhalb der Objekt-DB. Objekterzeugende Operationen benötigt man u.a. für die Übergabe von Werten an die Aussenwelt Operationssemantik wird definiert über Typ Extent der Resultatmenge
12 OQL: Objekte ansprechen Im Folgenden betrachten wir einige Beispiele der OQL (komplettes Syntax- Diagramm ist am Ende von 2.1 aufgeführt). Wir beschränken uns auf Extent-Namen als Zugang zum OODBMS (es gibt auch persistente Namen von Einzelobjekten) und gehen davon aus, dass die entsprechenden Typdefinitionen unserer Beispiel-DB vorhanden sind. Für alle Anfragen gilt: der Ergebnistyp leitet sich aus der Anfrage ab 1. Gesucht ist die Menge der Namen aller Studierenden: OQL-Anfrage: Ergebnistyp: distinct ( select s.name from s in Studenten ) 2. Gesucht sind die Namen und Matrikelnummern aller Studenten: OQL-Anfrage: Ergebnistyp: select struct ( n:s.name, id:s.matnr ) from s in Studenten 2-23 Zugriff auf Einzelobjekte & Instanziierung 3. Erzeugen einer Instanz vom Typ Professor: OQL-Anweisung: Professor (name: Einstein, AHVNr: 123, rang:ord.) 4. Zugriff auf das neu erzeugte Einzelobjekt über seinen Schlüssel : OQL-Anweisung: element(select p from p in Professoren where p.ahvnr = 123 ) 5. Verwendung eines Objekts beim Generieren eines anderen Objekts (Vorlesung): Vorlesung ( titel: Relativitätstheorie für Dummys, nummer: , dozent: element ( select p from p in Professoren where p.ahvnr = 123 ), betreut_von: select d from d in Doktoranden where d.doktorvater = element ( ),... )
13 Pfadausdrücke und Ausgabe von Werten Sei o Objekt, o.a 1.A A k ist ein Pfadausdruck für A k (...A 2 (A 1 (o))), wenn alle A i Attribute oder Beziehungen sind. Falls A i mengen- (oder bag-, listen-) wertig ist, so muss ein Iterator der Form v i in o.a 1.A 2..A i verwendet werden, der die Elemente der Menge durchläuft. 5. Für alle Doktorierenden soll der Namen, der Name des Doktorvaters, sowie die Namen, Nummern und Dozenten der von ihr/ihm betreuten Vorlesungen ermittelt werden select struct( name: d.name, betreuer: d.doktorvater.name, lectures: select struct ( t: v.titel, n: v.nummer, p: v.dozent.name ) from v in d.betreut ) from d in Doktoranden 2-25 Aufruf von Operationen Operationen ermöglichen die Veränderung der Properties von Objekten 6. Das Gehalt von Professor Einstein soll um 1000 CHF erhöht werden (element (select p from p in Professoren where p.ahvnr = 123 ) ).gehalt.erhoehen(1000,chf) (Methode erhoehen() kann neben Gehalt evtl. auch weitere Properties ändern!) 7. Ermitteln Sie die erste Vorlesung, die Voraussetzung für die Vorlesung Distributed Information Systems ist (unter der Annahme, dass die Nummerierung von Listen bei 0 beginnt): (element ( select v from v in Vorlesungen where v.titel = DIS ) ).setzt_voraus[0]
14 Beispiel 8. Gesucht ist der Name der Studentin / des Studenten mit Mat.Nr. 0815, sowie alle Vorlesungen, die sie/er bei Professoren besucht, die im selben Ort wohnen (Titel der Vorlesung + Name des Dozenten) 2-27 Syntax von Interface und Class <Interface> ::= <InterfaceHeader> { [<InterfaceBody>] } <InterfaceHeader> ::= interface <Identifier> [<InheritanceSpec>] <Class> ::= <ClassHeader> { <InterfaceBody> } <ClassHeader> ::= class <Identifier> [ extends <ScopedName>] [<InheritanceSpec>] [<TypePropertyList>] <InheritanceSpec> ::= : <ScopedName> [, <InheritanceSpec>] <TypePropertyList>::= ( [<ExtentSpec>] [<KeySpec>] ) <ExtentSpec> ::= extent <String> <KeySpec> ::= key [ s ] <KeyList> <KeyList> ::= <Key> <Key>, <KeyList> <Key> ::= <PropertyName> ( <PropertyList> ) <PropertyList> ::= <PropertyName> <PropertyName>, <PropertyList> <PropertyName> ::= <Identifier> <ScopedName> ::= <Identifier> <ScopedName> :: <Identifier>
15 Syntax von Interface und Class <InterfaceBody> ::= <Export> <Export> <InterfaceBody> <Export> ::= <TypeDecl> ; <ConstantDecl> ; <ExceptionDecl> ; <AttributeDecl> ; <RelationDecl> ; <OperationDecl> ; <AttributeDecl> ::= [ readonly ] attribute <DomainType> <Ident.> <DomainType> ::= <SimpleType> <StructuredType> <EnumType> <RelationDecl> ::= relationship <TargetOfPath> <Identifier> inverse <InversePath> <TargetOfPath> ::= <Identifier> <Collection> < <Identifier> > <InversePath> ::= <Identifier> :: <Identifier> <OperationDecl> ::= <OpType> <Identifier> ( [<ParameterList>] ) <OpType> ::= <SimpleType> void <ParameterList> ::= <ParameterD> <ParameterD>, <ParameterList> <ParameterD> ::= [ in out inout ] <SimpleType> <Identifier> 2-29 OQL Syntaxdiagramme define_ ; _program define_ define identifier as Select Expression Basic Simple Expression Comparison Boolean Expression Constructor Accessor Collection Expression Set Expression Conversion
16 OQL Syntaxdiagramme * Select Expression select distinct identifier : as identifier, from identifier as, 2-31 OQL Syntaxdiagramme where group by identifier : as, identifier having order by asc desc
17 OQL Syntaxdiagramme Literals Basic entry_name _name bind_argument from_variable_name ( ) Literals nil true false Integer Float Character String 2-33 OQL Syntaxdiagramme + - * Simple Expression / mod - abs ( )
18 OQL Syntaxdiagramme Comparison comparison op like String and Boolean Expression or not =!= Comparison Op > < >= <= 2-35 OQL Syntaxdiagramme type_name ( ) Constructors type_name struct set ( identifier :, ) bag array list (, ) list (.. ) (, )
19 OQL Syntaxdiagramme. attribute_name Accessor relationship_name -> operation_name * ( ), : first last ( ) function_name (, ) 2-37 OQL Syntaxdiagramme Collection Expression count unique exists sum min max avg ( * ) ( ) in exists comparison op some any all for all identifier in :
20 OQL Syntaxdiagramme intersect Set Expression union except Conversion listtoset element distinct flatten ( ) ( class_name ) Objektrelationale Datenbanken Bei objektrelationalen Datenbanken (ORDBMS) steht, im Gegensatz zum OODBMS-Ansatz, die evolutionäre Erweiterung bestehender relationaler Denkweise im Vordergrund. Dies garantiert unter anderem auch die grössere Unabhängigkeit von Programmiersprachen (die bei OODBMS nicht gegeben ist). Grundlage dieser Evolution ist die Erkenntnis, dass Grundkonstrukte semantischer Datenmodelle und (abstrakte) Benutzerdatentypen nötig sind. Letzteres motiviert auch die Entwicklung einer (4GL-) Sprache für Methodenund Anwendungsentwicklung. Oftmals charakterisiert man ORDBMS mit: ORDBMS = RDBMS + OODBMS Objektrelationale Erweiterungen sind im aktuellen SQL-Standard SQL:1999 (oft auch SQL-99 oder SQL3 genannt) enthalten Ziel: Vorteile von objektorientierten Konzepten einführen, ohne gleichzeitig die bewährten SQL-Konzepte aufzugeben SQL:2003: Erweiterung um zusätzliche objektrelationale Features
21 ORDBMS und SQL:1999 Übersicht Typsystemerweiterung: Erweiterbarkeit, objektorientierte Konzepte Typkonstruktoren für strukturierte Attribute (komplexe Werte) damit Aufgabe der ersten Normalform des Relationenmodells Tupeltypen (ROW Types) Kollektionstypen (Mengen, Multimengen, Listen, Arrays) Benutzerdefinierte Datentypen (UDT) Referenzdatentyp (REF) Subtypen und Subtabellen damit Verwendung objektorientierter Konstrukte bzw. OODBMS-Konstrukten Neue vordefinierte Datentypen Boolean, Binary Large Objects, Character Large Objects Rekursion (Berechnen der transitiven Hülle) Call Level Interface (CLI) dynamisches SQL Erweiterung von SQL zu voller Programmiersprache Trigger: Integrität und Unterstützung aktiver Datenbanken Rollen (roles) für verbesserte Autorisierung Data Warehousing-Operationen 2-41 Die wichtigsten Typen in SQL:1999 Ausgangspunkt: Tabellendefinition (CREATE TABLE): Definition von Zeilen implizit (wie bisher), d.h. durch Angabe eines Schemas explizit durch Row-Typdefinition Definition von Spalten durch vordefinierte Standarddatentypen (wie bisher) durch konstruierte Typen Typkonstruktoren: ROW / REF / ARRAY MULTISET (in SQL:2003) durch benutzerdefinierte Typen (user-defined data types, UDT) aufbauend auf vordefinierten, konstruierten, und/oder bereits existierenden benutzerdefinierten Typen Tabellen sind die einzigen Einstiegspunkte in die Datenbank Instanzen von Typen, die innerhalb einer Tabelle vorkommen, sind automatisch persistent
22 Erweiterte Tupeltabellen Die einfachste Form von Tabellen in ORDBMS wird als erweiterte Tupeltabelle bezeichnet. Erweiterte Tupeltabellen können neben Basisdatentypen in den Spalten folgende Typen verwenden Tupel Kollektionstypen (Mengen, Multimengen, Listen, Arrays) Tabellen (Multimengen von Tupeln) Eingebettete Objekte (strukturierte Werte) Referenzen (referenzierte Objekte) Large Objects (LOBs) Beispiel: Mitarbeiter (erweiterte Tupeltabelle mit nicht-atomaren Attributen) Name Adresse <Strasse, PLZ, Ort> Hobbys Bewerbung Dienstwagen Foto VARCHAR ROW(VARCHAR, INT, VARCHAR) SET(VARCHAR) Dossier(...) REF(Auto) SCOPE Wagen BLOB 'Urs' ROW('Rheinblick', 4004, 'Basel') SET('Literatur', 'Hornussen') Dossier(...) X' ' X'...' atomare Spalte tupelwertige Spalte mengenwertige Spalte objektwertige Spalte referenzwertige Spalte LOB- Spalte 2-43 Typisierte Tabellen (Objekttabellen) Typisierte Tabellen (auch Objekttabellen genannt) werden über einen benutzerdefinierten Typ definiert Die Zeilen in einer solchen Tabelle entsprechen den einzelnen Objekten des benutzerdefinierten Typs (in der Terminologie der Objektorientierung entspricht eine Objekttabelle dem Extent einer Klasse). Auf einzelnen Zeilen (Objekten) können (benutzerdefinierte) Methoden aufgerufen werden Neben den eigentlichen Objekten wird in einer zusätzlichen Spalte noch deren Objekt-ID (OID) verwaltet. Diese wird für Referenzen auf einzelne Objekte benötigt. benutzerdefinierter Typ (Objekttyp) Wagen (Objekttabelle) OID Hersteller Fotos Farbe PS Motor VARCHAR VARCHAR SET(BLOB) VARCHAR INTEGER Object(...) X' ' 'Lada Nova' SET(X'...', X'...') 'Braun' 33 Object(...) OID-Spalte strukturierter Wert (Objektwert)
23 Definition von strukturierten Typen Strukturierte Typen bieten die Möglichkeit zur Spezifikation benutzerdefinierter Typen CREATE TYPE Typname AS ( Attributdefinitionsliste ) [[NOT] INSTANTIABLE] [[NOT] FINAL] [Referenzgenerierungsart] [Methodendeklarationsliste]; CREATE TYPE AddressType AS ( Strasse VARCHAR(30), Ort VARCHAR(40), PLZ INTEGER, Land VARCHAR(25) ) NOT FINAL; vordefinierte Basistypen CREATE TYPE PersonType AS ( Name VARCHAR(30), Anschrift AddressType, Ehepartner REF(PersonType), Kinder REF(PersonType) ARRAY[10] ) NOT FINAL; Subtypen sind möglich benutzerdefinierter Typ konstruierte Typen 2-45 Definition von strukturierten Typen Objektverhalten kann in Methoden kodiert werden Methoden sind Funktionen, die sich auf genau einen strukturierten Typen beziehen Beispiel für eine Methodendeklaration: CREATE TYPE PersonType ( Name VARCHAR(30), Anschrift AddressType, Ehepartner REF(PersonType), Kinder REF(PersonType) ARRAY[10] ) NOT FINAL METHOD AnzahlKinder() RETURNS INTEGER; Realisierung über prozedurale SQL-Spracherweiterungen Überladen: Methodennamen können überladen werden Überschreiben: Methoden können in Subtypen überschrieben werden dynamisches Binden (Auswahl der Implementierung) zur Laufzeit
24 Kapselung von strukturierten Typen Attribute werden vollständig gekapselt für jedes Attribut werden automatisch Observer- und Mutator-Methoden generiert (für get bzw. set der Attributwerte) Observer: METHOD Strasse(AddressType) RETURNS VARCHAR(30); METHOD Ort(AddressType) RETURNS VARCHAR(40); METHOD Plz(AddressType) RETURNS INTEGER; METHOD Land(AddressType) RETURNS VARCHAR(25); Mutator: METHOD Strasse(AddressType, VARCHAR(30)) RETURNS AdressType; METHOD Ort(AddressType, VARCHAR(40)) RETURNS AdressType; METHOD Plz(AddressType,INTEGER) RETURNS AdressType; METHOD Land(AddressType, VARCHAR(25)) RETURNS AdressType; 2-47 Attributzugriff bei Instanzen strukturierter Typen Zugriff auf Attribute ist neben den Observer-Methoden auch über einen Dot-Operator möglich Lesen des Attributwerts: X.Attributname liefert Attribut von Objekt X Setzen des Attributwerts: SET X.Attributname = Wert Pfadausdrücke (navigierende Zugriffe) sind realisierbar durch wiederholte Anwendung des Dot-Operators Beispiel: BEGIN... DECLARE p PersonType; SET p = PersonType(); /* Konstruktor */ SET p.name = Harry Hasler ; SET p.anschrift.ort = Schwamendingen ;... END;
25 Definition von typisierten Tabellen Typisierte Tabellen (Objekttabellen) basieren auf einem strukturierten Typen Instanzen (Zeilen) sind Objekte dieses Typs CREATE TABLE Tabellenname OF Typname ( REF IS OID-Spalte [Referenzgenerierungsart] [, Spaltenoptions- bzw. Tabellenbedingungsliste] ); Beispiel: CREATE TABLE (REF IS oid Ehepartner Kinder Personen OF PersonType SYSTEM GENERATED, WITH OPTIONS SCOPE Personen, WITH OPTIONS SCOPE Personen); Referenzklausel (hier mit SYSTEM GENERATED) bestimmt die Art der Referenzgenerierung (OID-Erzeugung) Scope-Klausel muss für jedes Referenzattribut definiert werden Bestimmt typisierte Tabelle, auf dessen Instanzen referenziert wird 2-49 Definition von Tupeltypen (ROW Types) Ein Tupeltyp besteht aus einer Sequenz von Attribut/Datentyp-Paaren und ist eingebettet innerhalb von Typ- oder Tabellendefinitionen Beispiel: CREATE TABLE PersonenTupelTabelle ( Name ROW ( Vorname VARCHAR(15), Nachname VARCHAR(15)), Anschrift ROW ( Strasse VARCHAR(30), Ort VARCHAR(40), PLZ INTEGER, Land VARCHAR(25)) );
26 Typhierarchie Typhierarchien erlauben die Vererbung von Attributen und Methoden (Sub-/Supertyp-Beziehung) CREATE Type Subtypname UNDER Supertypname AS ( Attributdefinitionsliste ) [[NOT] INSTANTIABLE] [Methodendeklarationsliste]; [[NOT] FINAL] Beispiel: Mitarbeiter als spezielle Personen CREATE TYPE EmployeeType UNDER PersonType AS ( PNr INTEGER, Bewerbung CLOB(50K), Bild BLOB(5M), Vorgesetzter REF(EmplpoyeeType), Projekte REF(ProjectType) ARRAY[10], Gehalt Franken ) NOT FINAL METHOD Gehaltserhöhung() RETURNS Franken; Mehrfachvererbung ist nicht möglich (es gibt maximal einen direkten Supertyp) 2-51 Beispiel: Definition von SQL-Methoden CREATE METHOD AnzahlKinder() RETURNS INTEGER FOR PersonType RETURN CARDINALITY(SELF.Kinder); CREATE METHOD Gehaltserhöhung RETURNS Franken FOR EmployeeType BEGIN DECLARE altesgehalt Franken; SET altesgehalt = SELF.Gehalt; IF (SELF.AnzahlKinder < 3) OR (SELF.AnzahlProjekte < 2) THEN SET SELF.Gehalt = 1,03 * altesgehalt; ELSE SET SELF.Gehalt = 1,05 * altesgehalt; ENDIF IF (SELF.Gehalt > ) THEN SIGNAL 'Gehalt zu hoch'; RETURN SELF.Gehalt; END;
27 Tabellenhierarchie Die Tabellenhierarchie erlaubt extensionale Teilmengen-Beziehungen zwischen Sub- und Supertabelle Alle Instanzen einer Subtabelle sind auch Instanzen der zugehörigen Supertabelle(n) CREATE TABLE Tabellenname OF Typname UNDER Supertabellenname ( [, Spaltenoptions- bzw. Tabellenbedingungsliste] ); CREATE TABLE Mitarbeiter OF EmployeeType UNDER Personen (Vorgesetzter WITH OPTIONS SCOPE Mitarbeiter, Projekte WITH OPTIONS SCOPE Projekt); Der Typ der Subtabelle muss ein direkter Subtyp des Typs der Supertabelle sein 2-53 Beispiel: typisierte Tabellen und Subtabellen Personen OF PersonType OID Name Anschrift Ehepartner Kinder VARCHAR VARCHAR AddressType REF(PersonType) Mitarbeiter OF EmployeeType UNDER REF(PersonType) ARRAY[10] OID Name Anschrift Ehepartner Kinder PNr Bewerbung... Gehalt VARCHAR VARCHAR Address Type REF(Person Type) REF(PersonType) ARRAY[10] INTEGER CLOB... Franken
28 Einfügeoperationen INSERT INTO Personen VALUES ('Hasler', AddressType().Strasse('Luegislandstrasse 12').Ort( 'Zürich').PLZ(8051).Land('CH'), NULL, NULL); erzeugt eine Person INSERT INTO Mitarbeiter VALUES ('Harry', AddressType().Strasse('Rosswiesen 7').Ort( 'Zürich').PLZ(8051).Land('CH'), NULL, NULL, 1234, NULL, NULL, NULL, Franken(5000)); erzeugt einen Mitarbeiter INSERT INTO Mitarbeiter VALUES ('Moritz', AdressTyp().Strasse('Claragraben 22').Ort( 'Basel').PLZ(4051).Land('CH'), NULL, NULL, 6789, NULL, NULL, (SELECT oid FROM Mitarbeiter WHERE Name = 'Harry'), Franken(3500)); erzeugt einen Mitarbeiter Setzen einer Objektreferenz 2-55 ORDBMS: Beispielanfragen SELECT * FROM Personen; SELECT * FROM Mitarbeiter; SELECT * FROM ONLY(Personen); SELECT * FROM Mitarbeiter WHERE Vorgesetzter->Name = 'Harry'; gibt alle Personen zurück, auch die Mitarbeiter gibt alle Mitarbeiter zurück gibt nur die Personen zurück, die keine speziellen Personen (z.b. Mitarbeiter) sind Dereferenzierung über Pfeil-Operator -> SELECT * FROM Mitarbeiter WHERE Vorgesetzter->Anschrift.PLZ = 8051; Dereferenzierung mit anschliessendem Komponentenzugriff SELECT DEREF(Ehepartner) FROM Mitarbeiter; Dereferenzierung mittels DEREF-Operator
29 in der SELECT-Klausel Methoden-/Funktionsaufrufe SELECT FROM Anzahl(Projekte) Mitarbeiter; liefert einen Wert in der WHERE-Klausel SELECT Name FROM Mitarbeiter WHERE Grossverdiener(Gehalt); liefert TRUE oder FALSE in der FROM-Klausel SELECT Name FROM GuteMitarbeiter(); liefert eine Menge von Mitarbeitertupeln SQL:1999 unterstützt diese Variante nicht! 2-57 Vergleich: SQL-92 SQL:99 SQL:2003 SQL-92 Tupeltabellen Basistabellen zur Speicherung von Daten Sichten (Views): abgeleitete Tabellen Typ eines Attributs ist ein Basisdatentyp (1NF) Zeilen (Tupel) setzen sich aus Instanzen der jeweiligen Wertebereiche zusammen MULTISET ROW Basisdatentypen INTEGER, SMALLINT, NUMERIC, DECIMAL, REAL, FLOAT, CHARACTER, DATE, TIME, BIT,... Basisdatentyp Integritätsbedingungen Primär-/Fremdschlüssel, Check-Klauseln Assertions: Bedingungen über mehrere Tabellen Zugriffsrechte (Grants)
30 Vergleich: SQL-92 SQL:99 SQL:2003 SQL:99 (in 1999 verabschiedete Erweiterung von SQL-92; teilweise bereits seit längerer Zeit in kommerziellen DBMS implementiert) SET MULTISET OBJECT ROW ARRAY REF Basisdatentyp Einstiegspunkte in die Datenbank: Typisierte Tabelle: SET(OBJECT(...)) Untypisierte Tabelle: MULTISET(ROW(...)) Subtypbeziehung Untermengenbeziehung Quelle: C. Türker: SQL:99 und SQL:2003. dpunkt.verlag, Vergleich: SQL-92 SQL:99 SQL:2003 SQL:2003 (in 2004 verabschiedete Erweiterung von SQL:99; Erweiterungen grösstenteils (noch) nicht implementiert) SET MULTISET OBJECT ROW MULTISET ARRAY REF Basisdatentyp Einstiegspunkte in die Datenbank: Typisierte Tabelle: SET(OBJECT(...)) Untypisierte Tabelle: MULTISET(ROW(...)) Subtypbeziehung Untermengenbeziehung Quelle: C. Türker: SQL:99 und SQL:2003. dpunkt.verlag,
31 CREATE TYPE AddressType AS ( Strasse VARCHAR(30), Ort VARCHAR(40), PLZ INTEGER, Land VARCHAR(25) ) NOT FINAL; Beispiel (Schema) CREATE TYPE PersonType AS ( Name VARCHAR(30), Anschrift AddressType, Ehepartner REF(PersonType), Kinder REF(PersonType) ARRAY[10] ) NOT FINAL; CREATE TABLE (REF IS oid Ehepartner Kinder Personen OF PersonType SYSTEM GENERATED, WITH OPTIONS SCOPE Personen, WITH OPTIONS SCOPE Personen); 2-61 Beispiel (Schema) CREATE TABLE PersonenTupelTabelle ( Name ROW ( Vorname VARCHAR(15), Nachname VARCHAR(15)), Anschrift ROW ( Strasse VARCHAR(30), Ort VARCHAR(40), PLZ INTEGER, Land VARCHAR(25)) ); CREATE TYPE ProjektType AS ( PName VARCHAR(30), Budget Number(10,2), Leiter REF(EmployeeType), Mitarbeiter REF(PersonType) MULTISET ) NOT FINAL;
32 Beispiel (Schema) CREATE TYPE EmployeeType UNDER PersonType AS ( PNr INTEGER, Bewerbung CLOB(50K), Bild BLOB(5M), Vorgesetzter REF(EmplpoyeeType), Projekte REF(ProjectType) ARRAY[10], Gehalt Franken ) NOT FINAL METHOD Gehaltserhöhung() RETURNS Franken; CREATE TABLE Mitarbeiter OF EmployeeType UNDER Personen (Vorgesetzter WITH OPTIONS SCOPE Mitarbeiter, Projekte WITH OPTIONS SCOPE Projekt); CREATE TABLE (REF IS oid Leiter Mitarbeiter Projekte OF ProjektType SYSTEM GENERATED, WITH OPTIONS SCOPE Mitarbeiter, WITH OPTIONS SCOPE Mitarbeiter); 2-63 Beispiel: Anfragen Wie lauten die Namen aller Projektleiter? Geben Sie die Namen, Wohnort und das Gehalt aller Mitarbeiter von Projekt ABC aus
33 Literatur G. Saake, C. Türker, I. Schmitt: Objektdatenbanken - Konzepte, Sprachen, Architekturen, International Thomson Publishing, 1997 A. Heuer: Objektorientierte Datenbanken - Konzepte, Modelle, Standards und Systeme, Addison-Wesley, 2. Auflage, 1997 C. Türker: SQL:1999 und SQL:2003. dpunkt.verlag, C. Türker, G. Saake: Objektrelationale Datenbanken. dpunkt.verlag, A. Geppert: Objektrelationale und objektorientierte Datenbanksysteme, dpunkt.verlag,
Kap. 6: Objektorientierte Datenmodelle (OODM) und der ODMG Standard: OQL
Kap. 6: Objektorientierte Datenmodelle (OODM) und der ODMG Standard: OQL Ziel dieses Kapitels: Grundbegriffe eines einfachen Objektmodells kennenlernen, dann Übergang zu einem Standard für eine Abfragesprache
MehrObjektrelationale Datenbanken
Vorlesung Datenbanksysteme vom 26.11.2008 Objektrelationale Datenbanken Konzepte objektrelationaler DBs SQL:1999 OO vs. OR Konzepte objektrelationaler Datenbanken Große Objekte (LOBs: Large Objects) Mengenwertige
MehrObjektrelationale und erweiterbare Datenbanksysteme
Objektrelationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 (Objekt-relationale Modellierung) In der Vorlesung werden nur die Folien 1-12 behandelt. Kapitel 14 1 Konzepte objekt-relationaler
MehrRelationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL
Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrMengenvergleiche: Alle Konten außer das, mit dem größten Saldo.
Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrModul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note:
1 Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007 Name: Note: Nr. Aufgaben Max. Punkte Erreichte Punkte 1 Grundlagen ~ 10% Vgl. Hinweis unten 2 Integrität, Procedures, Triggers, Sichten ~ 20%
MehrSQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar
Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-
MehrDATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER
DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.
Mehr2. Datenbank-Programmierung
2. Datenbank-Programmierung SQL ist eingeschränkt bezüglich der algorithmischen Mächtigkeit, z.b. Berechnung einer transitiven Hülle ist in Standard-SQL nicht möglich. Die Einschränkung ist von Bedeutung
MehrSQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I
SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit
MehrInformatik 12 Datenbanken SQL-Einführung
Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung
MehrSemantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung
6. Datenintegrität Motivation Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung nur sinnvolle Attributwerte (z.b. keine negativen Semester) Abhängigkeiten
Mehr3. Das Relationale Datenmodell
3. Das Relationale Datenmodell Das Relationale Datenmodell geht zurück auf Codd (1970): E. F. Codd: A Relational Model of Data for Large Shared Data Banks. Comm. of the ACM 13(6): 377-387(1970) DBMS wie
MehrNachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)
Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der
MehrSQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software
SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4
MehrSQL (Structured Query Language) Schemata Datentypen
2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente
MehrUniversität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5
Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B
Mehr7. Übung - Datenbanken
7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen
Mehrmit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007
6. Übung zur Vorlesung Datenbanken im Sommersemester 2007 mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 Aufgabe 1: Rekursion Betrachten Sie die folgende Tabelle
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrTU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.
TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 7 Übung zur Vorlesung Grundlagen: Datenbanken im WS13/14 Henrik Mühe (muehe@in.tum.de) http://www-db.in.tum.de/teaching/ws1314/dbsys/exercises/
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrDipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009
Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger
MehrSQL: statische Integrität
SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrDatenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Mehr5. Objekt-relationale Systeme 5.1. Erweiterungen des Relationalen Modells 5.2. SQL-Erweiterungen 5.3. MM-DB
5. Objekt-relationale Systeme 5.1. Erweiterungen des Relationalen Modells 5.2. SQL-Erweiterungen 5.3. MM-DB Beschränkungen des Relationalen Modells NF1: Atomare Attribute nicht erweiterbares Typkonzept
MehrVorlesung. Grundlagen betrieblicher Informationssysteme. Prof. Dr. Hans Czap. Email: Hans.Czap@uni-trier.de. Lehrstuhl für Wirtschaftsinformatik I
Vorlesung Grundlagen betrieblicher Informationssysteme Prof. Dr. Hans Czap Email: Hans.Czap@uni-trier.de - II - 1 - Inhalt Kap. 1 Ziele der Datenbanktheorie Kap. 2 Datenmodellierung und Datenbankentwurf
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrProzedurale Datenbank- Anwendungsprogrammierung
Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrDynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester
MehrWS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)
Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)
MehrOracle: Abstrakte Datentypen:
Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8
MehrSQL. Fortgeschrittene Konzepte Auszug
SQL Fortgeschrittene Konzepte Auszug Levels SQL92 Unterteilung in 3 Levels Entry Level (i.w. SQL89) wird von nahezu allen DBS Herstellern unterstützt Intermediate Level Full Level SQL DML 2-2 SQL92 behebt
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrProgrammieren Tutorium
Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,
MehrEinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrSQL objektorientiert
Dušan Petković SQL objektorientiert An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam Vorwort 11 Teil 1: Einführung 15
MehrKlausur Interoperabilität
Klausur 21. Juni 2012 9.30 11.00 Uhr Workflow Systems and Technology Group Fakultät für Informatik Universität Wien Univ.-Prof. Dr. Stefanie Rinderle-Ma Allgemeine Hinweise: Die Bearbeitungszeit beträgt
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrFactory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
MehrISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de
08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren
MehrSQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:
SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In
MehrHandbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen
MehrIn diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.
In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht
Mehr3. Stored Procedures und PL/SQL
3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln
MehrDBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt
DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller
Mehr5.3 Datenänderung/-zugriff mit SQL (DML)
5.3 Datenänderung/-zugriff mit SQL (DML) Hinweis: - DML-Anweisungen sind mengenorientiert - Mit einer Anweisungen kann mehr als ein Tupel eingefügt, geändert, gelöscht oder gelesen werden Benutzungs- und
MehrDatenmanagement in Android-Apps. 16. Mai 2013
Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer
MehrSchlüssel bei temporalen Daten im relationalen Modell
Schlüssel bei temporalen Daten im relationalen Modell Gesine Mühle > Präsentation > Bilder zum Inhalt zurück weiter 322 Schlüssel im relationalen Modell Schlüssel bei temporalen Daten im relationalen Modell
MehrMotivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.
Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de
MehrIV. Datenbankmanagement
Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrCORBA. Systemprogrammierung WS 2006-2007
CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrReferentielle Integrität
Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische
MehrFachbericht zum Thema: Anforderungen an ein Datenbanksystem
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank
MehrSQL und MySQL. Kristian Köhntopp
SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)
MehrGesicherte Prozeduren
Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrKlausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrProgrammierparadigmen
Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrKapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023
Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten
MehrUse Cases. Use Cases
Use Cases Eigenschaften: Ein Use Case beschreibt einen Teil des Verhaltens eines Systems aus externer Sicht (Formuliert in der der Fachsprache der Anwendung) Dies geschieht, indem ein Systemdialog beschrieben
MehrWhitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz
combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt
MehrEin Ausflug zu ACCESS
Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrGliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme
Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Einführung Sprachmittel Sommer 2011, 20. Juni 2011,
MehrÜbung Datenbanken in der Praxis. Datenmodifikation mit SQL
Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern
MehrWhitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube 30 78462 Konstanz
combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Einbindung externer FiBu-/Warenwirtschaftsdaten Einbindung externer FiBu-/Warenwirtschaftsdaten - 2 - Inhalt Ausgangssituation
MehrLabor 3 - Datenbank mit MySQL
Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrDatenbankentwurf. 4.2 Logischer Entwurf. Kapitel 4. ER-Modell. Umsetzung. Entwurfsdokumentation. relationales Modell. Verbesserung
4.2 Logischer Entwurf Datenbankentwurf 4.2 Logischer Entwurf 2002 Prof. Dr. Rainer Manthey Informationssysteme Logischer Entwurf: Einordnung Entwurfsdokumentation logische Strukturen "auf dem Papier" konzeptueller
MehrAllgemeines zu Datenbanken
Allgemeines zu Datenbanken Was ist eine Datenbank? Datensatz Zusammenfassung von Datenelementen mit fester Struktur Z.B.: Kunde Alois Müller, Hegenheimerstr. 28, Basel Datenbank Sammlung von strukturierten,
Mehr