Motivation Begriffe Systemarchitektur Datenbankmodelle Datenbank-Entwurf Nutzung von n Seite 1 Motivation Dateien: innere Struktur durch den Entwickler definiert Zugriffs- und Verarbeitungsoperationen müssen individuell programmiert werden Zugriff auf Daten in Dateien Kenntnis von Dateinamen und innerer Struktur notwendig Dateizugriff zu einer Zeit auf einen Nutzer beschränkt Bedarf: Dialog-Betrieb mit Zugriff mehrerer Nutzer "gleichzeitig" Zugriff ohne Kenntnis von Dateinamen und innerer Struktur flexible Dateistruktur, während der Nutzung veränderbar Seite 2
Datenbanksystem Begriffe Ein Datenbanksystem (DBS) ist eine Menge von großen, integrierten und mehrfach und unterschiedlich nutzbaren Datenbanken (DB) samt Software (+ evtl. Hardware) für ihre dauerhafte ("persistente"), zuverlässige und programmunabhängige Verwaltung durch ein DB-Managementsystem (DBMS) / DB-Betriebssystem (DBBS) also: DBS = DB + DBMS Seite 3 Datenbanksystem Begriffe Nutzer 1 Datenbank (DB) Datenbankbetriebssystem (DBBS) Nutzer 2 Nutzer 3 Nutzer n Seite 4
Datenbanksystem Anforderungen Integration: einheitliche Verwaltung aller Daten ohne Redundanz und ohne unkontrollierten Zugriff Operationen: Bereitstellung grundlegender Operationen für Daten-Speicherung, -Änderung und Suche Datenunabhängigkeit: Möglichkeit unterschiedlicher Benutzersichten auf die Daten (Zusammenfassen / Ausblenden von Daten) Konsistenzüberwachung: bei Datenabhängigkeiten (referentielle Integrität) und konkurrierendem Zugriff Zugriffskontrolle: Vergabe von Zugriffsrechten und deren Kontrolle Transaktionen: logisch zusammengehörige Operationen werden nur komplett oder gar nicht ausgeführt Synchronisation: bei konkurrierendem Zugriff auf gleiche Daten Datensicherung: Permanente ("persistente") Speicherung der Daten Trennung der Daten von den Anwendungen Effizienz und Verfügbarkeit rund um die Uhr Seite 5 DB-System-Architektur Nutzerkomponenten Anfragen und Änderungen Transformationskomponenten Auswertung Optimierer Plattenzugriff P1 DB-Operationen Masken Data Dictionary Pn Einbettung Programmierkomponenten Sichtendefinition Dateiorganisation Definitionskomponenten Datendefinition Seite 6
Datenbankmodelle Entity-Relationship-Modell Entity (Objekt, Ding, Gegenstand, Entität): wird durch seine Eigenschaften beschrieben gleichartige Beschreibungen bilden Entity-Typ Relationship (Beziehung, Relation): Beschreibung der Beziehungen zwischen einzelnen Entity's kann selbst Eigenschaften besitzen Attribute: sind Abbildungen der Eigenschaften von Entity's und/oder Relationship's besitzen einen Namen und einen Datentyp Schlüssel (key): Attribut(e) zur eindeutigen Identifizierung von Entity's Kardinalitäten: definieren, wie oft ein Entity des einen Typs eine Beziehung mit einem Entity des anderen (an der Beziehung beteiligten) Typs eingehen kann / darf / muss Seite 7 Entity-Relationship-Diagramm Buchhandel # ISBN * Autor * Titel Preis Buch ist im Katalog Katalogeintrag ist Buch Katalog # BuchNr # ExemplarNr Katalog-Buch wird von Leser ausgeliehen Rückg.Datum (RDatum) Leser leiht Katalog-Buch aus Einfache Verwaltung einer Bibliothek Bibliotheksbestand steht im Katalog Buchdaten stehen im Buchhandel Leserdaten in Leser Leser # LeserNr * Name * Vorname Straße PLZ Ort Seite 8
Relationales Datenmodell Relationenschema R = Relation r(r) = A 1 A 2 d 1,1 d 2,1 d 1,2 d 2,2 d 1,i d 2,1 Attribut Domäne Tupel Wert Seite 9 Relationales Datenmodell Beispiel: Bibliothek Leser LNr Name Vorname Straße PLZ Ort 22110825 Nenast Hans-Peter Karl-May-Weg 1 06628 Bad Kösen 23985612 Röhn Thomas J.-R.-Becher-Str. 19 06231 Bad Dürrenberg 23986179 Schirmer Jürgen Leninstr. 58 06231 Bad Dürrenberg Buchhandel ISBN Autor Titel Preis 3-446-21175-6 Borkner-Delcarlo, Olaf Java 1,2 auf Linux 89.80 3-446-19341-3 Greenspun, Philip Datenbankgestützte Web-Sites 79.80 3-211-81873-1 Reinauer, G. Computerunterstütztes Konstruieren 32.00 Katalog BNr ExNr ISBN LNr RDatum 74300 1 3-446-21175-6 74300 2 3-446-21175-6 23985612 12.12.04 74302 1 3-211-81873-1 22110825 04.10.04 Seite 10
Datenbank-Nutzung Abfragesprache SQL Abfragesprache (query language) SELECT spalte, FROM tabelle, WHERE spalten-auswahlbedingung GROUP BY gruppierungsspalte, HAVING gruppen-auswahlbedingung ORDER BY spalte, ; Beispiel: Welche Bücher sind z.z. ausgeliehen (wer, was, bis wann)? SELECT Leser.Name, Buchhandel.Titel, Katalog.RDatum FROM Leser, Buchhandel, Katalog WHERE Leser.LNr = Katalog.LNr AND Buchhandel.ISBN = Katalog.ISBN AND Katalog.LNr is not null ORDER BY RDatum ; Seite 11 Betrieb von n Bearbeitung von Datenbeständen Anfrage (query / select): Abgrenzen eines Datenbank-Ausschnitts und Herauslesen des Inhalts (ohne Änderung) Änderung (insert / update / delete): (teilweise oder vollständige) Veränderung eines abgegrenzten Datenbank-Ausschnitts Transaktion: aus Anwendersicht abgeschlossene, konsistenzerhaltende Folge von elementaren Operationen auf einer Datenbank Seite 12
Datenbank-Implementierung Entwurf: Definition der Tabellen Festlegung von Primärschlüsseln Abbildung der Beziehungen zwischen Tabellen durch Fremdschlüssel Beschreibung in einer Datendefinitionssprache (DDL) Füllen der Datenbank mit Daten Seite 13 Implementierung von Tabellen Datendefinitionssprache (DDL) CREATE TABLE Leser ( LNr CHAR(8) NOT NULL, Name VARCHAR2(30), Vorname VARCHAR2(30), Str VARCHAR2(30), PLZ VARCHAR2(10), Ort VARCHAR2(30), CONSTRAINT L_pk PRIMARY KEY (LNr) ); CREATE TABLE Buchhandel ( ISBN CHAR(13) NOT NULL, Autor VARCHAR2(80), Titel VARCHAR2(180), Preis NUMBER(8,2), CONSTRAINT B_PK PRIMARY KEY (ISBN) ); CREATE TABLE Katalog ( BNr CHAR(6) NOT NULL, ExNr CHAR(2) NOT NULL, ISBN CHAR(13) NOT NULL, LNr CHAR(8), RDatum DATE, CONSTRAINT K_pk PRIMARY KEY (BNr, ExNr), CONSTRAINT K_fk1 FOREIGN KEY (ISBN) REFERENCES Buchhandel, CONSTRAINT K_fk2 FOREIGN KEY (LNr) REFERENCES Leser ); Seite 14
Füllen der Tabellen / Datenänderung Datenmanipulationssprache (DML) INSERT INTO Leser VALUES ( 23986179, 'Schirmer', 'Jürgen', 'Leninstr. 58', '06231', 'Bad Dürrenberg' ); UPDATE Buchhandel ( SET Preis = 49.90 WHERE ISBN = '3-211-81873-1' ); DELETE Katalog WHERE BNr = 74300 AND ExNr = 1 ); Seite 15 Physische DB-Struktur Beispiel: Oracle F1 F2 F6 F3 F4 F5 Datenbank-Files Online-REDO-Log-Files Control-Files Fn DB-Tablespaces Seite 16
Datenbank-Software-Architektur Beispiel: Oracle Anwendungsprozesse ORACLE-Datenbankbetriebssystem ORACLE-Datenbank DB- C A C H E DBWR LGWR ARCH SMON PMON CHKP Shared und Dedicated ORACLE-Server-Prozesse ORACLE-Instanz mit DB-Cache (SGA) und Hintergrundprozessen Seite 17 Datenbank-Prozess-Struktur Beispiel: Oracle ORACLE-Datenbank-Server DB-Block- Puffer DB-Cache R E D O Shared SQL-Pool 1 4 2 3 3 4 DBWR LGWR PMON SMON ARCH 1 4 2 4 5 4' Datenbank-Files Redo-Log-Files archivierte 5 Redo-Log-Files Seite 18
Transaktionsablauf Beispiel: Oracle Prozess DB-Cache LGWR DBWR insert into <tabelle> update <tabelle> delete from <tabelle> commit DB- B L O C K P U F F E R R E D O Nach dem commit wird der Redo-Log-Puffer auf das Redo-Log-File geschrieben schreibt asynchron modifizierte DB-Blöcke vorausgegangener und eventuell aktueller Transaktionen zurück auf die DB-Files if ok then weiter Redo-Log-Files DB-Files Zeit Seite 19 Konkurrierende Transaktionen Beispiel In einem Platzreservierungssystem werden durch eine Transaktion1 N Plätze im Flug "X" rückgängig gemacht und anschließend im Flug "Y" reserviert; eine Transaktion2 reserviert M Plätze im Flug "X" Transaktion1 read_item (X) X := X N write_item (X) read_item (Y) Y := Y + N write_item (Y) Transaktion2 read_item (X) X := X + M write_item (X) Zeit Seite 20
Konkurrierende Transaktionen Lost-Update-Problem Liest T2 den Wert von X, bevor T1 die Änderung in der Datenbank abgespeichert hat, ist der Endwert von T1 verloren "verlorene Änderung", "Lost-Update-Problem" Transaktion1 read_item (X) X := X N write_item (X) read_item (Y) Y := Y + N write_item (Y) Transaktion2 read_item (X) X := X + M write_item (X) Zeit Seite 21 Konkurrierende Transaktionen Temporary-Update-Problem Transaktion scheitert während ihrer Ausführung Änderungen in der Datenbasis sind bereits vorgenommen, andere Transaktion greift auf geändertes Datenelement zu, ehe der alte Zustand wiederhergestellt wurde "temporäre Änderung", "Temporary Update Problem" Transaktion1 read_item (X) X := X N write_item (X) read_item (Y) Transaktion2 read_item (X) X := X + M write_item (X) Abbruch: T1 wird rückgängig gemacht Zeit Seite 22
Konkurrierende Transaktionen Dirty-Read-Problem Wird über mehrere Datensätze z.b. die Summe von einzelnen Datenelementen gebildet, während eine andere Transaktion gerade eines aktualisiert, können falsche Werte entstehen "schmutziges Lesen", "Dirty-Read-Problem", "incorrect summary problem" Transaktion1 Abbuchen Konto1 Gutschreiben Konto 2 Transaktion2 Saldenbestände lesen Zeit Seite 23 Fehler bei der Ausführung von Transaktionen Hard- oder Software-Fehler während einer Transaktion (crash): meist Verlust der Daten im Hauptspeicher Systemabsturz während einer Transaktion (z.b. Division durch Null, falsche Parameter) Abbruch der Transaktion wegen selbsterkanntem Fehler (z.b. Zugriff auf Datenelemente, die nicht gefunden werden): Transaktion wird zurückgesetzt Integritätskontroll-Komponente verlangt den Abbruch Schreibkopf einer Platte berührt die Oberfläche (head crash): Schreib-/Lesefehler; Datenblöcke werden unlesbar Einfluss höherer Gewalt: Feuer, Wasser, Diebstahl, Sabotage Seite 24
Transaktionsablauf Beispiel: Oracle Prozess DB-Cache LGWR DBWR insert into <tabelle> update <tabelle> delete from <tabelle> commit DB- B L O C K P U F F E R R E D O Nach dem commit wird der Redo-Log-Puffer auf das Redo-Log-File geschrieben schreibt asynchron modifizierte DB-Blöcke vorausgegangener und eventuell aktueller Transaktionen zurück auf die DB-Files if ok then weiter Redo-Log-Files DB-Files Zeit Seite 25 Kontrolle des Nutzer-Zugriffs Datenbank- Administrator username / password Rechte Nutzer Seite 26
Rechte Datenbank-Sicherheit unterscheidet Systemsicherheit Datensicherheit Systemrechte: gesicherter Zugriff zur Datenbasis connect resource dba to <nutzer> Objektrechte: Änderungen des Inhalts von Datenbank-Objekten select update delete on <datenbankobjekt> to <nutzer> Seite 27 Kontrollfragen 1. Welche Anforderungen erfüllen Dateien nicht, die bei DBS erfüllt sind? 2. Wie kann man sich die Struktur einer relationalen Datenbank vorstellen? 3. Wie werden Beziehungen zwischen den Daten abgebildet? 4. Was versteht man unter Primär-, was unter Fremdschlüsseln? 5. Wie erfolgt der Zugriff auf Daten in einer Datenbank? 6. Was ist eine Transaktion? 7. Wie wird verhindert, dass bei Fehlern Daten verloren gehen? 8. Wie kann man sichern, dass Nutzer nur Zugriff zu bestimmten Daten bekommen? Seite 28