Datenbanken... und alles was dazugehört. Aspekte des Themas Datenbanken Datenmaterial modellieren...
-
Upload
sigiswald-heimburger -
Category
Documents
-
view
129 -
download
1
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‘);