Informationssysteme / Datenbankabfragen

Größe: px
Ab Seite anzeigen:

Download "Informationssysteme / Datenbankabfragen"

Transkript

1 Informationssysteme / Datenbankabfragen Thomas Mohr Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL / MariaDB Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick 2 1

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

3 Ein Ausgangspunkt im Unterricht Schüler führen eine Internet-Recherche durch: Städte in Deutschland Einwohner, geografische Lage Schüler nutzen ein Informationssystem Schüler stellen automatisch Informationen unterschiedlich dar Mainz Nord 8 16 Ost Landau ,19 8,12 Listen Name Mainz Landau Tabellen Einwohner Breite Länge Tabellen bieten schon von Hand Vorteile: leichter zu ergänzen (neue Spalte) Summenzeile Motivation - Datenbank Idee: Sammlung der gefundenen Städte in einem Tabellenblatt (OpenOffice Calc / MS Excel) auf einem zentralen Laufwerk Es treten typische Probleme auf: Es kann immer nur ein Benutzer die Datei öffnen. Daten können von jedem geändert / gelöscht werden. Keinerlei Konsistenzprüfung der eingegebenen Daten. Abhilfe: Nutzung eines Datenbanksystems MS Access ist in dieser Hinsicht schon ungeeignet. 7 3

4 Software-Architekturen: Standalone -Programm z.b. selbst programmierte Schülerdatei in Delphi programmierte Übersicht von Länderinformationen Anwendungsprogramm PC 8 Software-Architekturen: Standalone -Programm 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) Anwendungsprogramm PC 9 4

5 Software-Architekturen - Client-Server z.b. Outlook und Exchange-Server einfache, datenbank-basierte Schülerverwaltung Anwendungsprogramm Anwendungsprogramm Client (Datenbank)Server Server 10 Software-Architekturen - Client-Server z.b. Outlook und Exchange-Server einfache, datenbank-basierte Schülerverwaltung Anwendungsprogramm Client (Datenbank)Server Server 11 5

6 Vorteile Datenbank übernimmt Standardaufgaben Daten zentral vorhanden (für mehrere Benutzer / Programme) Erweiterungen relativ einfach Software-Architekturen - Client-Server Nachteile Installation von Software auf allen Clients notwendig Weitere Sprache zum Datenbankzugriff Anwendungsprogramm Client (Datenbank)Server Server 12 Software-Architekturen Webarchitektur Eine moderne 3-schichtige Webarchitektur Webclient (Browser) Client Anwendungsprogramm Webserver (z.b. Apache und PHP) Server Datenbankserver (z.b. MySQL) Server 13 6

7 Software-Architekturen Webarchitektur Eine moderne 3-schichtige Webarchitektur Webclient (Browser) Client Webserver (z.b. Apache und PHP) Server Datenbankserver (z.b. MySQL) Server 14 Software-Architekturen Webarchitektur Vorteile Keine Installation von zusätzlicher Software beim Client Nachteile http-protokoll ohne Sessionverwaltung Webclient (Browser) Client Webserver (z.b. Apache und PHP) Server Datenbankserver (z.b. MySQL) Server 15 7

8 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. Clients Webserver Datenbankserver 16 und zum Testen / für die Fortbildung? Alle drei Schichten sind auf einem Rechner! Clients Internet Explorer Client Webserver Datenbankserver Webserver Apache Datenbankserver MySQL MariaDB 17 8

9 Das andere Extrem eine Web Farm Load Balancer Application Server Farm je 4 Prozessoren HACMP Fail-Over Production DB Server FailOver DB Server 32 GByte RAM 32 GByte RAM FDDI Switch 18 2,4 TByte 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 9

10 Arten von Datenbanken Relationale Datenbanken Die Daten werden in Form von Tabellen gespeichert Zwischen den Tabellen werden Beziehungen aufgebaut (Relationen) Name Ort Attribut (Spalte, Merkmal) Datenwert (Attributwert) Name Einwohner Breite Laenge Land Berlin ,52 13,41 Deutschland Mainz ,00 8,27 Deutschland Paris ,86 2,35 Frankreich Speyer ,31 8,43 Deutschland Datensatz (Tupel) Attributklasse 20 Empfehlung: Einheitliche Begriffe nutzen, nicht zu nah an der mathematischen Betrachtung (Relationenalgebra) Daten in Tabellen Atomare Werte Ein Wert für ein Attribut in einem Datensatz soll atomar sein. nur einfache Werte keine Listen Nicht atomarer Datenwert 21 10

11 Arten von Datenbanken Relationale Datenbanken typische Vertreter Oracle IBM (DB/2) Microsoft SQL Server (Access?) Informix MySQL/MariaDB OpenSource PostGreSQL 22 Was bietet mir eine Datenbank? Strukturierte Speicherung von Daten Verteilter, gleichzeitiger Zugriff mehrerer Benutzer / Programme Verwaltung von Zugriffsrechten ACID Prinzip (Idee: Analogie zu Bank-Transaktionen) 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. 23 Im Unterricht gut durch Rollenspiele zu veranschaulichen. 11

12 ACID-Prinzip A Atomicity Bsp.: Ein Kontosystem mit nicht überziehbaren Konten Bob überweist Alice 500. Die Transaktion bricht nach der Abbuchung von Bobs Konto ab. Bob Alice Die Transaktion darf nur ganz oder gar nicht stattfinden. Konkret: Das Geld darf unterwegs nicht verschwinden 24 ACID-Prinzip C Consistency Bsp.: Bob will Alice 1000 überweisen. Die Transaktion überzieht sein Konto, was nicht erlaubt ist. Bob Alice Jede Transaktion muss die Datenbank in einem konsistenten (den definierten Regeln entsprechenden) Zustand hinterlassen. (insbesondere bei der Konsistenz von Schlüsselbeziehungen, s.u.) 12

13 ACID-Prinzip I Isolation Bsp.: Bob überweist Alice 400 und gleichzeitig an Carol 500. Jede Transaktion für sich ist in Ordnung, zusammen überziehen sie das Konto. Carol Bob Alice Jede Transaktion muss so ablaufen, dass parallel ablaufende Transaktionen sie nicht stören können. (zumindest logisch nacheinander ablaufen serialisierbar) Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL / MariaDB Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick 27 13

14 GF - Lehrplan Sprachen zur Datenbankverwaltung An der Schnittstelle nach außen bietet das Datenbanksystem (DBS) Sprachen für folgende Zwecke: Datenabfrage und -manipulation (DML) Verwaltung der Datenbank und Definition der Datenstrukturen (DDL) Berechtigungssteuerung (DCL) Bei relationalen DBS ist dies alles in der Sprache SQL vereint. Beschränkung in der Schule im Wesentlichen auf Abfragesprache. 28 MySQL/MariaDB 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

15 Die erste Datenbank importieren Administration von MySQL/MariaDB funktioniert selbst schon am einfachsten über den Browser (oder Admin-Button in Control Panel) Webarchitektur Browser Client Apache Webserver MySQL MariaDB 30 Datenbankserver Die erste Datenbank importieren Legen Sie eine neue Datenbank terra1 an. Wechseln Sie zur Datenbank (links), wählen Sie den Punkt Importieren und suchen die Datei terra1.sql 31 15

16 Die erste Tabelle Klicken Sie auf Struktur : u.a. wird die Tabelle ort angezeigt. Lassen Sie sich den Inhalt der Tabelle anzeigen. Tipp: Ändern Sie die Einstellungen von phpmyadmin, so dass nur die Icons angezeigt werden! 32 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

17 Datenbankzugriff mit SQL - Ein erstes Beispiel SELECT Name, Einwohner, Land FROM ort WHERE Einwohner > ort Name Einwohner Breite Laenge Land Berlin ,52 13,41 Deutschland Mainz ,00 8,27 Deutschland Paris ,86 2,35 Frankreich Speyer ,31 8,43 Deutschland Millionenstädte? Ergebnistabelle Name Einwohner Land Berlin Deutschland Paris Frankreich 36 SQL WHERE Bedingungen mit Textattributen: Name = 'Paris' Name LIKE 'P%' (Potsdam, Peine, Pirmasens) Name LIKE 'A_len' (Aalen, Ahlen) 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) 37 17

18 SQL WHERE Vergleich auf Nullwert (kein Attributwert angegeben): Breite IS NULL Logische Verknüpfungen: NOT (Land='Deutschland') (Land nicht Deutschland) (Land='Deutschland') AND (Einwohner>100000) (Millionenstädte in Deutschland) (Land='Deutschland') OR (Land='Schweiz') (Orte in Deutschland und Schweiz) 38 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 ort ORDER BY Name SELECT * FROM ort ORDER BY Land, Einwohner DESC 39 18

19 Übungen 1 Bearbeiten Sie in inf-schule die Aufgaben 2-8 unter 40 Übungen 1 Beispieltabelle Geben Sie alle Länder aus: Name, Einwohner, Hauptstadt Sortierung nach Einwohner absteigend Nicht atomare Datenwerte SELECT Name, Einwohner, Hauptstadt FROM land ORDER BY Einwohner DESC 41 Welche Länder haben zwischen 10 und 100 Mio. Einwohner? Absteigend nach Einwohner sortiert WHERE Einwohner BETWEEN 10 AND 100 ORDER BY Einwohner DESC 19

20 Übungen 1 6. Welche Länder haben einen Arm oder ein Bein im Namen? WHERE Name like '%bein%' OR Name like '%arm%' 8. Welche Länder liegen in Asien und Australien? WHERE Kontinent='Asien' OR Kontinent='Australien' 42 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! 43 SQL ist hier nicht standardisiert Die Funktionen sind bei anderen DBS oft unterschiedlich 20

21 Nutzen der Hilfsfunktionen Ausgabe der Länder in folgender Form: CONCAT(UPPER(Name),' - ',Hauptstadt) AS Land, round(einwohner) AS "Mio. Einwohner" Spalten können mit AS umbenannt werden 44 Exkurs: Primärschlüssel Wozu dient die Spalte LNR in der Land-Tabelle? ein anderes Beispiel: Suche nach der Hauptstadt Berlin Suche nach der Hauptstadt Washington Man benötigt noch das Land als Suchhilfe. 45 Selbst das Land reicht als Suchhilfe nicht aus. 21

22 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. Land 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 Schlüsselattribut 46 Fehler in Daten Welche Länder gibt es in Europa mit mehr als 20 Mio Einwohner? WHERE Kontinent = 'Europa' AND Einwohner > 20 Frankreich?? Problem: Europa wird unterschiedlich geschrieben! Lösung: Auslagerung in eine eigene Tabelle 47 22

23 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. 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 48 Land LNR Name KNR DK Dänemark EU D Deutschland EU IND Indien AS RWA Rwanda AF Schlüsselattribut aus Kontinent Kontinent KNR Name EU Europa AS Asien AF Afrika Relationale Datenbanken Beziehungen Land LNR Name KNR DK Dänemark EU D Deutschland EU IND Indien AS RWA Rwanda AF Kontinent KNR Name EU Europa AS Asien AF Afrika Primärschlüssel aus Kontinent 49 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. 23

24 Land Kontinent 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. Land LNR Name Einwohner KNR DK Dänemark 5.16 EU D Deutschland EU IND Indien AS RWA Rwanda 6.30 AF Kontinent KNR Name EU Europa AS Asien AF Afrika 50 SQL einfache Joins 1. 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 EU AS AF Name Europa Asien Afrika 51 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 24

25 SQL einfache Joins 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 WHERE Land.KNR= Kontinent.KNR 52 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 SQL einfache Joins 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 AND Land.Einwohner > 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 25

26 SQL einfache Joins 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 LNR Name Einwohner KNR KNR Name D Deutschland EU EU Europa IND Indien AS AS Asien 54 Name Einwohner Name Deutschland Europa Indien Asien In der Realität versucht das DBMS, durch geschicktes Vorgehen die Datenmenge schon früher zu reduzieren. Übungen 2 Bearbeiten Sie in inf-schule die Aufgaben unter

27 Übungen 2 Aufgabe 2 Warum wäre das Attribut "Name" ein möglicher Primärschlüssel für die Schüler-Tabelle? Was ist im Moment ein möglicher Primärschlüssel der Noten-Tabelle? Was ist der Fremdschlüssel in der Noten-Tabelle? 56 Übungen 2 4. Welche Länder liegen in Asien? Name und Einwohner Länder Sortierung nach Einwohnerzahl absteigend SELECT land.name, land.einwohner FROM kontinent, land WHERE kontinent.knr = land.knr ORDER BY land.einwohner DESC 5. Orte in Europe mit mehr als 1 Mio. Einwohner SELECT land.name, ort.name AS "Stadt", ort.einwohner FROM kontinent, land, ort WHERE kontinent.name = 'Europa' AND kontinent.knr = land.knr AND land.lnr = ort.lnr AND ort.einwohner > ORDER BY ort.einwohner DESC 57 27

28 Duplikate... In welchen Kontinenten gibt es Länder mit mehr als 100 Mio. Einwohner? SELECT kontinent.name FROM land, kontinent WHERE land.knr = kontinent.knr AND land.einwohner > 100 Problem: Es werden Duplikate angezeigt Lösung: DISTINCT-Anweisung SELECT DISTINCT kontinent.name FROM land, kontinent WHERE land.knr = kontinent.knr AND land.einwohner > 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. Ort ONR Name LNR BANGAL Bangalore IND GOETTI Göttingen D KARLSR Karlsruhe D KOPENH Kopenhagen DK Land LNR Name KNR DK Dänemark EU D Deutschland EU IND Indien AS RWA Rwanda AF Schlüsselattribut aus Land 59 28

29 Bisheriges Schema der Datenbank Ein erstes E/R-Modell (Entity/Relationship) eigentlich intuitiv zu lesen!? Land Teil von Hauptstadt Ort Teil von Kontinent Hatten Sie die Stelle in der Datenbank terra3, an der die Hauptstadt abgespeichert ist, gefunden? 60 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: Ort Teil von Land Hauptstadt Ort 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> Der Alias-Name für Land ist nicht notwendig (verkürzt die Abfrage) 61 29

30 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? Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR HAMBUR PHNOMP KOBLEN KOBLEN ONR GOETTI KARLSR KOBLEN KOPENH Name Göttingen Karlsruhe Koblenz Kopenhagen Problem: Für Flüsse müssen beliebig viele Orte eingetragen werden. 62 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? Fluss Ort FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 ONR GOETTI KARLSR KOBLEN KOPENH Name Göttingen Karlsruhe Koblenz Kopenhagen FNR LEI RHE RHE Problem: Für Orte müssen mehrere Flüsse eingetragen werden. 63 Lösung: Auslagerung der Zuordnung in eine eigene Tabelle 30

31 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) Zuordnungstabelle mit Schlüsseln aus beiden Haupttabellen. 64 Fluss FNR Name Laenge ELB Elbe 1144 MEK Mekong 4500 MOS Mosel 544 RHE Rhein 1320 Stadtfluss FNR ONR ELB HAMBUR RHE KOBLEN RHE KARLSR MOS KOBLEN Ort ONR GOETTI KARLSR KOBLEN KOPENH Name Göttingen Karlsruhe Koblenz Kopenhagen Struktur der Datenbank terra4 Land n 1 n Teil von Ort Hauptstadt 1 1 n Teil von 1 durchfließt m Kontinent Fluss 65 31

32 Übungen 3 Bearbeiten Sie in inf-schule die Aufgaben unter 66 Übungen 3 1. Welche Orte liegen an der Saar? SELECT o.name FROM ort o, stadtfluss sf, fluss f WHERE o.onr = sf.onr AND sf.fnr = f.fnr AND f.name = 'Saar' 3. Welche Orte durchfließt der Rhein in Rheinland-Pfalz? Ordnung nach Rheinkilometer 4. Welche Länder durchfließt die Donau? SELECT ort.name, stadtfluss.km FROM ort, stadtfluss, fluss WHERE ort.landesteil='rheinland-pfalz' AND ort.onr = stadtfluss.onr AND stadtfluss.fnr = fluss.fnr AND fluss.name = 'Rhein' AND stadtfluss.km IS NOT NULL ORDER BY stadtfluss.km 67 SELECT DISTINCT l.name FROM fluss f, stadtfluss sf, ort o, land l WHERE f.name = 'Donau' AND f.fnr = sf.fnr AND sf.onr = o.onr AND o.lnr = l.lnr 32

33 Gruppieren von Ergebnissen Manchmal müssen die Ergebnisse einer Anfrage gruppiert und verrechnet werden. Bsp.: Wie viele Städte sind in Europa pro Land verzeichnet? SELECT o.onr, l.name FROM Ort o, Land l WHERE o.lnr = l.lnr AND l.knr = 'EU ORDER BY l.name 68 ONR AALBOR KOPENH BERLIN DUESSE MAINZ TALLIN Name Dänemark Dänemark Deutschland Deutschland Deutschland Estland Selbst zählen??? NEIN! Gruppieren von Ergebnissen Manchmal müssen die Ergebnisse einer Anfrage gruppiert und verrechnet werden. Bsp.: Wie viele Städte sind in Europa pro Land verzeichnet? SELECT l.name, COUNT(*) AS Anzahl FROM Ort o, Land l WHERE o.lnr = l.lnr AND l.knr = 'EU GROUP BY l.name ORDER BY l.name ONR AALBOR KOPENH BERLIN DUESSE MAINZ TALLIN Name Dänemark Dänemark Deutschland Deutschland Deutschland Estland Name Dänemark 2 Deutschland 3 Estland 1 Anzahl 69 33

34 Übungen 4 Bearbeiten Sie in inf-schule die Aufgaben 1-3 unter 70 Übungen 4 1. Wie viele Orte liegen in Frankreich? SELECT COUNT(*) FROM land, ort WHERE ort.lnr = land.lnr AND land.name = 'Frankreich' GROUP BY entfällt, wenn nur gezählt wird. 3. In welchen Staaten liegen Megacities (mehr als 1 Mio. Einwohner)? Ausgabe: Anzahl der Städte pro Land! SELECT land.name, COUNT(*) AS Anzahl FROM land, ort WHERE land.lnr = ort.lnr AND ort.einwohner> GROUP BY land.name ORDER BY Anzahl DESC 71 34

35 Übungen 4 3. Wie viele Einwohner haben die Länder pro Kontinent im Schnitt? SELECT k.name AS Kontinent, AVG(l.Einwohner) AS Schnitt FROM Kontinent k, Land l WHERE k.knr = l.knr GROUP BY k.name ORDER BY k.name Weitere BuiltIn- Funktionen: MAX, MIN, SUM, 4. Welche Städte liegen an mehr als einem Fluss? SELECT o.name, COUNT(*) AS Anzahl FROM Ort o, StadtFluss sf WHERE o.onr = sf.onr GROUP BY o.name HAVING COUNT(*)>1 ORDER BY o.name 72 Struktur der kompletten Datenbank miniterra Sprache n n benachbart m gesprochen m Land n 1 n Teil von Ort Hauptstadt 1 1 n Teil von 1 durchfließt m Kontinent Fluss 1 mündet 73 n 35

36 Für Experten Welche Städte liegen an mehr als einem Fluss? Welche Flüsse sind es jeweils? SELECT o.name, f.name FROM Ort o, StadtFluss sf1, Fluss f WHERE o.onr = sf1.onr AND f.fnr = sf1.fnr AND EXISTS (SELECT NULL FROM StadtFluss sf2 WHERE sf1.fnr<>sf2.fnr AND sf2.onr=o.onr) ORDER BY o.name Welche Länder grenzen an Deutschland? SELECT l1.name, l2.name FROM Nachbarland n, Land l1, Land l2 WHERE (n.lnr1='d' OR n.lnr2='d') AND l1.lnr = n.lnr1 AND l2.lnr = n.lnr2 74 Für Experten Welche Länder grenzen an Deutschland? Geben Sie nur die Nachbarländer aus! SELECT IF(l1.LNR='D',l2.Name, l1.name) AS "Direkte Nachbarn" FROM Nachbarland n, Land l1, Land l2 WHERE (n.lnr1='d' OR n.lnr2='d') AND l1.lnr = n.lnr1 AND l2.lnr = n.lnr2 ORDER BY "Direkte Nachbarn" ACHTUNG: Nicht genormt! Welche Flüsse münden in den Rhein? SELECT fc.name FROM Fluss fp, Fluss fc WHERE fp.fnr = fc.zielfnr AND fp.name = 'Rhein' Selbstreferenz der Tabelle Fluss 75 36

37 u.v.m. SQL bietet noch einige weitere (hier nicht behandelte) Möglichkeiten: OUTER JOINS: Es werden beim Join auch Datensätze angezeigt, die keinen Join-Partner finden. Bsp.: Alle Städte sollen ausgegeben werden und zwar (wenn vorhanden) mit ihren Flüssen. Behandlung von leeren Feldern (NULL-Werten) 76 Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL/MariaDB Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick 77 37

38 Verwaltung des Datenbanksystems In einem Datenbanksystem müssen Rechte für verschiedene Benutzer verwaltet werden: MySQL arbeitet nach der Installation ohne Schutz des Administrators Jeder kann auf alle Datenbanken zugreifen und diese verändern Mehrere Schüler sollen sich einen Datenbankserver teilen, dabei sich aber nichts gegenseitig kaputtmachen Die Rechte können sehr fein vergeben werden, am Wichtigsten sind: SELECT: Benutzer kann Tabellen auslesen INSERT/UPDATE/DELETE: Tabelleninhalte dürfen verändert werden CREATE/ALTER/ : Tabellenstruktur darf verändert werden 78 MySQL Passwort für Administrator ändern Der Administrator (root) für die Datenbank hat alle Rechte und muss geschützt werden. phpmyadmin in Browser starten Menüpunkt Benutzerkonten Benutzer root - localhost auswählen und bearbeiten 79 38

39 MySQL Passwort für Administrator ändern Button Passwort ändern Beim nächsten Aufruf von phpmyadmin ist die Eingabe des neuen Passworts notwendig oder einfacher - direkt per SQL-Befehl: SET password = PASSWORD('HierMussEinGutesPasswortRein') 80 MySQL Passwort für Administrator ändern Anmeldetyp für phpmyadmin ändern Ins Verzeichnis xampp\phpmyadmin wechseln. Datei config.inc.php mit Notepad++ oder Wordpad öffnen. (oder über Control Panel öffnen) 81 39

40 MySQL Passwort für Administrator ändern Anmeldetyp für phpmyadmin ändern Zeile $cfg['servers'][$i]['auth_type'] = config'; ändern auf = 'cookie'; Bei der nächsten Anmeldung (Browser einmal zuvor schließen!) ist die Eingabe von Benutzer (root) und Passwort notwendig 82 Benutzer / Rechte vergeben Über den Reiter Benutzerkonten können weitere Benutzer angelegt und Rechte auf den Datenbanken vergeben werden z.b. für einen zentralen Datenbankserver sollen pro Schülergruppe exklusive Datenbanken zur Verfügung gestellt werden Oder einfacher gleich noch etwas SQL lernen: Da phpmyadmin immer lokal auf dem Server läuft CREATE USER Schueler1@localhost IDENTIFIED BY 'meinpasswort'; CREATE DATABASE dbschueler1; GRANT ALL PRIVILEGES ON dbschueler1.* TO Schueler1@localhost; 83 40

41 Benutzer / Rechte vergeben Einem Benutzer können aber auch Rechte (z.b. nur Leserecht) auf zentralen Datenbanken wie terra vergeben werden: GRANT SELECT ON terra.* TO Schueler1@localhost; oder auch entzogen werden: REVOKE SELECT ON terra.* FROM Schueler1@localhost; 84 Problem: XAMPP-Rechte Jetzt kann der Benutzer über oder über vom Schulnetzwerk auf den Server zugreifen. Problem: Neues Rechte-System in aktuelleren XAMPP-Versionen Manuelles Anpassen der Konfigurationsdatei httpd-xampp.conf nötig

42 Anpassen der Konfigurationsdatei httpd-xampp.conf Im Verzeichnis \xampp\apache\conf\extra findet sich die Konfigurationsdatei httpd-xampp.conf evtl. Sicherungskopie anlegen! Im letzten Abschnitt muss der Zugriff wieder erlaubt werden, indem das Verbot auskommentiert wird. Danach muss der Webserver mit XAMPP Control Panel neu gestartet werden. 86 Dies ist die quick and dirty -Methode ohne Beachtung eines Sicherheitskonzepts Die Anpassung ist für ein öffentliches System im Internet absolut ungeeignet! Übung: Benutzer anlegen 1. Schützen Sie den Administrator-Zugang für ihren mysql-server wie zuvor beschrieben. 2. Legen Sie einen Benutzer ifb und Passwort Speyer an. Dieser soll die Leserechte (SELECT) auf der Datenbank terra erhalten. 3. Passen Sie die Konfigurationsdatei httpd-xampp.conf an. 4. Versuchen Sie, mit diesem Benutzer auf die Datenbank des Nachbarn / der Nachbarin zuzugreifen

43 Skript zur Anlage der Datenbanken Zur Vereinfachung existiert ein PHP-Skript, das eine erste Umgebung für den Unterricht einrichtet: Verzeichnis terra_install in das htdocs-verzeichnis des XAMPP-Pakets kopieren. aufrufen. Das Skript legt die Datenbanken terra1 4 und miniterra an. erzeugt Benutzerkonten und Datenbanken für die Schüler mit entsprechenden Rechten. 88 Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick 89 43

44 Ein neues Informationssystem Anforderungskatalog Schulverwaltung Die Benutzer können eine Liste aller Lehrer mit ihrem Dienstkürzel abrufen. Für jede Klasse ist eine Liste der durchgeführten Klassenfahrten mit dem leitenden Lehrer ersichtlich. StD L. Lämpel übernimmt dieses Jahr die 7a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren. Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach. StR A. Kribich hat sich fortgebildet und darf ab diesem Jahr neben Mathematik und ev. Religion auch Informatik unterrichten. Die Fachschaftsliste muss aktualisiert werden. Nachdem LiA Sch. Merz in Rente gegangen ist, geht die Fachbereichsleitung in Sport an OStR G. Lenk. 90 Modellbildung Um ein Informationssystem zu erstellen, muss ein Ausschnitt der realen Welt ( Miniwelt ) im Computersystem erfasst werden. Die Benutzer können eine Liste aller Lehrer mit ihrem Dienstkürzel abrufen. StD L. Lämpel übernimmt dieses Jahr die 7a als Klassenleiter. Die Klasse kann das im Internet schon in den Ferien erfahren. Eine Suche ist möglich über Klassenstufe, Lehrer oder Fach. Miniwelt Datenmodell? 91 Unstrukturierte Informationen über die Miniwelt Repräsentation der Informationen als strukturierte Daten 44

45 Modellbildung Um aus einer Beschreibung einer Miniwelt das Datenmodell einer Datenbank abzuleiten, bietet es sich an, zunächst ein grafisches Konzept der Daten zu erstellen. Text 92 Externe Sicht Konzeptionelle Sicht Internes Modell (z.b. relationales Datenmodell) Konzeptionelles Modell E/R-Diagramme E/R-Diagramme dienen dazu, das konzeptionelle Modell des Informationssystems zu erstellen. Es werden zwei Konstrukte verwendet: Entitätstypen Beziehungstypen (Relationships) Eine Entität ist ein bestimmtes Objekt der realen Welt oder unserer Vorstellung z.b. eine Person, ein Gegenstand, ein Ereignis Entitäten mit gleichen Eigenschaften werden zu Entitätstypen zusammengefasst Symbol: Rechteck Lehrer 93 45

46 E/R-Diagramme - Entitätstyp Beispiel Entitätstyp: Entität: Lehrer Lämpel, Kürzel Lä Entitätstyp: Menge aller Lehrer mit den Merkmalen Vorname, Nachname, Kürzel, Primärschlüssel: Kürzel (?) (oder ein künstlicher Schlüssel) Entitätstyp Lehrer Kürzel: Lä Name: Lämpel Vorname: Ludwig Titel: StD Kürzel: Kr Name: Kribich Vorname: Alfred Titel: StR 3 Entitäten 94 Kürzel: Le Name: Lenk Vorname: Gertrud Titel: OStR' E/R-Diagramme - Beziehungstyp Gleichartige Beziehungen zwischen Entitäten werden als ein Beziehungstyp zwischen den Entitätstypen definiert. Symbol: Raute Beispiel: Ein Lehrer führt Klassenfahrten durch. Kuerzel: Name: Lä Lämpel Beziehungen Stufe: 8 Teil: a Kuerzel: Name: Kr Kribich Stufe: 11 Teil: M1 Kuerzel: Name: Me Merz Stufe: 12 Teil: m3 Lehrer Klassenfahrt Klasse 95 Entitätstyp Beziehungstyp Entitätstyp 46

47 Modellierung oft nicht eindeutig Die Beziehung Klassenfahrt könnte man auch als eigenen Entitätstyp modellieren. Modellierung ist oft nicht eindeutig, es gibt je nach Ansicht mehrere sinnvolle Modelle für eine Miniwelt. Lehrer Klasse führt durch Klassenfahrt nimmt teil 96 E/R-Diagramme - Attribute Die Eigenschaften aller Entitäten und Beziehungen eines Entitätstyps bzw. eines Beziehungstyps werden mit Hilfe von Attributen erfasst. Symbol: Ellipse Beispiel: Lehrer Klassenfahrt Klasse Name Kürzel Datum Stufe Teil Vorname beschreibend identifizierend Ziel Anzahl 97 47

48 E/R-Diagramme Kardinalität Ein Beziehungstyp wird durch die Kardinalität genauer bezeichnet: 1:n- Beziehung am Beispiel: Klassenzuordnung der Schüler Name: 9a Name: Müller Vorname: Yvonne Name: 9b Name: Meier Vorname: Jan Name: 10d Name: Dietz Vorname: Nicole Name: Seiler Vorname: Manfred Klasse Schüler Klasse 1 n angehören Schüler 98 Ein Schüler gehört einer Klasse an. Einer Klasse gehören mehrere Schüler an. E/R-Diagramme Kardinalität n:m Beziehung am Beispiel: Kurszuordnung von Schülern in der MSS Fach: Mathe LK: ja Name: Müller Vorname: Yvonne Fach: Deutsch LK: ja Name: Meier Vorname: Jan Fach: Englisch LK: ja Name: Dietz Vorname: Nicole Name: Seiler Vorname: Manfred Kurs Schüler Kurs n besucht m Schüler 99 Ein Kurs hat mehrere Schüler. Ein Schüler nimmt an mehreren Kursen teil. 48

49 E/R-Diagramme Kardinalität Die Kardinalitäten (1:1, 1:n, n:m) geben nur an, wie viele Entitäten maximal miteinander verbunden sind. Klasse 1 n angehören Schüler Bsp.: Ein Schüler ist maximal einer Klasse zugeordnet. Einer Klasse sind maximal n Schüler zugeordnet. Die Kardinalität kann zusätzlich eingeschränkt werden. Klasse 1 n angehören [1,1] [8,30] Schüler Bsp.: Eine Klasse hat minimal 8 und maximal 30 Schüler. 100 E/R-Diagramme Reflexive Beziehungstypen Beziehungen können auch auf dem gleichen Entitätstyp gelten, Selbstbeziehung oder Reflexive Beziehung. Bsp.: Heirat Name: Meier Name: Bach Name: Meier Vorname: Klaus Vorname: Stefan Vorname: Sabine Name: Bach-Meier Vorname: Petra Name: Hurtig Vorname: Hans Personen Personen 1 Heirat oder n:m?

50 Relationales Schema E/R-Modell Normalisierung von relationalen Schemata Im ersten Teil wurde eine bestehende Datenbank sukzessive erweitert und vor allem in mehrere Tabellen zerlegt, um Redundanzen zu vermeiden. Dieser Prozess kann in der sog. Normalisierung formalisiert werden. Das Relationenschema wird dabei in die erste, zweite, dritte usw. Normalform überführt. Immer mehr Redundanzen werden vermieden. Immer mehr Tabellen sind notwendig (und Anfragen werden komplexer). Prozess wird in der Realität nur bis zu einem gewissen Grad durchlaufen. Weitergehendes mit Beispielen in: Transformation E/R-Modell in relationales Schema Transformation von Entitätstypen Für jeden Entitätstyp eine Tabelle Schüler Name SNR Vorname Schueler SNR Name Vorname

51 Relationales Schema E/R-Modell Relationales Schema E/R-Modell Transformation E/R-Modell in relationales Schema Transformation von 1:n-Beziehungstypen Fremdschlüssel wird auf Seite der Kind -Klasse hinzugefügt (kann, aber muss nicht der Name des Primärschlüssels sein). Klasse 1 n angehören Schüler KNR Stufe Name SNR Vorname Klasse Schueler KNR Stufe SNR Name Vorname KNR 105 Transformation E/R-Modell in relationales Schema Transformation von n:m-beziehungstypen Einfügen eines Fremdschlüssels nicht möglich Separate Tabelle mit zwei Fremdschlüsseln Kurs n besucht m Schüler KNR Stufe Fehlstunden Name SNR Vorname Kurs Besucht Schueler KNR Stufe KNR SNR Fehlst. SNR Name Vorname

52 Relationales Schema E/R-Modell Transformation E/R-Modell in relationales Schema Transformation von 1:1-Beziehungstypen z.b. das separate Speichern von sensiblen Daten zu Personen Separate Tabelle, wobei dort Primärschlüssel auch Fremdschlüssel ist. Schüler 1 1 Zusatzdaten SchülerPrivat SNR Name Vorname Konfession SNR Herkunft Schueler SchuelerPrivat SNR Name Vorname SNR Konfession Herkunft 107 Tools für E/R-Diagramme DBDesigner4 MySQL Workbench Ungetestet: Mogwai ER-Designer TOAD Data Modeler TOAD für MySQL Oder doch einfach mit Office-Programmen

53 Aufgaben Erstellen Sie ein E/R-Modell und dann das relationale Schema. Schule Es werden alle LehrerInnen mit ihren Namen, Vornamen, Kürzeln und Dienstgrad erfasst. Die Benutzer können im Internet eine Liste der Klassen mit ihren KlassenleiterInnen einsehen. Es ist eine Suche nach den Fachschaften der Schule möglich. Dabei werden auch alle LehrerInnen angezeigt, die der Fachschaft angehören. 110 Bibliothek Anforderungskatalog Erstellen Sie ein E/R-Modell und dann das relationale Schema. Bibliothek In der Bibliothek müssen Bücher erfasst werden. Eine Suche ist möglich über Sachgebiet, Autor, Titel, Erscheinungsort und jahr, Verlag. Bei der Suche wird eine Liste aller verfügbaren Verlage vorgeblendet. Leser, die Bücher ausleihen wollen, müssen sich zuvor registrieren. Für ein Buch kann herausgefunden werden, ob es zur Zeit ausgeliehen ist und von wem. Um Schäden nachvollziehen zu können, können alle vorherigen Ausleiher ermittelt werden. Bei zu langer Ausleihe erfolgt eine Mahnung an den Leser. Das muss vermerkt werden

54 Anfragen an die Bibliothek-Datenbank Eine Datenbank für das Schema kann fertig importiert werden! (Bibliotheks-DB_latin.sql) 1. Welche Bücher sind bei einem Verlag aus München erschienen? (214 Ergebnisse) 2. Welche Jugendbücher sind zur Zeit von welchem Leser ausgeliehen? Geben Sie den Buchtitel, den Lesernamen und das Datum der Ausleihe aus! (7 Ergebnisse) 3. Wie viele Bücher existieren zu jedem Sachgebiet? Geben Sie die Sachgebiete nach Anzahl absteigend sortiert aus. 4. Wie viele Bücher aus jedem Sachgebiet sind zur Zeit ausgeliehen? (Kinder: 14) 5. Welche Leser haben zur Zeit Bücher ausgeliehen? (49 Ergebnisse, Achtung Duplikate?) 112 Arztpraxis Anforderungskatalog Arztpraxis Dr. Mager (kurz Ma) behandelt am den Patienten Willi Schäfer (Patientennummer 3012). Im Rahmen dieser Behandlung werden die folgenden Leistungen erbracht: Beratung, symptombezogene Untersuchung, Schutzimpfung. Jede dieser Leistungen ist über eine Nummer identifizierbar und kostet eine bestimmte Gebühr. Frau Dr. Hurtig (kurz Hu) wird am Sonntag ( ) zu einem Notfall gerufen. Patient Manfred Achilles ist beim Fußballspiel eine Sehne gerissen. In der Untersuchung vor Ort wird das Bein ruhig gestellt und der Patient ins Krankenhaus eingewiesen. Herr Dr. Alzheimer (kurz Al) besucht regelmäßig seine Patientin Paula Stein im Altenheim. Diese Untersuchung gilt als Vorsorgemaßnahme

55 Wer kennt wen? - Anforderungskatalog Wer-kennt-wen Bei der Registrierung muss der Benutzer sich einen eindeutigen Benutzernamen auswählen und seine -adresse hinterlegen. Benutzer legen Gruppen an, denen weitere Benutzer beitreten können. Ein Benutzer sieht in einer Übersicht, mit welchen anderen Benutzern er Freundschaften unterhält. Ein persönliches Blog erlaubt einem Benutzer, regelmäßig sein Leben mit anderen zu teilen. Ein Benutzer wird rechtzeitig an Events erinnert, an denen er teilnimmt. 114 Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick

56 Vernetzung des Themas - Auswertungen Grafische Auswertung der Datenbank (z.b. Anzahl der Länder pro Kontinent) über Werkzeuge (z.b. Excel) über selbst erstellte Programme 116 Vernetzung des Themas - Koordinatensystem Umrechnung Breiten/Längen-Angaben in Bildschirmkoordinaten

57 Vernetzung des Themas - Grenzen von SQL Problem: Verfolgen eines Flusslaufes von der Quelle zum Meer z.b. Spree Nordsee Elbe Hier werden iterative Strukturen benötigt, die SQL (als mengenorientierte Sprache) im Standard nicht bietet. Rhein Aller Weser Fulda Werra Havel Spree Anknüpfung an Programmierung Python, PHP, Delphi, Java Mosel Main Neckar Donau Inn Isar 118 Vernetzung des Themas - Grenzen von SQL Problem: Verfolgen eines Flusslaufes vom Meer zu den Zuflüssen z.b. Nordsee Nordsee Elbe Aller Havel Spree Beispiel für eine (elegante?) rekursive Programmierung Rhein Weser Fulda Werra Main Mosel Neckar Donau Inn Isar

58 Zugriff auf MySQL über Python Grundlegende Schritte jedes Datenbankzugriffs am Beispiel Python und der Bibliothek mysql.connector: # import mysql.connector 1. Verbindung mit dem Datenbanksystem aufbauen con = mysql.connector.connect( host = 'localhost', user = 'root', password = 'sql', database = 'terra') 120 Ergebnis der Verbindung ist eine Variable (Handle), mit der auf die Verbindung zugegriffen werden kann. Fehler sollten (gerade hier) abgefangen (PHP-Konstrukt or die ) und ausgegeben werden. In manchen Fällen (z.b. PHP) kann die Datenbank erst in einem zweiten Schritt ausgewählt werden. Zugriff auf MySQL über Python 2. Abfrage ausführen cursor = con.cursor() SQLBefehl = 'SELECT Name, Einwohner FROM kontinent' cursor.execute(sqlbefehl) Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann. 3. Ergebnisse ausgeben Grundlegendes Problem Programmiersprachen sind iterativ relationale Datenbanken (und damit SQL) sind mengenorientiert Speicherung und Durchlaufen der Ergebnisse notwendig 4. Freigabe der Handles cursor.close() con.disconnect()

59 Zugriff auf MySQL über Python Ausgabe der Ergebnisse cursor.fetchone() liefert eine komplette Zeile des Ergebnisses als Tupel Nach der letzten Zeile wird None zurückgegeben Auslesen und Speichern einer Ergebniszeile Iteration über alle Zeilen des Ergebnisses row=cursor.fetchone() while (row!=none): print(row[0], row[1]) row = cursor.fetchone () Zugriff auf eine Spalte der Ergebniszeile 122 MySQL in Delphi In Delphi kann der Zugriff auf Datenbanken mittels Borland Database Engine (BDE) bzw. dbexpress erfolgen. Problem: Ab Delphi 5 ist die Datenbankunterstützung nur in der Professional-Version enthalten. Lösung: Verzicht auf Borland-Datenbank-Komponenten und Verwendung freier Zugriffssoftware MySQLDirect ( Units, die einen einfachen Datenbankzugriff erlauben Einsteiger-Tutorial dazu:

60 Datenschutz Anknüpfungspunkt: Datenschutz Ein Blick ins Bundesdatenschutzgesetz: ( )

61 Vernetzung des Themas - Datenschutz Datenbank-basierte Umfrage in der Schule Wie können durch Verknüpfen (eigentlich harmloser) Daten neue Informationen gewonnen werden? 126 Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick

62 Ausblick - Was hätte man noch alles behandeln können? Weitere Möglichkeiten von SQL Outer Joins (z.t. auf inf-schule.de in gbuch-datenbank) Sub-Selects Verändern der Datenbankinhalte mit SQL INSERT / DELETE / UPDATE Verändern der Datenbankstruktur über Anweisungen Data Definition Language (DDL) Datenbank-Management Zugriffsbeschleunigung über Indizes Verwaltung der physischen Speicherung storage engine InnoDB für MySQL Sicherung der Datenbank u.v.m. 128 Software / Links XAMPP Deutsche MySQL Seite MySQL Workbench PHP-Dokumentation (mit MySQL Funktionen) Connectors (Python, Java, ) für MySQL

63 Software / Links Material zur MySQL-Verwendung von Klaus Merkert Material zu PostgreSQL von Klaus Merkert Material zu DB allgemein von OSZ Handel, Berlin dex.htm u.v.m. 130 Informationssysteme / Datenbankabfragen Fragen

64 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank schulverwaltung.sql LNR Name Vorname FNR Fach Lehrer n unterrichtet m Faecher n Klassenleiter m Klassen KStufe KBuchstabe Saal 132 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank bibliothek.sql BuchNr Autor zurueck LeserNr Nachname Buecher n Ausleihe m Leser n 1 gibt heraus Ist Teil von 1 1 Verlag Leserprivat VNR Name Ort LeserNr Geschlecht

65 Schemata der Beispieldatenbanken Schema zur Beispieldatenbank wm2006.sql 1 Ort n n Begegnung n Team1 Team2 Datum 1 1 Ergebnis 1 Team 1 Schiedsrichter n Land Schemata der Beispieldatenbanken WM-Datenbank als UML-Diagramm ONR Ort TNR1 TNR2 ONR Begegnung Datum Ergebnis SNR Name Sitze TNR TNR Team Trainer Schiedsrichter Name Vorname TNR LNR LNR Land LNR 135 TNR in Team ist Primär- und Fremdschlüssel Name Einwohner Kontinent 65

66 Wer kennt wen? - Anforderungskatalog Wer-kennt-wen Bei der Registrierung muss der Benutzer sich einen eindeutigen Benutzernamen auswählen und seine - Adresse hinterlegen. Benutzer legen Gruppen an, denen weitere Benutzer beitreten können. Ein Benutzer sieht in einer Übersicht, mit welchen anderen Benutzern er Freundschaften unterhält. Ein persönliches Blog erlaubt einem Benutzer, regelmäßig sein Leben mit anderen zu teilen. Ein Benutzer wird rechtzeitig an Events erinnert, an denen er teilnimmt. 136 Zugriff auf MySQL über PHP Grundlegende Schritte jedes Datenbankzugriffs am Beispiel PHP: 1. Verbindung mit dem Datenbanksystem aufbauen $link = mysql_connect($host, $Benutzer, $Passwort) or die("db-verbindung unmöglich: ". mysql_error()); Ergebnis der Verbindung ist eine Variable (Handle), mit der auf die Verbindung zugegriffen werden kann. Fehler sollten (gerade hier) abgefangen (PHP-Konstrukt or die ) und ausgegeben werden. 2. Datenbank auswählen mysql_select_db($datenbank) or die("auswahl Datenbank unmöglich: ". mysql_error());

67 Zugriff auf MySQL über PHP 3. Abfrage ausführen $result = mysql_query($sqltext) or die("anfrage fehlgeschlagen: ". mysql_error()); Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann Ergebnisse ausgeben Grundlegendes Problem Programmiersprachen sind iterativ relationale Datenbanken (und damit SQL) sind mengenorientiert Speicherung und Durchlaufen der Ergebnisse notwendig Für das Abrufen der Ergebnisse gibt es drei wesentliche Varianten: i. Array ii. Assoziatives Array iii. Objektorientiert 5. Freigabe der Handles (kann entfallen) mysql_free_result($result); mysql_close($link); Zugriff auf MySQL über PHP Ausgabe der Ergebnisse als Array mysql_fetch_array liefert eine komplette Zeile des Ergebnisses als Array (Alternative: mysql_fetch_row) Nach der letzten Zeile wird FALSE zurückgegeben Auslesen und Speichern einer Ergebniszeile als Array Schleife über alle Zeilen des Ergebnisses while ($arrrow = mysql_fetch_array($result)) { echo "$arrrow[0] : $arrrow[1]"; } Zugriff auf eine Spalte der Ergebniszeile

68 Informationssysteme / Datenbankabfragen Thomas Mohr 68

Informationssysteme / Datenbanken Weiterbildungskurs Informatik, September 2017

Informationssysteme / Datenbanken Weiterbildungskurs Informatik, September 2017 Informationssysteme / Datenbanken Weiterbildungskurs Informatik, September 2017 Thomas Mohr, StD Leibniz-Gymnasium Pirmasens Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL / MariaDB

Mehr

Informationssysteme / Datenbankabfragen

Informationssysteme / Datenbankabfragen Informationssysteme / Datenbankabfragen Thomas Mohr Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick 2 Informationssysteme

Mehr

Informationssysteme / Datenbankabfragen

Informationssysteme / Datenbankabfragen Informationssysteme / Datenbankabfragen Thomas Mohr I N F O R M A T I K Agenda Datenbanken Wozu? Abfragesprachesprache SQL Verwaltung MySQL Datenbankmodellierung Themenvernetzung (DB-Zugriff, etc.) Ausblick

Mehr

Microsoft Access 2010 SQL nutzen

Microsoft Access 2010 SQL nutzen Microsoft Access 2010 SQL nutzen Welche Bestellungen hat Kunde x aufgegeben? Welche Kunden haben noch nie bestellt? Wer hat welche Bestellungen von welchen Kunden aufgenommen? S(tructured)Q(uery)L(anguage)

Mehr

Datenbanken im WI-Unterricht mit

Datenbanken im WI-Unterricht mit Datenbanken im WI-Unterricht mit Inhaltsverzeichnis 1 ER-Modell - Entity Relationship Modell 1 1.1 Entitäten................................................. 2 1.2 Relationen................................................

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13 Auf einen Blick Vorwort... 13 Teil 1 Vorbereitung Kapitel 1 Einleitung... 17 Kapitel 2 SQL der Standard relationaler Datenbanken... 21 Kapitel 3 Die Beispieldatenbanken... 39 Teil 2 Abfrage und Bearbeitung

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13 Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel

Mehr

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15 Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................

Mehr

D1: Relationale Datenstrukturen (14)

D1: Relationale Datenstrukturen (14) D1: Relationale Datenstrukturen (14) Die Schüler entwickeln ein Verständnis dafür, dass zum Verwalten größerer Datenmengen die bisherigen Werkzeuge nicht ausreichen. Dabei erlernen sie die Grundbegriffe

Mehr

Datenbanken. Zusammenfassung. Datenbanksysteme

Datenbanken. Zusammenfassung. Datenbanksysteme Zusammenfassung Datenbanksysteme Christian Moser Seite 1 vom 7 12.09.2002 Wichtige Begriffe Attribut Assoziation API Atomares Attribut Datenbasis DBMS Datenunabhängigkeit Datenbankmodell DDL DML DCL ER-Diagramm

Mehr

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten

Mehr

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Einführung in SQL insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Quelle Wikipedia, 3.9.2015 SQL zur Kommunikation mit dem DBMS SQL ist

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15 Vorwort 13 Kapitel 1 Einleitung 15 Kapitel 2 SQL-der Standard relationaler Datenbanken... 19 2.1 Die Geschichte 19 2.2 Die Bestandteile 20 2.3 Die Verarbeitung einer SQL-Anweisung 22 2.4 Die Struktur von

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Anwendungsentwicklung Datenbanken Datenbankentwurf. Stefan Goebel

Anwendungsentwicklung Datenbanken Datenbankentwurf. Stefan Goebel Anwendungsentwicklung Datenbanken Datenbankentwurf Stefan Goebel Warum eine Datenbank? Nutzung von gleichen Daten durch viele Anwender auch an unterschiedliche Orten Daten können mit unterschiedlicher

Mehr

Datenbankentwicklung

Datenbankentwicklung Datenbankentwicklung Berechnung und Präsentation von Daten Organisation der Daten in alleinstehende Tabellen Exklusiver Zugriff auf alle Informationen einer Tabelle Beschränkte Anzahl von Daten pro Tabellenblatt

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten Seminararbeit vorgelegt von: Gutachter: Studienbereich: Christian Lechner Dr. Georg Moser Informatik Datum: 6. Juni 2013 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung in Datenbanken 1 1.1 Motivation....................................

Mehr

Folien php/mysql Kurs der Informatikdienste

Folien php/mysql Kurs der Informatikdienste Folien php/mysql Kurs der Informatikdienste 1. Einführung in die Datenbank MySQL Kursbeispiel und Kursziele 1.1 Das Kursbeispiel: eine kleine Personalverwaltung 1.2 Was brauchen wir? 1.3 Ziele Kurs AEMS1,

Mehr

Datenmodelle und Datenbanken 2

Datenmodelle und Datenbanken 2 Datenmodelle und Datenbanken 2 Prof. N. Fuhr Institut für Informatik und Interaktive Systeme Arbeitsgruppe Informationssysteme 24. Februar 2005 Hinweise zur Bearbeitung Die Zeit läuft erst, wenn Sie alle

Mehr

S(tructured)Q(uery)L(anguage)

S(tructured)Q(uery)L(anguage) S(tructured)Q(uery)L(anguage) Welche Kunden haben wir? Welche Kunden wohnen in Chicago? Welche Bestellung wurden zwischen dem 01.03.2006 und dem 31.03.2006 aufgegeben? Leibniz Universität IT Services Anja

Mehr

Grundlagen zu Datenbanken zu Beginn der Jgst. 13

Grundlagen zu Datenbanken zu Beginn der Jgst. 13 Grundlagen zu Datenbanken zu Beginn der Jgst. 13 Bereits bei der Planung einer Datenbank muss der Datenbankentwickler darauf achten, Nachteile für das spätere System zu vermeiden. Die Strukturen müssen

Mehr

Tabellenkalkulationssysteme Inf 9 / 1

Tabellenkalkulationssysteme Inf 9 / 1 Tabellenkalkulationssysteme Inf 9 / 1 1.1 Inhalte von Zellen Die Zellen von Rechenblättern können Werte (Daten) oder Formeln enthalten. Werte können mithilfe von Zellbezügen als Eingabe für Formeln verwendet

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag Gregor Kuhlmann Friedrich Müllmerstadt MySQL Der Schlüssel zu Datenbanken-Design und -Programmierung r?: X c 3 E i- O uu Rowohlt Taschenbuch Verlag Inhalt Editorial 11 Einleitung 12 1 Einführung in das

Mehr

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

Das relationale Datenmodell

Das relationale Datenmodell Das relationale Datenmodell Konzepte Attribute, Relationenschemata, Datenbank-Schemata Konsistenzbedingungen Beispiel-Datenbank Seite 1 Einführung Zweck datenmäßige Darstellung von Objekten und Beziehungen

Mehr

Praktische SQL-Befehle

Praktische SQL-Befehle Praktische SQL-Befehle Datenbanksysteme I WiSe 2018/2019 Todor Ivanov DB1 WS2018 1 Praktische SQL-Befehle Nested Selects Inserts Updates Views Triggers Constraints Functions Voraussetzung: Laptop + MySQL/

Mehr

Visualisierung in Informatik und Naturwissenschaften

Visualisierung in Informatik und Naturwissenschaften Visualisierung in Informatik und Naturwissenschaften Datenbankvisualisierung Sven Bernhard 12.06.1999 Datenbankvisualisierung Datenbanktheorie in 5 Minuten Visualisierung vs. Datenbanken Visualisierung

Mehr

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Grundlagen von SQL Informatik 2, FS18 Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Markus Dahinden 13.05.18 1 Grundlagen von SQL (Structured Query Language)

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp 5/14/18 Grundlagen von SQL (Structured Query Language) Datenbanksprache Befehle Datenbanken und Tabellen erstellen/verändern Daten manipulieren (eingeben, ändern, löschen) Datenbank durchsuchen (Queries

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Entitätstypen, Attribute, Relationen und Entitäten

Entitätstypen, Attribute, Relationen und Entitäten Einführung Datenmodellierung Entitätstypen, Attribute, Relationen und Entitäten Wozu Datenbanken? Datenbanken dienen zur Speicherung und Verwaltung großer Datenbestände Beispiele: Adressdaten aller Kunden

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Als Datenbanksystem wird ein Datenbankverwaltungssystem zusammen mit einer oder mehrerer Datenbanken bezeichnet.

Als Datenbanksystem wird ein Datenbankverwaltungssystem zusammen mit einer oder mehrerer Datenbanken bezeichnet. Datenbankverwaltungssystem (DBVS/DBMS) Ein Datenbankverwaltungssystem (DBVS, data base management system : DBMS) ist die Gesamtheit aller Programme (Ressourcen) zur Erzeugung, Verwaltung (einschl. Daten-

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Arbeiten mit einer Datenbank 1

Arbeiten mit einer Datenbank 1 Arbeiten mit einer Datenbank 1 1. Datenmodelle 1.1 Das Entity-Relationship-Model (Objekt-Beziehungs-Modell) Bevor man in einem Datenbanksystem eine Datenbank aufbaut, muss man sich die Struktur der Datenbank

Mehr

[ SQL] Wissen, das sich auszahlt

[  SQL] Wissen, das sich auszahlt [www.teia.de SQL] Wissen, das sich auszahlt INHALT SEITE 12 [I] 1] Einführung in SQL und relationale Datenbanken 12 14 16 18 11 1.1 1.2 Einführung Die Structured Query Language (SQL) Tabellen Mehrere Tabellen

Mehr

Datenbanken. Ein DBS besteht aus zwei Teilen:

Datenbanken. Ein DBS besteht aus zwei Teilen: Datenbanken Wikipedia gibt unter http://de.wikipedia.org/wiki/datenbank einen kompakten Einblick in die Welt der Datenbanken, Datenbanksysteme, Datenbankmanagementsysteme & Co: Ein Datenbanksystem (DBS)

Mehr

SQL Data Manipulation Language (DML) und Query Language (QL)

SQL Data Manipulation Language (DML) und Query Language (QL) Innsbruck Information System University of Innsbruck School of Management Information Systems Universitätsstraße 15 6020 Innsbruck SQL Data Manipulation Language (DML) und Query Language (QL) Universität

Mehr

BERUFSPRAKTIKUM UND -VORBEREITUNG

BERUFSPRAKTIKUM UND -VORBEREITUNG Department für Geographie Marco Brey BERUFSPRAKTIKUM UND -VORBEREITUNG Crashkurs IT-Methoden ein anwendungsorientierter Einstieg in Datenbanksysteme, Programmierung und fortgeschrittene Excel-Funktionen

Mehr

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar Abfragen aus einer Tabelle mit Hilfe der Datenbank-Sprache SQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine

Mehr

ER-Modell, Normalisierung

ER-Modell, Normalisierung ER-Modell Mit dem Entity-Relationship-Modell kann die grundlegende Tabellen- und Beziehungsstruktur einer Datenbank strukturiert entworfen und visualisiert werden. Das fertige ER-Modell kann dann ganz

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Relationale Datenbanken und SQL Theorie und Anwendung Prof. Dr. Nikolaus Wulff Gründe für eine Datenbank Meist werden Daten nicht in XML-Dokumenten, sondern innerhalb einer

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes

Mehr

PD Dr.-Ing. F. Lobeck. Seite 6

PD Dr.-Ing. F. Lobeck. Seite 6 Seite 6 Datenbanken Datenbank: Eine geordnete Menge von Daten. Speicherung erfolgt unabhängig von speziellen Anwenderprogrammen. Ebenso sollte die Hardwareunabhängigkeit gesichert werden. Zu einem Datenbankmanagementsystem

Mehr

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) DDL ist Teil von SQL (Structured

Mehr

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN: Lothar Piepmeyer Grundkurs Datenbanksysteme Von den Konzepten bis zur Anwendungsentwicklung ISBN: 978-3-446-42354-1 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42354-1

Mehr

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Introduction to Data and Knowledge Engineering. 6. Übung SQL Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB

Mehr

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle. Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu

Mehr

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm)

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm) 10. Logischer Entwurf 10-1 10. Logischer Entwurf 10-2 Stufen der Entwicklung einer Datenbank 1. Datenbank - Entwurf ( ER - Diagramm) Logischer Entwurf 2. Umsetzen des ER - Diagramms ins relationale Modell

Mehr

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte Wirtschaftsinformatik 7a: Datenbanken Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte Drei Gäste bezahlen nach einem gemeinsamen Abendessen eine Rechnung von 30 Euro, so dass jeder 10 Euro gibt.

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie 3 Inhaltsverzeichnis 1 Einführung in die Datenbanktechnologie 1.1 Einleitung... 8 1.1.1 Zielsetzung... 8 1.1.2 Aufbau des Studienbuches... 9 1.1.3 Abgrenzung... 10 1.2 Grundbegriffe... 10 1.3 Datenbanksysteme...

Mehr

Kapitel 1: Wiederholungsfragen Grundlagen DBS

Kapitel 1: Wiederholungsfragen Grundlagen DBS Grundlagen DBS 1. Welche zentralen Anforderungen an ein DBS definierte Edgar Codd? 2. Was ist eine Transaktion? 3. Welche Eigenschaften muss das DBMS bei der Transaktionsverarbeitung sicherstellen? 4.

Mehr

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern Datenbanken werden durch ein spezielles Programm verwaltet, einen sogenannten Datenbankserver, in unserem Fall den MySQL-Datenbankserver.

Mehr

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis Daniel Warner SQL Das Praxisbuch Mit 119 Abbildungen Franzis Inhaltsverzeichnis Teil I - Einleitung 15 1 Einleitung 17 1.1 Zum Aufbau des Buchs 17 1.2 Hinweise zur Buch-CD 18 1.3 Typografische Konventionen

Mehr

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. 1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Datenbanken Grundlagen und Design

Datenbanken Grundlagen und Design Frank Geisler Datenbanken Grundlagen und Design 3., aktualisierte und erweiterte Auflage mitp Vorwort 15 Teil I Grundlagen 19 i Einführung in das Thema Datenbanken 21 i.i Warum ist Datenbankdesign wichtig?

Mehr

Inhaltsverzeichnis. Teil 1 - XM L Einleitung Motivation...15

Inhaltsverzeichnis. Teil 1 - XM L Einleitung Motivation...15 Inhaltsverzeichnis 1 Einleitung...11 2 Motivation...15 Teil 1 - XM L......17 3 Geschichte von X M L...17 3.1 Markupsprachen...17 3.1.1 Auszeichnungsarten...17 3.1.2 Markupsprachen...20 4 Zeichensatz...

Mehr

Arbeiten mit einem lokalen PostgreSQL-Server

Arbeiten mit einem lokalen PostgreSQL-Server Arbeiten mit einem lokalen PostgreSQL-Server Download für das Betriebssystem Windows PostgreSQL-Server und pgadmin: http://www.enterprisedb.com/products-servicestraining/pgdownload#windows pgadmin: http://www.pgadmin.org/download/windows.php

Mehr

Installationsanleitung für die netzbasierte Variante Ab Version 3.6. KnoWau, Allgemeine Bedienhinweise Seite 1

Installationsanleitung für die netzbasierte Variante Ab Version 3.6. KnoWau, Allgemeine Bedienhinweise Seite 1 1 Installationsanleitung für die netzbasierte Variante Ab Version 3.6 Copyright KnoWau Software 2014 KnoWau, Allgemeine Bedienhinweise Seite 1 2 Inhaltsverzeichnis 1 Übersicht... 3 2 Installation... 4

Mehr

Garten - Daten Bank. - survival pack -

Garten - Daten Bank. - survival pack - Garten - Daten Bank - survival pack - Dr. Karsten Tolle PRG2 SS 2017 Inhalt heute Kurz: Motivation und Begriffe SQL (survival pack) create table (Tabelle erzeugen) insert into (Einfügen) select (Anfragen)

Mehr

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

Linux-Camp: Linux als Server am Beispiel LAMP

Linux-Camp: Linux als Server am Beispiel LAMP Linux-Camp: Linux als Server am Beispiel LAMP Linux, Apache, MySQL, PHP mit Ubuntu Version 8.04 Inhalt LAMP-Komponenten LAMP-Komponenten installieren, konfigurieren und prüfen Apache Webserver PHP5 MySQL

Mehr

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Datenbanksysteme: Entwurf

Datenbanksysteme: Entwurf Wichtigste Themen hier: Datenbanksysteme: Entwurf DB Entwurf ist in der Regel eingebettet in ein größeres Projekt: siehe Informationssysteme Die Daten dienen einem Zweck und sind dennoch universell nutzbar:

Mehr

<Insert Picture Here> MySQL Workbench für Einsteiger

<Insert Picture Here> MySQL Workbench für Einsteiger MySQL Workbench für Einsteiger Ralf Gebhardt Principal Sales Consultant MySQL Agenda MySQL Workbench 5.2 Design, Entwicklung, Administration MySQL Workbench Varianten Erweiterbarkeit

Mehr

Der Einsatz von MySQL-Datenbanken (mit XAMPP)

Der Einsatz von MySQL-Datenbanken (mit XAMPP) Informatik in der Mittelstufe: Der Einsatz von MySQL-Datenbanken (mit XAMPP) Hannes Heusel Eduard-Spranger-Gymnasium Landau Warum soll ich eine MySQL- Datenbank verwenden? kostenlos Mehrbenutzersystem

Mehr

Datenbanken und Datenbanktypen Tag 1 : Kapitel 1. Christian Inauen. Lernziele. Entwicklung der Datenbanken.

Datenbanken und Datenbanktypen Tag 1 : Kapitel 1. Christian Inauen. Lernziele. Entwicklung der Datenbanken. Tag 1 : und 10.08.2015 Jede/r Lernende... kann in eigenen Worten die Entstehung von erläutern kennt die verschiedenen Arten von mit entsprechenden Eigenschaften kann die Abkürzungen ACID, BASE und CAP

Mehr

Kapitel DB:IV (Fortsetzung)

Kapitel DB:IV (Fortsetzung) Kapitel DB:IV (Fortsetzung) IV. Logischer Datenbankentwurf mit dem relationalen Modell Das relationale Modell Integritätsbedingungen Umsetzung ER-Schema in relationales Schema DB:IV-46 Relational Design

Mehr

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson 10 01101110 John-Harry 01110 Wieken 0110 0110 0110 10 01101 011 01110 0110 010 011011011 0 10 01111010 01101 011011 0110 0110 01110 011011101 01101 0110 010 0101 10 011011101 0101 0110 010 010 0110 01101110

Mehr

Datenschutz: Zugriffsrechte in SQL

Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

SMARTentry Notification

SMARTentry Notification Vario IT-Solutions GmbH SMARTentry Notification Dokumentation 08.04.2016 Installation und Einrichtung von SMARTentry Notification für bestehende und neue SALTO Installationen mit SHIP Schnittstelle. Inhaltsverzeichnis

Mehr

PHP- Umgang mit Datenbanken (1)

PHP- Umgang mit Datenbanken (1) PHP- Umgang mit Datenbanken (1) Weitere Funktionen zum Umgang mit Datenbanken (Erzeugen, Löschen) und Tabellen (Erzeugen, Löschen) Zum Beispiel für das Erzeugen einer neuen Datenbank $dbname= blumendb

Mehr

Aufgabe 1) Übung 4: 1.2

Aufgabe 1) Übung 4: 1.2 Übung 4: Aufgabe 1) 1.2 Relation: Eine Relation besteht aus Attributen und Tupeln. Sie wird üblicherweise mit Hilfe einer Tabelle beschrieben, welche in zweidimensionaler Anordnung die Datenelemente erfasst.

Mehr

Grundkurs MySQL und PHP

Grundkurs MySQL und PHP Martin Pollakowski Grundkurs MySQL und PHP So entwickeln Sie Datenbanken mit Open Source Software 2., verbesserte und erweiterte Auflage Anwendung und Nutzen von Datenbanken 1 Was ist eine Datenbank? 1

Mehr

ODBC-Verbindungen in Oracle-Datenbanken nutzen

ODBC-Verbindungen in Oracle-Datenbanken nutzen ODBC-Verbindungen in Oracle-Datenbanken nutzen Bereits in der Vergangenheit haben wir verschiedene Möglichkeiten beschrieben, wie sich Daten aus externen Quellen in AutoCAD Map über die ODBC-Verbindung

Mehr

Datenzugriffskomponente mit JPA 2.1

Datenzugriffskomponente mit JPA 2.1 Datenzugriffskomponente mit JPA 2.1 (Grundlagen der Java Persistence Architecture) Vladislav Faerman Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der

Mehr

Abfragen aus mehreren Tabellen (mit join)

Abfragen aus mehreren Tabellen (mit join) Abfragen aus mehreren Tabellen (mit join) Bislang wurden nur einzelne Tabellen eingesetzt. Das reicht oft auch aus, doch sobald man etwas komplexere Webprojekte realisieren möchten, wird man kaum umhinkommen,

Mehr

Kapitel 1: Einführung 1.1 Datenbanken?

Kapitel 1: Einführung 1.1 Datenbanken? 1. Einführung 1.1. Datenbanken? Seite 1 Kapitel 1: Einführung 1.1 Datenbanken? 1. Einführung 1.1. Datenbanken? Seite 2 Willkommen! Studierenden-Datenbank Hans Eifrig hat die Matrikelnummer 1223. Seine

Mehr

Zweite Klassenarbeit der Jahrgangsstufe 1 (Wirtschaftsgymnasium) Thema: Relationale Datenbanken

Zweite Klassenarbeit der Jahrgangsstufe 1 (Wirtschaftsgymnasium) Thema: Relationale Datenbanken Seite 1 Zweite Klassenarbeit der Jahrgangsstufe 1 (Wirtschaftsgymnasium) Thema: Relationale Datenbanken Name: Datum: Maximal erreichbare Punkte: 30 Klassendurchschnitt: Erreichte Punktzahl: Note: Übersicht:

Mehr

Datenmodellierung VU Einführung SS 2015

Datenmodellierung VU Einführung SS 2015 184.685 Datenmodellierung VU, Einführung SS 2015 184.685 Datenmodellierung VU Einführung SS 2015 Dr. Sebastian Skritek Institut für Informationssysteme Technische Universität Wien Dr. Sebastian Skritek

Mehr

ODBC Was ist das? ODBC Treiber installieren ODBC-Zugriff einrichten ODBC Zugriff mit Excel ODBC Zugriff mit Word...

ODBC Was ist das? ODBC Treiber installieren ODBC-Zugriff einrichten ODBC Zugriff mit Excel ODBC Zugriff mit Word... INHALTSVERZEICHNIS ODBC Was ist das?... 2 ODBC Treiber installieren... 2 ODBC-Zugriff einrichten... 2 ODBC Zugriff mit Excel... 5 ODBC Zugriff mit Word... 8 ODBC Zugriff mit Access... 11 1 ODBC WAS IST

Mehr

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Schnellübersichten. SQL Grundlagen und Datenbankdesign Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes

Mehr

105.3 SQL-Datenverwaltung

105.3 SQL-Datenverwaltung LPI-Zertifizierung 105.3 SQL-Datenverwaltung Copyright ( ) 2009 by Dr. W. Kicherer. This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.0 Germany License. To view a

Mehr

Anleitung. Kontenverwaltung auf mail.tbits.net

Anleitung.  Kontenverwaltung auf mail.tbits.net Anleitung E-Mail Kontenverwaltung auf mail.tbits.net E-Mail Kontenverwaltung auf mail.tbits.net 2 E-Mail Kontenverwaltung auf mail.tbits.net Leitfaden für Kunden Inhaltsverzeichnis 1. Überblick über die

Mehr

Internet Praktikum im Grunstudium Formularwerte und Datenbanken Speichern, Lesen und Aufbereiten. Dr. Guido Rößling Dipl.-Ing.

Internet Praktikum im Grunstudium Formularwerte und Datenbanken Speichern, Lesen und Aufbereiten. Dr. Guido Rößling Dipl.-Ing. Internet Praktikum im Grunstudium Formularwerte und Datenbanken Speichern, Lesen und Aufbereiten Dr. Guido Rößling Dipl.-Ing. Andreas Hartl Aktueller Zustand Sie sollten schon in der Lage sein Formulare

Mehr

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer DB-Datenbanksysteme DB-13 043-SQL-DML 1 Mario Neugebauer Einführung Informationsmodellierung Relationales Datenbankmodell Datenbanksprache SQL Einführung Daten-Abfrage-Sprache - DQL Daten-Definitions-Sprache

Mehr

Dieter Staas Das Einsteigerseminar SQL

Dieter Staas Das Einsteigerseminar SQL 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Dieter Staas Das Einsteigerseminar SQL Vorwort 15 Einleitung 17 Lernen

Mehr

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis. SQL Lehr- und Forschungseinheit Datenbanken und Informationssysteme Ziele Grundlagen von SQL Beziehung zur relationalen Algebra SELECT, FROM, WHERE Joins ORDER BY Aggregatfunktionen Lehr- und Forschungseinheit

Mehr