Datenbanksysteme (2) Einführung in SQL



Ähnliche Dokumente
Termin 12: Datenbanksysteme (2) - Einführung in SQL

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Datenbanksysteme SS 2007

Fortsetzung: Projektion Selektion. NULL Werte

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

DATENBANKSYSTEME: SQL

Wiederholung VU Datenmodellierung

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Übung 3. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

Wiederholung VU Datenmodellierung

Entity Relationship Modell

Vorlesung Datenbanksysteme vom

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

Referentielle Integrität

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

Wiederholung: Relationale Algebra

Referentielle Integrität

Architektur eines DBMS Logische Optimierung

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

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

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Kapitel 7 Dr. Jérôme Kunegis. Logische Kalküle. WeST Web Science & Technologies

Informatik 12 Datenbanken SQL-Einführung

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas

Relationale Kalküle. Grundlagen der Datenbanken. Dr. Jérôme Kunegis Wintersemester 2013/14

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

Datenintegrität. Bisherige Integritätsbedingungen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

IV. Datenbankmanagement

SQL (Structured Query Language) Schemata Datentypen

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

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

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator

Datenintegrität. Kapitel 5 1

Datenbanksysteme 2013

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

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

Vorlesung Datenbankmanagementsysteme

Kapitel 8: Datenintegrität

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

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

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Bibliografische Informationen digitalisiert durch

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

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

SQL structured query language

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Abfragen (Queries, Subqueries)

Labor 3 - Datenbank mit MySQL

Sructred Query Language

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

Datenbanksysteme (1)

7. Übung - Datenbanken

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme Vorlesung vom noch Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

105.3 SQL-Datenverwaltung

Übungen zu Datenbanksysteme

Erstellen einer Datenbank. Datenbankabfragen

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Objektrelationale Datenbanken

Abfragen: Grundbausteine

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Unterabfragen (Subqueries)

Datenintegrität. Kapitel 5 1

Carl-Christian Kanne. Einführung in Datenbanken p.1/513

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

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Transaktionsverwaltung

Transkript:

Kapitel 19: Datenbanksysteme (2) Einführung in SQL Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht 1. Einführung SQL 2. Datenbankanfragen mit SQL (select from where) 3. Erzeugen, Ändern und Löschen von Tabelleninhalten mit SQL 4. Erzeugen, Ändern und Löschen von Tabellen mit SQL (DDL) 5. Konzepte: Transaktionen, ACID-Eigenschaften, Datensicherheit Hauptlernziele Die Umsetzung der Relationenalgebra in SQL verstehen Fähigkeit, einfachere Datenbankabfragen u. andere Datenbankoperationen in SQL zu formulieren Literatur Gumm & Sommer. Einführung in die Informatik. Oldenbourg. 2004. Lehrhilfe SQL. Institut für Informatik, TU Bergakademie Freiberg. - erhältlich in den Übungen 1

Datenbanksysteme - Statistiken (1) Markt für Datenbanksysteme (nach www.idc.com ) 2006: $15.2 Milliarden 2008: ca $20 Milliarden Linux / Open Source Datenbanken 2003: $299 Millionen Markt-Anteile (2006; Gartner Dataquest) Oracle: 47.1% IBM: 21.1% Microsoft: 17.1% Datenbanksysteme Statistiken (2) 2

Datenbanksysteme Statistiken (3) from http://www.informationweek.com/story/showarticle.jhtml?articleid=23901139 Wdh - Beispielrelationen 1 Assistent: Persnr Name Fachgebiet Boss 3002 Platon Ideenlehre 2125 3003 Aristoteles Syllogistik 2125 3004 Wittgenstein Sprachtheorie 2126 3005 Rhetikus Planetenbewegung 2127 3006 Newton Keplersche Gesetze 2127 3007 Spinoza Gott und Natur 2134 Student: Professor: Matrnr Name Sem Persnr Name Rang Raum 24002 Xenokrates 18 2125 Sokrates C4 226 25403 Jonas 12 2126 Russel C4 232 26120 Fichte 10 2127 Kopernikus C3 310 26830 Aristoxenos 8 2133 Popper C3 52 27550 Schopenhauer 6 2134 Augustinus C3 309 28106 Carnap 3 2136 Curie C4 36 29120 Theophrastos 2 2137 Kant C4 7 29555 Feuerbach 2 3

Wdh - Beispielrelationen 2 Vorlesung: voraussetzen: hören: Vorlnr Titel SWS Leser Vorgänger Nachfolger Matrnr Vorlnr 5001 Grundzüge 4 2137 5041 Ethik 4 2125 5043 Erkenntnistheorie 3 2126 5049 Gewäsch 2 2125 4052 Logik 4 2125 5052 Wissenschaftstheorie 3 2126 5216 Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 4630 Die 3 Kritiken 4 2137 prüfen: 5001 5041 5001 5043 5001 5049 5041 5216 5043 5052 5041 5052 5052 5259 26120 5001 27550 5001 27550 4052 28106 5041 28106 5052 28106 5216 28106 5259 29120 5001 29120 5041 29120 5049 29555 5022 25403 5022 29555 5001 Matrnr Vorlnr Persnr Note 28106 5001 2126 1 25403 5041 2125 2 27550 4630 2137 2 Was ist SQL? SQL = Structured Query Language SQL ist Standardsprache für relationale Datenbankmanagementsysteme (DBMS) SQL stellt Möglichkeiten bereit zur Definition der Struktur von Datenbanken (Datendefinitionssprache; DDL) Manipulation der Datenbankinhalte (Datenmanipulationssprache; DML) anfragen, einfügen, löschen, ändern von Datensätzen SQL ist eine deklarative Programmiersprache i.ggs. zu imperativen oder objekt-orientierten Programmiersprachen (wie Python, Java, C++, C#, ) SQL ist eine Implementierung der Relationenalgebra aber kleinere Unterschiede z.b. Ordnung der Tabellenzeilen in SQL z.b. Duplikate von Tabellenzeilen in SQL erlaubt Bekannte auf SQL basierende DBMS: Oracle, IBM DB2, Microsoft SQL Server, Access, Ingres, MySQL, 4

SQL Historie ca. 1975 SEQUEL, Vorläufer von SQL wird für das Projekt System R von IBM entwickelt. 1981 SQL gelangt mit SQL/Data Systems erstmals durch IBM auf den Markt. 1986 SQL1 wird von ANSI als Standard verabschiedet. 1987 SQL1 wird jetzt auch von ISO als Standard verabschiedet und 1989 nochmals überarbeitet. 1992 Der SQL2 bzw. SQL-92 Standard wird von der ISO verabschiedet. 1999 SQL3 bzw. SQL:1999 wird verabschiedet; u.a. reguläre Ausdrücke, einfachere objektorientierte Features 2003 SQL:2003 Integration einfacherer XML-Strukturen 2006 SQL:2006 weitere Integration von XML Relationale Datenbanksprache SQL Datenbanksprache (DL): - Datendefinitionssprache (DDL) - Datenmanipulationssprache (DML): - Änderungssprache - Anfragesprache Datenmanipulationssprache / Anfrage Standardanfrageschema: select... Projektion from... Relation / Produkt / Join where... Selektion / Differenz / Durchschnitt all / any / in / exists... Division / Quantifizierung group by... Aggregation union... Vereinigung order by... Sortierung 5

SQL Einfache Anfragen Einfache Anfragen: select Spalte(n) from Tabelle(n) where Bedingung; Anzeigen von Spalte(n) der Zeilen aus Tabelle(n), die einer Bedingung genügen Umfasst Projektion, Selektion und Join der Relationenalgebra! Anfragen über einer Tabelle: select * from Assistent; select Matrnr, Name, Sem from Student where Sem < 5; select distinct SWS from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; Spaltenauswahl Projektion in Relationenalgebra Spaltenname, Konstante ** distinct, all all SQL> select Boss from Assistent; BOSS --------- 2125 2125 2126 2127 2127 2134 Auswahl von Spalten, Konstanten Auswahl aller Spalten Duplikatebeseitigung SQL> select distinct Boss from Assistent; BOSS --------- 2125 2126 2127 2134 gleiches Ergebnis wie bei: select all Boss from Assistent; 6

Spaltenauswahl Spaltenname, Konstante ** distinct, all all Auswahl von Spalten, Konstanten Auswahl aller Spalten Duplikatebeseitigung SQL> select 'Guten Tag, ', Name from Assistent; 'GUTENTAG NAME ----------- ------------------------------ Guten Tag, Platon Guten Tag, Aristoteles Guten Tag, Wittgenstein Guten Tag, Rhetikus Guten Tag, Newton Guten Tag, Spinoza Zeilenauswahl Selektion in Relationenalgebra SQL: durch Formulierung von Bedingungen in WHERE-Klausel: Spaltenname, Konstante =, =,!=,!=, <>, <>, >, >, >=, >=, <, <, <= <= and, and, or, or, not not between...... and and like like...%..._... is is null, null, is is not not null null Angabe von Spalten und Konstanten Vergleichsoperator logische Verknüpfung Bereichsangabe Zeichenmuster Leerwert select Titel from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; 7

Zeilenauswahl - Beispiele SQL> select * from Vorlesung where Leser = 2125; VORLNR TITEL SWS LESER --------- ------------------------------- --------- --------- 5041 Ethik 4 2125 5049 Gewäsch 2 2125 4052 Logik 4 2125 SQL> select Titel from Vorlesung where Leser = 2125; TITEL --------------------------- Ethik Gewäsch Logik SQL> select Titel from Vorlesung where Leser = 2125 and not Titel = 'Ethik'; TITEL ------------------------------- Gewäsch Logik SQL Anfragen über mehrere Tabellen Join in Relationenalgebra in Beispielen jeweils Equi-Join (d.h. Gleichheit von Attributwerten): select Name, Titel from Professor, Vorlesung where Persnr = Leser and Titel = 'Logik'; Welche Professoren lesen 'Logik'? Join select Name, Titel from Student, hören, Vorlesung where Student.Matrnr = hören.matrnr and hören.vorlnr = Vorlesung.Vorlnr; select s.name, v.titel from Student s, hören h, Vorlesung v where s.matrnr = h.matrnr and h.vorlnr = v.vorlnr; Welche Studenten hören welche Vorlesung? Welche Studenten hören welche Vorlesung? (alternative Syntax) 8

Ergebnisse der Anfragen der vorangehenden Folie NAME TITEL ------------------------------ ------------------------ Sokrates Logik NAME TITEL ------------------------------ ------------------------------- Jonas Glaube und Wissen Fichte Grundzüge Schopenhauer Logik Schopenhauer Grundzüge Carnap Ethik Carnap Wissenschaftstheorie Carnap Der Wiener Kreis Theophrastos Grundzüge Theophrastos Ethik Theophrastos Gewäsch Feuerbach Grundzüge Feuerbach Glaube und Wissen Geschachtelte Anfragen select * from Assistent where Boss = (select Persnr from Professor where Name = 'Sokrates'); Wer sind die Assistenten von Sokrates? Ergebnistabelle PERSNR NAME FACHGEBIET BOSS --------- -------------------- ------------------------------ --------- 3002 Platon Ideenlehre 2125 3003 Aristoteles Syllogistik 2125 9

Geschachtelte Anfragen select * from prüfen where Note < (select avg (Note) from prüfen); Welche Prüfungen haben mit einer überdurchschnittlichen Note geendet? Ergebnistabelle MATRNR VORLNR PERSNR NOTE --------- --------- --------- --------- 28106 5001 2126 1 Mengenoperationen Voraussetzung: Gleichförmigkeit der verknüpften Tabellen gleiche Anzahl und gleicher Typ der Attribute union union (intersect, except) Vereinigung von Tabellen (Durchschnitt, Differenz) (select Name from Assistent) union (select Name from Professor); Namen von Assistenten und Professoren 10

Mengenoperationen Welche Vorlesungen werden von Studenten gehört? (select Vorlnr from Vorlesung) intersect (select Vorlnr from hören); Ergebnistabelle: VORLNR --------- 4052 5001 5022 5041 5049 5052 5259 Mengenoperationen Welche Vorlesungen werden von keinem Studenten gehört? oder: Für welche Vorlesungen sind keine Studierenden registriert? Nach SQL Standard (klappt nicht in Oracle 8): (select Vorlnr from Vorlesung) except (select Vorlnr from hören); In Oracle 8: select Vorlnr from Vorlesung where Vorlnr not in (select Vorlnr from hören); Ergebnistabelle: VORLNR --------- 5043 5216 4630 11

Quantifizierung all, all, any, any, some some in, in, not not in in exists, exists, not not exists exists für alle, für ein Element von, nicht Element von es existiert ein, es existiert kein Welche Studenten studieren am längsten? select Name from Student where Sem >= all (select Sem from Student); ( Xenokrates mit 18 Semestern) Quantifizierung Welche Professoren halten (dieses Semester) keine Vorlesung? select Name from Professor where not exists (select * from Vorlesung where Leser = Persnr); Sämtliche Informationen über Vorlesungen 5001 bzw 5041 select * from Vorlesung where Vorlnr in (5001, 5041); 12

Gruppierungsfunktion count, count, sum, sum, avg, avg, max, max, min min Ausführen von Operationen auf Tupelmengen Durchschnittliche Semesterzahl der Studenten select avg (Sem) from Student; Beste bzw. schlechteste Note in Kursen 5001 oder 5041 select min (Note), max (Note) from prüfen where Vorlnr = 5001 or Vorlnr = 5041; Anzahl der Tupel der Tabelle hören; d.h. Anzahl der registrierten Hörer für alle Vorlesungen select count (*) from hören; Gruppierung group groupby byspalte(n) Gruppierung der Zeilen der Ergebnistabelle Summe SWS pro Leser select Leser, sum (Sws) from Vorlesung group by Leser; Ergebnistabelle: LESER SUM(SWS) --------- --------- 2125 10 2126 8 2133 2 2134 2 2137 8 13

Gruppierung group groupby byspalte(n) having havingbedingung Gruppierung der Zeilen der Ergebnistabelle und Ausführung von Gruppierungsfunktionen Summe SWS pro Leser -aber nur für Leser, deren Veranstaltungen insgesamt einen Umfang von mindestens 6 SWS haben select Leser, sum (Sws) from Vorlesung group by Leser having sum (Sws) >= 6; Ergebnistabelle: LESER SUM(SWS) --------- --------- 2125 10 2126 8 2137 8 Gruppierung Persnr, Name, Summe SWS der C4-Professoren, die im Umfang von mindestens 8 SWS Vorlesungen geben select Leser, Name, sum (Sws) from Vorlesung, Professor where Leser = Persnr and Rang = 'C4' group by Leser, Name having sum(sws) >= 8; Ergebnistabelle: LESER NAME SUM(SWS) --------- ------------------------------ --------- 2125 Sokrates 10 2126 Russel 8 2137 Kant 8 14

Sortierung order by by Spalte(n) asc asc // desc Festlegen der Sortierreihenfolge der Ergebnistabelle (aufsteigend bzw. absteigend) Ausgabe der Studierendendatensätze, geordnet nach Matrikelnr select Name, Matrnr from Student order by Matrnr; Auflistung der Professoren, geordnet nach Rang (lexikalisch absteigend d.h. C4 vor C3), dann alphabetisch select Persnr, Name, Rang from Professor order by Rang desc, Name asc; Sortierung Ergebnisse der Anfragen auf voriger Folie select Name, Matrnr from Student order by Matrnr; select Persnr, Name, Rang from Professor order by Rang desc, Name asc; NAME MATRNR ------------------ --------- Xenokrates 24002 Jonas 25403 Fichte 26120 Aristoxenos 26830 Schopenhauer 27550 Carnap 28106 Theophrastos 29120 Feuerbach 29555 PERSNR NAME RA --------- ------------------- -- 2136 Curie C4 2137 Kant C4 2126 Russel C4 2125 Sokrates C4 2134 Augustinus C3 2127 Kopernikus C3 2133 Popper C3 15

Elementfunktion +, +, -, -,*, *,/,/,...... char_length, substring,,,...... current_time, current_date, +, +, -, -,*, *,...... arithmetische Funktion Zeichenkettenfunktion Datumsfunktion Um 1.0 verbesserte Noten für Kurs 4630 select Matrnr, Note - 1 from prüfen where Vorlnr = 4630; select Name, Rang '-Professur' from Professor; NAME RANG '-PROF ------------------------------ ------------ Sokrates C4-Professur Russel C4-Professur Kopernikus C3-Professur Popper C3-Professur Augustinus C3-Professur Curie C4-Professur Prof. B. Jung Kant C4-Professur Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Elementfunktion Ausgabe von Studentendaten mit Zeitpunkt des Zugriffs auf Datensätze select Matrnr, Sem, current_time from Student; MATRNR SEM CURRENT_T --------- --------- --------- 24002 18 00:34:50 25403 12 00:34:50 26120 10 00:34:50 26830 8 00:34:50 27550 6 00:34:50 28106 3 00:34:50 29120 2 00:34:50 29555 2 00:34:50 16

Datenmanipulationssprache / Änderung Standard-Änderungsoperationen: insert... Einfügen update... Ändern delete... Löschen Einfügen von Datensätzen insert insertinto intotabelle values valuestupel; Einfügen von Zeilen in eine existierende Tabelle insert insertinto intotabelle Anfrage; Beispiele: Einfügen neuer Datensätze insert into Professor values (2136, 'Einstein', 'C4', null); Werte für alle Spalten insert into Student (Matrnr, Name) values (25000, 'Goethe'); Werte für benannte Spalten (andere Spalten: Default-Werte) 17

Einfügen von Datensätzen Alle Studenten mit mehr als 15 Semestern Studienzeit zu Assistenten befördern insert into Assistent (Persnr, Name) select Matrnr, Name from Student where Sem > 15; Ändern von Datensätzen update update Tabelle Tabelle set setwerteänderung where wherebedingung Ändern von Zeilen in einer existierenden Tabelle Alle Vorlesungen auf 2 SWS setzen update Vorlesung set Sws = 2; Semesteranzahl von allen Studenten um 1 erhöhen update Student set Sem = Sem + 1; Prof. Russel zieht in Raum 213 ein update Professor set Raum = 213 where name = 'Russel'; Daten zur Vorlesung 5001 aktualisieren update Vorlesung set Titel = 'Grundlagen', Sws = 3, Leser = 2125 where Vorlnr = 5001; 18

Löschen von Datensätzen delete deletefrom fromtabelle where wherebedingung Löschen von Zeilen in einer existierenden Tabelle Alle Prüfungsdatensätze löschen delete from prüfen Datensatz zur Vorlesung 5001 löschen delete from Vorlesung where Vorlnr = 5001; Datensätze der Studenten über 15. Semester löschen delete from Student where Sem >= 15; Vorlesungen, die andere Vorlesungen voraussetzen, sollen ihrerseits keine Voraussetzung für weitere Vorlesungen sein delete from voraussetzen where Vorgänger in (select Nachfolger from voraussetzen); Datendefinitionssprache (DDL) Standarddefinitionsoperationen: Erzeugen (create), Ändern (alter), Löschen (drop) für: Tabelle (table), Sicht (view),... und Erteilung (grant) und Entzug (revoke) von Rechten Datentypen: char(n), varchar(n), number(p), number(p,s), date, long, blob,... Namen: 1. Zeichen Buchstabe, dann Buchstaben, Ziffern, _ oder $ 19

DDL: Erzeugen von Tabellen create createtable tabletabellen-name (Spalten-Name Typ, Typ, Spalten-Name Typ Typnot notnull, null, Spalten-Name Typ Typnot notnull null unique,...).) Definition einer Tabelle mit Spalten und Integritätsbedingungen Beispiele: create table Professor create table voraussetzen (persnr number (5) not null unique, (Vorgänger number (5), Name varchar (20) not null, Nachfolger number (5)); Rang char (2), Raum number (4)); Transaktionen und Transaktionsmanagement Nebenläufigkeit (engl.: concurrency) besteht wenn mehrere Benutzer gleichzeitig mit dem DBS interagieren diese Interaktionen können u.u. miteinander interferieren ("Wettlaufsituationen") Transaktion logische Einheit von DBS-Interaktionen eines Benutzers, die aus einem oder mehreren SQL-Befehlen bestehen Transaktion wird "ganz oder gar nicht" durchgeführt Eine Transaktion endet mit Commit alle Änderungen werden permanent Rollback alle Änderungen werden zurückgenommen Transaktionsmanager Softwaremodul im DBS, das Transaktionslogik implementiert 20

Probleme mit Nebenläufigkeit, Beispiel Instant Messaging (Wettlaufsituation / race conditions) Alison Alison Brian It's a beautiful day. Let's go out after work. perhaps not, I look awful after the late party I agree totally Alison Brian Alison It's a beautiful day. Let's go out after work. I agree totally perhaps not, I look awful after the late party Alison It's perhaps a beautiful not, I look day Let's awful go after out the after work. late party send Brian I agree totally send Probleme mit Nebenläufigkeit, Beispiel Datenbanksystem (Wettlaufsituation / race conditions) Zwei nebenläufige Systeme wollen denselben Wert im DBS erhöhen Die Einzelschritte, die jedes der beiden Systeme durchlaufen muss, sind: 1. Wert lesen: Der Wert wird aus DBS in den internen Speicher gelesen. 2. Wert erhöhen: Der Wert wird im internen Speicher um 1 erhöht 3. Wert schreiben: Der Wert aus dem internen Speicher zurück in DBS geschrieben Angenommen, der Wert betrage anfangs 1. Das erste System heißt "A", das zweite System "B". Bei nebenläufiger Ausführung kann die Wettlaufsituation jedoch dazu führen, dass der tatsächlich erhaltene, neue Wert nicht wie erwartet 3 sondern stattdessen 2 beträgt: 1. A liest Wert in internen Speicher A=1 2. B liest Wert in internen Speicher B=1 (der Wert im DBS ist immer noch 1!) 3. A erhöht intern A=2 4. B erhöht intern B=2 5. A schreibt Wert Wert=2 6. B schreibt Wert Wert=2 Lösung: Zusammenfassen der Einzelschritte 1-3 zu einer Transaktion z.b. B wartet, bis A Einzelschritte 1-3 komplett ausgeführt hat 21

ACID-Eigenschaften von Transaktionen Erwünschte Eigenschaften von Transaktionen Atomarität Transaktion wird entweder ganz oder gar nicht ausgeführt Konsistenz (Consisteny) Transaktion hinterlässt nach Beendigung einen konsistenten Datenzustand, (falls die Datenbank vor der Transaktion auch konsistent war) Einhaltung von sog. Integritätsbedingungen, z.b. eindeutige Schlüssel Isolation in Ausführung befindliche Transaktionen beeinflussen sich nicht gegenseitig Dauerhaftigkeit das Ergebnis einer Transaktion ist dauerhaft insbesondere auch nach Systemabstürzen Transaktionsmanager verantwortlich für Umsetzung der ACID-Eigenschaften Datensicherheit und Datenschutz Datensicherheit Schutz der Daten gegen Verlust z.b. Backups Datenschutz Schutz der Daten gegen unberechtigten Zugriff z.b. Benutzerkonten, Passwörter z.b. eingeschränkter Zugriff für Benutzer (Zugriffsrechte) SQL: create user Jane identified by 76awhd4$G; //userid and password create user Dick identified by!qtxm%97; alter user Jane quota unlimited on USERS;// no size restrictions drop user Jane; // delete user alter user Dick account lock;// keep user but block login 22

Systemüberblick Server OS- Toolbox Datenbank Datenbank "Maschine" "Maschine" Anwendungs- Anwendungs- Programm Programm B SQL- DML SQL- DDL SQL-DML Anwendungs- Anwendungs- Programm Programm A Buchungssystesystem Buchungs- Klient Datenbankentwurf Datenbankentwurf Beispiele: -Oracle -IBM DB2 - Microsoft Access - MySQL - Klient Verwaltung Verwaltung 23