Grundlagen von Datenbanken SS 2010 1. Einführung in das Thema Prof. Dr. Stefan Böttcher Universität Paderborn mit Material von Prof. Dr. Gregor Engels Agenda: (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Warum Datenbanken? Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 1 Anwendungen mit komplexer Datenverwaltung Beispiele und • PHP-Skript zur Anmeldung in den Übungsgruppen Name, Matrikelnummer, Gruppe, … • Klausur- und Übungsgruppenverwaltung Name, Matrikelnummer, Gruppe, Punkte, Klausurtermin, … • CASE-Tool Diagramme, Modellelemente, Java-Klassen und -Pakete, … • Lagerverwaltung des Kreiskrankenhaus Heidenheim Waren, Aufträge, Kommissioniervorgänge, … (Relationale) Datenbank Schreiboperationen Anfragen Probleme • Verwaltung großer Datenmengen • Paralleler Zugriff mehrerer Benutzer • Datenschutz vor unberechtigten Zugriffen • Datensicherheit bei Absturz von Anwendungen, Stromausfall, … • Datenunabhängigkeit durch Verstecken interner Datenformate vor Anwendung und Benutzern • Vermeiden von Datenredundanz zwischen verschiedenen Anwendungen Verschwendung von Speicherplatz Vergessen von Änderungen Uneinheitliche Speicherung Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 2 Warum Datenbanken? Lösung: Datenverwaltung als Teil der System-Software aus Anwendungen auslagern Individual-Software Anmeldeskript Anwendungs-Software Klausurverwaltung Basis-Software System-Software Übungs- und Klausurdaten Betriebssystem Datenbanksystem Softwareschichten (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 3 Warum Datenbanken? Verschiedene Definitionen des Begriffs Datenbank(system) • Eine Datenbank ist eine Sammlung von Informationen zu einem bestimmten Thema oder Zweck, wie z.B. dem Verfolgen von Bestellungen oder dem Verwalten einer Musiksammlung. Wenn Ihre Datenbank nicht oder nur teilweise in einem Computer gespeichert ist, müssen Sie die Informationen aus den verschiedenen Quellen selbst koordinieren und organisieren. • (Relationale) Datenbank Schreiboperationen Anfragen [MS-Access-Online-Hilfe] Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 4 Warum Datenbanken? Verschiedene Definitionen des Begriffs Datenbank(system) • Eine Datenbank (auch Datenbanksystem) ist ein System zur Beschreibung, Speicherung und Wiedergewinnung umfangreicher Datenmengen, die von mehreren Anwendungsprogrammen oder Anwendern benutzt werden. Es besteht aus einer Datenbasis, in der die Daten abgelegt werden und dem Verwaltungsprogramm (Datenbasismanagement), das die Daten entsprechend der vorgegebenen Beschreibung abspeichern, auffinden oder weitere Operationen durchführen kann. • [Informatikduden] (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 5 Warum Datenbanken? Datenbank/Datenbank(-Management)system • DBMS: Datenbank-Management-System • DBS: Datenbanksystem (DBMS + Datenbank) Anwendung 1 ... Anwendung n DBMS Datenbank (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 6 Warum Datenbanken? Grund-Prinzipien von DBS I • • • • • • verwalten persistente (langfristig zu haltende) Daten verwalten große Datenmengen effizient Datenbankmodell: alle Daten einheitlich beschrieben (Integration) Operationen und Sprachen deskriptiv (= getrennt von einer Programmiersprache) Transaktionskonzept, Concurrency Control: logisch zusammenhängende Operationen atomar (unteilbar), Auswirkungen langlebig, können parallel durchgeführt werden Datenschutz, Datenintegrität (Konsistenz), Datensicherheit (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 7 Warum Datenbanken? Grund-Prinzipien von DBS II • 3-Ebenen-Architektur physische Datenunabhängigkeit + logische Datenunabhängigkeit) • Trennen zwischen Schema (etwa Tabellenstruktur) und Instanz (etwa Tabelleninhalt) • Angelehnt an die 9 Codd‘schen Regeln … (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 8 Warum Datenbanken? 9 Codd‘sche Anforderungen an DBS 1. Integration: einheitliche nichtredundante Datenverwaltung 2. Operationen: Speichern, Suchen, Ändern, Löschen (ad hoc und “fest verdrahtet”) 3. Katalog: Zugriffe auf DB-Beschreibung im “Data Dictionary“ 4. Benutzersichten: verschiedene Sichten auf Datenbankausschnitte 5. Konsistenzüberwachung: Datenbankinhalt entspricht Schema 6. Datenschutz: Ausschluss unautorisierter Zugriffe 7. Transaktionen: mehrere Operationen als Funktionseinheit 8. Synchronisation: parallele Transaktionen koordinieren 9. Datensicherung: Daten-Wiederherstellung nach Systemfehlern (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 9 Warum Datenbanken? Komponenten eines Datenbanksystems spontane Nutzung Systemarchitektur gemäß ANSI-SPARC-Standard von 1978 (SPARC = Standards Planning and Requirements Engineering Committee) externe Ebene konzeptuelle Ebene interne Ebene Transformationskomponente Anfragen Optimierung Auswertung Plattenzugriff Updates vorgeplante Nutzung Operationen Prog 1 Data Dictionary Einbettung Sichtdefinition Prog Dateiorganisation Masken n Datendefinition Benutzungskomponente Programmier- Definitionskomponente komponente (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 10 Warum Datenbanken? Komponenten eines Datenbanksystems • • • • • • • • • • Datendefinition: konzeptuelle Definition aller Daten (konzeptuelles Schema) Sichtdefinition: Definition von Benutzersichten (externes Schema) Dateiorganisation: Definition des (internen) Dateiaufbaus und Zugriffsstrukturen (internes Schema) Masken: Entwurf der Benutzeroberfläche für Datenbankanwender Operationen: Anfragen und Änderungsoperationen (Updates) in Programmen Einbettung: Einbettung von Datenbankoperationen in Programme Progi: verschiedene Anwendungsprogramme Optimierung: Umformung von Anfragen (Updates) in effiziente Gestalt Auswertung: Durchführung der umgeformten Anfragen (Updates) Plattenzugriff: effiziente Ablage der Daten im Sekundärspeicher (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 11 Warum Datenbanken? Drei-Schichten-Schemaarchitektur (nach ANSI-SPARC) Datenvisualisierung externes Schema 1 … konzeptuelles Schema externes Schema n • Anfragebearbeitung Datenbankschema besteht aus • internes Schema internen Schema (Datenverwaltung auf Platte, Indexstrukturen, …) einem konzeptuellen Schema (Beschreibung der Gesamtstruktur, Integritätsbedingungen, … ) i.a. mehreren externen Schemata (Sichten für verschiedene Anwendungen, Benutzergruppen, … ) Trennung Schema - Instanz Schema = Beschreibung der Daten (Metadaten) Instanz = Anwenderdaten (Datenbankzustand, -ausprägung) (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 12 Warum Datenbanken? Was ist eine Datenbank? Dauerhafter Speicher für (ein große Menge von) Daten Daten sind morgen noch da Speicher ist strukturiert und organisiert Daten leichter (und effizienter) zu finden und zu ändern als im Datei-System Constraints (=Integritätsbedingungen) verhindern Speicherung "falscher" Daten in Datenbank Transaktionen garantieren Korrektheit, Dauerhaftigkeit, … (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 13 Warum Datenbanken? Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen) Tabellenname Woraus besteht eine Tabelle? Bestellungen bestNr Zeile=Datensatz=Tupel 22 datum teil kunde 22.6.04 13 Reich 44 Attributwert Spalte=Attribut (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 14 Warum Datenbanken? Grundkonzepte relationaler Datenbanken Attributwerte: 13, 22 , 'Reich' , … Attributwerte alleine ergeben keine Bedeutung (Sinn), wir brauchen eine Interpretation Attribute (=Namen für Speicherplätze für bestimmte Werte): bestNr, datum, teil, kunde Bestellungen Attribute haben eine Bedeutung bestNr Bestellnummer datum Bestelldatum teil Teilenummer kunde Kundennummer einer Bestellung (Relationale) Datenbank Schreiboperationen Anfragen bestNr 22 datum teil 22.6.04 Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 15 13 kunde Reich Warum Datenbanken? Grundkonzepte relationaler Datenbanken Attribute und ihre Werte alleine geben auch noch keinen Sinn, erst der Zusammenhang (= die Datenbeziehung = die Relation) in Tabelle Bestellungen ergibt Sinn: datum=22.6.04 teil=13 kunde='Reich' "am 22.6.04 bestellt der Kunde Reich das Teil mit der Nummer 13" Bestellungen bestNr 22 Attributwerte jeweils einer Zeile gehören zusammen und sind implizit UND-Verknüpft (Relationale) Datenbank Schreiboperationen Anfragen datum teil 22.6.04 Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 16 13 kunde Reich Warum Datenbanken? Schreib-Operationen auf Relationen Tabelle anlegen Spalten-Namen und -Typ angeben Tabelle löschen Tabellennamen angeben Tupel einfügen Werte angeben Tupel ändern Schlüsselwert und neue Werte angeben Bestellungen Schlüsselwert angeben bestNr datum teil kunde Tupel löschen 22 (Relationale) Datenbank Schreiboperationen Anfragen 22.6.04 Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 17 13 Reich Warum Datenbanken? Anfrage-Operationen auf Relationen (1) Projektion Spalten nach Namen auswählen Selektion Zeilen nach Inhalten auswählen Vereinigung von 2 Tabellen mit gleichen Spaltennamen Differenz von 2 Tabellen mit gleichen Spaltennamen Bestellungen kartesisches Produkt alle Kombinationen von Tupeln beider Tabellen (Relationale) Datenbank Schreiboperationen Anfragen bestNr 22 datum teil 22.6.04 Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 18 13 kunde Reich Warum Datenbanken? Anfrage-Operationen auf Relationen (2) Projektion Spalten nach Namen auswählen Selektion Zeilen nach Inhalten auswählen Vereinigung von 2 Tabellen mit gleichen Spaltennamen Differenz von 2 Tabellen mit gleichen Spaltennamen kartesisches Produkt alle Kombinationen von Tupeln beider Tabellen Bestellungen bestNr 22 datum teil 22.6.04 13 kunde Reich Reich (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 19 Warum Datenbanken? Anfrage-Operationen auf Relationen (3) Vereinigung, Schnitt und Differenzen erfordern 2 Tabellen mit gleichen Spaltennamen R RS bestNr datum teil kunde bestNr datum teil kunde 21 22 21.6.04 13 Reich 22.6.04 13 Reich 21 22 23 S R-S bestNr datum teil kunde 22 23 21.6.04 13 Reich 22.6.04 13 Reich 23.6.04 13 Reich bestNr datum teil kunde 22.6.04 13 Reich 23.6.04 13 Reich 21 21.6.04 13 Reich RS S-R bestNr datum teil kunde bestNr datum teil kunde 22 22.6.04 13 Reich (Relationale) Datenbank Schreiboperationen 23 Anfragen 23.6.04 13 Reich Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 20 Warum Datenbanken? Kartesisches Produkt B x K = alle Kombinationen von Tupeln beider Tabellen B und K Bestellungen bestNr datum teil kunde 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 (Relationale) Datenbank Schreiboperationen Kunden-Stammdaten kundenNr name 1 2 Anfragen plz ort str nr Reich Meier Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 21 Warum Datenbanken? Kartesisches Produkt B x K = alle Kombinationen von Tupeln beider Tabellen B und K Bestellungen bestNr 22 29 32 datum 22.6.04 29.6.04 29.6.04 teil 13 26 13 kunde 1 1 2 Kunden-Stammdaten kundenNr 1 2 name Reich Meier plz ort str nr str nr Bestellungen x Kunden-Stammdaten bestNr datum teil kunde 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 (Relationale) Datenbank Schreiboperationen kundenNr 1 1 1 2 2 2 Anfragen name plz ort Reich Reich Reich Meier Meier Meier Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 22 Warum Datenbanken? Join B |x| K kunde = kundenNr = alle Kombinationen von Tupeln beider Tabellen B und K, die eine Join-Bedingung erfüllen Bestellungen Kunden-Stammdaten kundenNr 1 2 bestNr datum teil kunde 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 name plz ort str nr Reich Meier Bestellungen |x| Kunden-Stammdaten kunde = kundenNr bestNr datum teil kunde 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 (Relationale) Datenbank Schreiboperationen kundenNr 1 1 2 Anfragen name Reich Reich Meier Datenbank-Schema plz ort SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 23 str nr Warum Datenbanken? Knobelaufgaben 1. Die CWA (Closed World Assumption) sagt (umgangssprachlich): Was aus der Datenbank nachweisbar ist, gilt auch – und alles andere (so nimm man an) gilt nicht. Was in den Tabellen einer relationalen Datenbank steht, wird als wahr interpretiert. Wenn etwas nicht in den Tabellen steht oder aus den Informationen der Tabellen der relationalen Datenbank ableitbar ist, gibt es verschiedene Deutungsmöglichkeiten: a) es ist bekannt, dass es nicht gilt b) man weiß nicht, ob es gilt oder nicht Kann man effizient (ohne all zu viele Daten sammeln zu müssen) zwischen a und b unterscheiden? Wenn ja, wie? 2. Kann man den Schnitt aus den andere Grundoperationen der Algebra ableiten? Kann man das auch, ohne die Differenz zu benutzen? (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 24 Warum Datenbanken? Schema der relationalen Datenbank Zu jeder Spalte einer Tabelle gibt es einen Datentyp (=Domäne), aus dem die Attributwerte gewählt werden dürfen, z.B. bestNr ist ganzzahlig Domänen der Spalten werden bei Tabellendefinition festgelegt, z.B. Datensätze (=Tupel von Attributwerten) dürfen aus dem Schema (= dem kartesischen Produkt der Domänen) gewählt werden, Bestellungen z.B. aus int x Date x int x char(20) . bestNr int datum Date teil kunde int char(20) 22 22.6.04 13 Zeile=Datensatz=Tupel Reich 44 Attributwert Spalte=Attribut (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 25 Warum Datenbanken? Schreib-Operationen in SQL Tabelle anlegen Spalten-Namen und -Typ angeben create table Bestellungen( bestNr int, datum Date, teil int, Kunde char(20) ); Tupel einfügen Werte angeben insert into Bestellungen values ( 22, 22-06-04, 13, "Reich" ) ; Bestellungen … eingefügte Tupel müssen zum Schema passen bestNr int datum Date 22 22.6.04 teil kunde int char(20) 13 Reich 44 (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 26 Warum Datenbanken? Anfrage-Operationen in SQL Projektion Spalten nach Namen auswählen select * from Bestellungen ; * = alle Spalten select Kunde, Teil from Bestellungen ; Selektion Zeilen nach Inhalten auswählen select * from Bestellungen where teil = 13 Bestellungen bestNr datum teil kunde 22 22.6.04 13 Reich 44 Projektion& Selektion select teil, datum from Bestellungen where Kunde = "Reich" (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 27 Warum Datenbanken? Warum Datenbanksysteme (1) ? Anfrageoptimierung: Zeitgewinn bei komplexen Anfragen (mit mehreren Tabellen-Verknüpfungen) : bis zu Faktor 100 (und mehr) Bestellungen bestNr datum teil kunde (Relationale) Datenbank Schreiboperationen Kunden-Stammdaten kundenNr name Anfragen plz ort Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 28 str nr Warum Datenbanken? Warum Datenbanksysteme (2) ? Transaktionen ( =mehrere Datenbank-Aktionen zusammengefasst zu einer Einheit ) sind : Eigenschaft Bedeutung Beispiel A atomar ganz oder garnicht Überweisung C consistent korrekt Dateneingabe I isoliert ungestört von parallelen Transaktionen Flugbuchung D dauerhaft Daten gesichert Auszahlung (Relationale) Datenbank Schreiboperationen Anfragen Datenbank-Schema SQL Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher – Folie 1 - 29 Warum Datenbanken?