Grenzen des relationalen Datenmodells

Größe: px
Ab Seite anzeigen:

Download "Grenzen des relationalen Datenmodells"

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

Mehr

Objektrelationale Datenbanken

Objektrelationale 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

Mehr

Objektrelationale und erweiterbare Datenbanksysteme

Objektrelationale 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

Mehr

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Relationales 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

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note:

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

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

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

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Mehr

2. Datenbank-Programmierung

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

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL 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

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 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

Mehr

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Semantische 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

Mehr

3. Das Relationale Datenmodell

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

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

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

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL 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

Mehr

SQL (Structured Query Language) Schemata Datentypen

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

Mehr

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

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

Mehr

7. Übung - Datenbanken

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

Mehr

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

mit 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

TU 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. 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/

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Vorkurs C++ Programmierung

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

Mehr

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009

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

Mehr

SQL: statische Integrität

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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

Mehr

Objektbasierte Entwicklung

Objektbasierte 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

Grundlagen von Python

Grundlagen 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

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

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

Mehr

Einführung in die Java- Programmierung

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

Mehr

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

Mehr

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

Mehr

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches 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

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

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

Mehr

Oracle: Abstrakte Datentypen:

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

Mehr

SQL. Fortgeschrittene Konzepte Auszug

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

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

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

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

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

Mehr

Programmieren Tutorium

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

Mehr

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

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

SQL objektorientiert

SQL 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

Mehr

Klausur Interoperabilität

Klausur 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

Mehr

Client-Server-Beziehungen

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

Mehr

Einführung in die Programmierung

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

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung 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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

Factory Method (Virtual Constructor)

Factory 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

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 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

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

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

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch 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

Mehr

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

Mehr

3. Stored Procedures und PL/SQL

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

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

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

Mehr

5.3 Datenänderung/-zugriff mit SQL (DML)

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

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement 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

Mehr

Schlüssel bei temporalen Daten im relationalen Modell

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

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

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

Mehr

IV. Datenbankmanagement

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

Mehr

Vererbung & Schnittstellen in C#

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

Mehr

Prinzipien Objektorientierter Programmierung

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

Mehr

C# im Vergleich zu Java

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

Mehr

CORBA. Systemprogrammierung WS 2006-2007

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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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

Mehr

Referentielle Integrität

Referentielle 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

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht 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

Mehr

SQL und MySQL. Kristian Köhntopp

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

Mehr

Gesicherte Prozeduren

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

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. 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:

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur 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

Mehr

Modellierung und Programmierung 1

Modellierung 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; {

Mehr

Objektorientierte Programmierung

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

Mehr

Programmierparadigmen

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

Mehr

Assoziation und Aggregation

Assoziation 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

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

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

Mehr

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

Mehr

Use Cases. Use Cases

Use 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

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

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

Mehr

Ein Ausflug zu ACCESS

Ein 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

Mehr

SEP 114. Design by Contract

SEP 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

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

Mehr

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

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

Ü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

Mehr

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube 30 78462 Konstanz

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

Mehr

Labor 3 - Datenbank mit MySQL

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

Mehr

Modul 122 VBA Scribt.docx

Modul 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

Mehr

Datenbankentwurf. 4.2 Logischer Entwurf. Kapitel 4. ER-Modell. Umsetzung. Entwurfsdokumentation. relationales Modell. Verbesserung

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

Mehr

Allgemeines zu Datenbanken

Allgemeines 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