Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

... und alles was dazugehört

Ähnliche Präsentationen


Präsentation zum Thema: "... und alles was dazugehört"—  Präsentation transkript:

1 ... und alles was dazugehört
Datenbanken ... und alles was dazugehört

2 Aspekte des Themas Datenbanken
Auswertung Suchen Ändern Löschen Verknüpfen Erweitern Sortieren Datenbank-sprache SQL Datenmaterial Web-Programmierung HTML+CSS+PHP modellieren Nutzung Objekt Attribute ER-Modell 1 n Daten-bank system Physikal. Speichern Anforderungen tabellarisch strukturieren Vermeidung von Redundanzen und Anomalien Datenschutz (Sichten) Mehrbenutzer- betrieb Zugangs- berechtigung Konsistenz (logisch korrekt) implementieren Tabelle Tabelle Zeilen Spalten Zeilen Spalten (Objekte) (Attribute) Relationale DB optimieren und normalisieren

3 Thema Datenbanken Wie funktionieren Datenbanken?
Was genau sind Datenbanken, bzw. DBS? Wozu braucht man Datenbanken? Wie benutzt man Datenbanken? Wie entwirft man Datenbanken? Wie vermeidet man Probleme mit Datenbanken?

4 Datenbanken verstehen
ist nicht einfach, weil Sie eine all-inclusive Lösung für verschiedene Probleme mit der Datenverwaltung sind Sie für sehr verschiedenen Zwecke benutzt werden können, auf verschiedene Arten Sie mit so vielen anderen Dingen zusammenhängen, besonders bei online Gebrauch

5 Definition Ein Datenbanksystem (DBS) ist eine Zusammenfassung von strukturierten Daten (Datenbank, DB), die von einer speziellen Software (Data Base Management System, DBMS) verwaltet und über eine definierte Schnittstelle vielen Nutzern oder Anwendungen gleichzeitig und kontrolliert zur Verfügung gestellt werden.

6 Die „strukturierten Daten“
... stellt man sich am besten als Regale oder Tabellen vor In welcher Form die Daten tatsächlich gespeichert sind ist unerheblich, da sie sowieso nur über die Schnittstelle (= mit dem Verwalter reden) zugänglich sind Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda Kigali Afrika … … … … …

7 Schnittstelle SQL SQL = Structured Query Language.
Bezeichnet eine Sprache zur Kommunikation mit Datenbanken. Ist international genormt und wird von vielen DBS verstanden. Wird im Folgenden zur Formulierung von Abfragen eingesetzt. Syntax einer (einfachen) SQL-Abfrage: SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY [Attribute]; Die WHERE- und die ORDER BY-Klausel sind optional. Tabelle anzeigen  SQL wird schon ausgegeben.

8 Datenbankzugriff - Ein erstes Beispiel
SELECT Name, Einwohner, Kontinent FROM Land WHERE Einwohner > 10 Länder mit über 10 Mio. Einwohner Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda Kigali Afrika … … … … … Ergebnistabelle Name Einwohner Kontinent Deutschland Europa Indien Asien … … …

9 Definition Ein Datenbanksystem (DBS) ist eine Zusammenfassung von strukturierten Daten (Datenbank, DB), die von einer speziellen Software (Data Base Management System, DBMS) verwaltet und über eine definierte Schnittstelle vielen Nutzern oder Anwendungen gleichzeitig und kontrolliert zur Verfügung gestellt werden.

10 Die „Verwaltung“ der Daten (DB + DBMS!)
Anwendungen Schnittstelle: Structured Query Language (SQL) Datenbanksystem (DBS) Datenbank (DB) Datenbank Management System (DBMS)

11 Die Fundbüro Analogie Kunden Fundbüro Verwalter Fundstücke
Schnittstelle??? Fundbüro Fundstücke Verwalter

12 Definition Ein Datenbanksystem (DBS) ist eine Zusammenfassung von strukturierten Daten (Datenbank, DB), die von einer speziellen Software (Data Base Management System, DBMS) verwaltet und über eine definierte Schnittstelle vielen Nutzern oder Anwendungen gleichzeitig und kontrolliert zur Verfügung gestellt werden.

13 „viele Nutzer und Anwendungen“
Einzelbenutzersysteme (z.B. Access) Verteilte DBS (z.B. Banken mit Filialen) Mehrbenutzersysteme (z.B. in Unternehmen, Lager & Verkauf) Client-Server DBS (z.B. Internetseiten) Multidatenbanksysteme (z.B. Buchungssysteme)

14 Exkurs: Datenbanken im Internet
Das Internet wird interaktiver: WEB 2.0 Inhalte (z.B. Text, Bilder, Daten,...) einer Seite werden separat gespeichert, als Datensätze in einem DBS, und erst beim Aufruf der Seite dynamisch (meist per PHP) in ein HTML-Gerüst eingebaut Damit kann der Inhalt einer dynamischen Webseite vom Benutzer abhängig gemacht werden (Identität, Rechte, Verhalten, ...)

15 Benutzen Sie diese Elemente
Benutzen Sie diese Elemente* um mithilfe eines Schaubilds zu erklären, wie ein Gästebuch (online) funktioniert * es müssen nicht alle Elemente benutzt werden, manche werden mehrfach gebraucht Zeitachse HTML Anfrage Browser statische Webseiten PHP Verarbeitung dynamische Webseiten WWW-Server mySQL Auswertung CSS Server Darstellung Datenbank Server POST/GET Client Parameterübergabe Formulare Codeübergabe

16 Meine Lösung Browser WWW-Server Zeitachse statische Webseiten Browser
dynamische Webseiten WWW-Server Datenbank Server WWW-Server Browser weiss, wie man WWW-Server findet, versteht HTML (+ Formulare) & CSS, kümmert sich um die Darstellung, kann Parameter übergeben (POST/GET) weiss, wie man mit Datenbank Server spricht, kann Parameter auswerten und PHP verarbeiten, gibt HTML-Code an Browser weiter kann mySQL Anfragen beantworten und Daten dauerhaft speichern, kümmert sich um die Verwaltung der Daten HTML-Dateien, PHP Client Server mySQL Client Server

17 Forms (HTML) <html><body> <form> <select> <option>Paint</option> <option>Brushes</option> <option>Erasers</option> </select> Quantity: <input type="text" /> <input type="submit" /> </form> </body></html> dde dde dde

18 HTML  PHP http://www.mywebsite.ch/process.php?item=##&quantity=##"
<html><body> <form action="process.php" method="get"> <select name="item"> <option>Paint</option> <option>Brushes</option> <option>Erasers</option> </select> Quantity: <input name="quantity" type="text" /> <input type="submit" /> </form> </body></html> dde dde dde

19 PHP SQL  HTML <html><body> <?php $quantity = $_GET['quantity']; $item = $_GET['item']; $result = mysql_query("SELECT price FROM goods WHERE item=$item") $price = ... echo "You ordered ". $quantity . " " . $item . ".<br />"; echo "Total price: ". $quantity*$price.<br />"; ?> </body></html>

20 Wo wohnen die Daten? Zeitachse Browser WWW-Server statische Webseiten
dynamische Webseiten WWW-Server Datenbank Server DB DBS DBMS WWW-Server Browser HTML kann Daten enthalten, alle vom Browser dargestellten Daten müssen letztendlich in HTML eingebunden sein PHP kann Daten enthalten PHP kann auch Daten lokal lesen oder speichern, z.B. CSV, XML die Datenbank ist speziell darauf ausgerichtet Daten zu speichern und zu verwalten Darstellung: statisch Verarbeitung: dynamisch Bereitstellung: persistent Dateien, PHP Client Server mySQL Client Server

21 Definition Ein Datenbanksystem (DBS) ist eine Zusammenfassung von strukturierten Daten (Datenbank, DB), die von einer speziellen Software (Data Base Management System, DBMS) verwaltet und über eine definierte Schnittstelle vielen Nutzern oder Anwendungen gleichzeitig und kontrolliert zur Verfügung gestellt werden.

22 ... „kontrolliert zur Verfügung gestellt“ Datenabstraktion (Data Abstraction)
• Die Sichten (view level): In den Sichten werden Teilmengen der Daten dargestellt. Die Sichten sind auf die Bedürfnisse/Rechte der Benutzer zugeschnitten • Die logische/konzeptionelle Ebene (conceptual level): Auf dieser Ebene wird mittels eines Datenbankschemas festgelegt, welche Daten abgespeichert sind. • Die physische Ebene (physical level): Auf dieser Ebene ist beschrieben, wie die Daten auf dem Sekundärspeicher abgelegt sind.

23

24

25 Wieder ein Schichtenmodell
Anwendungsebene (Sichten) logische Ebene (Tabellen) physikalische Ebene (Bits) Schnittstelle Schnittstelle Anwendung Betriebssystem Hardware Java (Programmierer) Bytecode (JVM) Maschinencode (CPU)

26 Wozu braucht man eigentlich Datenbanken?
Suchen Sie ein Beispiel (z.B. eine Website, eine Organisation, eine Anwendung, etc.), von dem Sie wissen (oder glauben), dass eine Datenbank benutzt wird. Notieren Sie ihre Vermutungen darüber, warum hier eine Datenbank eingesetzt wird

27 Wozu Datenbanken? Zusammenfassung: Arbeitsblätter: Schichten
Anforderungen Zusammenfassung: Vorteile von DBS? Nachteile von DBS?

28 Vorteile von Datenbanksystemen
Redundanz und Inkonsistenz vermeiden durch die zentrale Datenverwaltung Dauerhafte Speicherung von großen Datenbeständen Effiziente Verwaltung von großen Datenbeständen (Speicherplatz, Zugriffsgeschwindigkeit) Einheitliche Schnittstelle (Anfragesprache) für den Zugriff auf Daten Unterschiedliche Daten können leicht verknüpft und extrahiert werden Mehrere Benutzer oder Anwendungen können gleichzeitig mit Daten arbeiten Integritätsverletzungen werden intern geregelt bzw. vermieden Verschiedenen Benutzern/Anwendungen können verschiedene Zugriffsrechte zugeordnet werden Physische Datenunabhängigkeit, Anwendungen von Modifikationen an der physischen Speicherstruktur nicht betroffen Logische Datenunabhängigkeit, Änderungen an der logischen Datenstruktur beeinflussen Anwendungen nicht Ermöglicht zentrale Strategien gegen Soft- und Hardwareausfälle

29 Nachteile von Datenbanksystemen
nur noch indirekter Zugriff auf Daten zusätzliche Abstraktionsebene zusätzlicher Aufwand (Datenbankserver bereitstellen, extra Anfragesprache lernen) zu grosse Datenbanken sind unpraktisch und unübersichtlich wenn es doch Probleme gibt, dann aber richtig

30 Wer benutzt ein DBS? und warum (nicht)?
Amazon? iTunes? Wikipedia? iPhoto? Ryanair? Picasa? Ihre Bank? Flickr? Ein Chat? Google? Ein Blog? Windows? Ihr Client?

31 Was für Daten werden in einem DBS verwaltet?
Was ist überhaupt ein Datum? Welche Datenformate werden unterstützt? In welcher Form existieren die Daten in der Datenbank? Fundstücke Fundbüro Kunden Verwalter

32 Wie speichert eine Datenbank Daten?
Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel 2 9887 Oberdorf Name: Moser Vorname: Paul Konto: Wert: Landweg 12 1554 Gluck

33 Wie speichert eine DB Daten
Mechanischer Vorgänger Hüte Nummer: Nummer: Nummer: Nummer: Gegenstand: Schlüssel Gegenstand: Schlüssel Nummer: Bücher Gegenstand: Schlüssel Nummer: Nummer: Gegenstand: Schlüssel Farbe: Farbe: Gegenstand: Schlüssel Nummer: Schirme Farbe: Gegenstand: Schlüssel Nummer: Gegenstand: Schlüssel Nummer: Farbe: Funddatum: Gegenstand: Schlüssel Funddatum: Farbe: Nummer: Funddatum: Farbe: Gegenstand: Schlüssel Nummer: Farbe: Gegenstand: Schlüssel Funddatum: Fundort: Bahnhof Funddatum: Farbe: Gegenstand: Schlüssel Fundort: Bahnhof Fundort: Bahnhof Funddatum: Farbe: Art: Schlüssel Funddatum: Farbe: Fundort: Bahnhof Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Funddatum: Finder: Hegi Roger Finder: Hegi Roger Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Funddatum: Farbe: Farbe: Fundort: Bahnhof Funddatum: Finder: Hegi Roger Finder: Hegi Roger Brandweg 12 Seeweg 12 Seeweg 12 Brandweg 12 Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Funddatum: Brandweg 12 Seeweg 12 Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Funddatum: Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Seeweg 12 Brandweg 12 9876 Zuchwil Brandweg 12 Seeweg 12 Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof 9876 Zuchwil 9876 Zuchwil Seeweg 12 Brandweg 12 Finder: Hegi Roger Finder: Hegi Roger Fundort: Bahnhof Brandweg 12 Seeweg 12 Finder: Hegi Roger Finder: Hegi Roger 9876 Zuchwil 9876 Zuchwil Seeweg 12 Brandweg 12 Finder: Hegi Roger Finder: Hegi Roger 9876 Zuchwil Seeweg 12 Brandweg 12 Finder: Hegi Roger Finder: Hegi Roger 9876 Zuchwil Brandweg 12 Seeweg 12 9876 Zuchwil Seeweg 12 Brandweg 12 9876 Zuchwil Brandweg 12 Brandweg 12 9876 Zuchwil 9876 Zuchwil 9876 Zuchwil

34 Wie speichert eine DB Daten
Nummer: Art: Schlüssel Nummer: Name: Kunz Vorname: Andy Adresse: Waldweg 12 9876 Zuchwil Tel.: ’78’99 Geb.: September 1974 Farbe: Art: Schlüssel Funddatum: Farbe: Fundort: Bahnhof Funddatum: Finder: Hegi Roger Fundort: Bahnhof Brandweg 12 Finder: Hegi Roger 9876 Zuchwil Brandweg 12 9876 Zuchwil

35 Elemente einer Tabelle
Tabelle, Entitätsmenge Zeile, Datensatz, Entität Eigenschaftswerte ~ Domain Attribute, Eigenschaften Schlüsselattribut, Hauptschlüssel Tabellenname Fundstücke Nummer Art Farbe Funddatum Fundort Finder 14555 Schirm Blau Bus Nr.12 Stalder Roger Wichleren 8779 Neuhausen 14556 Schlüssel - Bahnhof Hegi Roger Brandweg Zuchwil 14557  ...

36 Relationsschema Tabelle, Entitätsmenge Zeile, Datensatz, Entität Eigenschaftswerte Tabellenname Attribute, Eigenschaften Schlüsselattribut, Hauptschlüssel Fundstücke{Nummer, Art, Farbe, Funddatum, Fundort, Finder}

37 Definition einer Tabelle
Tabelle, Entitätsmenge Zeile, Datensatz, Entität Eigenschaftswerte Attribute, Eigenschaften Schlüsselattribut, Hauptschlüssel Tabellenname Fundstücke Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras? Nummer: 14556 Art: Schlüssel Farbe: - Funddatum: Fundort: Bahnhof Finder: Hegi Rütli Brandweg 12 9876 Zuchwil

38 Einschränkungen der Eigenschaftswerte
Fundstücke Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras? Nummer: 14556 int ja auto incr. Art: Schlüssel char nein Farbe: - Funddatum: date auto? Fundort: Bahnhof Finder: Hegi Rütli Brandweg 12 9876 Zuchwil Warum ist das wichtig? technisch: Speicherplatz reservieren, etc. logisch: Fehler vermeiden

39 Übungsaufgabe Buch Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras? Sie wollen mithilfe eines DBS eine Anwendung zur Bibliotheksverwaltung erstellen. Definieren Sie eine Tabelle, in die alle wichtigen Eigenschaften der Bücher eingetragen werden können. Implementieren sie diese Tabelle in phpMyAdmin und tragen sie mindestens 5 Datensätze ein

40 Probleme mit Tabellen Welche (potentiellen) Probleme sehen Sie mit der untenstehende Tabelle? Fundstücke Anzahl Art Farbe Funddatum Fundort Finder 1 Schirm Blau Bus Nr.12 Roger Stalder Neuhausen 4 Schlüssel - Bahnhof Hegi Roger Brandweg Zuchwil 2 Schrim & Schal bunt Hauptbahnhof Hegi Roger Brandweg 12a/ Zuckwil

41 Schon besser Aber was machen wir mit der Redundanz? Fundstücke ID
Anzahl Art Farbe Funddatum Fundort Vorname Nachname Adresse 17 1 Schirm Blau Bus Nr.12 Roger Stalder 9876 Neuhausen 18 4 Schlüssel - Bahnhof Hegi Brandweg Zuchwil 19 Schrim bunt Hauptbahnhof Brandweg 12a/ Zuckwil 20 Schal braun Aber was machen wir mit der Redundanz?

42 Relationale Datenbanken
Fundstücke{ID, Anzahl, Art, Farbe, Funddatum, Fundort, ↑FinderID} Fundstücke ID Anzahl Art Farbe Funddatum Fundort FinderID 17 1 Schirm Blau Bus Nr.12 12 18 4 Schlüssel - Bahnhof 7 19 Schrim bunt Hauptbahnhof 20 Schal braun Fremdschlüssel, verweist auf den Hauptschlüssel einer anderen Tabelle Finder ID Vorname Nachname Strasse Hausnummer Zusatz PLZ Ort 12 Roger Stalder 9876 Neuhausen 7 Hegi Brandweg a/7 Zuchwil Finder{ID, Vorname, Nachname, Strasse, Hausnummer, Zusatz, PLZ, Ort}

43 SQL-Abfragen mit mehreren Tabellen
c 1 2 3 4 5 6 S d e 3 7 5 8 6 9 R x S a b R.c S.d e 1 2 3 7 5 8 6 9 4 Schreibweise in mySQL: SELECT * FROM R,S WHERE R.c=S.d AND e < 8 mySQL in Kürze: R x S ist ein Karthesisches Produkt zusammen mit einer Selektion wird ein Verbund (Join) daraus sonst gibt es nur noch die Projektion (z.B. SELECT a,e) Achtung, identische Datensätze werden nur einmal zurückgegeben!!!!! zusätzliche Selektionen können mit AND angefügt werden

44 SQL-Abfragen mit mehreren Tabellen
SELECT * FROM R JOIN S ON R.c=R.s R a b c 1 2 3 4 5 6 S d e 3 7 5 8 6 9 R x S a b R.c S.d e 1 2 3 7 4 5 6 9 R x S a b R.c S.d e 1 2 3 7 null 5 8 4 6 9 SELECT * FROM R RIGHT JOIN S ON R.c=R.s mySQL in Kürze: mehr hierzu, Arbeitsblatt erstellen z.B. mySQL Befehle vorgeben und entziffern lassen mySQL Befehle erstelle um bestimmte Zeilen eines Karthesischen Produkts auszugeben... ein JOIN kann auch direkt erzeugt werden JOIN ... ON ... vermeidet das Erstellen der grossen (Verbund-)Tabelle die Alternativen RIGHT JOIN und LEFT JOIN ergeben auch dann eine Zeile, wenn das ON-Attribut auf der anderen Seite leer (NULL) ist

45 Land und Kontinent werden in zwei getrennten Tabellen gespeichert und über eine Beziehung miteinander verknüpft. Zur Verknüpfung dient ein Kürzel des Kontinents, das als Fremdschlüssel in Land gespeichert wird. LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda Kigali Afrika LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF Land KNR Name EU Europa AS Asien AF Afrika Kontinent Beispiel-Datenbank: terra2.sql Schlüsselattribut aus Kontinent

46 Jeder Datensatz wird durch einen Schlüssel (Primärschlüssel) eindeutig identifiziert. Der Schlüssel
kann aus mehreren Attributen zusammengesetzt sein ist minimal, d.h. es kann kein Attribut weggelassen werden wird meist durch Unterstreichung gekennzeichnet. Um zusammengesetzte Primärschlüssel zu vermeiden wird oft ein zusätzliches, eindeutiges Schlüsselattribut hinzugefügt, z.B. eine Landeskennung oder ID LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland Berlin Europa IND Indien Delhi Asien RWA Rwanda 6.30 Kigali Afrika Land Schlüsselattribut Primärschlüssel anlegen für Tabelle „land“. Problem: Feld noch leer und kann daher nicht als Primärschlüssel verwendet werden (nicht eindeutig)

47 Zwischen den Tabellen bestehen Beziehungen (Relationen)
z.B. Kontinent eines Landes Die Verknüpfung erfolgt grundsätzlich dadurch, dass ein Fremdschlüssel der einen Tabelle auf den zugehörigen Primärschlüssel der anderen Tabelle zeigt. Vorteile: Daten werden jeweils nur in einer Tabelle gespeichert. Datenänderungen sind leichter durchzuführen. Strukturänderungen (z.B. das Hinzufügen der Kontinentfläche) lassen sich meist mit geringem Aufwand realisieren. Die Struktur lässt flexiblere Abfragen zu. Master Detail PKey Data FKey PKey Data

48 SQL – einfache Joins Müssen in SQL Daten aus mehreren Tabellen entnommen werden, so werden sog. „Joins“ gebildet. Die Abarbeitung eines Joins in mehreren Schritten kann an folgendem Beispiel veranschaulicht werden: Es sollen alle Länder mit ihren Kontinenten ausgegeben werden, die mehr als 10 Mio. Einwohner haben. LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland EU IND Indien AS RWA Rwanda 6.30 AF Land KNR Name EU Europa AS Asien AF Afrika Kontinent

49 Cross-Join („jede Zeile mit jeder“)
SELECT * FROM Land, Kontinent LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland EU IND Indien AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika Land Kontinent LNR Name Einwohner KNR KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

50 Einschränken auf „passende“ Datensätze.
Es dürfen nur die Zeilen genommen werden, für die die „Land“ und die „Kontinent“ Tabelle Daten des gleichen Kontinents enthalten. Dies wird durch die sog. „Join-Bedingung“ erreicht. SELECT * FROM Land, Kontinent WHERE Land.KNR= Kontinent.KNR LNR Name Einwohner KNR KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

51 Einschränken auf „passende“ Datensätze (2).
Es sollen nur Länder mit > 10 Mio. Einwohner gezeigt werden. Momentan würde auch „Dänemark“ ausgegeben werden. Also muss eine weitere Bedingung erfüllt sein: SELECT * FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 10 LNR Name Einwohner KNR KNR Name DK Dänemark 5.16 EU EU Europa DK Dänemark 5.16 EU AS Asien DK Dänemark 5.16 EU AF Afrika D Deutschland EU EU Europa D Deutschland EU AS Asien D Deutschland EU AF Afrika IND Indien AS EU Europa IND Indien AS AS Asien IND Indien AS AF Afrika … … … … …

52 Einschränken auf gesuchte Spalten.
Nur bestimmte Spalten werden ausgegeben. SELECT Land.Name, Land.Einwohner, Kontinent.Name FROM Land,Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 10 LNR Name Einwohner KNR KNR Name D Deutschland EU EU Europa IND Indien AS AS Asien … … … … … Name Einwohner Name Deutschland Europa Indien Asien … … … Alternative: ... FROM Land JOIN Kontinent ON Land.KNR = Kontinent.KNR

53

54 Goldene Tabellenregeln
Es braucht IMMER einen eindeutigen Hauptschlüssel (am besten, Sie nennen ihn immer ID) Nur ein Wert pro Attribut (richtiges Format) Wertemenge einschränken (z.B. mit Eingabemaske) Nur ein Datensatz pro Zeile Redundanz vermeiden

55 XAMPP (www-)Server inklusive PhP
Die HTML-Webseite phpMyAdmin kann lokal aufgerufen werden (über IP ) und stellt ein Interface für die interaktive Datenbankabfrage zur Verfügung – kann auch benutzt werden, um SQL zu lernen XAMPP Browser Datenbank Server (mySQL) (www-)Server (Apache) inklusive PhP DB DBS DBMS Browser Dateien, PHP Client Server mySQL Client Server

56 Arbeitsauftrag Wenden Sie die goldenen Regeln auf ihre Bibliotheksverwaltung an Erstellen Sie die daraus entstehenden Tabellen (>=2) in phpMyAdmin und tragen Sie jeweils mindestens fünf Datensätze ein Benutzen Sie dann den Abfrageeditor, um per mySQL Teilmengen der Daten zu erfragen, z.B alle Titel eines bestimmten Autors alle Autoren, von denen nach 2000 ein Buch erschienen ist ect... (schnelle) arbeiten Sie mit mindestens drei Tabellen – nehmen Sie beispielsweise an, dass es von einem Buch mehrere Exemplare geben kann Tabellen vorgeben, genauer definierte Aufgaben stellen Probleme mit Umlauten und Leerzeichen ansprechen

57 Aspekte des Themas Datenbanken
Auswertung Suchen Ändern Löschen Verknüpfen Erweitern Sortieren Datenbank-sprache SQL Datenmaterial Web-Programmierung HTML+CSS+PHP modellieren Nutzung Objekt Attribute ER-Modell 1 n Daten-bank system Datenmodellierung Physikal. Speichern Anforderungen tabellarisch strukturieren Vermeidung von Redundanzen und Anomalien Datenschutz (Sichten) Mehrbenutzer- betrieb Zugangs- berechtigung Konsistenz (logisch korrekt) implementieren Tabelle Tabelle Zeilen Spalten Zeilen Spalten (Objekte) (Attribute) Relationale DB optimieren und normalisieren

58 Datenbankentwicklung überkorrekt:
Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

59 NICHT beschrieben werden:
Datenmodellierung Ziel: Beschreibung der Struktur großer Datenmengen (Kundendaten, Bibliotheksbestand) Beschrieben werden: - die beteiligten Objekte (Entitäten, Datensätze, ... ) - deren Eigenschaften (Attribute) - sowie die statischen Beziehungen zwischen den Objekten (ist Teil von, ist Chef von, ..) NICHT beschrieben werden: - Abläufe, Datenflüsse oder Interaktionen, zeitliches Verhalten etc.

60 Verschiedene Notationen für ER-Diagramme:

61 Aufgabe: Erstellen sie ein ER-Diagramm einer Schule (s
Aufgabe: Erstellen sie ein ER-Diagramm einer Schule (s. AB_Datenmodellierung.doc)  Eine Person kann nur an einem Ort geboren worden sein  Ein Ort kann für mehrere (0 – n) Personen der Geburtsort sein

62 Musterlösung Schulszenario

63 Datenbankentwicklung überkorrekt:
Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

64 Auflösen von n:m-Beziehungen
Flug gebucht von Kunde Nr Datum Nr Name 1 n m Flug Teil von 1 Buchung getätigt von Kunde Nr Datum Buchungs-datum bezahlt Nr Name

65 Auflösen von n:m-Beziehungen
Flug gebucht von Kunde Nr Datum Nr Name 1 n m Flug Teil von 1 Buchung getätigt von Kunde Nr Datum Buchungs-datum bezahlt Nr Name

66 In Relationales Modell übersetzen:
1 n Flug Teil von m 1 Buchung getätigt von Kunde Nr Datum Buchungs-datum bezahlt Nr Name Flug{Fnr, Datum} Buchung{Bnr, Fnr, Knr, Buchungsdatum, bezahlt} Kunde{Knr, Name} Und jetzt für das Schulszenario (genauer mit UML)

67 Datenbankentwicklung überkorrekt:
Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

68 Redundanz vermeiden Gründe:
Speicherplatz sparen Vermeidung von Anomalien Es ist gerade die Grundidee von Relationalen Datenbanken, genau die richtige Art von Information durch die (z.B. mySQL-) Abfrage zusammenzusuchen Das schrittweise Eliminieren von (potentieller) Redundanz nennt man „normalisieren“, meist werden dabei viele kleine Tabellen aus wenigen grossen erzeugt

69 Welche Arten von Anomalien gibt es?
Was ist eine Änderungs-Anomalie? Falls eine Änderung der Daten vorgenommen werden muss, muss dies an mehreren Stellen in der Relation geschehen, da sonst die Konsistenz bedroht ist. Was ist eine Einfüge-Anomalie? Ein neuer Datensatz kann erst eingetragen werden, wenn alle X Informationen vorliegen. Falls Nullwerte erlaubt sind, gibt es dann Probleme falls die fehlende Info zum Schlüssel gehört. Was ist eine Lösch-Anomalie? Wird eine Information aus der Relation entfernt, so gehen mehr Informationen verloren, als gewollt war. Tritt oft auf wenn in einer Relation mehr als eine Entity vertreten ist! Lieferant {ID, LName, LAdresse, Ware, Preis}

70 Anomalien konkret Tabelle: Lieferant {ID, LName, LAdresse, Ware, Preis}  Redundanz: Die Adresse wird für jede Ware, die ein Lieferanten liefert, wiederholt  Anomalien möglich Änderungs-Anomalie (Potentielle Inkonsistenz) Als Konsequenz der Redundanz kann man die Adresse eines Lieferanten in einem Datensatz verändern, sie aber in anderen Datensätzen unberührt lassen. Auf diese Weise bekommt man zwei verschiedene Adressen für denselben Lieferanten. Einfüge-Anomalien Man kann keine Adresse für einen Lieferanten haben, wenn er nicht mindestens eine Ware liefert. Es ist möglich, in die Ware- und Preiskomponente NULL-Werte für diese Lieferanten einzugeben, dann müsste dieser Datensatz aber gelöscht werden, wenn eine Ware für diesen Lieferanten eingegeben wird. Lösch-Anomalien Invers zu Problem 2 kann es passieren, dass man alle Waren eines Lieferanten löscht, und dadurch auch seine Adresse verliert.

71 Die Lösung: Verteilung auf zwei Tabellen/Relationsschemata: Lieferant {ID, LName, LAdresse} Ware {ID, Ware, Preis, LID} Mit einer vorhergehenden Stufe der Datenmodellierung (ER-Diagramm) wäre dieses Problem vermutlich gar nicht aufgetreten, da klar sein sollte, dass Lieferant und Ware zwei unterschiedliche Entitäten sind!

72 Datenbankentwicklung überkorrekt:
Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

73 Normalformen (s. datenbanktheorie.pdf, S.31-52)
Erste Normalform (1NF): Alle Merkmalswerte sind atomar (keine Wiederholungsgruppen zugelassen). Zweite Normalform (2NF): Nichtschlüsselmerkmale sind voll vom Schlüssel abhängig. Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten. Boyce-Codd Normalform (BCNF): Nur Abhängigkeiten vom Schlüssel zugelassen. Vierte Normalform (4NF): Keine Mehrwertabhängigkeiten. Fünfte Normalform (5NF): Nur triviale Verbundabhängigkeit.

74 Name AbtNr Abteilung Projekt Müller 5 EDV II (6, MySQL, 50%), (3, DV2010, 50%) Schulze 3 Rechenzentrum (3, DV2010, 100%) 1. Normalform Eine Relation befindet sich in der ersten Normalform, wenn an allen Kreuzungspunkten von Zeilen und Spalten nur atomare Werte auftreten. Ein Datensatz muss durch den Primärschlüssel eindeutig identifizierbar sein. Das Attribut Projekt ist nicht atomar, da es Mehrfachattribut ist. Mehrfachattribute werden in einer eigenen Tabelle ausgelagert. Außerdem fehlt ein Primärschlüssel. Besser: PersNr ProjNr Projekt Zeit 123 6 MySQL 50% 3 DV2010 876 100% PersNr Name AbtNr Abteilung 123 Müller 5 EDV II 876 Schulze 3 Rechenzentrum

75 PersNr ProjNr Projekt Zeit 123 6 MySQL 50% 3 DV2010 876 100% 2. Normalform Eine Relation befindet sich in der 2. Normalform, wenn sie sich in der ersten befindet und jedes Nicht-Schlüssel-Attribut funktional abhängig ist vom Gesamtschlüssel, nicht dagegen von Schlüsselteilen. Das Attribut Projekt ist funktional abhängig vom Attribut ProjNr, nicht jedoch von PersNr. Das Attribut Zeit ist dagegen von gesamten Primärschlüssel (PersNr, ProjNr) funktional abhängig. Also nochmal aufteilen: PersNr ProjNr Zeit 123 6 50% 3 100% 876 ProjNr Projekt 3 MySQL DV2010

76 PersNr Name AbtNr Abteilung 123 Müller 5 EDV II 876 Schulze 3 Rechenzentrum 3. Normalform Eine Relation befindet sich in der 3. Normalform, wenn sie sich in der 2. Normalform befindet und keine funktionalen Abhängigkeiten zwischen Nicht-Schlüssel-Attributen existieren. Anders ausgedrückt: Die Relation darf keine transitiven Abhängigkeiten aufweisen. Das Attribut Abteilung ist nur indirekt vom Primärschlüssel PersNr abhängig. Vielmehr ist das Attribut Abteilung von der AbtNr abhängig. Also auch hier Aufspaltung in zwei Tabellen: PersNr Name AbtNr 123 Müller 5 876 Schulze 3 AbtNr Abteilung 5 EDV II 3 Rechenzentrum

77 Zusammengefasst:

78 Goldene Tabellenregeln
Es braucht IMMER einen eindeutigen Hauptschlüssel (am besten, Sie nennen ihn immer ID) Je Datensatz nur ein Wert pro Attribut Wertemenge einschränken (z.B. mit Eingabemaske, Domain) Nur ein Datensatz pro Zeile Redundanz vermeiden wenn Sie die ersten 4 Regeln ernst nehmen, dann haben Sie mindestens eine 2.NF, die fünfte Regel konsequent befolgen ergibt dann BCNF (oder liege ich falsch? s. datenbanktheorie.pdf, S )

79 Aspekte des Themas Datenbanken
Auswertung Suchen Ändern Löschen Verknüpfen Erweitern Sortieren Datenbank-sprache mySQL Datenmaterial Web-Programmierung HTML+CSS+PHP modellieren Nutzung Objekt Attribute ER-Modell 1 n Datenbank system Physikal. Speichern Anforderungen tabellarisch strukturieren Vermeidung von Redundanzen und Anomalien Datenschutz (Sichten) Mehrbenutzer- betrieb Zugangs- berechtigung Konsistenz (logisch korrekt) implementieren Tabelle Tabelle Zeilen Spalten Zeilen Spalten (Objekte) (Attribute) Relationale DB optimieren und normalisieren

80 Datenbankentwicklung überkorrekt:
Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

81 Externes Programm (z.B. PHP)
startet Abfragen wertet Ergebnisse aus stellt Ergebnisse dar Schnittstelle mit Benutzer Verschiedene Views Daten umfangreicher persistenter Datenbestand physikalische Speicherung Software interpretiert und beantwortet Anfragen verwaltet Daten und stellt Konsistenz sicher regelt mögliche Konflikte Scriptsprache (z.B. mySQL) Informationsaustausch mit der Umgebung

82 Wie führt man eine Normalisierung durch? (Was ist zu beachten?)
Normalisierung = Sicherstellen, dass die Tabellen keine Redundanzen enthalten (formale Definition, Algebra) Erste Normalform (1NF): Alle Merkmalswerte sind atomar Zweite Normalform (2NF): Nichtschlüsselmerkmale sind voll vom Schlüssel abhängig. Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten. Boyce-Codd Normalform (BCNF): Nur direkte Abhängigkeiten vom Schlüssel zugelassen. Vierte Normalform (4NF): Keine Mehrwertabhängigkeiten. Fünfte Normalform (5NF): Nur triviale Verbundabhängigkeit. Systeminformation einholen Was wird hier modelliert? Wozu wird die DB gebraucht? ER-Diagramm erstellen Was soll eine Entität im Modell sein? Wie hängen die Entitäten zusammen? Relationales Modell erstellen Attribute festlegen Haupt & Fremdschlüssel festlegen Normalisieren Redundanz vermeiden Anomalien vorbeugen Modell in Datenbank implementieren

83 Wie führt man eine Normalisierung durch? (Was ist zu beachten?)
Die beiden wichtigsten Fälle, in denen die 3. Normalform verletzt ist: mitarbeiter ID Name Gehaltsklasse Gehalt 1 Müller GK13a 87000 2 Meier GK11b 65000 Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten. transitive Abhängigkeit, also auf mehrer Tabellen Auflösen Flug gebucht von Kunde n m Nr Datum Name n:m Beziehung, also auf mehrer Tabellen Auflösen

84 Wie fügt man Daten in eine DB an einen bestimmten Ort ein (PHP query) ?
INSERT INTO tbl_name () VALUES(); z.B.: INSERT INTO tabelleA VALUES(1,2,‘drei‘); INSERT INTO tabelleA (col1,col3) VALUES(1,‘drei‘); In der Probe wird es nur um das Auslesen (SELECT...) und Aggregieren (COUNT, MEAN, SUM...) von Daten gehen!


Herunterladen ppt "... und alles was dazugehört"

Ähnliche Präsentationen


Google-Anzeigen