Kapitel 19: Datenbanksysteme (2) – Einführung in SQL Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht 1. 2. 3. 4. 5. Einführung SQL Datenbankanfragen mit SQL (select … from … where) Erzeugen, Ändern und Löschen von Tabelleninhalten mit SQL Erzeugen, Ändern und Löschen von Tabellen mit SQL (DDL) 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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% Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Datenbanksysteme – Statistiken (2) Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 2 Datenbanksysteme – Statistiken (3) from http://www.informationweek.com/story/showArticle.jhtml?articleID=23901139 Prof. B. Jung TU Bergakademie Freiberg Einführung in die Informatik, WS 2007/08 Wdh - Beispielrelationen 1 Assistent: Persnr Name Fachgebiet Boss 3002 3003 3004 3005 3006 3007 Ideenlehre Syllogistik Sprachtheorie Planetenbewegung Keplersche Gesetze Gott und Natur 2125 2125 2126 2127 2127 2134 Platon Aristoteles Wittgenstein Rhetikus Newton Spinoza Student: Professor: Persnr 2125 2126 2127 2133 2134 2136 2137 Prof. B. Jung Name Sokrates Russel Kopernikus Popper Augustinus Curie Kant Matrnr Name Sem 24002 25403 26120 26830 27550 28106 29120 29555 Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach Rang Raum C4 C4 C3 C3 C3 C4 C4 226 232 310 52 309 36 7 Einführung in die Informatik, WS 2007/08 18 12 10 8 6 3 2 2 TU Bergakademie Freiberg 3 Wdh - Beispielrelationen 2 Vorlesung: voraussetzen: Vorlnr Titel SWS 5001 5041 5043 5049 4052 5052 5216 5259 5022 4630 4 4 3 2 4 3 2 2 2 4 Grundzüge Ethik Erkenntnistheorie Gewäsch Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken Leser 2137 2125 2126 2125 2125 2126 2126 2133 2134 2137 hören: Vorgänger Nachfolger Matrnr Vorlnr 5001 5001 5001 5041 5043 5041 5052 5041 5043 5049 5216 5052 5052 5259 26120 27550 27550 28106 28106 28106 28106 29120 29120 29120 29555 25403 29555 5001 5001 4052 5041 5052 5216 5259 5001 5041 5049 5022 5022 5001 prüfen: Prof. B. Jung Matrnr Vorlnr Persnr Note 28106 25403 27550 5001 5041 4630 2126 2125 2137 1 2 2 Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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) i.Ggs. zu imperativen oder objekt-orientierten Programmiersprachen (wie Python, Java, C++, C#, …) SQL ist eine Implementierung der Relationenalgebra aber kleinere Unterschiede anfragen, einfügen, löschen, ändern von Datensätzen SQL ist eine deklarative Programmiersprache 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, … Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 4 SQL Historie ca. 1975 1981 1986 1987 SEQUEL, Vorläufer von SQL wird für das Projekt System R von IBM entwickelt. SQL gelangt mit SQL/Data Systems erstmals durch IBM auf den Markt. SQL1 wird von ANSI als Standard verabschiedet. SQL1 wird jetzt auch von ISO als Standard verabschiedet und 1989 nochmals überarbeitet. 1992 1999 Der SQL2 bzw. SQL-92 Standard wird von der ISO verabschiedet. SQL3 bzw. SQL:1999 wird verabschiedet; u.a. reguläre Ausdrücke, einfachere objektorientierte Features 2003 2006 SQL:2003 Integration einfacherer XML-Strukturen SQL:2006 weitere Integration von XML Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Relationale Datenbanksprache SQL Datenbanksprache (DL): - Datendefinitionssprache (DDL) - Datenmanipulationssprache (DML): - Änderungssprache - Anfragesprache Datenmanipulationssprache / Anfrage Standardanfrageschema: select . . . from . . . where . . . all / any / in / exists group by . . . union . . . order by . . . Prof. B. Jung ... Projektion Relation / Produkt / Join Selektion / Differenz / Durchschnitt Division / Quantifizierung Aggregation Vereinigung Sortierung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 distinct SWS from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; select Matrnr, Name, Sem from Student where Sem < 5; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Spaltenauswahl Projektion in Relationenalgebra Spaltenname, Spaltenname,Konstante Konstante ** distinct, 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; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 6 Spaltenauswahl Spaltenname, Spaltenname,Konstante Konstante ** distinct, distinct,all all Auswahl von Spalten, Konstanten Auswahl aller Spalten Duplikatebeseitigung SQL> select 'Guten Tag, ', Name from Assistent; 'GUTENTAG ----------Guten Tag, Guten Tag, Guten Tag, Guten Tag, Guten Tag, Guten Tag, Prof. B. Jung NAME -----------------------------Platon Aristoteles Wittgenstein Rhetikus Newton Spinoza Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Zeilenauswahl Selektion in Relationenalgebra SQL: durch Formulierung von Bedingungen in WHERE-Klausel: Spaltenname, Spaltenname,Konstante Konstante =, =,!=, !=,<>, <>,>, >,>=, >=,<, <,<= <= and, or, not and, or, not between between... ...and and like like’...%..._...’ ’...%..._...’ is isnull, null,is isnot notnull null Angabe von Spalten und Konstanten Vergleichsoperator logische Verknüpfung Bereichsangabe Zeichenmuster Leerwert select Titel from Vorlesung where Leser = 2125 and not TITEL = 'Ethik'; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 7 Zeilenauswahl - Beispiele SQL> select * from Vorlesung where Leser = 2125; VORLNR --------5041 5049 4052 TITEL SWS LESER ------------------------------- --------- --------Ethik 4 2125 Gewäsch 2 2125 Logik 4 2125 SQL> select Titel from Vorlesung where Leser = 2125; TITEL --------------------------Ethik Gewäsch Logik Prof. B. Jung SQL> select Titel from Vorlesung where Leser = 2125 and not Titel = 'Ethik'; TITEL ------------------------------Gewäsch Logik TU Bergakademie Freiberg Einführung in die Informatik, WS 2007/08 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'; 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; Prof. B. Jung Einführung in die Informatik, WS 2007/08 Welche Professoren lesen 'Logik'? Welche Studenten hören welche Vorlesung? Welche Studenten hören welche Vorlesung? (alternative Syntax) TU Bergakademie Freiberg 8 Ergebnisse der Anfragen der vorangehenden Folie NAME TITEL ------------------------------ -----------------------Sokrates Logik NAME -----------------------------Jonas Fichte Schopenhauer Schopenhauer Carnap Carnap Carnap Theophrastos Theophrastos Theophrastos Feuerbach Feuerbach Prof. B. Jung TITEL ------------------------------Glaube und Wissen Grundzüge Logik Grundzüge Ethik Wissenschaftstheorie Der Wiener Kreis Grundzüge Ethik Gewäsch Grundzüge Glaube und Wissen Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Geschachtelte Anfragen select * from Assistent where Boss = (select Persnr from Professor where Name = 'Sokrates'); Wer sind die Assistenten von Sokrates? Ergebnistabelle PERSNR --------3002 3003 Prof. B. Jung NAME -------------------Platon Aristoteles FACHGEBIET BOSS ------------------------------ --------Ideenlehre 2125 Syllogistik 2125 Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 9 Geschachtelte Anfragen Welche Prüfungen haben mit einer überdurchschnittlichen Note geendet? select * from prüfen where Note < (select avg (Note) from prüfen); Ergebnistabelle MATRNR VORLNR PERSNR NOTE --------- --------- --------- --------28106 5001 2126 1 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Mengenoperationen Voraussetzung: Gleichförmigkeit der verknüpften Tabellen gleiche Anzahl und gleicher Typ der Attribute union union (intersect, (intersect,except) except) Vereinigung von Tabellen (Durchschnitt, Differenz) (select Name from Assistent) union (select Name from Professor); Prof. B. Jung Namen von Assistenten und Professoren Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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: Ergebnistabelle: select Vorlnr from Vorlesung where Vorlnr not in (select Vorlnr from hören); Prof. B. Jung Einführung in die Informatik, WS 2007/08 VORLNR --------5043 5216 4630 TU Bergakademie Freiberg 11 Quantifizierung all, all,any, any,some some in, in,not notin in exists, exists,not notexists 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) Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Quantifizierung Welche Professoren halten (dieses Semester) keine Vorlesung? Sämtliche Informationen über Vorlesungen 5001 bzw 5041 Prof. B. Jung select Name from Professor where not exists (select * from Vorlesung where Leser = Persnr); select * from Vorlesung where Vorlnr in Einführung in die Informatik, WS 2007/08 (5001, 5041); TU Bergakademie Freiberg 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; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Gruppierung group groupby bySpalte(n) Spalte(n) select Leser, sum (Sws) from Vorlesung group by Leser; Summe SWS pro Leser Ergebnistabelle: Prof. B. Jung Gruppierung der Zeilen der Ergebnistabelle LESER SUM(SWS) --------- --------2125 10 2126 8 2133 2 2134 2 2137 8 Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 13 Gruppierung group groupby bySpalte(n) Spalte(n) having havingBedingung Bedingung 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 --------2125 2126 2137 Prof. B. Jung NAME SUM(SWS) ------------------------------ --------Sokrates 10 Russel 8 Kant 8 Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 14 Sortierung order orderby by Spalte(n) Spalte(n) asc / desc asc / desc Ausgabe der Studierendendatensätze, geordnet nach Matrikelnr Festlegen der Sortierreihenfolge der Ergebnistabelle (aufsteigend bzw. absteigend) 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; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 -----------------Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach PERSNR --------2136 2137 2126 2125 2134 2127 2133 Prof. B. Jung MATRNR --------24002 25403 26120 26830 27550 28106 29120 29555 NAME ------------------Curie Kant Russel Sokrates Augustinus Kopernikus Popper Einführung in die Informatik, WS 2007/08 RA -C4 C4 C4 C4 C3 C3 C3 TU Bergakademie Freiberg 15 Elementfunktion +, +,-,-,*,*,/,/,... ... char_length, char_length,substring, substring,||,||,...... current_time, current_date, current_time, current_date,+, +,-,-,*,*,... ... Um 1.0 verbesserte Noten für Kurs 4630 arithmetische Funktion Zeichenkettenfunktion Datumsfunktion select Matrnr, Note - 1 from prüfen where Vorlnr = 4630; select Name, Rang || '-Professur' from Professor; Prof. B. Jung NAME RANG||'-PROF ------------------------------ -----------Sokrates C4-Professur Russel C4-Professur Kopernikus C3-Professur Popper C3-Professur Augustinus C3-Professur Curie C4-Professur Kant C4-ProfessurTU Bergakademie Freiberg Einführung in die Informatik, WS 2007/08 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 16 Datenmanipulationssprache / Änderung Standard-Änderungsoperationen: insert . . . update . . . delete . . . Prof. B. Jung Einfügen Ändern Löschen TU Bergakademie Freiberg Einführung in die Informatik, WS 2007/08 Einfügen von Datensätzen insert insertinto intoTabelle Tabelle values valuesTupel; Tupel; Einfügen von Zeilen in eine existierende Tabelle insert insertinto intoTabelle Tabelle Anfrage; Anfrage; Beispiele: Einfügen neuer Datensätze insert into Professor values (2136, 'Einstein', 'C4', null); insert into Student (Matrnr, Name) values (25000, 'Goethe'); Prof. B. Jung Werte für alle Spalten Werte für benannte Spalten (andere Spalten: Default-Werte) Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Ändern von Datensätzen update updateTabelle Tabelle set setWerteänderung Werteänderung where whereBedingung Bedingung Ändern von Zeilen in einer existierenden Tabelle Alle Vorlesungen auf 2 SWS setzen Semesteranzahl von allen Studenten um 1 erhöhen Prof. Russel zieht in Raum 213 ein Daten zur Vorlesung 5001 aktualisieren update Vorlesung set Sws = 2; update Student set Sem = Sem + 1; update Professor set Raum = 213 where name = 'Russel'; update Vorlesung set Titel = 'Grundlagen', Sws = 3, Leser = 2125 where Vorlnr = 5001; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 18 Löschen von Datensätzen delete deletefrom fromTabelle Tabelle where whereBedingung Bedingung Löschen von Zeilen in einer existierenden Tabelle Alle Prüfungsdatensätze löschen Datensatz zur Vorlesung 5001 löschen 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); delete from prüfen delete from Vorlesung where Vorlnr = 5001; Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 $ Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 19 DDL: Erzeugen von Tabellen create createtable tableTabellen-Name Tabellen-Name (Spalten-Name (Spalten-NameTyp, Typ, Spalten-Name Spalten-NameTyp Typnot notnull, null, Spalten-Name Typ not Spalten-Name Typ notnull nullunique, unique, . .. ..).) Definition einer Tabelle mit Spalten und Integritätsbedingungen Beispiele: create table Professor (persnr number (5) not null unique, Name varchar (20) not null, Rang char (2), Raum number (4)); Prof. B. Jung create table voraussetzen (Vorgänger number (5), Nachfolger number (5)); Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg Transaktionen und Transaktionsmanagement Nebenläufigkeit (engl.: concurrency) 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 besteht wenn mehrere Benutzer gleichzeitig mit dem DBS interagieren diese Interaktionen können u.U. miteinander interferieren ("Wettlaufsituationen") Commit – alle Änderungen werden permanent Rollback – alle Änderungen werden zurückgenommen Transaktionsmanager Softwaremodul im DBS, das Transaktionslogik implementiert Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 20 Probleme mit Nebenläufigkeit, Beispiel Instant Messaging (Wettlaufsituation / race conditions) Alison It's a beautiful day. Alison It's a beautiful day. Let's go out after work. I agree totally Let's go out after work. Alison perhaps not, I look awful after the late party Brian I agree totally Brian Alison perhaps not, I look awful after the late party Alison perhaps It's a beautiful not, I look day Let's go awful after outthe after work.party late send Prof. B. Jung Brian I agree totally send Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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. 2. 3. 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. 2. 3. 4. 5. 6. Wert lesen: Der Wert wird aus DBS in den internen Speicher gelesen. Wert erhöhen: Der Wert wird im internen Speicher um 1 erhöht Wert schreiben: Der Wert aus dem internen Speicher zurück in DBS geschrieben A liest Wert in internen Speicher Æ A=1 B liest Wert in internen Speicher Æ B=1 (der Wert im DBS ist immer noch 1!) A erhöht intern Æ A=2 B erhöht intern Æ B=2 A schreibt Wert Æ Wert=2 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 21 ACID-Eigenschaften von Transaktionen Erwünschte Eigenschaften von Transaktionen Atomarität Konsistenz (Consisteny) Transaktion wird entweder ganz oder gar nicht ausgeführt 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 Dauerhaftigkeit in Ausführung befindliche Transaktionen beeinflussen sich nicht gegenseitig das Ergebnis einer Transaktion ist dauerhaft insbesondere auch nach Systemabstürzen Transaktionsmanager verantwortlich für Umsetzung der ACID-Eigenschaften Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 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 Prof. B. Jung Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 22 Systemüberblick Server OSToolbox Datenbank Datenbank "Maschine" "Maschine" SQLDDL DatenbankDatenbankentwurf entwurf SQLDML AnwendungsAnwendungsProgramm ProgrammBB SQL-DML AnwendungsAnwendungsProgramm ProgrammAA Verwaltung Verwaltung Klient Beispiele: - Oracle - IBM DB2 - Microsoft Access - MySQL -… Prof. B. Jung BuchungsBuchungssystem system Klient Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 23