Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren tabellarisch strukturieren Tabelle Tabelle Zeilen Spalten.

Ähnliche Präsentationen


Präsentation zum Thema: "Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren tabellarisch strukturieren Tabelle Tabelle Zeilen Spalten."—  Präsentation transkript:

1 Datenbanken... und alles was dazugehört

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

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 LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.34 BerlinEuropa INDIndien DelhiAsien RWARwanda6.30 KigaliAfrika …………… Land

7 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.

8 8 – SELECT Name, Einwohner, Kontinent FROM Land WHERE Einwohner > 10 Datenbankzugriff - Ein erstes Beispiel Länder mit über 10 Mio. Einwohner LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.34 BerlinEuropa INDIndien DelhiAsien RWARwanda6.30 KigaliAfrika …………… Land Ergebnistabelle NameEinwohnerKontinent Deutschland81.34Europa Indien761.00Asien ………

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!) Datenbank (DB) Schnittstelle: Structured Query Language (SQL) Datenbanksystem (DBS) Anwendungen Datenbank Management System (DBMS)

11 Die Fundbüro Analogie Fundstücke Schnittstelle??? Fundbüro Kunden 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) Mehrbenutzersysteme (z.B. in Unternehmen, Lager & Verkauf) Verteilte DBS (z.B. Banken mit Filialen) Multidatenbanksysteme (z.B. Buchungssysteme) Client-Server DBS (z.B. Internetseiten)

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 * um mithilfe eines Schaubilds zu erklären, wie ein Gästebuch (online) funktioniert WWW-Server Browser Datenbank Server HTML PHP mySQL CSS Anfrage Verarbeitung Auswertung Darstellung Server Client * es müssen nicht alle Elemente benutzt werden, manche werden mehrfach gebraucht POST/GE T Parameterübergabe Codeübergabe Formulare Zeitachse statische Webseiten dynamische Webseiten

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

17 Forms (HTML) Paint Brushes Erasers Quantity: ddedde ddedde ddedde ddedde ddedde ddedde

18 HTML PHP Paint Brushes Erasers Quantity: ddedde ddedde ddedde ddedde ddedde ddedde

19 PHP SQL HTML

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

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 Java (Programmierer)Bytecode (JVM)Maschinencode (CPU) AnwendungBetriebssystemHardware Anwendungsebene (Sichten)logische Ebene (Tabellen)physikalische Ebene (Bits) Schnittstelle

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? 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? Wikipedia? Ryanair? Ihre Bank? Ein Chat? Ein Blog? Ihr Client? iTunes? iPhoto? Picasa? Flickr? Google? Windows?

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 Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Moser Vorname: Paul Konto: Wert: Adresse: Landweg Gluck Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf Name: Meier Vorname: Roger Konto: Wert: Adresse: Winkel Oberdorf

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

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

35 Elemente einer Tabelle Fundstücke NummerArtFarbeFunddatumFundortFinder 14555SchirmBlau Bus Nr.12Stalder Roger Wichleren 8779 Neuhausen 14556Schlüssel BahnhofHegi Roger Brandweg Zuchwil Zeile, Datensatz, Entität Attribute, Eigenschaften Tabellenname Schlüsselattribut, Hauptschlüssel Eigenschaftswerte ~ Domain Eigenschaftswerte ~ Domain Tabelle, Entitätsmenge

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

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

38 Einschränkungen der Eigenschaftswerte Warum ist das wichtig? – technisch: Speicherplatz reservieren, etc. – logisch: Fehler vermeiden Fundstücke AttributBeispielTyp?Schlüssel?Obligatorisch?Extras? Nummer:14556intja auto incr. Art:Schlüsselcharneinja Farbe:-charnein Funddatum: datenein auto? Fundort:Bahnhofcharnein Finder:Hegi Rütli Brandweg Zuchwil charnein

39 Übungsaufgabe 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 Buch AttributBeispielTyp?Schlüssel?Obligatorisch?Extras?

40 Probleme mit Tabellen Welche (potentiellen) Probleme sehen Sie mit der untenstehende Tabelle? Fundstücke AnzahlArtFarbeFunddatumFundortFinder 1SchirmBlau Bus Nr.12Roger Stalder 9876 Neuhausen 4Schlüssel BahnhofHegi Roger Brandweg Zuchwil 2Schrim & Schal bunt HauptbahnhofHegi Roger Brandweg 12a/ Zuckwil

41 Schon besser Fundstücke IDAnzahlArtFarbeFunddatumFundortVornam e NachnameAdresse 171SchirmBlau Bus Nr.12RogerStalder9876 Neuhausen 184Schlüssel BahnhofHegiRogerBrandweg Zuchwil 191Schrimbunt Hauptbahnho f HegiRogerBrandweg 12a/ Zuckwil 201Schalbraun Hauptbahnho f HegiRogerBrandweg 12a/ Zuckwil Aber was machen wir mit der Redundanz?

42 Relationale Datenbanken Fundstücke IDAnzahlArtFarbeFunddatumFundortFinderID 171SchirmBlau Bus Nr Schlüssel Bahnhof7 191Schrimbunt Hauptbahnho f 7 201Schalbraun Hauptbahnho f 7 Finder IDVornameNachnameStrasseHausnummerZusatzPLZOrt 12RogerStalder9876Neuhausen 7HegiRogerBrandweg12a/79876Zuchwil Fremdschlüssel, verweist auf den Hauptschlüssel einer anderen Tabelle Fundstücke{ID, Anzahl, Art, Farbe, Funddatum, Fundort, FinderID} Finder{ID, Vorname, Nachname, Strasse, Hausnummer, Zusatz, PLZ, Ort}

43 SQL-Abfragen mit mehreren Tabellen 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 R abc S de R x S abR.cS.de Schreibweise in mySQL: SELECT * FROM R,S WHERE R.c=S.d AND e < 8 mySQL in Kürze:

44 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 R abc S de R x S abR.cS.de SELECT * FROM R JOIN S ON R.c=R.s mySQL in Kürze: R x S abR.cS.de null SELECT * FROM R RIGHT JOIN S ON R.c=R.s SQL-Abfragen mit mehreren Tabellen

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. KNRName EUEuropa ASAsien AFAfrika Kontinent LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.34 BerlinEuropa INDIndien DelhiAsien RWARwanda6.30 KigaliAfrika LNRName…KNR DKDänemark…EU DDeutschland…EU INDIndien…AS RWARwanda…AF Land Schlüsselattribut aus Kontinent

46 LNRNameEinwohnerHauptstadtKontinent DKDänemark5.16KopenhagenEuropa DDeutschland81.33BerlinEuropa INDIndien DelhiAsien RWARwanda6.30KigaliAfrika Land 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 Schlüsselattribut

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. PKeyDataPKeyDataFKey MasterDetail

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. LNRNameEinwohnerKNR DKDänemark5.16EU DDeutschland81.34EU INDIndien761.00AS RWARwanda6.30AF Land KNRName EUEuropa ASAsien AFAfrika Kontinent

49 1.Cross-Join (jede Zeile mit jeder ) – SELECT * FROM Land, Kontinent LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika …………… LNRNameEinwohnerKNR DKDänemark5.16EU DDeutschland81.34EU INDIndien761.00AS RWARwanda6.30AF Land KNRName EUEuropa ASAsien AFAfrika Kontinent

50 WHERE Land.KNR= Kontinent.KNR LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika …………… 2.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

51 AND Land.Einwohner > 10 2.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 LNRNameEinwohnerKNRKNRName DKDänemark5.16EUEUEuropa DKDänemark5.16EUASAsien DKDänemark5.16EUAFAfrika DDeutschland81.34EUEUEuropa DDeutschland81.34EUASAsien DDeutschland81.34EUAFAfrika INDIndien761.00ASEUEuropa INDIndien761.00ASASAsien INDIndien761.00ASAFAfrika ……………

52 3.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 NameEinwohnerName Deutschland81.34Europa Indien761.00Asien ……… Alternative:... FROM Land JOIN Kontinent ON Land.KNR = Kontinent.KNR LNRNameEinwohnerKNRKNRName DDeutschland81.34EUEUEuropa INDIndien761.00ASASAsien ……………

53

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

55 Datenbank Server (mySQL) Datenbank Server (mySQL) XAMPP Server Client 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 Browser (www-)Server (Apache) inklusive PhP (www-)Server (Apache) inklusive PhP Server Client Dateien, PHP mySQL DB DBS DBMS

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

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

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

59 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 Eine Person kann nur an einem Ort geboren worden sein Ein Ort kann für mehrere (0 – n) Personen der Geburtsort sein Aufgabe: Erstellen sie ein ER-Diagramm einer Schule (s. AB_Datenmodellierung.doc)

62 Musterlösung Schulszenario

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

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

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

66 In Relationales Modell übersetzen: Flug{Fnr, Datum} Buchung{Bnr, Fnr, Knr, Buchungsdatum, bezahlt} Kunde{Knr, Name} Flug Teil von Buchung 1 n getätig t von Kunde m 1 Buchungs- datum bezahlt Name Nr Datum

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

68 Redundanz vermeiden Gründe: 1.Speicherplatz sparen 2.Vermeidung von Anomalien 3.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 1.Ä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. 2.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. 3.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: 1.Lieferant {ID, LName, LAdresse} 2.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: Modell in Datenbank implementieren Normalisieren Redundanz vermeidenAnomalien vorbeugen Relationales Modell erstellen Attribute festlegenHaupt & Fremdschlüssel festlegen ER-Diagramm erstellen Was soll eine Entität im Modell sein?Wie hängen die Entitäten zusammen? Systeminformation einholen Was wird hier modelliert?Wozu wird die DB gebraucht?

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 NameAbtNrAbteilungProjekt Müller5EDV II(6, MySQL, 50%), (3, DV2010, 50%) Schulze3Rechenzentrum(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. 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. PersNrNameAbtNrAbteilung 123Müller5EDV II 876Schulze3Rechenzentrum PersNrProjNrProjektZeit 1236MySQL50% 1233DV201050% DV % Das Attribut Projekt ist nicht atomar, da es Mehrfachattribut ist. Mehrfachattribute werden in einer eigenen Tabelle ausgelagert. Außerdem fehlt ein Primärschlu ̈ ssel. Besser:

75 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. 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. ProjNrProjekt 3 MySQL 3DV2010 PersNrProjNrZeit % % % Das Attribut Projekt ist funktional abhängig vom Attribut ProjNr, nicht jedoch von PersNr. Das Attribut Zeit ist dagegen von gesamten Primärschlu ̈ ssel (PersNr, ProjNr) funktional abhängig. Also nochmal aufteilen: PersNrProjNrProjektZeit 1236MySQL50% 1233DV201050% DV %

76 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. 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ärschlu ̈ ssel PersNr abhängig. Vielmehr ist das Attribut Abteilung von der AbtNr abhängig. Also auch hier Aufspaltung in zwei Tabellen: PersNrNameAbtNrAbteilung 123Müller5EDV II 876Schulze3Rechenzentrum PersNrNameAbtNr 123Müller5 876Schulze3 AbtNrAbteilung 5EDV II 3Rechenzentrum

77 Zusammengefasst:

78 Goldene Tabellenregeln 1.Es braucht IMMER einen eindeutigen Hauptschlüssel (am besten, Sie nennen ihn immer ID) 2.Je Datensatz nur ein Wert pro Attribut 3.Wertemenge einschränken (z.B. mit Eingabemaske, Domain) 4.Nur ein Datensatz pro Zeile 5.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 Datenmaterial modellieren tabellarisch strukturieren Tabelle Tabelle Zeilen Spalten (Objekte) (Attribute) Relationale DB implementieren Anforderungen Nutzung Auswertung Suchen Ändern Löschen Verknüpfen Erweitern Sortieren Datenbank- sprache mySQL Web-Programmierung HTML+CSS+PHP Daten bank system Physikal. Speichern Objekt Attribute ER-Modell 1n optimieren und normalisieren Vermeidung von Redundanzen und Anomalien Konsistenz (logisch korrekt ) Datenschutz (Sichten) Zugangs- berechtigung Mehrbenutzer- betrieb

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

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) Modell in Datenbank implementieren Normalisieren Redundanz vermeidenAnomalien vorbeugen Relationales Modell erstellen Attribute festlegenHaupt & Fremdschlüssel festlegen ER-Diagramm erstellen Was soll eine Entität im Modell sein?Wie hängen die Entitäten zusammen? Systeminformation einholen Was wird hier modelliert?Wozu wird die DB gebraucht? 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.

83 Wie führt man eine Normalisierung durch? (Was ist zu beachten?) mitarbeiter IDNameGehaltsklasseGehalt 1MüllerGK13a MeierGK11b65000 transitive Abhängigkeit, also auf mehrer Tabellen Auflösen Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten. Flug gebucht von Kunde n m NrDatum Nr Name Die beiden wichtigsten Fälle, in denen die 3. Normalform verletzt ist: 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) ? In der Probe wird es nur um das Auslesen (SELECT...) und Aggregieren (COUNT, MEAN, SUM...) von Daten gehen! INSERT INTO tbl_name () VALUES(); z.B.: INSERT INTO tabelleA VALUES(1,2,drei) ; INSERT INTO tabelleA (col1,col3) VALUES(1,drei);


Herunterladen ppt "Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren tabellarisch strukturieren Tabelle Tabelle Zeilen Spalten."

Ähnliche Präsentationen


Google-Anzeigen