1 / 98

Informationssysteme / Datenbankabfragen

Informationssysteme / Datenbankabfragen. Thomas Mohr. Datenbanken – Wozu?. Datenbanken – Wozu?. Abfragesprachesprache SQL. Verwaltung MySQL. Datenbankmodellierung. Ausblick. Agenda. Informationssysteme. Informationssystem. Datenbanksystem DBS. Erfassung. Datenbankmanagementsystem

etana
Télécharger la présentation

Informationssysteme / Datenbankabfragen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informationssysteme / Datenbankabfragen Thomas Mohr

  2. Datenbanken – Wozu? Datenbanken – Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Ausblick Agenda

  3. Informationssysteme

  4. Informationssystem DatenbanksystemDBS Erfassung Datenbankmanagementsystem DBMS, z.B. MySQL Speicherung Analyse Darstellung Datenbank (Datenbasis) Datenbank (Datenbasis) Was ist ein Informationssystem ? • Ein Informationssystem kann auf formalisierte Fragen eines Anwenders Antworten aus einer gegebenen Datenmenge geben • Komponenten eines Informationssystems:

  5. Was ist ein Informationssystem ? • Datenbasis / Datenbank • Menge von Daten, die aus Sicht der Systembetreiber in irgendeiner Weise als zusammengehörig betrachtet werden. • Angereichert um weitere Daten, die das DBMS zur Erfüllung seiner Aufgaben benötigt, bilden sie eine Datenbank (DB). • Datenbankverwaltungssystem (DBMS) • Softwareprodukte für die dauerhafte, integre und anwendungsunabhängige Speicherung und Verwaltung von großen, mehrfachbenutzbaren integrierten Datenbasen • Datenbanksystem • Ein Datenbanksystem (DBS) besteht aus einem DBMS und einer oder mehreren Datenbanken • Informationssystem • Ein Informationssystem erweitert die Datenbank um eine Reihe von Werkzeugen zur Abfrage, Darstellung, Transformation und Analyse von Daten

  6. Ein Ausgangspunkt im Unterricht… • Schüler führen eine Internet-Recherche durch:„Nachbarländer Deutschlands – Fläche, Einwohner, Hauptstadt“ • Nutzung eines Informationssystems • Unterschiedliche Darstellung der Informationen

  7. Darstellung PC „Logik“ Anwendungsprogramm Datenbasis Software-Architekturen: „Standalone“-Programm • z.B. • selbst programmierte Schülerdatei • in Delphi programmierte Übersicht von Länderinformationen

  8. Vorteile Übersichtlichkeit (?) Schnell zu programmieren nur eine Programmiersprache Nachteile Daten meist nur vom erzeugenden Programm zu lesen Erweiterungen aufwändig Immer wieder gleiche Probleme (z.B. Datumsformat) Darstellung PC „Logik“ Anwendungsprogramm Datenbasis Software-Architekturen: „Standalone“-Programm

  9. Darstellung Darstellung Anwendungsprogramm „Logik“ Client „Logik“ Anwendungsprogramm Datenbasis Datenbasis (Datenbank)Server Server Software-Architekturen - Client-Server • z.B. • Outlook und Exchange-Server • „einfache“, datenbank-basierte Schülerverwaltung

  10. Darstellung Anwendungsprogramm „Logik“ Client Datenbasis (Datenbank)Server Server Software-Architekturen - Client-Server • z.B. • Outlook und Exchange-Server • „einfache“, datenbank-basierte Schülerverwaltung

  11. Vorteile Datenbank übernimmt „Standardaufgaben“ Daten zentral vorhanden(für mehrere Benutzer / Programme) Erweiterungen relativ einfach Nachteile Installation von Software auf allen Clients notwendig Weitere „Sprache“ zum Datenbankzugriff Darstellung Anwendungsprogramm „Logik“ Client Datenbasis (Datenbank)Server Server Software-Architekturen - Client-Server

  12. Darstellung Client Webclient (Browser) Darstellung Anwendungsprogramm „Logik“ „Logik“ Webserver (z.B. Apache und PHP) Server Datenbasis Datenbankserver (z.B. MySQL) Server Software-Architekturen – Webarchitektur • Eine moderne 3-schichtige Webarchitektur…

  13. Software-Architekturen – Webarchitektur • Eine moderne 3-schichtige Webarchitektur… Darstellung Client Webclient (Browser) „Logik“ Webserver (z.B. Apache und PHP) Server Datenbasis Datenbankserver (z.B. MySQL) Server

  14. Vorteile Keine Installation von zusätzlicher Software beim Client Nachteile http-Protokoll ohne Sessionverwaltung Software-Architekturen – Webarchitektur Darstellung Client Webclient (Browser) „Logik“ Webserver (z.B. Apache und PHP) Server Datenbasis Datenbankserver (z.B. MySQL) Server

  15. Clients Webserver Datenbankserver Typische Hardware-Verteilung • Viele (Web-) Clients teilen sich die Dienste eines Webservers, der wiederum auf einen Datenbankserver zurückgreift. • In kleinen Systemen können Web- und Datenbankserver auf dem gleichen Rechner sein.

  16. Clients Webserver Datenbankserver … und zum Testen / für die Fortbildung? • Alle drei Schichten sind auf einem Rechner! InternetExplorer Client Webserver Datenbankserver Apache MySQL

  17. 2,4 TByte Das andere Extrem – eine Web Farm Load Balancer Application Server Farm je 4Prozessoren HACMP Fail-Over Production DB Server FailOver DB Server 32 GByte RAM 32 GByte RAM FDDI Switch

  18. Arten von Datenbanken • Man unterscheidet verschiedene Arten von Datenbanken: • Hierarchische Datenbanken • Die Datenelemente sind baumartig miteinander verbunden • Vernetzte Datenbanken • Die Datenelemente sind mit Zeigern zu einem Netz miteinander verbunden • Beide Formen waren vor allem bei Großrechnern im Einsatz und werden zunehmend von relationalen Datenbanken abgelöst

  19. Attribut (Merkmal, Spalte) Attributwert (Datenwert) Attributklasse Datensatz (Tupel) Arten von Datenbanken • Relationale Datenbanken • Die Daten werden in Form von Tabellen gespeichert • Zwischen den Tabellen werden Beziehungen aufgebaut (Relationen) • Objektrelationale Datenbanken • erweitern die relationalen Datenbanken und objektorientierte Funktionen (z.B. Vererbung) Land Name Einwohner Hauptstadt Kontinent Dänemark 5165000 Kopenhagen Europa Deutschland 81338000 Berlin Europa Indien 761000000 Delhi Asien Rwanda 6300000 Kigali Afrika

  20. Arten von Datenbanken • Relationale Datenbanken – typische Vertreter • Oracle • IBM (DB/2) • Microsoft SQL Server (Access ?) • Informix • MySQL • PostGreSQL OpenSource

  21. Was bietet mir eine Datenbank? • Strukturierte Speicherung von Daten • Verteilter, gleichzeitiger Zugriff mehrerer Benutzer / Programme • ACID – Prinzip • Atomicity • Transaktionen (Änderungen an der Datenbank) werden ganz oder gar nicht durchgeführt • Consistency • Eine Transaktion führt wieder zu einem konsistenten (gültigen) Zustand der Datenbank • Isolation • Transaktionen beeinflussen sich nicht gegenseitig • Durability • Eine Transaktion ist dauerhaft gespeichert, auch gegen Systemabstürze gesichert

  22. Datenbanken – Wozu? Datenbanken – Wozu? Abfragesprachesprache SQL Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Ausblick Agenda

  23. MySQL – Jetzt wird es (endlich) praktisch… • Starten Sie den Datenbankserver und den Webserver • Das Datenbanksystem bietet einen Service für andere Rechner an • Die Windows-Firewall kann dies melden.Der Port muss freigegeben werden.

  24. Browser Client Apache Webserver MySQL Datenbankserver Die erste Datenbank importieren • Die Administration von MySQL funktioniert selbst schon am einfachsten über den Browser • Webarchitektur http://localhost/phpmyadmin

  25. Die erste Datenbank importieren • Legen Sie eine neue Datenbank „terra1“ an. • Wählen Sie den Punkt „Importieren“ und suchen die Datei„terra1.sql“

  26. Die erste Tabelle… • Klicken Sie auf „Struktur“: Die Tabelle „land“ wird angezeigt. • Lassen Sie sich den Inhalt der Tabelle anzeigen.

  27. Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland 81.33 Berlin Europa IND Indien 761.00 Delhi Asien RWA Rwanda 6.30 Kigali Afrika Schlüsselattribut Relationale Datenbank – Aufbau • Jeder Datensatz wird durch einen Schlüssel (Primärschlüssel) eindeutig identifiziert. Der Schlüssel • kann aus mehreren Attributen zusammengesetzt werden. • ist minimal, d.h. es kann kein Attribut weggelassen werden. • Oft wird ein zusätzliches, eindeutiges Schlüsselattribut hinzugefügt,z.B. eine Landeskennung • wird meist durch Unterstreichung gekennzeichnet.

  28. Abfragen mit 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.

  29. Ergebnistabelle Name Einwohner Kontinent Deutschland 81.34 Europa Indien 761.00 Asien … … … Veranschaulichendes Beispiel • SELECT Name, Einwohner, Kontinent FROM LandWHERE (Einwohner > 10) Länder mit über 10 Mio. Einwohner Land LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland 81.34 Berlin Europa IND Indien 761.00 Delhi Asien RWA Rwanda 6.30 Kigali Afrika … … … … …

  30. SQL – WHERE • Bedingungen mit Textattributen: • Name = 'Deutschland' • Name LIKE 'P%' (Paraguay, Polen, Portugal) • Name LIKE 'I_land' (Irland, Island) • Bedingungen mit Zahlattributen: • Stufe=7 (gleich 7) • Stufe<>7 (ungleich 7) • Stufe<7 (kleiner 7) • Stufe>7 (größer 7) • Stufe<=7 (kleiner gleich 7) • Stufe>=7 (größer gleich 7) • Stufe BETWEEN 7 AND 10 (zwischen 7 und 10)

  31. SQL – WHERE • Vergleich auf Nullwert (kein Attributwert angegeben): LNR IS NULL • Logische Verknüpfungen: • NOT (Kontinent='Europa') (Kontinent nicht Europa) • (Kontinent='Europa') AND (Einwohner<1) (Zwergstaaten in Europa) • (Kontinent='Europa') OR (Kontinent='Asien') (Länder in Eurasien)

  32. SQL – ORDER BY • Das Abfrageergebnis kann sortiert werden: SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY[Attribute]; • Die Sortierung geschieht nach dem angegebenen Attribut. • Bei mehreren Sortierattributen wird nach dem zweiten (dritten...) sortiert, sobald die Werte des ersten (zweiten...) identisch sind. • Absteigende Sortierung mit DESC • Beispiele: SELECT * FROM Land ORDER BY Name SELECT * FROM Land ORDER BY Kontinent, Einwohner DESC

  33. Die ersten SQL Befehle • Öffnen Sie das SQL-Fenster • Geben Sie alle Länder aus! • Geben Sie alle Länder aus: • Name, Einwohner, Hauptstadt • Sortierung nach Einwohner absteigend SELECT * FROM Land SELECT Name, Einwohner, Hauptstadt FROM Land ORDER BY Einwohner DESC

  34. Aufgaben, Datenbank: terra1 • Welche Länder liegen in Asien und Australien? • Welche Länder haben zwischen 10 und 100 Mio. Einwohner? • Absteigend nach Einwohner sortiert WHERE Kontinent='Asien' OR Kontinent='Australien' WHERE Einwohner BETWEEN 10 AND 100 ORDER BY Einwohner DESC

  35. SQL ist hier nicht standardisiert  Die Funktionen sind bei anderen DBS oft unterschiedlich Hilfsfunktionen • Wichtig sind vor allem Funktionen zur Manipulation von Strings und Datumsangaben, z.B. • DATEDIFF(D1, D2) Differenz (Tage) • NOW() Aktuelle Zeit/Datum (SELECT CURDATE()) • … • Wichtige Stringfunktionen • CONCAT(S1,S2,…) Verbinden von Strings • LOWER(),UPPER() In Groß-/Kleinbuchstaben umwandeln • CHAR_LENGTH() Länge in Zeichen • MID(str,pos,len) String ausschneiden • TRIM(s), LTRIM, RTRIM Abschneiden von Leerzeichen • … • Weitere Funktionen online in der Hilfe zu MySQL!

  36. Frankreich??Problem: Europa wird unterschiedlich geschrieben! Lösung: Auslagerung in eine eigene Tabelle Spalten können mit „AS“ umbenannt werden Aufgaben, Datenbank: terra1 • Geben Sie die Länder in folgender Form aus: • Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner? CONCAT(UPPER(Name),' - ',Hauptstadt) AS Land,round(Einwohner) AS "Mio. Einwohner" WHERE Kontinent = 'Europa' AND Einwohner > 20

  37. LNR Name Einwohner Hauptstadt Kontinent DK Dänemark 5.16 Kopenhagen Europa D Deutschland 81.34 Berlin Europa IND Indien 761.00 Delhi Asien RWA Rwanda 6.30 Kigali Afrika Land Kontinent LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF KNR Name EU Europa AS Asien AF Afrika Schlüsselattribut aus Kontinent Relationale Datenbanken – Beziehungen • 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.

  38. Relationale Datenbanken – Beziehungen • 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

  39. Land Kontinent LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland 81.34 EU IND Indien 761.00 AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika 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.

  40. 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 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – einfache Joins • Cross-Join („jede Zeile mit jeder“) • SELECT * FROM Land, Kontinent LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland 81.34 EU IND Indien 761.00 AS RWA Rwanda 6.30 AF KNR Name EU Europa AS Asien AF Afrika Land Kontinent

  41. 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 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – einfache Joins • 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

  42. 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 81.34 EU EU Europa D Deutschland 81.34 EU AS Asien D Deutschland 81.34 EU AF Afrika IND Indien 761.00 AS EU Europa IND Indien 761.00 AS AS Asien IND Indien 761.00 AS AF Afrika … … … … … SQL – einfache Joins • 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

  43. LNR Name Einwohner KNR KNR Name D Deutschland 81.34 EU EU Europa IND Indien 761.00 AS AS Asien … … … … … Name Einwohner Name Deutschland 81.34 Europa Indien 761.00 Asien … … … In der Realität versucht das DBMS, durch „geschicktes“ Vorgehen die Datenmenge schon früher zu reduzieren. SQL – einfache Joins • Einschränken auf gesuchte Spalten. • Nur bestimmte Spalten werden ausgegeben. • SELECT Land.Name, Land.Einwohner, Kontinent.Name FROM Land,Kontinent WHERE Land.KNR = Kontinent.KNRAND Land.Einwohner > 10

  44. Problem: Es werden Duplikate angezeigt Lösung: DISTINCT-Anweisung Aufgaben, Datenbank: terra2 • Geben Sie alle Kontinente mit ihren Ländern aus: • Name der Kontinente und Länder • Sortierung nach Kontinent absteigend • In welchen Kontinenten gibt es Länder mit mehr als 100 Mio. Einwohner? SELECT Kontinent.Name, Land.Name FROM Kontinent, Land WHERE Kontinent.KNR = Land.KNR ORDER BY Kontinent.Name DESC SELECT Kontinent.Name FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 100 SELECT DISTINCT Kontinent.Name FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR AND Land.Einwohner > 100

  45. Ort Land ONR Name … LNR BANGAL Bangalore … IND GOETTI Göttingen … D KARLSR Karlsruhe … D KOPENH Kopenhagen … DK LNR Name … KNR DK Dänemark … EU D Deutschland … EU IND Indien … AS RWA Rwanda … AF Schlüsselattribut aus Land Erweiterung der Datenbank • Es sollen nun die wichtigsten Orte der Länder gespeichert werden. • Wie sieht eine solche Ländertabelle aus? • Es wird eine neue Tabelle „Ort“ angelegt mit einem Fremdschlüssel auf „Land“.

  46. Teil von Land Ort Hauptstadt Teil von Kontinent Finden Sie die Stelle in der Datenbank terra3, an der die „Hauptstadt“ abgespeichert ist? Bisheriges „Schema“ der Datenbank • Ein erstes „E/R-Modell“ • eigentlich intuitiv zu lesen!?

  47. Aufgaben, Datenbank: terra3 • Geben Sie alle Orte mit ihren Ländern aus: • Name der Orte und Länder • Sortierung nach Einwohnerzahl absteigend • Geben Sie alle Länder mit ihrer Hauptstadt aus! • Sortierung nach Kontinent und Land. SELECT Ort.Name, Ort.Einwohner, Land.Name AS Land FROM Ort, Land WHERE Ort.LNR = Land.LNR ORDER BY Ort.Einwohner DESC SELECT Kontinent.Name AS Kontinent, Land.Name, Ort.Name AS Hauptstadt FROM Ort, Land, Kontinent WHERE Ort.ONR = Land.HauptONR AND Land.KNR = Kontinent.KNR ORDER BY Kontinent.Name, Land.Name

  48. Teil von Hauptstadt Ort Land Ort SQL – Tabellen-Alias • Soll in SQL auf eine Tabelle mehrfach zugegriffen werden, so kann dies mit Alias-Namen geschehen: • Es sollen alle Städte mit mehr als 1 Mio. Einwohner ausgegeben werden; dabei auch das zugehörige Land mit Hauptstadt. • logische Struktur: • SELECT o.Name AS Stadt, l.Name AS Land, hs.Name FROM Ort o, Land l, Ort hs WHERE o.LNR = l.LNR AND l.HauptONR = hs.ONR AND o.Einwohner>10000000 Der Alias-Name für Land ist nicht notwendig (verkürzt die Abfrage)

  49. Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR HAMBUR PHNOMP KOBLEN KOBLEN ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden. Erweiterung der Datenbank • Es sollen Flüsse gespeichert werden. • Flüsse fließen durch Orte. • Manche Orte werden von mehreren Flüssen durchflossen(z.B. Koblenz) • Wie sieht die Tabelle für die Flüsse aus?

  50. Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR Name GOETTI Göttingen KARLSR Karlsruhe KOBLEN Koblenz KOPENH Kopenhagen FNR LEI RHE RHE Problem: Für Orte müssen mehrere Flüsse eingetragen werden. Lösung: Auslagerung der Zuordnung in eine eigene Tabelle Erweiterung der Datenbank • Es sollen Flüsse gespeichert werden. • Flüsse fließen durch Orte. • Manche Orte werden von mehreren Flüssen durchflossen(z.B. Koblenz) • Wie sieht die Tabelle für die Flüsse aus?

More Related