Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren...

Post on 05-Apr-2015

129 views 1 download

Transcript of Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren...

Datenbanken

... und alles was dazugehört

Aspekte des Themas Datenbanken

Datenmaterial

modellieren

tabellarisch strukturieren

Tabelle Tabelle

Zeilen Spalten Zeilen Spalten(Objekte) (Attribute)

Relationale DBimplementieren

Anforderungen

Nutzung

AuswertungSuchen

ÄndernLöschen

Verknüpfen

Erweitern

Sortieren

Datenbank-sprache SQLWeb-Programmierung

HTML+CSS+PHP

Daten-bank system

Physikal.Speichern

Objekt Objekt

Attribute Attribute

ER-Modell1 n

optimieren und normalisieren

Vermeidungvon Redundanzen

und Anomalien

Konsistenz(logisch korrekt)

Datenschutz(Sichten)

Zugangs-berechtigung

Mehrbenutzer-betrieb

Thema Datenbanken

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

Datenbanken verstehen• ist nicht einfach, weil

– Sie eine all-inclusive Lösung für verschiedene Probleme mit der Datenverwaltung sind

– Sie für sehr verschiedenen Zwecke benutzt werden können, auf verschiedene Arten

– Sie mit so vielen anderen Dingen zusammenhängen, besonders bei online Gebrauch

Definition

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

Die „strukturierten Daten“

• ... stellt man sich am besten als Regale oder Tabellen vor• In welcher Form die Daten tatsächlich gespeichert sind ist

unerheblich, da sie sowieso nur über die Schnittstelle (= mit dem Verwalter reden) zugänglich sind

LNR Name Einwohner Hauptstadt Kontinent

DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.34 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika… … … … …

Land

7

Schnittstelle SQL• SQL = Structured Query Language.

– Bezeichnet eine Sprache zur Kommunikation mit Datenbanken.– Ist international genormt und wird von vielen DBS verstanden.– Wird im Folgenden zur Formulierung von Abfragen eingesetzt.

• Syntax einer (einfachen) SQL-Abfrage:

SELECT [Spalten] FROM [Tabelle] WHERE [Bedingung] ORDER BY [Attribute];

• Die WHERE- und die ORDER BY-Klausel sind optional.

8

– SELECT Name, Einwohner, Kontinent FROM Land WHERE Einwohner > 10

Datenbankzugriff - Ein erstes Beispiel

Länder mit über 10 Mio. Einwohner

LNR Name Einwohner Hauptstadt Kontinent

DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.34 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika… … … … …

Land

Ergebnistabelle

Name Einwohner Kontinent

Deutschland 81.34 EuropaIndien 761.00 Asien… … …

Definition

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

Die „Verwaltung“ der Daten (DB + DBMS!)

Datenbank (DB)

Datenbank (DB)

Schnittstelle: Structured Query Language (SQL)

Datenbanksystem (DBS) Datenbanksystem (DBS)

Anwendungen

Datenbank Management System

(DBMS)

Datenbank Management System

(DBMS)

Die Fundbüro Analogie

FundstückeFundstücke

Schnittstelle???

Fundbüro Fundbüro

Kunden

VerwalterVerwalter

Definition

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

„viele Nutzer und Anwendungen“

Einzelbenutzersysteme(z.B. Access)

Mehrbenutzersysteme(z.B. in Unternehmen, Lager & Verkauf)

Verteilte DBS(z.B. Banken mit Filialen)

Multidatenbanksysteme(z.B. Buchungssysteme)

Client-Server DBS(z.B. Internetseiten)

Exkurs: Datenbanken im Internet

• Das Internet wird interaktiver: WEB 2.0• Inhalte (z.B. Text, Bilder, Daten,...) einer Seite

werden separat gespeichert, als Datensätze in einem DBS, und erst beim Aufruf der Seite dynamisch (meist per PHP) in ein HTML-Gerüst eingebaut

• Damit kann der Inhalt einer dynamischen Webseite vom Benutzer abhängig gemacht werden (Identität, Rechte, Verhalten, ...)

Benutzen Sie diese Elemente* um mithilfe eines Schaubilds zu erklären, wie ein Gästebuch (online) funktioniert

WWW-ServerWWW-Server

BrowserBrowser

Datenbank ServerDatenbank Server

HTML

PHP

mySQL

CSS

Anfrage

Verarbeitung

Auswertung

Darstellung Server

Client

* es müssen nicht alle Elemente benutzt werden, manche werden mehrfach gebraucht

POST/GET

Parameterübergabe

CodeübergabeFormulare

statische Webseitendynamische Webseiten

kann mySQL Anfragen beantworten und Daten dauerhaft speichern, kümmert sich um die Verwaltung der Daten

kann mySQL Anfragen beantworten und Daten dauerhaft speichern, kümmert sich um die Verwaltung der Daten

Meine Lösung

WWW-ServerWWW-Server

BrowserBrowser

Datenbank ServerDatenbank Server

ServerClient

weiss, wie man WWW-Server findet, versteht HTML (+ Formulare) & CSS, kümmert sich um die Darstellung, kann Parameter übergeben (POST/GET)

weiss, wie man WWW-Server findet, versteht HTML (+ Formulare) & CSS, kümmert sich um die Darstellung, kann Parameter übergeben (POST/GET)

BrowserBrowser

BrowserBrowser

WWW-ServerWWW-Server

WWW-ServerWWW-Server

ServerClient

weiss, wie man mit Datenbank Server spricht, kann Parameter auswerten und PHP verarbeiten, gibt HTML-Code an Browser weiter

weiss, wie man mit Datenbank Server spricht, kann Parameter auswerten und PHP verarbeiten, gibt HTML-Code an Browser weiter

statische Webseitendynamische Webseiten

HTML-Dateien, PHP mySQL

Forms (HTML)<html><body>

<form> <select>

<option>Paint</option> <option>Brushes</option> <option>Erasers</option>

</select> Quantity: <input type="text" /> <input type="submit" />

</form> </body></html>

dde

dde

dde

ddedde

dde

HTML PHP<html><body>

<form action="process.php" method="get"> <select name="item">

<option>Paint</option> <option>Brushes</option> <option>Erasers</option>

</select> Quantity: <input name="quantity" type="text" /> <input type="submit" />

</form> </body></html>

dde

dde

dde

ddedde

dde

http://www.mywebsite.ch/process.php?item=##&quantity=##" http://www.mywebsite.ch/process.php?item=##&quantity=##"

PHP SQL HTML<html><body>

<?php $quantity = $_GET['quantity']; $item = $_GET['item']; $result = mysql_query("SELECT price FROM goods WHERE

item=$item")$price = ...echo "You ordered ". $quantity . " " . $item . ".<br />"; echo "Total price: ". $quantity*$price.<br />";

?> </body></html>

Datenbank ServerDatenbank Server

die Datenbank ist speziell darauf ausgerichtet Daten zu speichern und zu verwalten

die Datenbank ist speziell darauf ausgerichtet Daten zu speichern und zu verwalten

Wo wohnen die Daten?

WWW-ServerWWW-Server

BrowserBrowser

ServerClient

HTML kann Daten enthalten, alle vom Browser dargestellten Daten müssen letztendlich in HTML eingebunden sein

HTML kann Daten enthalten, alle vom Browser dargestellten Daten müssen letztendlich in HTML eingebunden sein

BrowserBrowser

BrowserBrowser

WWW-ServerWWW-Server

WWW-ServerWWW-Server

ServerClient

PHP kann Daten enthaltenPHP kann auch Daten lokal lesen oder speichern, z.B. CSV, XML

PHP kann Daten enthaltenPHP kann auch Daten lokal lesen oder speichern, z.B. CSV, XML

statische Webseitendynamische Webseiten

Dateien, PHP mySQL

DBDB

DBSDBS

DBMSDBMS

Darstellung: statisch Verarbeitung: dynamisch Bereitstellung: persistent

Definition

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

... „kontrolliert zur Verfügung gestellt“Datenabstraktion (Data Abstraction)

• Die Sichten (view level):– In den Sichten werden Teilmengen

der Daten dargestellt. Die Sichten sind auf die Bedürfnisse/Rechte der Benutzer zugeschnitten

• Die logische/konzeptionelle Ebene (conceptual level):

– Auf dieser Ebene wird mittels eines Datenbankschemas festgelegt, welche Daten abgespeichert sind.

• Die physische Ebene (physical level):

– Auf dieser Ebene ist beschrieben, wie die Daten auf dem Sekundärspeicher abgelegt sind.

Wieder ein Schichtenmodell

SchnittstelleSchnittstelle

SchnittstelleSchnittstelle

Wozu braucht man eigentlich Datenbanken?

• Suchen Sie ein Beispiel (z.B. eine Website, eine Organisation, eine Anwendung, etc.), von dem Sie wissen (oder glauben), dass eine Datenbank benutzt wird.

• Notieren Sie ihre Vermutungen darüber, warum hier eine Datenbank eingesetzt wird

Wozu Datenbanken?

• Arbeitsblätter:– Schichten– Anforderungen

• Zusammenfassung:– Vorteile von DBS?– Nachteile von DBS?

Vorteile von Datenbanksystemen• Redundanz und Inkonsistenz vermeiden durch die zentrale Datenverwaltung• Dauerhafte Speicherung von großen Datenbeständen• Effiziente Verwaltung von großen Datenbeständen (Speicherplatz,

Zugriffsgeschwindigkeit) • Einheitliche Schnittstelle (Anfragesprache) für den Zugriff auf Daten• Unterschiedliche Daten können leicht verknüpft und extrahiert werden• Mehrere Benutzer oder Anwendungen können gleichzeitig mit Daten arbeiten• Integritätsverletzungen werden intern geregelt bzw. vermieden• Verschiedenen Benutzern/Anwendungen können verschiedene Zugriffsrechte

zugeordnet werden • Physische Datenunabhängigkeit, Anwendungen von Modifikationen an der

physischen Speicherstruktur nicht betroffen• Logische Datenunabhängigkeit, Änderungen an der logischen Datenstruktur

beeinflussen Anwendungen nicht• Ermöglicht zentrale Strategien gegen Soft- und Hardwareausfälle

Nachteile von Datenbanksystemen

• nur noch indirekter Zugriff auf Daten• zusätzliche Abstraktionsebene• zusätzlicher Aufwand (Datenbankserver

bereitstellen, extra Anfragesprache lernen)• zu grosse Datenbanken sind unpraktisch und

unübersichtlich• wenn es doch Probleme gibt, dann aber richtig

Wer benutzt ein DBS?und warum (nicht)?

Was für Daten werden in einem DBS verwaltet?

• Was ist überhaupt ein Datum?• Welche Datenformate werden unterstützt?• In welcher Form existieren die Daten in der Datenbank?

FundstückeFundstücke

Fundbüro Fundbüro

Kunden

VerwalterVerwalter

Wie speichert eine Datenbank Daten?

Wie speichert eine DB DatenMechanischer VorgängerMechanischer Vorgänger

Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12

Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12

Hüte

Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12

Bücher

Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12

Schirme

Finder: Hegi Roger

Brandweg 12

Nummer: 1445-4556

Gegenstand: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Seeweg 12Finder: Hegi Roger

Brandweg 12

Nummer: 14556

Art: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Brandweg 12

Wie speichert eine DB Daten

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Name: Kunz

Vorname: Andy

Adresse: Waldweg 12

9876 Zuchwil

Tel.: 145’78’99

Geb.: 15.September 1974

Brandweg 12

Nummer: 14555

Art: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Brandweg 12

Nummer: 14556

Art: Schlüssel

Farbe: -

Funddatum: 12.09.2000

Fundort: Bahnhof

9876 Zuchwil

Finder: Hegi Roger

Elemente einer Tabelle

Fundstücke

Nummer Art Farbe Funddatum Fundort Finder14555 Schirm Blau 08.13.2000 Bus Nr.12 Stalder Roger

Wichleren8779 Neuhausen

14556 Schlüssel - 09.12.2000 Bahnhof Hegi RogerBrandweg 129876 Zuchwil

14557  ...  ...  ...  ...  ...

Zeile, Datensatz, EntitätZeile, Datensatz, Entität

Attribute, EigenschaftenAttribute, Eigenschaften TabellennameTabellennameSchlüsselattribut, HauptschlüsselSchlüsselattribut, Hauptschlüssel

Eigenschaftswerte~ DomainEigenschaftswerte~ Domain

Tabelle, EntitätsmengeTabelle, Entitätsmenge

Relationsschema

Fundstücke{Nummer, Art, Farbe, Funddatum,Fundort, Finder}

Attribute, EigenschaftenAttribute, Eigenschaften TabellennameTabellennameSchlüsselattribut, HauptschlüsselSchlüsselattribut, Hauptschlüssel

Zeile, Datensatz, EntitätZeile, Datensatz, Entität EigenschaftswerteEigenschaftswerte Tabelle, EntitätsmengeTabelle, Entitätsmenge

Fundstücke

Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras?

Nummer: 14556

Art: Schlüssel

Farbe: -

Funddatum: 12.09.2007

Fundort: Bahnhof

Finder: Hegi RütliBrandweg 129876 Zuchwil

Definition einer TabelleZeile, Datensatz, EntitätZeile, Datensatz, Entität

Attribute, EigenschaftenAttribute, Eigenschaften TabellennameTabellennameSchlüsselattribut, HauptschlüsselSchlüsselattribut, Hauptschlüssel

EigenschaftswerteEigenschaftswerte Tabelle, EntitätsmengeTabelle, Entitätsmenge

Einschränkungen der Eigenschaftswerte

• Warum ist das wichtig?– technisch: Speicherplatz reservieren, etc.– logisch: Fehler vermeiden

Fundstücke

Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras?

Nummer: 14556 int ja ja auto incr.

Art: Schlüssel char nein ja

Farbe: - char nein nein

Funddatum: 12.09.2007 date nein nein auto?

Fundort: Bahnhof char nein nein

Finder: Hegi RütliBrandweg 129876 Zuchwil

char nein nein

Übungsaufgabe

• Sie wollen mithilfe eines DBS eine Anwendung zur Bibliotheksverwaltung erstellen. Definieren Sie eine Tabelle, in die alle wichtigen Eigenschaften der Bücher eingetragen werden können.

• Implementieren sie diese Tabelle in phpMyAdmin und tragen sie mindestens 5 Datensätze ein

Buch

Attribut Beispiel Typ? Schlüssel? Obligatorisch? Extras?

Probleme mit Tabellen

• Welche (potentiellen) Probleme sehen Sie mit der untenstehende Tabelle?

Fundstücke

Anzahl Art Farbe Funddatum Fundort Finder1 Schirm Blau 08.13.2000 Bus Nr.12 Roger Stalder

9876 Neuhausen

4 Schlüssel - 09.12.2000 Bahnhof Hegi RogerBrandweg 129876 Zuchwil

2 Schrim & Schal

bunt 21.05.2009 Hauptbahnhof Hegi RogerBrandweg 12a/79876 Zuckwil

Schon besser

FundstückeID Anzahl Art Farbe Funddatum Fundort Vornam

eNachname Adresse

17 1 Schirm Blau 08.13.2000 Bus Nr.12 Roger Stalder 9876 Neuhausen

18 4 Schlüssel - 09.12.2000 Bahnhof Hegi Roger Brandweg 129876 Zuchwil

19 1 Schrim bunt 21.05.2009 Hauptbahnhof Hegi Roger Brandweg 12a/79876 Zuckwil

20 1 Schal braun 21.05.2009 Hauptbahnhof Hegi Roger Brandweg 12a/79876 Zuckwil

• Aber was machen wir mit der Redundanz?

Relationale Datenbanken

FundstückeID Anzahl Art Farbe Funddatum Fundort FinderID

17 1 Schirm Blau 08.13.2000 Bus Nr.12 12

18 4 Schlüssel - 09.12.2000 Bahnhof 7

19 1 Schrim bunt 21.05.2009 Hauptbahnhof 7

20 1 Schal braun 21.05.2009 Hauptbahnhof 7

FinderID Vorname Nachname Strasse Hausnummer Zusatz PLZ Ort

12 Roger Stalder 9876 Neuhausen

7 Hegi Roger Brandweg 12 a/7 9876 Zuchwil

Fremdschlüssel, verweist auf den Hauptschlüssel einer anderen Tabelle

Fremdschlüssel, verweist auf den Hauptschlüssel einer anderen Tabelle

Fundstücke{ID, Anzahl, Art, Farbe, Funddatum, Fundort, ↑FinderID}

Finder{ID, Vorname, Nachname, Strasse, Hausnummer, Zusatz, PLZ, Ort}

SQL-Abfragen mit mehreren Tabellen

• R x S ist ein Karthesisches Produkt• zusammen mit einer Selektion wird ein Verbund (Join) daraus • sonst gibt es nur noch die Projektion (z.B. SELECT a,e)

– Achtung, identische Datensätze werden nur einmal zurückgegeben!!!!!• zusätzliche Selektionen können mit AND angefügt werden

Ra b c

1 2 3

4 5 6

Sd e

3 7

5 8

6 9

R x Sa b R.c S.d e

1 2 3 3 7

1 2 3 5 8

1 2 3 6 9

4 5 6 3 7

4 5 6 5 8

4 5 6 6 9

Schreibweise in mySQL: SELECT * FROM R,S WHERE R.c=S.d

AND e < 8

mySQL in Kürze:

• ein JOIN kann auch direkt erzeugt werden– JOIN ... ON ... vermeidet das Erstellen der grossen (Verbund-)Tabelle

• die Alternativen RIGHT JOIN und LEFT JOIN – ergeben auch dann eine Zeile, wenn das ON-Attribut auf der anderen Seite

leer (NULL) ist

Ra b c

1 2 3

4 5 6

Sd e

3 7

5 8

6 9

R x Sa b R.c S.d e

1 2 3 3 7

4 5 6 6 9

SELECT * FROM R JOIN S

ON R.c=R.s

mySQL in Kürze:

R x Sa b R.c S.d e

1 2 3 3 7

null null null 5 8

4 5 6 6 9

SELECT * FROM R RIGHT JOIN S

ON R.c=R.s

SQL-Abfragen mit mehreren Tabellen

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

KNR Name

EU EuropaAS AsienAF Afrika

Kontinent

LNR Name Einwohner Hauptstadt Kontinent

DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.34 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika

LNR Name … KNR

DK Dänemark … EUD Deutschland … EUIND Indien … ASRWA Rwanda … AF

Land

Schlüsselattribut aus Kontinent

LNR Name Einwohner Hauptstadt Kontinent

DK Dänemark 5.16 Kopenhagen EuropaD Deutschland 81.33 Berlin EuropaIND Indien 761.00 Delhi AsienRWA Rwanda 6.30 Kigali Afrika

Land

• Jeder Datensatz wird durch einen Schlüssel (Primärschlüssel) eindeutig identifiziert. Der Schlüssel– kann aus mehreren Attributen zusammengesetzt sein– ist minimal, d.h. es kann kein Attribut weggelassen werden– wird meist durch Unterstreichung gekennzeichnet.

• Um zusammengesetzte Primärschlüssel zu vermeiden wird oft ein zusätzliches, eindeutiges Schlüsselattribut hinzugefügt, z.B. eine Landeskennung oder ID

Schlüsselattribut

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

PKey DataPKey Data FKey

Master Detail

SQL – einfache Joins

• Müssen in SQL Daten aus mehreren Tabellen entnommen werden, so werden sog. „Joins“ gebildet.– Die Abarbeitung eines Joins in mehreren Schritten kann an

folgendem Beispiel veranschaulicht werden:• Es sollen alle Länder mit ihren Kontinenten ausgegeben werden,

die mehr als 10 Mio. Einwohner haben.

LNR Name Einwohner KNR

DK Dänemark 5.16 EUD Deutschland 81.34 EUIND Indien 761.00 ASRWA Rwanda 6.30 AF

Land

KNR Name

EU EuropaAS AsienAF Afrika

Kontinent

1. Cross-Join („jede Zeile mit jeder“)– SELECT * FROM Land, Kontinent

LNR Name Einwohner KNR KNR Name

DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …

LNR Name Einwohner KNR

DK Dänemark 5.16 EUD Deutschland 81.34 EUIND Indien 761.00 ASRWA Rwanda 6.30 AF

Land KNR Name

EU EuropaAS AsienAF Afrika

Kon

tinen

t

WHERE Land.KNR= Kontinent.KNR

LNR Name Einwohner KNR KNR Name

DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …

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

AND Land.Einwohner > 10

2. Einschränken auf „passende“ Datensätze (2).– Es sollen nur Länder mit > 10 Mio. Einwohner gezeigt werden.– Momentan würde auch „Dänemark“ ausgegeben werden.

Also muss eine weitere Bedingung erfüllt sein:– SELECT *

FROM Land, Kontinent WHERE Land.KNR = Kontinent.KNR

LNR Name Einwohner KNR KNR Name

DK Dänemark 5.16 EU EU EuropaDK Dänemark 5.16 EU AS AsienDK Dänemark 5.16 EU AF AfrikaD Deutschland 81.34 EU EU EuropaD Deutschland 81.34 EU AS AsienD Deutschland 81.34 EU AF AfrikaIND Indien 761.00 AS EU EuropaIND Indien 761.00 AS AS AsienIND Indien 761.00 AS AF Afrika… … … … …

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

Name Einwohner Name

Deutschland 81.34 EuropaIndien 761.00 Asien… … …

Alternative:...FROM Land JOIN Kontinent ON Land.KNR = Kontinent.KNR

LNR Name Einwohner KNR KNR Name

D Deutschland 81.34 EU EU EuropaIND Indien 761.00 AS AS Asien… … … … …

http://dev.mysql.com/doc/refman/5.5/en/select.html

Goldene Tabellenregeln

1. Es braucht IMMER einen eindeutigen Hauptschlüssel (am besten, Sie nennen ihn immer ID)

2. Nur ein Wert pro Attribut (richtiges Format)

3. Wertemenge einschränken (z.B. mit Eingabemaske) 4. Nur ein Datensatz pro Zeile5. Redundanz vermeiden

Datenbank Server (mySQL)Datenbank Server (mySQL)

XAMPP

ServerClient

Die HTML-Webseite phpMyAdmin kann lokal aufgerufen werden (über IP 127.0.0.1) und stellt ein Interface für die interaktive Datenbankabfrage zur Verfügung – kann auch benutzt werden, um SQL zu lernen

Die HTML-Webseite phpMyAdmin kann lokal aufgerufen werden (über IP 127.0.0.1) und stellt ein Interface für die interaktive Datenbankabfrage zur Verfügung – kann auch benutzt werden, um SQL zu lernen

BrowserBrowser

BrowserBrowser

(www-)Server(Apache)

inklusive PhP

(www-)Server(Apache)

inklusive PhP

ServerClient

Dateien, PHP mySQL

DBDB

DBSDBS

DBMSDBMS

Arbeitsauftrag• Wenden Sie die goldenen Regeln auf ihre

Bibliotheksverwaltung an• Erstellen Sie die daraus entstehenden Tabellen (>=2) in

phpMyAdmin und tragen Sie jeweils mindestens fünf Datensätze ein

• Benutzen Sie dann den Abfrageeditor, um per mySQL Teilmengen der Daten zu erfragen, z.B– alle Titel eines bestimmten Autors– alle Autoren, von denen nach 2000 ein Buch erschienen ist– ect...

• (schnelle) arbeiten Sie mit mindestens drei Tabellen – nehmen Sie beispielsweise an, dass es von einem Buch mehrere Exemplare geben kann

Aspekte des Themas Datenbanken

Datenmaterial

modellieren

tabellarisch strukturieren

Tabelle Tabelle

Zeilen Spalten Zeilen Spalten(Objekte) (Attribute)

Relationale DBimplementieren

Anforderungen

Nutzung

AuswertungSuchen

ÄndernLöschen

Verknüpfen

Erweitern

Sortieren

Datenbank-sprache SQLWeb-Programmierung

HTML+CSS+PHP

Daten-bank system

Physikal.Speichern

Objekt Objekt

Attribute Attribute

ER-Modell1 n

optimieren und normalisieren

Vermeidungvon Redundanzen

und Anomalien

Konsistenz(logisch korrekt)

Datenschutz(Sichten)

Zugangs-berechtigung

Mehrbenutzer-betrieb

Dat

enm

odel

lieru

ng

Dat

enm

odel

lieru

ng

Datenbankentwicklung überkorrekt:

Datenmodellierung

VerschiedeneNotationen fürER-Diagramme:

Eine Person kann nur an einem Ort geboren worden sein

Ein Ort kann für mehrere (0 – n) Personen der Geburtsort sein

Aufgabe: Erstellen sie ein

ER-Diagramm einer Schule

(s. AB_Datenmodellierung.doc)

Aufgabe: Erstellen sie ein

ER-Diagramm einer Schule

(s. AB_Datenmodellierung.doc)

Musterlösung Schulszenario

Datenbankentwicklung überkorrekt:

Auflösen von n:m-Beziehungen

Flug gebucht von Kunden m

Flug Teil von Buchung

1 n getätigt von Kunde

m 1

Buchungs-datumbezahlt

Nr Datum

Name

Nr Name

NrNr Datum

Auflösen von n:m-Beziehungen

Flug gebucht von Kunden m

Flug Teil von Buchung

1 n getätigt von Kunde

m 1

Buchungs-datumbezahlt

Nr Datum

Name

Nr Name

NrNr Datum

In Relationales Modell übersetzen:

• Flug{Fnr, Datum}• Buchung{Bnr, Fnr, Knr, Buchungsdatum, bezahlt}• Kunde{Knr, Name}

Flug Teil von Buchung

1 n getätigt von Kunde

m 1

Buchungs-datumbezahlt NameNrNr Datum

Und jetzt für das Schulszenario (genauer mit UML)Und jetzt für das Schulszenario (genauer mit UML)

Datenbankentwicklung überkorrekt:

Redundanz vermeiden• Gründe:

1. Speicherplatz sparen2. Vermeidung von Anomalien 3. Es ist gerade die Grundidee von Relationalen

Datenbanken, genau die richtige Art von Information durch die (z.B. mySQL-) Abfrage zusammenzusuchen

• Das schrittweise Eliminieren von (potentieller) Redundanz nennt man „normalisieren“, meist werden dabei viele kleine Tabellen aus wenigen grossen erzeugt

Welche Arten von Anomalien gibt es?

Was ist eine Änderungs-Anomalie? • Falls eine Änderung der Daten vorgenommen werden muss, muss

dies an mehreren Stellen in der Relation geschehen, da sonst die Konsistenz bedroht ist.

Was ist eine Einfüge-Anomalie? • Ein neuer Datensatz kann erst eingetragen werden, wenn alle X

Informationen vorliegen. Falls Nullwerte erlaubt sind, gibt es dann Probleme falls die fehlende Info zum Schlüssel gehört.

Was ist eine Lösch-Anomalie? • Wird eine Information aus der Relation entfernt, so gehen mehr

Informationen verloren, als gewollt war. Tritt oft auf wenn in einer Relation mehr als eine Entity vertreten ist!

Lieferant {ID, LName, LAdresse, Ware, Preis}

Anomalien konkretTabelle: Lieferant {ID, LName, LAdresse, Ware, Preis} Redundanz: Die Adresse wird für jede Ware, die ein Lieferanten liefert, wiederholt Anomalien möglich

1. Änderungs-Anomalie (Potentielle Inkonsistenz) Als Konsequenz der Redundanz kann man die Adresse eines Lieferanten in einem Datensatz verändern, sie aber in anderen Datensätzen unberührt lassen. Auf diese Weise bekommt man zwei verschiedene Adressen für denselben Lieferanten.

2. Einfüge-Anomalien Man kann keine Adresse für einen Lieferanten haben, wenn er nicht mindestens eine Ware liefert. Es ist möglich, in die Ware- und Preiskomponente NULL-Werte für diese Lieferanten einzugeben, dann müsste dieser Datensatz aber gelöscht werden, wenn eine Ware für diesen Lieferanten eingegeben wird.

• Lösch-Anomalien Invers zu Problem 2 kann es passieren, dass man alle Waren eines Lieferanten löscht, und dadurch auch seine Adresse verliert.

Die Lösung:

Verteilung auf zwei Tabellen/Relationsschemata:1. Lieferant {ID, LName, LAdresse}2. Ware {ID, Ware, Preis, LID}

Mit einer vorhergehenden Stufe der Datenmodellierung (ER-Diagramm) wäre dieses Problem vermutlich gar nicht aufgetreten, da klar sein sollte, dass Lieferant und Ware zwei unterschiedliche Entitäten sind!

Datenbankentwicklung überkorrekt:

Normalformen(s. datenbanktheorie.pdf, S.31-52)

• Erste Normalform (1NF):Alle Merkmalswerte sind atomar (keine Wiederholungsgruppen zugelassen).

• Zweite Normalform (2NF):Nichtschlüsselmerkmale sind voll vom Schlüssel abhängig.

• Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten.

• Boyce-Codd Normalform (BCNF): Nur Abhängigkeiten vom Schlüssel zugelassen.

• Vierte Normalform (4NF):Keine Mehrwertabhängigkeiten.

• Fünfte Normalform (5NF): Nur triviale Verbundabhängigkeit.

Name AbtNr Abteilung Projekt

Müller 5 EDV II (6, MySQL, 50%), (3, DV2010, 50%)

Schulze 3 Rechenzentrum (3, DV2010, 100%)

1. Normalform Eine Relation befindet sich in der ersten Normalform, wenn an allen Kreuzungspunkten von Zeilen und Spalten nur atomare Werte auftreten. Ein Datensatz muss durch den Primärschlüssel eindeutig identifizierbar sein.

1. Normalform Eine Relation befindet sich in der ersten Normalform, wenn an allen Kreuzungspunkten von Zeilen und Spalten nur atomare Werte auftreten. Ein Datensatz muss durch den Primärschlüssel eindeutig identifizierbar sein.

PersNr Name AbtNr Abteilung

123 Müller 5 EDV II

876 Schulze 3 Rechenzentrum

PersNr ProjNr Projekt Zeit

123 6 MySQL 50%

123 3 DV2010 50%

876 3 DV2010 100%

Das Attribut Projekt ist nicht atomar, da es Mehrfachattribut ist. Mehrfachattribute werden in einer eigenen Tabelle ausgelagert. Außerdem fehlt ein Primärschlüssel. Besser:

2. NormalformEine Relation befindet sich in der 2. Normalform, wenn sie sich in der ersten befindet und jedes Nicht-Schlüssel-Attribut funktional abhängig ist vom Gesamtschlüssel, nicht dagegen von Schlüsselteilen.

2. NormalformEine Relation befindet sich in der 2. Normalform, wenn sie sich in der ersten befindet und jedes Nicht-Schlüssel-Attribut funktional abhängig ist vom Gesamtschlüssel, nicht dagegen von Schlüsselteilen.

ProjNr Projekt

3 MySQL

3 DV2010

PersNr ProjNr Zeit

123 6 50%

123 3 100%

876 3 50%

Das Attribut Projekt ist funktional abhängig vom Attribut ProjNr, nicht jedoch von PersNr.Das Attribut Zeit ist dagegen von gesamten Primärschlüssel (PersNr, ProjNr) funktional abhängig.Also nochmal aufteilen:

PersNr ProjNr Projekt Zeit

123 6 MySQL 50%

123 3 DV2010 50%

876 3 DV2010 100%

3. NormalformEine Relation befindet sich in der 3. Normalform, wenn sie sich in der 2. Normalform befindet und keine funktionalen Abhängigkeiten zwischen Nicht-Schlüssel-Attributen existieren. Anders ausgedrückt: Die Relation darf keine transitiven Abhängigkeiten aufweisen.

3. NormalformEine Relation befindet sich in der 3. Normalform, wenn sie sich in der 2. Normalform befindet und keine funktionalen Abhängigkeiten zwischen Nicht-Schlüssel-Attributen existieren. Anders ausgedrückt: Die Relation darf keine transitiven Abhängigkeiten aufweisen.

Das Attribut Abteilung ist nur indirekt vom Primärschlüssel PersNr abhängig. Vielmehr ist das Attribut Abteilung von der AbtNr abhängig. Also auch hier Aufspaltung in zwei Tabellen:

PersNr Name AbtNr Abteilung

123 Müller 5 EDV II

876 Schulze 3 Rechenzentrum

PersNr Name AbtNr

123 Müller 5

876 Schulze 3

AbtNr Abteilung

5 EDV II

3 Rechenzentrum

Zusammengefasst:

Goldene Tabellenregeln

1. Es braucht IMMER einen eindeutigen Hauptschlüssel (am besten, Sie nennen ihn immer ID)

2. Je Datensatz nur ein Wert pro Attribut3. Wertemenge einschränken (z.B. mit Eingabemaske, Domain) 4. Nur ein Datensatz pro Zeile5. Redundanz vermeiden

wenn Sie die ersten 4 Regeln ernst

nehmen, dann haben Sie mindestens

eine 2.NF, die fünfte Regel konsequent

befolgen ergibt dann BCNF

(oder liege ich falsch?s. datenbanktheorie.pdf, S. 31-52)

Aspekte des Themas Datenbanken

Datenmaterial

modellieren

tabellarisch strukturieren

Tabelle Tabelle

Zeilen Spalten Zeilen Spalten(Objekte) (Attribute)

Relationale DBimplementieren

Anforderungen

Nutzung

AuswertungSuchen

ÄndernLöschen

Verknüpfen

Erweitern

Sortieren

Datenbank-sprache mySQL

Web-ProgrammierungHTML+CSS+PHP

Datenbank system

Physikal.Speichern

Objekt Objekt

Attribute Attribute

ER-Modell1 n

optimieren und normalisieren

Vermeidungvon Redundanzen

und Anomalien

Konsistenz(logisch korrekt)

Datenschutz(Sichten)

Zugangs-berechtigung

Mehrbenutzer-betrieb

Datenbankentwicklung überkorrekt:

Wie führt man eine Normalisierung durch? (Was ist zu beachten?)

• Normalisierung = Sicherstellen, dass die Tabellen keine Redundanzen enthalten (formale Definition, Algebra)

• Erste Normalform (1NF):Alle Merkmalswerte sind atomar

• Zweite Normalform (2NF):Nichtschlüsselmerkmale sind voll vom Schlüssel abhängig.

• Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten.

• Boyce-Codd Normalform (BCNF): Nur direkte Abhängigkeiten vom Schlüssel zugelassen.

• Vierte Normalform (4NF):Keine Mehrwertabhängigkeiten.

• Fünfte Normalform (5NF): Nur triviale Verbundabhängigkeit.

Wie führt man eine Normalisierung durch? (Was ist zu beachten?)

mitarbeiter

ID Name Gehaltsklasse Gehalt

1 Müller GK13a 87000

2 Meier GK11b 65000

transitive Abhängigkeit,also auf mehrer Tabellen Auflösen

• Dritte Normalform (3NF): Es bestehen keine transitiven Abhängigkeiten.

Flug gebucht von Kunden m

Nr Datum Nr Name

Die beiden wichtigsten Fälle, in denen die 3. Normalform verletzt ist:

n:m Beziehung, also auf mehrer Tabellen Auflösen

Wie fügt man Daten in eine DB an einen bestimmten Ort ein (PHP query) ?

• In der Probe wird es nur um das Auslesen (SELECT...) und Aggregieren (COUNT, MEAN, SUM...) von Daten gehen!

INSERT INTO tbl_name () VALUES();

z.B.: INSERT INTO tabelleA VALUES(1,2,‘drei‘); INSERT INTO tabelleA (col1,col3) VALUES(1,‘drei‘);