Einführung Grundlagen der Programmierung 2 Einführung in Datenbanken Grundlagen der Programmierung 2 I-1 Einführung Inhalt • Einführung • Entity-Relationship-Diagramm • Relationales Modell • Entity-Relationship-Diagramm ins Relationales Modell umwandeln • Die relationale Abfragesprache SQL (+ Transaktionen Grundlagen) • Normalisierung Grundlagen der Programmierung 2 I-2 Einführung Literaturliste für den Datenbanken Teil Thema R. Elmasri (D./Engl.) A. Kemper Einführung Kapitel 1 Chapter 1 Kapitel 1 Entity-Relationship Diagramm Kapitel 3 Chapter 3 Kapitel 2.1 - 2.12 Relationales Modell Kapitel 5 Chapter 5 Kapitel 3.1 - 3.4 Entity-Relationship Diagramm ins Relationales Modell umwandeln Kapitel 7.1 Chapter 7.1 Kapitel 3.2 - 3.3 SQL Kapitel 61 – 6.5 / 12.1 – 12.2 (Transaktionen Grundlagen) Chapter 8 / 17.1 – 17.2 Kapitel 4.1 - 4.16 Kapitel 9 Normalisierung Kapitel 9 Chapter 10 Kapitel 6.1 - 6.8 • Ramez Elmasri und Shamkant B. Navathe, 'Grundlagen von Datenbanksystemen', Pearson Studium, 2002, ISBN 9783827370211 • Kemper, A. Eickler: 'Datenbanksysteme - Eine Einführung ', 6. Auflage Oldenburg Verlag, 2006, ISBN 3-486-57690-9 • Ramez Elmasri und Shamkant B. Navathe: ‘Fundamentals of Database Systems’, Addison-Wesley Longman, 2003, ISBN 9780321204486 Grundlagen der Programmierung 2 I-3 Einführung Datenbanken – wozu? Kernaufgaben von Datenbanksystemen ist die Speicherung und Verwaltung von großen Datenbeständen. Grundlagen der Programmierung 2 I-4 Einführung Beispiel Bank: konto Kontonummer Art Saldo 4325928 Giro -124.12 2345332 Spar 2001.03 … … … kunde Kundennr Vorname Nachname Kontonummer 1 Peter Mueller 4325928 2 Klara Maier 2345332 3 Hilde Mueller 4325928 .. … … … Mögliche Operationen: • Aktuelles Saldo (read) • Geld abheben/einzahlen (update) • Neues Konto eröffnen/löschen (insert/delete) • Neue Kunden hinzufügen/löschen (insert/delete) Grundlagen der Programmierung 2 I-5 Einführung Beispiel Uni-Datenbank: student Matrikelnummer Vorname Nachname 26123 Peter Mueller 21098 Klara Maier vorlesung Vorlesungsnummer Titel 01 Datenbanksysteme I 02 E-Commerce II hört Matrikelnummer Vorlesungsnummer 26123 01 26123 02 21098 01 Grundlagen der Programmierung 2 I-6 Einführung Datenbanksystem vs. Dateiorganisation 1. Dateiorganisation Speicherung der Daten für jede Anwendung in einzelnen Dateien. Grundlagen der Programmierung 2 I-7 Einführung Nachteile: • Redundanz und Inkonsistenz Informationen werden mehrfach gespeichert. • Beschränkte Zugriffsmöglichkeiten Informationen können bei isolierten Dateien schwer miteinander verknüpft werden. • Eingeschränkter Mehrbenutzerbetrieb Mehrbenutzerbetrieb wird von Dateisystemen nicht unterstützt. • Integritätsverletzung Einschränkende Bedingungen (Constraints) sind schwer zu überprüfen. • Sicherheitsprobleme Nicht alle Benutzer sollen Zugriff auf alle Daten haben. Grundlagen der Programmierung 2 I-8 Einführung 2. Datenbanksystem (DBS) Zentrale Datenverwaltung und Datenhaltung. Grundlagen der Programmierung 2 I-9 Einführung Vorteile von Datenbanksystemen Die relationalen Datenbanksysteme wurden entwickelt (seit ca. 1975 von IBM Research), um die Probleme mit der getrennten Dateihaltung zu überwinden: • Redundanz und Inkonsistenz Werden durch die zentrale Datenverwaltung und Datenhaltung vermieden. • Beschränkung der Zugriffsmöglichkeiten Durch verschiedene Konzepte können Informationen miteinander verknüpft werden (z.B. relationales Modell). • Eingeschränkter Mehrbenutzerbetrieb Durch die zentrale Benutzerverwaltung einfach zu realisieren. • Integritätsverletzungen Durch Constraints in der zentralen Datenverwaltung gut umzusetzen. • Sicherheitsprobleme Durch die zentrale Benutzerverwaltung können Zugriffsrechte gut kontrolliert werden. Grundlagen der Programmierung 2 I-10 Einführung weitere Vorteile von DBS: • Physische Datenunabhängigkeit: Anwendungen von Modifikationen an der physischen Speicherstruktur nicht betroffen. • Logische Datenunabhängigkeit: Änderungen an der logischen Datenstruktur beeinflussen Anwendungen nicht. • Dauerhafte Speicherung von großen Datenbeständen. • Bereitstellung einer Anfragesprache zum einfachen Umgang mit der Datenbank. • Sicherheit gegenüber Hard- und Softwareausfällen. • Effizient, möglichst schnell unter Benutzung weniger Ressourcen. Grundlagen der Programmierung 2 I-11 Einführung Die drei Abstraktionsebenen eines DBS Grundlagen der Programmierung 2 I-12 Einführung Die verschiedenen Ebenen können analog zu den Konzepten in Programmiersprachen verdeutlicht werden. Ein Kunde könnte in einer imperativen Programmiersprache wie folgt deklariert werden: TYPE Kunde = RECORD Name: String; Strasse: String; Ort: String; END; Der Record Kunde hat hier drei Felder. Jedem Feld wird ein Name und ein Type zugewiesen. Grundlagen der Programmierung 2 I-13 Einführung Datenabstraktion (Data Abstraction) Sehr grob unterscheidet man drei Abstraktionsebenen in einem Datenbanksystem: • Die physische Ebene (physical level): Auf dieser Ebene ist beschrieben, wie die Daten auf dem Sekundärspeicher abgelegt sind. • Die logische/konzeptionelle Ebene (conceptual level): Auf dieser Ebene wird mittels eines Datenbankschemas festgelegt, welche Daten abgespeichert sind. • Die Sichten (view level): In den Sichten werden Teilmengen der Daten dargestellt. Die Sichten sind auf die Bedürfnisse der Benutzer zugeschnitten. Grundlagen der Programmierung 2 I-14 Einführung • Auf der physischen Ebene kann die Speicherung eines Kunden als Block (von Words oder Bytes) im Speicher beschrieben werden. • Die konzeptionelle Ebene beschreibt die Type Deklaration und die Beziehungen zwischen einzelnen Typen wie oben beschrieben. • Die einzelnen Sichten zeigen schließlich nur Teile der vorhandenen Daten. Ein Kassierer am Bankschalter sieht zum Beispiel nur die für ihn relevanten Daten und nicht auch Gehaltsinformationen von Kollegen. Grundlagen der Programmierung 2 I-15 Einführung Beispiel: Grundlagen der Programmierung 2 I-16 Einführung Architekturübersicht eines DBMS Quelle: A. Kemper, A. Eickler: Datenbanksysteme – Eine Einführung Grundlagen der Programmierung 2 I-17 Einführung Wichtige relationale Datenbanksysteme Datenbanksystem Hersteller DB2 IBM Oracle Database Oracle Microsoft SQL Server Microsoft MySQL MySQL AB (SUN Microsystems) MaxDB (früher SAP DB) SAP MS Access Microsoft SQLite Open Source Community Ingres University of California, Berkeley Grundlagen der Programmierung 2 I-18 Einführung Marktanteile der Datenbanksysteme Quelle: Bharathi Manivannan Selvaraj Survey – I Popular DBMS in the Market (September 2007) Grundlagen der Programmierung 2 I-19 Einführung Beliebtheit der Datenbanksysteme Quelle: Evans Data Corp: Users’ Choice Database Servers (2008) Grundlagen der Programmierung 2 I-20 Einführung Worldwide relational database market (2005) Gesamt Wert: 13.8 Milliarden Dollar Wachstum 2005: 8.4% Quelle: Gardner (2005) Grundlagen der Programmierung 2 I-21