SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Datenbank-programmierung
Advertisements

Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Datenintegrität, Views und Zugriffsrechte
SQL::Geschichte/Normen (Übersicht)
Grundlagen Datenbanken
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.
SQL als Abfragesprache
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.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Kapitel 9: Integritätssicherung
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
2.2 Definition eines Datenbankschemas (SQL-DDL)
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
Datenbankentwicklung IV-LK
SS 2013 – IBB4B Datenmanagement Fr 17:00 – 18:30 R Vorlesung #5 Relationale Entwurfstheorie.
Datenintegrität Integitätsbedingungen Schlüssel
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #10 Physische Datenorganisation.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
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)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
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.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Datenbanksysteme für hörer anderer Fachrichtungen
Vorlesung #10 Physische Datenorganisation
Relationales Datenmodell und DDL
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Structured Query Language
11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: Überwachen prozeduraler Abhängigkeiten Effekte.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
SQL-Prozeduren Charakteristika: Kapselung von SQL-Anweisungen in Prozeduren, die wiederholt aufgerufen werden können. Dazu Verbergen parametrisierter SQL-
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
SS 2015 – IBB4C Datenmanagement Fr 17:00 – 18:30 R Vorlesung #1 Datenmanagement.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #7 SQL (Teil 4).
Vorlesung #8 SQL (Teil 5).
 Präsentation transkript:

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)2 Fahrplan Besprechung der Übungsaufgaben Einschub: CONSTRAINT Syntax Dynamische Intergritätsbedingungen, das Trigger- Konzept von Oracle Prozedurale Erweiterungen, Beispiel Oracle PL/SQL Einbettung von SQL in Wirtssprachen, C, C++ ODBC – Open Database Connectivity ODBC – Java Database Connectivity SQLJ – Einbettung von SQL in Java QBE – Query by Example Datenbankanwendungen und Paradigmen Fazit und Ausblick Vorlesung #10

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)3 Einschub: Oracle In Line CONSTRAINT- Syntax REFERENCES [schema.] { object_table | view } [ (column [, column]...) ] [ON DELETE { CASCADE | SET NULL }] [constraint_state] [CONSTRAINT constraint_name] { [NOT] NULL | UNIQUE | PRIMARY KEY | references_clause | CHECK ( condition ) } [constraint_state] CHECK ( condition ) } [constraint_state]

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)4 Dynamische Integritätsbedingungen Bedingungen an Zustandsänderungen bzw. Datenänderungen werden mittels Trigger überprüft. Man kann mit Triggern auch nachträgliche bzw. zusätzliche Berechnungen durchführen. CREATE TRIGGER – eigenständiger Datenbankobjekt der einer Tabelle zugeordnet wird, d.h. auf eine Tabelle aufpasst Auslöser wird definiert (before update, for each row) Bedingungen gefolgt von Anweisungen

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)5 Trigger in Oracle Syntax create or replace trigger keineDegradierung before update on Professoren for each row when (old.Rang is not null) begin if :old.Rang = 'C3' and :new.Rang = 'C2' then :new.Rang := 'C3'; end if; if :old.Rang = 'C4' then :new.Rang := 'C4'; end if; if :new.Rang is null then :new.Rang := :old.Rang; end if; end;

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)6 Trigger in Oracle Syntax (2) CREATE [OR REPLACE] TRIGGER [schema.] trigger { BEFORE | AFTER | INSTEAD OF } { DELETE | INSERT | UPDATE [OF column [, column]...] } [FOR EACH ROW] [WHEN ( condition ) ] { pl/sql_block | call_procedure_statement } Vereinfacht – nur DML Events, man kann auch DDL abfangen

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)7 Trigger in DB2 Syntax

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)8 Prozedurale Erweiterung von SQL – Oracle PL/SQL Trigger waren bzw. sind bereits prozedural! Prozedurale Erweiterung ist notwendig Aus theoretischer Sicht – um Touring- Vollständigkeit zu erreichen Aus praktischer Sicht - um Probleme des Alltags, viel einfacher prozedural statt deklarativ zu lösen Hauptbegriff: Datenbank Cursor Dynamisches SQL in PL/SQL – würde hier den Rahmen sprengen

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)9 Oracle PL/SQL Prozedurale Erweiterung von SQL Beispiel: Funktion Summe - rekursiv CREATE FUNCTION Summe1 (n INTEGER) RETURN INTEGER IS BEGIN IF n = 0 THEN return 0; ELSIF n = 1 THEN return 1; ELSIF n > 1 THEN return n + Summe1(n - 1); END IF; END;

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)10 Oracle PL/SQL (2) nicht rekursiv FUNCTION Summe2(n INTEGER) RETURN INTEGER IS result INTEGER DEFAULT 0; v_n INTEGER DEFAULT n; BEGIN WHILE v_n >= 0 LOOP result := result + v_n; v_n := v_n - 1; END LOOP; return result; END; nicht rekursiv, schlau FUNCTION Summe3(n INTEGER) RETURN INTEGER IS BEGIN RETURN (n*(n+1))/2; END;

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)11

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)12 Oracle PL/SQL Beispiel: man verfügt über eine Tabelle (oder eine View über zwei Tabellen), die zu jedem Ort die zugehörige PLZ und das Bundesland beinhaltet Man möchte für jedes Bundesland PLZ Intervale bestimmen In SQL sehr umständlich, mit vielen unsauberen Hilfskonstrukten Wie bringt aber man aber Daten aus einer Tabelle in eine prozedurale Sprache hinein?

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)13 Deklarativ vs. Prozedural (2)

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)14 Deklarativ vs. Prozedural (3) PLZ Interval für jedes Bundesland Idee Sortiere nach PLZ Merke das Bundesland für die kleinste PLZ Bei jeder weiteren PLZ überprüfe ob sich das Bundesland geändert hat, d.h. vergleich das aktuelle Bundesland mit dem Bundesland des vorherigen Laufes Wenn ja, dokumentiere die Änderung Wiederhole bis zur größten PLZ Cursor-FOR oder Cursor-WHILE Schleife vorgestellt in der Vorlesung

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)15 Cursor Beispiel (3) CURSOR c_orte is select PLZ, Land from orte order by PLZ ASC; lv_c_orte c_orte%ROWTYPE; BEGIN FOR lv_c_orte IN c_orte LOOP... – Anweisungen, IT THEN ELSE usw.... END LOOP; END;

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)16

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)17 Einbettung in Wirtssprachen Embedded SQL Mit Hilfe eines Präcompilers!!! #include exec sql begin declare section; varchar user_passwd[30]; int exMatrNr; exec sql end declare section; exec sql include SQLCA; main() { printf("Name/Password:"); scanf("%", user_passwd.arr);

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)18 Einbettung in Wirtssprachen Embedded SQL (2) user_passwd.len=strlen(user_passwd.arr); exec sql wheneversqlerror goto error; exec sql connect :user_passwd; while (1) { printf("Matrikelnummer (0 zum beenden):"); scanf("%d", &ecMatrNr); if (!exMatrNr) break; exec sql delete from Studenten where MatrNr= :exMatrNr; } exec sql commit work release; exit(0);

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)19 Einbettung in Wirtssprachen Embedded SQL (3) error: exec sql whenever sqlerror continue; exec sql rollback work release; printf("fehler aufgetreten!\n"); exit(-1); }

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)20 Datenbankanbindungen ODBC (Open Database Connecticity) Anbindung von Windows-Programmen Beispiel –Excel Zugriff auf Oracle JDBC (Java Database Connectivity) Eigentlich ein CLI Call-Level Interface SQLJ Echte Einbettung von SQL in Java, wie C, C++ Wichtig bei allen Schnittstellen: immer an die Voreinstellungen denken was passiert bei einem Fehler gibt es automatisch einen COMMIT oder ROLLBACK

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)21

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)22

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)23

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)24

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)25

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)26 Abgrenzung: Datenbanken vs. Anwendungen Marktbeherrschende Datenbanken beinhalten heute bereits Eingebaute und erweiterbare SQL Funktionen und Prozeduren als prozedurale Erweiterung XML und Java Standardschnittstellen zu jeder wichtigen Programmiersprache (Fortran, Cobol, C, C++) Eingebaute Funktionen für Volltextsuche, Geodaten, OLAP, Data Mining, Web usw. Objekte, benutzerdefinierte Datentypen Wo ist die Grenze zwischen einer Datenbank und einer klassischen Anwendung?

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)27 Wohin mir der Logik? Datenbank oder Anwendung Man entscheidet sich für die Datenbank Wenn man aus Performance-, Skalierbarkeit-, Sicherheits- oder Verfügbarkeitsgründen eine (bestimmte) Datenbank wählen muss Wenn man mit mehreren verschiedenen Anwendung gleichzeitig auf die Daten zugreifen möchte, so dass die Anwendungen nur visualisieren und die Datenbank die Zugriffe und die Datenverarbeitung regelt Man entscheidet sich für die Anwendung Wenn man Datenbank-unabhängig bleiben möchte, d.h. die zugrundeliegende(n) Datenbank(en) lediglich als SQL- Datenablage betrachtet Wenn eine Datenbankzentralisierung aus finanziellen oder technischen Gründen keinen Sinn macht

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 © Bojan Milijaš, Vorlesung #9 - SQL (Teil 4)28 Ausblick Vorlesung #10 und #11 Vorlesung #10 Relationale Theorie Funktionale Abhängigkeiten Schlüssel-Begriff Bestimmung von funktionalen Abhängigkeiten Schlechte Relationenschemata Zerlegung von Relationen Vorlesung #11 Normalformen (1., 2., 3., 4., BCNF) Mehrwertige Abhängigkeiten

SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 Ende