Aufbau, Theorie und Anwendung (im Unterricht) Johannes Gutenberg Universität Mainz Fachbereich 08: Informatik Seminar: Didaktik der Informatik, SS09 Dozenten: Prof. Dr. Herbert Göttler mit OStR Martin Mattheis Referent: Christian Herres Datenbanken Aufbau, Theorie und Anwendung (im Unterricht) 26/27.06.2009
Verlaufsplan Einordnung in den Lehrplan Theoretische Einführung Aufbau relationaler Datenbanken Structured Query Language
Einordnung in den Lehrplan Sensibilisierung (Wo gibt es DB ?) Unterschiede: elektronisch nicht elektr. Aufbau und Darstellung von DB Einführung des relationalen Modelles Einführung von Schlüsselattributen Normalisierung Structured Query Language (SQL) Modellierung eigener Datenbanken
Theoretische Einführung Wo gibt es DB? Was ist eine DB? Das Database Management System (DBMS) Bestandteile von Datenbanksystemen Arten von Datenbanksystemen
Wo gibt es Datenbanken? Nicht elektronisch: Zettelkasten in der Bibliothek Telefonbuch Elektronisch: ub.uni-mainz.de Telefonbuch.de Handy Unterschiede? Schneller, gerodneter, redundanzfrei, Zugriffsrechte gewährleistet etc.
Was ist eine Datenbank? „Eine Datenbank ist eine geordnete, selbstbeschreibende Sammlung von Daten, die miteinander in Verbindung stehen.“ Geisler, Frank (2005). Metadaten / Daten
Probleme von Datenbanken Zugriffsrechte/Redundanz/Löschen von Daten Lösung: DBMS Physikalische Abspeicherung der Daten unwichtig und wird normalerweise nicht bekannt gegeben
Bestandteile von DB Hardware Software Daten DBMS Nutzer Speicher Rechner Ausgabe- Geräte Tools OS
Arten von DB Hierarchisch Wurzel- / Kindknoten i:M – Beziehungen Beziehungen zwischen Knoten sind starr Netzwerk M:N Beziehungen indirekte Beziehungen möglich immer noch strukturell abhängig
Arten von DB Objektorientiert Möglichkeit der Abänderung bleibt bestehen strukturell unabhängig alle Vorteile der objektorientierten Programmierung sehr schnell aber schwer übertragbar, da keine Standards definiert hohe Lernzeit für Nutzer
Arten von DB ER-Methode (Entity Relationship) Nicht implementativ, sondern konzeptionell beschreibt Entitäten und Beziehungen grafisch darstellbar Baum Ast hat Blätter Vögel auf/hat i N M
Relationales Modell relation = Tabelle Tabellarische Auflistungen von Entitäten Verknüpfung beliebig über Schlüssel durchführbar langsamer als Objektorientiertes Modell oft nutzt man Mischformen zwischen objektorientierten und relationalen Ansätzen
Relationales Modell Struktur physikalische Speicherung hier uninteressant Daten auf dem Datenträger müssen keine Tabellen sein Code für die eigentliche DB nicht einsehbar aber auch nicht von Interesse, da dieser nur im Performanzbereich wichtig wird
Relationales Modell Spalte / Attribut Primärschlüssel Kunde KUNDE_ID NAME NACHNAME 1 Christian Herres 2 Max Mustermann Metadaten Zeile / Entität Feld / Datum Voraussetzungen: Spaltennamen eindeutig innerhalb Tabelle jedes Feld Muss eindeutig beschreibbar und adressierbar sein Spaltennamen sind großgeschriebene Substantive Nomenklatur der Primärschlüssel sollte einheitlich sein
Relationales Modell Datentypen: Felder haben festen Datentyp die Domäne ist Wertebereich den Felder tatsächlich annehmen Die Noten N= {1,2,3,4,5,6} sollen gespeichert werden. Der Datentyp könnte INTEGER sein, also alle ganzen Zahlen. Die Domäne wäre aber nur eine Teilmenge von N.
Relationales Modell Verknüpfung von Daten erfolgt über Primärschlüssel Kunde leiht Buch
Relationales Modell Beziehungen zwischen Daten Kunde KUNDE_ID NAME NACHNAME 1 Christian Herres 2 Max Mustermann Buch BUCH_ID BUCHNAME 1 Datenbanken 2 Campbell Ausleihe AUSLEIHE_ID KUNDE_ID BUCH_ID DATUM RUECKGABE 1 2 2009-01-01 2009-02-22 NULL 3 2009-02-23
Relationales Modell Primärschlüssel: Primärschlüssel identifizieren Attribute P A1,A2 Das Attribut A1 / A2 ist funktional abhängig vom Primärschlüssel P der Primärschlüssel kann aus mehreren Feldern bestehen P1,P2 A1,A2 - kann künstlich / natürlich sein (eine ID wäre künstlich)
Normalisierung Normalisierung bezeichnet einen Prozess, an dessen Ende eine möglichst gute, sinnvolle und redundanzfreie Datenbank steht. Kunde KUNDE_ID ANREDE NACHNAME 1 Herr Herres 2 Mustermann 3 Frau Fröhlich 4 Meier Kunde KUNDE_ID ID_ANREDE NACHNAME 1 Herres 2 Mustermann 3 Fröhlich 4 Meier Redundanz ist hier systemimmanent
Erste Normalform Leihe LEIHE_ID NAME ID_BUCH BUCHNAME DATUM 1 Max Mustermann 2 3 4 Datenbanken Campbell Grundgesetz Herr der Ringe 2009-01-01 2009-02-02 Leihe LEIHE_ID NAME BUCH_ID BUCHNAME DATUM 1 Max Mustermann Datenbanken 2009-01-01 2 Campbell 3 Grundgesetz 2009-02-02 4 Herr der Ringe Eine Tabelle ist dann in der ersten Normalform, wenn es keine Wiederholungsgruppen, also Zellen mit Wertemengen mehr gibt und alle Schlüsselattribute vorhanden sind beziehungsweise alle Attribute vom Primärschlüssel abhängen.
Zweite Normalform Besitzt eine Tabelle nur ein Primärschlüsselattribut ist sie automatisch in der zweiten Normalform, wenn Sie sich in der ersten Normalform befindet. funktionale Abhängigkeit Leihe LEIHE_ID NAME BUCH_ID BUCHNAME DATUM 1 Max Mustermann Datenbanken 2009-01-01 2 Campbell Leihe LEIHE_ID KUNDE_ID BUCH_ID DATUM 1 2009-01-01 2 Kunde KUNDE_ID NAME 1 Max Mustermann 2 Christian Herres Buch BUCH_ID NAME 1 Datenbanken 2 Campbell
Dritte, vierte und fünfte Normalform Eine Tabelle befindet sich dann in der dritten Normalform, wenn sie keine transitiven oder funktionalen Abhängigkeiten mehr aufweist. Transitive Abhängigkeit könnte zum Beispiel noch die Zuordnung von Leihkosten sein Vierte Normalform: es liegen noch maximal 2 zusammenhängende Abhängigkeiten vor Fünfte Normalform: jede Bedingung der Relation ist eine logische Folge der Definition der Schlüssel und der Domänen völlige Redundanzfreiheit schnell, logisch, aber zu komplex
Structured Query Language Data Definition Language (DDL) Anlegen / Editieren / Löschen (Tabellenstruktur) Data Control Language (DCL) Steuerung der Zugriffsberechtigungen (Benutzer) Data Manipulation Language (DML) Erstellen / Bearbeiten / Löschen / Lesen (Entitäten)
SQL - DDL CRATE TABLE Buch ( BUCH_ID INTEGER PRIMARY KEY, BUCHNAME TEXT ); ALTER TABLE Buch ADD ERSCHIENEN TEXT; DROP TABLE Buch; Buch BUCH_ID BUCHNAME Buch BUCH_ID BUCHNAME ERSCHIENEN
SQL - DCL GRANT SELECT ON Buch TO herres; Berechtigungen für Nutzer in der DML DENY SELECT ON Buch TO herres;
SQL – DML: INSERT SELECT / INSERT / DELETE / UPDATE Buch BUCH_ID INSERT INTO Buch VALUES (1‚‘Datenbanken‘); INSERT INTO Buch SET ID_BUCH=1, BUCHNAME=‘Datenbanken‘; Buch BUCH_ID BUCHNAME 1 Datenbanken Buch BUCH_ID BUCHNAME wirft Fehler wenn nicht eindeutig Besser den Zusatz „auto increment“ bei Erstellung der Tabelle geben
SQL – DML: UPDATE / DELETE UPDATE Buch SET BUCHNAME=‘Fahrer‘ WHERE ID_BUCH=’2’; Buch BUCH_ID BUCHNAME 1 Datenbanken 2 Campbell 3 Muster 4 Maler Buch BUCH_ID BUCHNAME 1 Datenbanken 2 Fahrer 3 Muster 4 Maler DELETE FROM Buch WHERE ID_BUCH=’4’;
SQL – DML: SELECT SELECT FROM Buch WHERE NAME=’Muster’; Buch BUCH_ID BUCHNAME WERT 1 Datenbanken 35 2 Campbell 50 3 Muster 12 4 13
SQL – DML: AND SELECT FROM Buch WHERE NAME=’Muster’ AND WERT> ’12’; BUCH_ID BUCHNAME WERT 1 Datenbanken 35 2 Campbell 50 3 Muster 12 4 13 ’
SQL – DML: ORDER BY SELECT FROM Buch WHERE NAME=’Muster’ ORDER BY WERT ; ASC / DESC Standard ist ASC (aufsteigend) Buch BUCH_ID BUCHNAME WERT 1 Datenbanken 35 2 Campbell 50 3 Muster 12 4 13 ’
>>Ausgabe<< SQL – DML: (equi) JOIN Leihe LEIHE_ID KUNDE_ID BUCH_ID DATUM 1 2009-01-01 2 Kunde KUNDE_ID NAME 1 Max Mustermann 2 Christian Herres Buch BUCH_ID NAME 1 Datenbanken 2 Campbell SELECT Leihe.DATUM, Buch.BUCHNAME, Kunde.NAME FROM Leihe L, Buch B, Kunde K WEHRE L.KUNDE_ID = K.KUNDE_ID AND L.BUCH_ID = B.BUCH_ID >>Ausgabe<< NAME BUCHNAME DATUM Max Mustermann Datenbanken 2009-01-01 Campbell
Ende des theoretischen Teils.
Konzeption Unterrichtsreihe Ziel: Jeder Schüler soll den Aufbau einer relationalen Datenbank kennen, sowie mit SQL und einer Umgebung einfache Abfragen erstellen können. Antinomie: „Wenn man konzeptionelle Fragen diskutiert, werden ‚Hacker‘ unter den Schülern, die jedes Bit vom Rechner beim Vornamen kennenlernen wollen, eher abgeschreckt.“ Wittem, H. zitiert in: Baumann, Rüdiger (1997), S.293. Konzeptionelle Sicht aber sehr wichtig für die Entwicklung und das Verständnis von Datenbanksystemen.
Grober Verlauf der Reihe Einführung (1) Was sind DB / Beispiele / Bezug zu realen Welt Grundlagen (1) DBMS / Bestandteile / ER-Modell Relationales Modell (2-3) Andere Modelle / Tabellenschema / Datentyp / Domäne / Redundanz Modellierung (2-4) PhPMyAdmin / SQL – DDL – DML – (DCL) / Abfragen Überprüfung (1) HA / Umsetzen Normalisierung / Einfache SQL-Abfragen Nach Test: Überleitung zum Datenschutz Problematisierung
Stunde Stunde ID TITEL AKTION ZEIT 1 Brainstorming Wo gibt es überall Datenbanken? 5 2 Einstiegsphase Was ist eine Datenbank? Bestandteile? Vorteile elektronischer DB? 5-10 Tafel
Stunde Stunde ID TITEL AKTION ZEIT 3 Ergebnis-findungsphase I Was sind die Probleme an einer gemeinsamen Datenbasis? 5 4 Ergebnis- sicherungsphase I Übertragen des Tafelanschriebs in das Heft Tafel
Stunde Stunde ID TITEL AKTION ZEIT 5 Ergebnis-findungsphase II Vorstellung ER-Modell 10 6 Ergebnis- sicherungsphase II Eigene, kleine Modellierung der Schüler. 5-10 Tafel
Diskussion Sollte, anders als im Lehrplan und wie von Baumann gefordert, die konzeptionelle Sicht stärker betont werden als die implementative Methode?