Vorlesung Datenbank-programmierung - PowerPoint PPT Presentation

1 / 36
About This Presentation
Title:

Vorlesung Datenbank-programmierung

Description:

Title: Vorlesung Datenbank-programmierung Author: David Schiffer Last modified by: David Schiffer Created Date: 10/1/2006 5:10:25 PM Document presentation format – PowerPoint PPT presentation

Number of Views:98
Avg rating:3.0/5.0
Slides: 37
Provided by: DavidSc54
Category:

less

Transcript and Presenter's Notes

Title: Vorlesung Datenbank-programmierung


1
Vorlesung Datenbank-programmierung
  • Wintersemester 06/07
  • Dipl.-Ing.(FH) David Schiffer

Nicht verwandt!
2
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

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

4
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é ???

5
Themen der Vorlesung (1)
Zugriff auf Datenbanken Über sog. APIs
6
Themen der Vorlesung (2)
Zusatzprogramme innerhalb von Datenbanken
  • Stored Procedures
  • Stored Functions
  • Trigger

7
Motivation für Datenbankprogrammierung
8
Beziehungen zu anderen Fächern
Programmieren
Objektorientierte Programmierung
Datenbanksysteme
eBusiness
Client-Server
Datenbankprogrammierung
Objektorientierte Datenbanken
Middleware
Internet 2
9
Bestandteile einer DB-Anwendung
  • Schichten-Modell
  • Die Benutzerschnittstelle.  
  • Die Anwendungs- / Geschäftslogik.  
  • Die Datenbank-Schnittstelle.  
  • Die Vermittlungssoftware.  
  • Das Datenbank-Management-System. 
  • Der Datenspeicher

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

11
Zentralisierte DB Client-Server
12
Beispiel einer Terminal-Applikation(zentralisiert
e DB)
  • Warenwirtschaftssystem auf AS400

13
3-Tier Architektur
14
Multitier gt SOA
15
Fragestellung zu DB APIs
  1. Wie verwendet das Anwendungsprogramm die
    Funktionalität der Datenbank?
  2. Wie findet der Datenaustausch zwischen Anwendung
    und Datenbank statt?
  3. Wie wird eine Ergebnismenge der Datenbank an die
    Anwendung übergeben?
  4. Zu welchem Zeitpunkt findet welche Aktion der
    Datenbank statt?
  5. Wie kann man voll dynamische Abfragen an die
    Datenbank richten?
  6. Welche Art von Kopplung entsteht zwischen
    Anwendungsprogramm und Datenbank?

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

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

18
Impedance Missmatch
vs.
Relationen
Objekte
19
Cursor Konzept
  • Zur Umgehung des Impedance Missmatch

20
Verarbeitung einer SQL-Abfrage
21
Stored Procedures (1)Was sind SPs?
  • Gespeicherte Programmteile
  • Datenbankobjekte
  • Vom DB-Benutzer definiert
  • Werden im DB-Server-Prozess ausgeführt
  • Erweitern die Funktionalität des DBMS

22
Stored Procedures (2)Wozu dienen SPs?
  • 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

23
Stored Procedures (3)Wer bietet SPs?
  • 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)

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

25
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

26
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

27
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
28
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.yyy
y')to_char(sysdate,'dd.mm.yyyy') then
if curCarrowcount lt 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 if END
29
Stored Procedures (9)Beispiel Ausnahmebehandlung
  • Benutzerdefinierte Ausnahmendeclare ausnahme1
    exception ... begin ... raise ausnahme1
    ...exception when ausnahme1 then ltaktiongtend
  • Daten-Ausnahmen (vordefiniert), z. B. when
    data_not_foundwhen max_open_cursors

30
Trigger (1)Aufbau
Vergleichbar mit Stored Procedure
CREATE OR REPLACE TRIGGER lttrigger_namegt
BEFOREAFTER INSERTDELETEUPDATE ON
lttable_namegt REFERENCING NEW AS
ltnew_row_namegt OLD AS ltold_row_namegt
FOR EACH ROW WHEN (lttrigger_conditiongt)
lttrigger_bodygt
31
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_b
iu (_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 lt 5000 or
new.gehalt lt 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 ltvariablegt" im Trigger-Body
cursor c_name is select name', 'vorname
from mitarbeiter
where mitarbeiternummer NEW.MITARBEITERNR
32
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 --gt Fehler wird in der Regel
bis zur Anwendung hochgereicht -- Exception-Nr
-20000 - -29999 können selbst definiert werden
IF NEW.GEHALT lt 5000 THEN
RAISE_APPLICATION_ERROR(-20901,'Manager Gehalt
für Mitarbeiter v_mitarbeiter_name ' zu
klein!') END IF IF NEW.GEHALT lt
OLD_GEHALT THEN RAISE_APPLICATION_ERROR(-2090
2,'Gehaltskürzung für Mitarbeiter
v_mitarbeiter_name ' nicht erlaubt!') END
IF END
33
Embedded-SQL Beispiel
include ltstdio.hgt EXEC SQL INCLUDE SQLCA void
main( void ) EXEC SQL BEGIN DECLARE
SECTION char Author81 char Title81 char
ISBN14 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
34
ODBC abstrahiert proprietäre APIs
  • proprietär

35
ODBC abstrahiert proprietäre APIs
  • ODBC

36
ODBC ein Bridge Pattern
  • Vgl. Software-Engineering (Design-Pattern /
    Entwurfsmuster)
Write a Comment
User Comments (0)
About PowerShow.com