View
223
Download
0
Category
Preview:
Citation preview
Inhalt
II. Dynamische Webseiten, Web ProgrammierungClient seitige Programmierung (Applets, JavaScript)Serverseitige Programmierung (CGI, PHP)Web2.0: Ajax, Mashups, RSS
III. DatenbankenAnforderungen, ArchitekturSystematischer Entwurf: Entity Relationship ModelleNormalformenStructured Query Language SQL
I. XMLUnterschied zu HTMLÜbersetzung in andere Formate: XSL, XSLT
XML (Extensible Markup Language)
Ziel von XML: Trennung von Inhalt und Layout.
HTML beschreibt sowohl → Inhalt (Text) als auch → grafische Darstellung (Layout)
Ausgabe von HTML auf Print Medien (Seitenumbruch, Hyperlinks)
Einbinden einer HTML Datei in eine andere (Stilbruch)
Anzeigen einer HTML Seite auf dem Handy (Platzproblem)
Automatische Verarbeitung von HTML (Suchmaschinen)
Probleme:
XML (Extensible Markup Language)
InhaltDer eigentliche Text
Struktur (Metadaten)
Annotation des Textes, z.B. der folgende Text ist eine Überschrift oder die Adresse einer Person (Tags).
LayoutSchriftart, Schriftgröße, Zeilenumbrüche, Farbe, Position des Textes, usw.
XML
Heute: XML als Standard Format für alle möglichen Dokumente!(SVG, VRML, Open Document Format, Datenbanken, …)
XML (Extensible Markup Language)
<? xml version="1.0" encoding="UTF‐8" ?>
<teilnehmerliste>
<student> <vorname> Volker </vorname> <nachname> Stahl </nachname>
</student>
<student> <vorname> Dieter </vorname> <nachname> Maier </nachname>
</student>
</teilnehmerliste>
Unterschied zu HTML:
Beliebige Tags.Kein Layout festgelegt.Strenge Baumstruktur.
→ beispiel.xml
<teilnehmerliste>
<student> <student>
<vorname> <nachname> <vorname> <nachname>
Volker Stahl Dieter Maier
XML Baum
Daten
Meta Daten
<? xml version="1.0" encoding="UTF‐8" ?>
<teilnehmerliste>
<student> <vorname> Volker </vorname> <nachname> Stahl </nachname>
</student>
<student> <vorname> Dieter </vorname> <nachname> Maier </nachname>
</student>
</teilnehmerliste>
XSL (Extensible Stylesheet Language)
Idee: Übersetzung von XML nach HTML
XSL Dokument gibt an, wie XML Tags in HTML Tags übersetzt werden(XSL Transformationen)
Ziel: Layout zu XML Dokument hinzufügen.
XSLT Prozessor ist das Programm, dass die Übersetzung durchführt
XML Dokument(.xml)
XSL Dokumentmit Transformationen
(.xsl)
XSLT Prozessor HTML Dokument(.html)
XSL (Extensible Stylesheet Language)
XSL Dokument gibt an, wie XML nach XSL‐FO übersetzt wird(XSL Transformationen)
Ziel: PDF Dokument aus XML erzeugen.
XSL‐FO Prozessor ist das Programm, dass die Übersetzung von XSL‐FO nach PDF durchführt
XML Dokument(.xml)
XSL Dokument(.xsl)
XSLT Prozessor XSL‐FO Dokument(.xml)
XSL‐FO Prozessor
PDF Dokument(.pdf)
<? xml version="1.0" encoding="UTF‐8" ?> <?xml‐stylesheet href="teilnehmer.xsl"
type="text/xsl" ?>
<teilnehmerliste>
<student> <vorname> Volker </vorname> <nachname> Stahl </nachname>
</student>
<student> <vorname> Dieter </vorname> <nachname> Maier </nachname>
</student>
</teilnehmerliste>
<?xml version="1.0" encoding="UTF‐8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" encoding="UTF‐8"/>
<xsl:template match="teilnehmerliste"><html><body><h1>Liste der Teilnehmer</h1><ul><xsl:apply‐templates></xsl:apply‐templates>
</ul></body>
</html></xsl:template>
<xsl:template match="student"><li><xsl:value‐of select="nachname"/> , <xsl:value‐of select="vorname"/>
</li></xsl:template>
</xsl:stylesheet>
teilnehmer.xml teilnehmer.xsl
→ Ergebnis der XSL Transformation
Dynamische Webseiten
google, amazon:
interaktive/animierte Webseiten:
→ Zahlensysteme
Webseite mit Suchergebnissen wird erst dannauf dem Server erzeugt wenn ein Suchbegriff vorliegt.
Programme, die in einer Webseite eingebettet sind,laufen auf dem Client ab.
„ServerseitigeProgrammierung“
„ClientseitigeProgrammierung“
→ Feder‐Masse System
Dynamische WebseitenServerseitige Programmierung
Client Servergoogle.de, amazon.de
Anfrage (URL+Suchbegriff)
Bearbeitet Anfrage undgeneriert HTML Seite
Antwort (HTML)
Programm wird auf dem Server ausgeführt!CGI, PHP, Java Servlets, Java Server Pages, ASP…
Client empfängt rein statische HTML Dokumente
Dynamische WebseitenClientseitige Programmierung
Client Server
Anfrage (URL)
Antwort
Programm wird auf dem Client ausgeführt!JavaScript, Applets
Server verschickt HTML Dokument und Programm.
HTML + Programm
Führt Programm aus
Applets
→ Beispiel.
Idee: Web Server schickt übersetztes Java Programm (Byte Code) an Client.Java Programm wird vom Browser ausgeführt.
<html><body>
<appletcode="AppletDemo.class" width="720" height="550" >
</applet>
</body></html>
Dateinamen des Java Programmsauf dem Server
Problem ?
Vorteil: Komplexe Programme können ohne Installationsaufwandheruntergeladen und im Browser ausgeführt werden.
Applets
Problem: Sicherheitsrisiko!Der Web Server könnte dem Client ein Programm schicken,das Schaden anrichtet, z.B. die Festplatte des Clients löscht!
Lösung: Einschränkungen für Applets („Sandbox“)
Zugriffe auf das Dateisystem (lesen, schreiben, löschen)Netzwerkverbindungen (außer zum Server des Applets)Programme aufrufenSystemeigenschaften ändernusw…
Mehr Rechte für Applets mit digitaler Unterschrift
JavaScriptIdee: Im HTML Code eingebettete Befehle, die beim Client ausgeführt werden.
<html><head>
<script type="text/javascript">
function dialog(){var nutzer = prompt("Geben Sie Ihren Namen ein! ", "");alert("Hallo " + nutzer);
}
</script>
</head>
<body>
Beispiel mit JavaScript:<input type="button" value="Hier klicken!" onClick="dialog()">
</body></html>
→ Beispiel
JavaScript
Automatische Weiterleitung
Cookies
Popup Fenster
Textfelder verarbeiten
Tastatur und Maus Events verarbeiten
Aktuelles Datum und Uhrzeit
Animierte Webseiten
Anwendungsbeispiele
Document Object Model (DOM)
Idee: HTML Dokument kann als Baum Dargestellt werden (vgl. XML)
<html>
<head> <body>
<h3>
„DOM Beispiel“
<ul>
<li>
„Punkt 1“
<li>
„Punkt 2“
<li>
„Punkt 3“
→ Beispiel1
JavaScript Funktionen um die Knoten dieses Baums zu manipulieren!
→ Beispiel2
Dynamische WebseitenServerseitige Programmierung
Client Web Server
Anfrage (URL)
HTML Dokumentmit Formular
→ Beispiel
URL eines Programmsund Formular Daten
Programm empfängt Formular Datenund erzeugt HTML Seite
Erzeugtes HTML Dokument
Dynamische Webseiten
→ Beispiel
<html><body>
<form action="http://mitarbeiter.hs‐heilbronn.de/~vstahl/informatik1/CGI/form.pl" method="get">
<p> Vorname: <p> <input type="text" name="vorname" size=30 />
<p> Nachname:<p> <input type="text" name="nachname" size=30 />
<p> <input type="submit" value="Abschicken" /></form>
</body></html>
HTML Seite mit Formular
Serverseitige Programmierung(Common Gateway Interface)
Dynamische Webseiten
→ Beispiel #!/usr/local/bin/perl
print "Content‐type:text/html\n\n";print "<html><body>\n";
print "Folgende Werte wurden an den Server geschickt:\n";
print "<ul>\n";
@values = split(/&/, $ENV{'QUERY_STRING'});foreach $i (@values) {($varname, $varvalue) = split(/=/, $i);print "<li>Wert von $varname ist $varvalue\n";
}
print "</ul>\n";print "</body></html>\n";
Perl Program.Steht auf mitarbeiter.hs‐heilbronn.de unter ~vstahl/informatik1/CGI/form.plWird vom Web Server ausgeführt.HTML Output wird an den Client zurückgeschickt.
Serverseitige Programmierung mit CGI
Dynamische WebseitenServerseitige Programmierung mit PHP
Idee: Ähnlich wie bei JavaScript.HTML Seite mit eingebetteten Befehlen, die aber auf dem Web Server ausgeführt werden!
<html><body>
Folgende Werte wurden an den Server geschickt:<ul>
<?php
$varnamen = array_keys($_GET);
foreach($varnamen as $varname){echo "<li> Wert von $varname ist $_GET[$varname]";}
?></ul>
</body></html>
→ Beispiel
Web 2.0
Webseiten verhalten sich wie Desktop Programme (google docs)Neues Geschäftsmodell: Software ist Service, nicht Produkt
Dynamische Informationsströme (RSS)
Kooperierende Web Services, z.B. housingmaps.com + google maps
Geräteunabhängigkeit, Mobilität
User Generated Content (Blogs, Wikipedia, Amazon, Flickr, ebay …)
Communities
Gezielte Werbung (AdWords, AdSense)
→ Vision
Aktuelle Trends:
Web 2.0
Webseiten verhalten sich wie Desktop Programme (Rich User Interfaces)
Google Docs (Text und Tabellen)iGoogle
Vorteil:Keine Installation von Software oder UpdatesDatenhaltung auf dem Webserver, Zugriff von überall, Backups
Nachteil:Netzverbindung erforderlichDatensicherheit
Ziel:
Server und Client sind gleichzeitig aktiv.
Während der Benutzer am Client Rechner arbeitet,lädt dieser „im Hintergrund“ schon neue Daten nach.
Server schickt keine kompletten Webseiten sondern nur die „neuen“ Teile.
Bisher: Client Web ServerURL
(mit Formular Daten)
HTML Dokument(mit JavaScript Programm)
Server SideScripting
Client SideScripting
Warten!
Idee:
Client SideScripting
Ajax(Asynchronous JavaScript and XML)
Ajax
JavaScript Funktion schickt HTTP Anfrage an Server.Wenn der Server Daten zurückschickt, werden diese von einerJavaScript Funktion empfangen und im Browser angezeigt.
Daten können vom Server nachgeladen werden während der Benutzer die Seite im Browser anschaut/bearbeitet (asynchron).
Während der Benutzer den Kartenausschnitt betrachtet/verschiebtwerden neue Daten vom Server nachgeladen.
Name für ein Konzept, nicht für ein System.Steht oft für JavaScript Funktionen, die die Kommunikation mit dem Server übernehmen.
Idee:
Vorteil:
→ Beispiel Google Maps:
Ajax:
Ajax
Browseroberfläche
Ajax (JavaScript Funktionen)
Auslöser:BenutzerEvent
Web ServerCGI / PHP
HTTP
Auslöser:Server Antwort
JavaScriptFunktionsaufrufe
Anfrage(URL + Daten)
Antwort (XML, HTML,…)
Client
Server
Mashups
Idee: Teile von bestehenden Webseiten kopierenund in eigene Seite einbauen.
<iframe width="500" height="400" src="URL der kopierten Seite">
</iframe>
Komplette Webseiten einbinden (URL).
HTML und JavaScript Programme per copy&paste in eigene Webseite einbinden (Google Maps API).
Aufruf von Programmen über HTTP, die auf dem Webserver verarbeitet werden (Flickr API, YouTube API).
Mashups
Ansätze:
Analog zum Abonnieren einer Zeitung.Client erhält automatisch Hinweise auf aktuelle Nachrichten.
RSS (Really Simple Syndication)
Ziel:
Client
Web Server
news.google.de/
de.news.yahoo.com/
www.tagesschau.de/
veröffentlicht „RSS Feed“:Kurze XML Datei mit Links auf aktuelle Nachrichten.Standardisierte XML Tags.
RSS (Really Simple Syndication)
Technische Realisierung:
lädt automatisch RSS Feed vom Server.Anzeige z.B. in Browser Bookmarks oder speziellem RSS Reader.
Optional: RSS Reader, die alle paar Minuten nach Updates im RSS Feedsuchen und den Benutzer aktiv informieren (z.B. per mail).
Web Server
Client
<?xml version="1.0" encoding="ISO‐8859‐1" ?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <title>tagesschau.de ‐ Die Nachrichten der ARD</title> <link>http://www.tagesschau.de</link> <description>tagesschau.de</description> <language>de</language>
<item> <title>Hessen: Jamaika‐Koalition nicht mehr ausgeschlossen</title> <link>http://www.tagesschau.de/inland/jamaikakoalition2.html</link> <pubDate>Sat, 22 Mar 2008 12:38:31 +0100</pubDate> <description>Der Chef der hessischen Grünen…</description>
</item>
<item> …
</item>
</channel> </rss>
Beispiel von www.tagesschau.de
RSS (Really Simple Syndication)
RSS (Really Simple Syndication)
Syndication:
Web Server
Web Server
news.google.de/
de.news.yahoo.com/
www.tagesschau.de/
Client
Client
RSS Feed
Sammelt Feeds von vielen ServernFiltert NachrichtenErstellt neues Feed
RSS Feed
GrundbegriffeAnforderungenArchitektur (Extern, Logisch, Intern)DB Modell, DB Schema, DB Ausprägung
Datenmodellierung und EntwurfEntity Relationship Modelle
NormalformenZiel: Vermeidung von Redundanz
Datenbanken
Structured Query Language (SQL)
Anforderungen an ein Datenbanksystem
Datenintegrität
Unversehrtheit von Daten
Recovery
Mechanismen, die formale Korrektheit, Konsistenz und Vollständigkeit von Daten garantieren.
Schutz gegen versehentliches Ändern oder Löschen
Kein Datenverlust nach Systemabsturz
Keine RedundanzInformationen nicht doppelt speichern, sonst Konsistenzprobleme!
EffizienzSchneller Zugriff durch effiziente Suchalgorithmen und Datenstrukturen (z.B. Bäume)
MehrbenutzerbetriebMehrere Benutzer können gleichzeitig Daten lesen/verändern
DatenschutzFlexible Zugriffsberechtigungen für z.B. Adminstrator, Sachbearbeiter, Kunde
Datenunabhängigkeit / ProgrammanbindungEinfache Zugriffsoperationen für Programme, unabhängig von Daten.
Auswertungsmöglichkeiten, Statistiken
Transaktion
Folge von logisch zusammenhängenden Operationenauf einer Datenbank
z.B. Ändern einer Adresse bedeutetÄndern von Straße, PLZ, Ort und Land
Atomar: Entweder wird die Transaktion ganz ausgeführtoder gar nicht. Vermeidung von Inkonsistenz!
Architektur
Physische Ebene (interne Sicht)Speicherung der DatenEffiziente Datenstrukturen (Bäume)
Logische Ebene (konzeptionelle Sicht)
Datenmodell (relational / objektorientiert)Datenbank Schema
Externe Ebene (externe Sicht)AnwendungsprogrammeBenutzerschnittstelle
(z.B. Web Frontend, Access)
(SQL)
Relationales Datenmodell
Idee: Daten in Tabellen ablegen.Datenbank ist Menge von Tabellen.
Name Straße OrtHausnummer
Volker Stahl Hauffstraße 69 Heilbronn
Rolf Müller Oststraße 12 München
Dieter Lang Mühlweg 4 Hamburg
Zusammenhang zwischen Tabellen und Relationen:
Tabelle Relation
Spalte Attribut
Zeile Tupel, z.B. (Volker Stahl, Hauffstraße, 69, Heilbronn)≈≈≈
Vorteil:Solides theoretisches Fundament für Relationen aus der Mathematik.Optimierung, Korrektheitsbeweise möglich!
Datenbankschema einer relationalen Datenbank
Namen der Tabellen
Attribute (Spalten) der Tabellen
Beziehungen zwischen Tabellen
Einschränkungen, Integritätsbedingungen
Datenbankausprägung
Momentaner Inhalt (Daten) einer Datenbank.
⇒Wird beim Entwurf einer Datenbank festgelegt, Änderungen danach selten.
⇒ Ändert sich wenn ein Datensatz geändert wird, d.h. ständig im laufenden Betrieb.
Informationen
Objekte (Entitätstypen), z.B. Personen
Datenbankschema (Tabellen)
Objekte haben Eigenschaften (Attribute), z.B. Namen
Objekte stehen in Beziehung zueinander (Relationen), z.B. Kind von
Bestimmung eines „guten“ Datenbankschemas aus gegebenen Informationen
EntityRelationship
Modell
Ziel:
Systematische Vorgehensweise!
Beispiel Hochschulverwaltung
Entitätstypen
Beziehungen
liest
Professor VorlesungStudent
besucht
ER Modell
besuchtStudent Vorlesung
liestProfessor Vorlesung
Genauere Modellierung
besuchtStudent Vorlesung
liestProfessor Vorlesung
ER Modell
Ein Professor liest mehrere VorlesungenEine Vorlesung wird von genau einem Professor gelesen
Ein Student besucht mehrere VorlesungenEine Vorlesung wird von mehreren Studenten besucht
1:N
N:M
N1
Ein Professor hält mehrere Vorlesungen
Eine Vorlesung wird vongenau einem Professor gelesen
M
Ein Student besuchtmehrere Vorlesungen
N
Eine Vorlesung wird vonmehreren Studenten besucht
Erweiterte Notation
besuchtStudent Vorlesung
liestProfessor Vorlesung1..*1..1
Ein Professor hält mindestens eine Vorlesungen
Eine Vorlesung wird vongenau einem Professor gelesen
0..8
Ein Student besuchthöchstens 8 Vorlesungen
5..*
Eine Vorlesung wird vonmindestens 5 Studenten besucht
Attribute:Eigenschaften von Entitäten
MatrikelnummerNameVornameStudiengang
KürzelTitelSWS
Entitätstyp Attribute
Schlüssel:Minimale Menge von Attributen, die eine Entität eindeutig identifizieren
Student
Vorlesung
Primärschlüssel:Schlüssel, der zur Identifizierung einer Identität verwendet wird.Im allgemeinen ein einzelnes Attribut.Wird unterstrichen dargestellt.
ISBNAutorTitelVerlagAuflageDatum
Entitätstyp Attribute
Buch
Schlüsselkandidaten
ISBN
Autor, Titel, Datum
Autor, Titel, Verlag, Auflage
zusammengesetzteSchlüssel
KFZ NrTypFarbe
VersicherungsNrKFZ NrDatum
Entitätstyp Attribute
Fremdschlüssel:Attribut, das in einer anderen Entität alsPrimärschlüssel verwendet wird.
Auto
Versicherungs‐vertrag Fremdschlüssel
Zweck: Prüfung der referenziellen Integrität!Zu jedem Vertrag muss ein eindeutiges Auto existieren.Automatische Fehlermeldung wenn ein Auto gelöscht wird, der Vertrag aber weiter besteht.
Entity Relationship Modell ⇒ Tabellen
Zu jedem Entitätstyp eine Tabelle
MatNrNameStudiengang
Student
Student
MatNr Name Studiengang
Zu jeder Relation eine Tabelle
besuchtStudent Vorlesung besucht
MatNr Kürzel
Primärschlüssel derbeteiligten Entitäten
Entitäten
Attribute
Schlüssel in einer Tabelle
… ist eine Spalte (Attribut)… identifiziert die Entität (Zeile) eindeutig
⇒ zwei Zeilen in der Tabelle dürfen in dieser Spalte nie den selben Wert haben.
… Schlüssel …
x
x
darf nicht sein!
⇒ kennt man den Wert des Schlüssels, kann man die Zeile (Entität) eindeutig bestimmen
Normalformen von Datenbankschemata
Ziel:Einfachere Pflege von Daten.Vermeidung von Redundanz.
Grund:Wenn Information redundant (mehrfach) gespeichert ist,entsteht Inkonsistenz sobald nur an einer StelleÄnderungen durchgeführt werden!
Erste Normalform
Name Betriebssystem Netzwerkkarte Netzwerkkarte
PC1
www
Windows
Linux
3COM0x3acf21ec0f92
3COM0x2b7931dd284b
Intel0xb0448607f37e
Rechner
Erste Normalform
Jedes Attribut ist eine atomare (nicht zerlegbare) Dateneinheit.Jedes Attribut darf in einer Relation (Tabelle) nur einmal vorkommen.Es gibt einen Primärschlüssel (folglich keine identischen Zeilen).
Name Betriebssystem Netzwerkkarte Netzwerkkarte
PC1
www
Windows
Linux
3COM0x3acf21ec0f92
3COM0x2b7931dd284b
Intel0xb0448607f37e
Rechner
Erste Normalform
Erste Normalform
Name Betriebssystem Netzwerkkarte Netzwerkkarte
PC1
www
Windows
Linux
3COM0x3acf21ec0f92
3COM0x2b7931dd284b
Intel0xb0448607f37e
Attribut Netzwerkkarte nicht atomar (Hersteller und MAC)!⇒ Umständlich wenn nach einer MAC Adresse gesucht wird.
Rechner
Name ist nicht eindeutig, daher nicht Primärschlüssel!⇒ Wie soll nach einem bestimmten Rechner gesucht werden?
Attribut Netzwerkkarte kommt mehrfach vor!⇒ Umständliche Suche nach allen Netzwerkkarten.⇒ Problem wenn ein Rechner drei Netzwerkkarten hat.
Erste Normalform
MAC Hersteller
0x3acf21ec0f92
0x2b7931dd284b
3COM
3COM
0xb0448607f37e Intel
Netzwerkkarte
MAC Inventarnummer
0x3acf21ec0f92
0x2b7931dd284b
349857
349857
0xb0448607f37e 845235
eingebaut
Name Betriebssystem
PC1
www
Windows
Linux
Inventarnummer
349857
845235
Rechner
eingebautNetzwerkkarte Rechner0..* 1..1
Zweite Normalform
Land
Deutschland
Japan
Firma
IBM
IBM
Microsoft Deutschland
StandortFirma Land0..* 1..*
Standort
Zusammengesetzter Primärschlüssel (Firma,Land)
Währung
D‐Mark
Yen
D‐Mark
Zweite Normalform
Land Währung
Deutschland
Japan
D‐Mark
Yen
Firma
IBM
IBM
Microsoft Deutschland D‐Mark
EinfügeanomalieNeues Land mit Währung kann erst dann eingefügt werden wennes dort mindestens eine Niederlassung gibt, z.B. England / Pfund.
LöschanomalieWird die letzte Firma in einem Land gelöscht, geht dieInformation über die Währung in diesem Land verloren.
ÄnderungsanomalieÄndert sich die Währung in einem Land (z.B. Euro), dann müssenviele Zeilen geändert werden, Gefahr von Inkonsistenz.
Redundanz:Währung in Deutschlanddoppelt gespeichert!
Standort
Zweite Normalform
Land Währung
Deutschland
Japan
D‐Mark
Yen
Firma
IBM
IBM
Microsoft Deutschland D‐Mark
GrundZusammengesetzter Primärschlüssel (Firma,Land).
Die Währung ist bereits dann eindeutig festgelegt, wenn mannur einen Teil des Primärschlüssels (Land) kennt.
Standort
In jeder Zeile mit Land=Deutschland wird Währung=D‐Mark wiederholt (Redundanz)
Währung hängt funktional von Land ab
Zweite Normalform
Land Währung
Deutschland
Japan
D‐Mark
Yen
Firma
IBM
IBM
Microsoft Deutschland D‐Mark
Standort
Merkregel α→β:Ist der Wert von α bekannt, dann ist β bereits eindeutig festgelegt.β = f(α), d.h. funktionaler Zusammenhang.
Attribut β hängt funktional von Attributen α ab (α→β) bedeutet:Sind die α‐Werte in zwei Zeilen gleich, dann müssen in diesen Zeilen auch die β‐Werte gleich sein.
Zweite Normalform
Land Währung
Deutschland
Japan
D‐Mark
Yen
Firma
IBM
IBM
Microsoft Deutschland D‐Mark
Standort
Land →Währung?Ja: Kennt man das Land, dann ist die Währung bereits eindeutig festgelegt.
Währung → Land?Nein: z.B. die Währung Euro existiert in mehreren Ländern.
Firma →Währung?Nein: z.B. IBM benutzt sowohl D‐Mark als auch Yen.
(Firma,Land) →Währung?Ja: Kennt man Firma und Land, ist Währung eindeutig festgelegt.
Zweite Normalform
Land Währung
Deutschland
Japan
D‐Mark
Yen
Firma
IBM
IBM
Microsoft Deutschland D‐Mark
Zweite Normalform
Erste Normalform erfüllt.
Es gibt kein Attribut, das nicht zum Primärschlüssel gehörtund funktional von einem Teil des Primärschlüssels abhängt(Bei nicht zusammengesetztem Primärschlüssel immer erfüllt!)
Standort
Zweite Normalform
Land
Deutschland
New York
Firma
IBM
IBM
Microsoft Deutschland
Land Währung
Deutschland
New York
D‐Mark
Dollar
Standort Währung
Keine Anomalien mehr!
Einfügeanomalie: England/Pfund ohne Niederlassung möglich!
Löschanomalie: Nach Löschen von IBM/Japan bleibt Währung Yen erhalten!
Änderungsanomalie: Währungsumstellung in Deutschland auf Euro nur an einer Stelle!
Boyce‐Codd Normalform
Land Währung
Deutschland
USA
Euro
Dollar
Währung
Frankreich Euro
Goldpreis
513,47
910,25
513,47
Boyce‐Codd Normalform
Land Währung
Deutschland
USA
Euro
Dollar
Währung
Zweite Normalform erfüllt, trotzdem gleiche Anomalien!
Goldpreis
513,47
910,25
Frankreich Euro 513,47
Problem
Goldpreis eindeutig durch Währung bestimmt.Gleiche Währung ⇒ gleicher Goldpreis.Währung→ Goldpreis
Redundanz:Goldpreis in Eurodoppelt gespeichert!
Boyce‐Codd Normalform
Land Währung
Deutschland
USA
Euro
Dollar
Währung
Verallgemeinerung: Boyce‐Codd Normalform
Goldpreis
513,47
910,25
Frankreich Euro 513,47
Erste Normalform erfüllt.
Jedes Attribut β darf nur dann funktional vonanderen Attributen α1, …,αn abhängen,wenn α1, …,αn einen Kandidatenschlüssel enthält.
In diesem Fall gibt‘s keine zwei Zeilen mit gleichen Werten von α1, …,αn ,folglich auch keine doppelte Speicherung von β.
Boyce‐Codd Normalform
Land Währung
Deutschland
USA
Euro
Dollar
Währung
Frankreich Euro
Währung
Euro
Dollar
Kurs
Goldpreis
513,47
910,25
Boyce‐Codd Normalform
KFZ Nr Hersteller
TÜ‐GH‐3458
RT‐TK‐8347
VW
Toyota
Auto
Modell
Golf IV 1.9 TDI
Corolla Compact 1.4
TÜ‐CT‐3123 VW Polo Variant 60
Gewicht
1137
891
961
(Hersteller,Modell)→ Gewicht
(Hersteller,Modell) enthält keinen Kandidatenschlüssel.
Boyce‐Codd Normalform nicht erfüllt.
VW Golf IV 1.9 TDI 1137HN‐C‐8724
Boyce‐Codd Normalform
KFZ Nr Hersteller
TÜ‐GH‐3458
RT‐TK‐8347
VW
Toyota
Auto
Modell
Golf IV 1.9 TDI
Corolla Compact 1.4
TÜ‐CT‐3123 VW Polo Variant 60
Hersteller
VW
Toyota
Gewicht
Modell
Golf IV 1.9 TDI
Corolla Compact 1.4
VW Polo Variant 60
Gewicht
1137
891
961
HN‐C‐8724 VW Golf IV 1.9 TDI
Modell→ Hersteller Ist Modell allein Schlüssel?
Boyce‐Codd Normalform
KFZ Nr
TÜ‐GH‐3458
RT‐TK‐8347
HatTyp
Modell
Golf IV 1.9 TDI
Corolla Compact 1.4
TÜ‐CT‐3123 Polo Variant 60
Hersteller
VW
Toyota
Typ
Modell
Golf IV 1.9 TDI
Corolla Compact 1.4
VW Polo Variant 60
Gewicht
1137
891
961
HN‐C‐8724 Golf IV 1.9 TDI
Structured Query Language (SQL)
Ziel:Datenbanken erstellen und ändern
In Datenbanken suchen
Datenbanken verwalten (Zugriffsrechte, Transaktionen…)
Lösung: SQL Befehle
Datenbank erzeugenCREATE DATABASE meinedb ;
Datenbank auswählenUSE meinedb ;
Vorhandene Datenbanken anzeigenSHOW DATABASES;
Tabelle anlegen
CREATE TABLE student( matnr CHAR(6) NOT NULL ,name VARCHAR(20) , semester SMALLINT CHECK( semester > 0 ) ,PRIMARY KEY(matnr)
) ;
Vorhandene Tabellen anzeigen
SHOW TABLES ;
Daten eingeben
INSERT INTO student ( matnr, semester )VALUES ( „238194“, 4 ) ;
INSERT INTO studentVALUES ( „238194“, „Volker Stahl“, 4 ) ;
Kurzform wenn alle Attribute gesetzt werden
Daten ändernUPDATE studentSET semester = semester + 1WHERE matnr = „238194“ ;
Datensätze löschen
DELETE FROM studentWHERE matnr = „238194“ ;
DELETE FROM student ;
Alle Datensätze einer Tabelle löschen
DROP TABLE student ;
Tabelle löschen
DROP DATABASE meinedb ;
Datenbank löschen
Abfragen
SELECT name, matnrFROM studentWHERE semester <= 2 ORDER BY name ;
alle Studenten des ersten und zweiten Semesters
SELECT COUNT ( * )FROM studentWHERE semester = 3 ;
Anzahl der Studenten imdritten Semester
SELECT COUNT ( * )FROM studentGROUP BY semester;
Anzahl der Studenten injedem Semester
matnr name
382812
872983
Dieter Lang
Andrea Maier
student
723314 Hans Schmidt
matnr
besucht
kuerzel
INF1
MATH2
semester
2
3
3
872983
723314
Join von TabellenJede Zeile der einen mit jeder Zeile der anderen kombinieren
matnr name
382812 Dieter Lang
student,besucht
723314 Hans Schmidt
semester
2
3
matnr kuerzel
382812 Dieter Lang
723314 Hans Schmidt
2
3
INF1
MATH2
872983
723314
INF1
MATH2
872983
723314
872983 Andrea Maier 3
872983 Andrea Maier 3
INF1
MATH2
872983
723314
Wer besucht INF1?
SELECT nameFROM student, besucht WHERE student.matnr = besucht.matnr
AND kuerzel = „INF1“ ;
alle Studenten, dieINF1 besuchen
matnr name
382812
872983
Dieter Lang
Andrea Maier
student
723314 Hans Schmidt
matnr
besucht
kuerzel
INF1
MATH2
semester
2
3
3
872983
723314
SELECT name FROM studentWHERE matnr IN(SELECT matnr FROM besuchtWHERE kuerzel = „INF1“
);
Alternativ:
Join
MySQL
Dateien
mysqld
mysql
MySQLServer
MySQLClient
mysqladmin
mysqldump
mysqlimport
Interaktive Eingabe von SQL Befehlen
Administrations‐ und Dienstprogramme
Port 3306 Port 3306Internet
Recommended