81
Inhalt II. Dynamische Webseiten, Web Programmierung Client seitige Programmierung (Applets, JavaScript) Serverseitige Programmierung (CGI, PHP) Web2.0: Ajax, Mashups, RSS III. Datenbanken Anforderungen, Architektur Systematischer Entwurf: Entity Relationship Modelle Normalformen Structured Query Language SQL I. XML Unterschied zu HTML Übersetzung in andere Formate: XSL, XSLT

Inhalt - mitarbeiter.hs-heilbronn.demitarbeiter.hs-heilbronn.de/~vstahl/informatik1/Folien/teil2.pdf · Anzeigen einer HTML Seite auf dem Handy (Platzproblem) Automatische Verarbeitung

Embed Size (px)

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

RSS (Really Simple Syndication)

<?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

Datenbanken

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.

Datenbank EntwurfEntity Relationship Modelle

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

Hilfe

HELP UPDATE Hilfe zum SQL Befehl UPDATE

HELP ALTER Hilfe zum SQL Befehl ALTER

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

MySQL im Web

Web Client MySQL Server

CGI oder PHP

Port 80 Port 3306

HTML Seite

SQL Befehl

Tabelle

Suchbegriff

Web Server=

MySQL Client

Anwendungen: Suchmaschine, Webshop, Telefonauskunft,…

Literatur: Martin PollakowskiMySQL und PHPVieweg 2003