Vorlesung Datenbank-programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Einführung "Datenbanksysteme"
Advertisements

Object Relational Mapping
Objektrelationales Mapping mit JPA
Datenbanken Einführung.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
2. DB-API: Programmierschnittstellen zu Datenbanken
1 Prof. Dr. Andreas SchmietendorfWS06/07 – Labor C/S-Programmierung Übung 4 Mehrstufige Client/Server-Systeme mit JSPs, Servlets und JavaBeans (Web-Container)
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Datenbanken I (0,*) Produkt 3 Karczewski Datenbanken I.
SendEplanung Datenbank
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
FH-Hof DBS II: Übersicht über die Vorlesung Richard Göbel.
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
Access 2000 Datenbanken.
Datenintegrität Referentielle Integrität create table
Einführung Dateisystem <-> Datenbanksystem
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Client / Server Architektur
Uwe Habermann Venelina Jordanova VFP Code in Silverlight Anwendungen ausführen.
Einführung und Überblick
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
... und alles was dazugehört
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Anbindung an Programmiersprachen (1/2) Prinzip und Zielsetzung der Sprachanbindungen.
MYSQL Von Rahan Bölzer.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Sesame Florian Mayrhuber
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #8 Wiederholung: Referentielle Integrität/ Embedded SQL.
Allgemeines zu Datenbanken
Freiwillige Feuerwehr der Stadt Perg
Vorlesung #10 Physische Datenorganisation
XML und Datenbanken © 2006 Markus Röder
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
SQL Server nach MySQL Datenbank-Migration SQLWays – Software für Migration Präsentation Copyright (c) Ispirer Systems Ltd. Alle.
Datenbankanbindung mit
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Einführung Dateisystem <-> Datenbanksystem
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Datenbank System (DBS) - Warum?
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Datenbanken und Internet
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
Oracle IFS Die Brücke zwischen Content Management System und einer Produktpräsentation im Internet.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Vorlesung #8 SQL (Teil 5).
Vorlesung Datenbankprogrammierung
Einführung "Datenbanksysteme"
Von Wietlisbach, Lenzin und Winter
 Präsentation transkript:

Vorlesung Datenbank-programmierung Wintersemester 06/07 Dipl.-Ing.(FH) David Schiffer Nicht verwandt!

Organisation Erst 3 x Vorlesung, dann Übungen Übungen am Rechner 2 Gruppen, abwechselnd 2 wöchentlich Übungsteams von 2 bis 3 Studenten Schein für Lösungen der Übungsaufgaben ca. 3 Übungsaufgaben im Semester Kontrolle durch Vorführen Wer will, kann alle Übungen in der 1. Übungsstunde vorführen

Regeln Wer Fragen hat fragt Wer quatschen will quatscht Aber draußen Um den Schein zu bestehen müssen: ALLE Übungen vorgeführt werden! ALLE Übungen verstanden sein!

Inhaltsübersicht Datenbankprogrammierung Einleitung Beziehung zu anderen Fächern Client-Server Prinzip Anwendungsentwicklung: Zugriff auf DBn, APIs JDBC ADO.NET embedded SQL ODBC Proprietäre Datenbankschnittstellen Zusatzprogramme in DB Stored Procedures Functions Trigger Objekt-relationale DBn Methoden Oracle 9i Evtl. Caché verwendete Datenbanken Oracle MySQL ? DB2 ? Access ??? Caché ???

Themen der Vorlesung (1) Zugriff auf Datenbanken Über sog. API‘s

Themen der Vorlesung (2) Zusatzprogramme innerhalb von Datenbanken Stored Procedures Stored Functions Trigger

Motivation für Datenbankprogrammierung

Beziehungen zu anderen Fächern Programmieren Objektorientierte Programmierung Datenbanksysteme eBusiness Client-Server Datenbankprogrammierung Objektorientierte Datenbanken Middleware Internet 2

Bestandteile einer DB-Anwendung Schichten-Modell Die Benutzerschnittstelle.   Die Anwendungs- / Geschäftslogik.   Die Datenbank-Schnittstelle.   Die Vermittlungssoftware.   Das Datenbank-Management-System.  Der Datenspeicher

Datenbank Architekturen Zentralisierte Datenbank-Systeme Client-Server-Datenbanken Desktop-Datenbanken 3-Tier (Multitier) -Architektur

Zentralisierte DB & Client-Server

Beispiel einer Terminal-Applikation (zentralisierte DB) Warenwirtschaftssystem auf AS400

3-Tier Architektur

Multitier => SOA

Fragestellung zu DB API‘s Wie verwendet das Anwendungsprogramm die Funktionalität der Datenbank? Wie findet der Datenaustausch zwischen Anwendung und Datenbank statt? Wie wird eine Ergebnismenge der Datenbank an die Anwendung übergeben? Zu welchem Zeitpunkt findet welche Aktion der Datenbank statt? Wie kann man voll dynamische Abfragen an die Datenbank richten? Welche Art von Kopplung entsteht zwischen Anwendungsprogramm und Datenbank?

Coddschen Regeln (1) Regel 1: The Information Rule (Darstellung von Informationen): Regel 2: Guaranteed Access Rule (Zugriff auf Daten): Regel 3: Systematic Treatment of Null Values (Systematische Behandlung von Nullwerten): Regel 4: Dynamic On-line Catalog Based on the Relational Model (Forderung nach einem Online-Datenkatalog (data dictionary) in Form von Tabellen): Regel 5: Comprehensive Data Sublanguage Rule (Abfragesprache): Regel 6: View Updating Rule (Aktualisierung von Sichten):

Coddschen Regeln (2) Regel 7: High-level Insert, Update, and Delete (Abfragen und Bearbeiten ganzer Tabellen): Regel 8: Physical Data Independence (Physikalische Datenunabhängigkeit): Regel 9: Logical Data Independence (Logische Datenunabhängigkeit): Regel 10: Integrity Independence (Unabhängigkeit der Integrität): Regel 11: Distribution Independence (Verteilungsunabhängigkeit): Regel 12: Nonsubversion Rule (Kein Unterlaufen der Abfragesprache):

Impedance Missmatch vs. Objekte Relationen

Cursor Konzept Zur Umgehung des Impedance Missmatch

Verarbeitung einer SQL-Abfrage

Stored Procedures (1) Was sind SP‘s? Gespeicherte Programmteile Datenbankobjekte Vom DB-Benutzer definiert Werden im DB-Server-Prozess ausgeführt Erweitern die Funktionalität des DBMS

Stored Procedures (2) Wozu dienen SP‘s? Erweiterung der Funktionalität von DBMSn wenn die Möglichkeiten von SQL nicht genügen u. wenn eine Verarbeitung am Server sinnvoller ist Trigger um die DB konsistent zu halten um mehr semantische Information zu definieren Methoden von Objekten bei objekt-relationalen DBn

Stored Procedures (3) Wer bietet SP‘s? Große DBMS bieten Stored Procedures, z. B. IBM DB2 Microsoft SQL-Server, Sybase Oracle Caché PostgreSQL, MySQL (eingeschränkt seit Version 5) ... Stored Procedures werden nicht unterstützt von File-Server Datenbanken (z. B. Access)

Stored Procedures (4) Wann SP‘s (nicht) verwenden? Nur dann, wenn nur 1 DBMS-Typ unterstützt werden muss SP‘s können Performance bringen SP‘s können zur Entkopplung der Anwendung von der DB-Struktur genutzt werden Besser: DAO-Schicht einführen Die Verwendung von SP‘s ist eine grundsätzliche Designentscheidung - und eine Glaubensfrage

Stored Procedures (5) Bei Oracle Programmiersprache PL/SQL C, C++ und JAVA sind auch möglich PL/SQL ist typenstrenge Programmiersprache Cursor verbinden SQL mit prozeduraler Verarbeitung Besondere Konstrukte für Datenzugriff for cursor loop Datensatztyp-Deklaration Collection-Typen

Stored Procedures (6) Bei Oracle - Aufbau Deklarationsteil Deklaration von Variablen, Cursor, Collections, ... Ausführungsteil Programmierung des Algorithmus Transaktionssteuerung Ausnahmebehandlung Reaktionen auf Fehler werden hier zusammengefasst Damit wird GOTO vermieden

Stored Procedures (7) Beispiel: Deklarationsteil create or replace function Leihe (resID in number) return varchar2 as   varKundeID NUMBER; varModellID NUMBER; varBeginn DATE; varEnde DATE; varStartKm NUMBER; varKennzeichen CHAR(10); CURSOR curReservierung IS SELECT KundeID, ModellID, Beginn, Ende FROM Reservierung WHERE ID = resID;

Stored Procedures (8) Beispiel: Ausführungsteil BEGIN /* Reservierung mit der ReservierungsID holen */ OPEN curReservierung; FETCH curReservierung INTO varKundeID, varModellID, varBeginn, varEnde; /* Prüfen ob die abgerufene Reservierung mit dem heutigen Datum übereinstimmt */ if to_char(varBeginn,'dd.mm.yyyy')=to_char(sysdate,'dd.mm.yyyy') then if curCar%rowcount <= 0 then return ('Kein freies Auto !!!'); end if; /* Auto ist verfügbar – reserv. in leihe umwandeln, Eintrag in Leihvertrag einfügen */ Insert Into leihvertrag (id, kundeid, autoid, beginn, ende, startkm) values(leihseq.nextval, varKundeID, varKennzeichen, varBeginn, varEnde, varStartKm); return varKennzeichen; else return ('Reservierung ist nicht von Heute !!!!'); END;

Stored Procedures (9) Beispiel: Ausnahmebehandlung Benutzerdefinierte Ausnahmen declare ausnahme1 exception; ... begin ... raise ausnahme1 ... exception when ausnahme1 then <aktion> end; Daten-Ausnahmen (vordefiniert), z. B. when data_not_found when max_open_cursors

Vergleichbar mit Stored Procedure Trigger (1) Aufbau Vergleichbar mit Stored Procedure CREATE [OR REPLACE] TRIGGER <trigger_name> {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON <table_name> [REFERENCING [NEW AS <new_row_name>] [OLD AS <old_row_name>]] [FOR EACH ROW [WHEN (<trigger_condition>)]] <trigger_body>

Trigger (2) Beispiel: Deklarationsteil CREATE TRIGGER mitarbeiter_trig_gehalt_biu BEFORE INSERT OR UPDATE OF gehalt ON mitarbeiter FOR EACH ROW -- Triggername mitarbeiter_trig_gehalt_biu (_biu steht für B-efore I-nsert U-pdate ) -- Tabelle: MITARBEITER -- Trigger soll nur ziehen, wenn Gehalt kleiner 5000 ist oder Neues Gehalt kleiner altem Gehalt -- in der folgenden WHEN erfolgt der Zugriff auf :old und :new OHNE vorangestellte : WHEN (new.gehalt <= 5000 or new.gehalt < old.gehalt) DECLARE v_mitarbeiter_name VARCHAR2(255):=null; -- Cursor holt "Name, Vorname" von Mitarbeitertabelle -- Explizite Definition des Cursors hat -- Performance-Vorteile gegen "select into <variable>" im Trigger-Body cursor c_name is :select name||', '||vorname from mitarbeiter where mitarbeiternummer = :NEW.MITARBEITERNR;

Trigger (3) Beispiel: Ausführungsteil BEGIN -- Mitarbeiter-Name ermitteln und in Variable v_mitarbeiter_name speichern open c_name; fetch c_name into v_mitarbeiter_name; close c_name; -- Bei Gehalt kleiner 5000 Exception auslösen --> Fehler wird in der Regel bis zur Anwendung hochgereicht -- Exception-Nr -20000 - -29999 können selbst definiert werden IF :NEW.GEHALT <= 5000 THEN RAISE_APPLICATION_ERROR(-20901,'Manager Gehalt für Mitarbeiter‚ || v_mitarbeiter_name || ' zu klein!'); END IF; IF :NEW.GEHALT < :OLD_GEHALT THEN RAISE_APPLICATION_ERROR(-20902,'Gehaltskürzung für Mitarbeiter‚ || v_mitarbeiter_name || ' nicht erlaubt!'); END;

Embedded-SQL Beispiel #include <stdio.h> EXEC SQL INCLUDE SQLCA; void main( void ) { EXEC SQL BEGIN DECLARE SECTION; char Author[81]; char Title[81]; char ISBN[14]; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO "azamon" USER "dba" IDENTIFIED BY "sql"; strcpy( ISBN, "0-87930-480-4" ); EXEC SQL SELECT Author, Title, ISBN INTO :Author, :Title, :ISBN FROM Books WHERE ISBN = :ISBN; printf( "%s: %s ISBN %s\n", Author, Title, ISBN ); EXEC SQL DISCONNECT ALL; }

ODBC abstrahiert proprietäre API‘s

ODBC abstrahiert proprietäre API‘s

ODBC ein Bridge Pattern Vgl. Software-Engineering (Design-Pattern / Entwurfsmuster)