Interaktive Webseiten mit PHP und MySQL

Werbung
Datenmodelle
Netzwerkmodell (CODASYL-Modell)
Objektorientierte Modelle
Relationales Modell
Interaktive Webseiten mit PHP und
MySQL
Das relationale Modell
1970 von E.F. Codd eingeführt durch eine Veröffentlichung in
Communications of the ACM (Band 13, Nr. 6, S. 377-387, Juni
1970): "A relational model for large shared data banks" ("Ein
relationales Modell für Daten in großen Datenbanken").
Larry Ellison war einer der ersten, der die Arbeit von Codd von
der Theorie in die Praxis umsetzte: ORACLE - Datenbank
Interaktive Webseiten mit PHP und
MySQL
Tabellen, Spalten, Zeilen
Attribute
Relationen lassen sich sehr
Relationenname
übersichtlich als Tabellen
R
A1
...
An } Relationsschema
darstellen, indem man ihre
...
Tupel untereinander
anordnet.
...
Relation
Jeder der dabei
Tupel
entstehenden Spalten kann
...
dann ein Attribut zugeordnet
werden.
Mitarbeiter
Die Zeilen der Tabelle, die
Nr.
Name
Vorname
Telefon
jeweils ein Objekt
1
Holtkamp
Heiko
1063567
darstellen, enthalten in jeder
Spalte die Ausprägung
2
Ellermann
Martin
1063567
dieses Objekts unter dem
3
Holtmann
Marcel
1063566
der Spalte zugeordneten
4
Hilbert
Mirco
1063568
Attribut.
Interaktive Webseiten mit PHP und
MySQL
Datenbanken entwickeln
Die Entwicklung einer Datenbank vollzieht sich in mehreren Schritten (stark
vereinfacht!)
– Welche Informationen erwarten die Anwender vom Datenbanksystem?
– Welche Tabellen werden benötigt?
– Welche Datentypen werden für die Tabellenspalten benötigt?
Dieser Prozess wird als Datenmodellierung bezeichnet.
Grundsätze für die Datenmodellierung
– Keine Redundanz
– Eindeutigkeit
– Keine Prozessdaten
Miniwelt
Beschreibung
Datenbankentwurf Speicherung
von Daten
Abfrage
Manipulation
Ausschnitt aus der
Datenbanksystem
Interaktive Webseiten mit PHP und
realen Welt
MySQL
Datenmodellierung / Tabellen erstellen
Normalisierung
Der Normalisierungsprozess besteht aus der Erzeugung verschiedener
Normalformen. Normalisierung ist wichtig.
Entity-Relationship-Modell (ER-Modell)
Ein Gegenstand (engl. Entity) repräsentiert ein abstraktes oder physisches
Objekt der realen Welt. Zur Beschreibung von Gegenständen sowie deren
Identifizierung bedient man sich Attributen, die geeignet belegt werden.
Eine Beziehung (engl. Relationship) beschreibt einen Zusammenhang
zwischen mehreren Gegenständen und reichert diesen ggf. durch
Informationen an.
Interaktive Webseiten mit PHP und
MySQL
Der Normalisierungsprozess (praxisorientiert)
0. Normalform
– Alle Datenelemente auflisten
– Für jede Tabelle einen Primärschlüssel festsetzen (ein Schlüssel dient
zur Identifikation eines Tupels)
1. Normalform: Wiederholungsgruppen auflösen
– Eliminieren sich wiederholender Gruppen in einzelnen Relationen
– Alle Wertebereiche der Attribute einer Relation müssen atomar sein
Interaktive Webseiten mit PHP und
MySQL
Der Normalisierungsprozess: Beispiel
„0. Normalform“
PersNr
1
2
3
Name
Lorenz
Hohl
Wilschrein
Vorname
Sophia
Tatjana
Theo
AbtNr
1
2
1
Abteilung
Personal
Einkauf
Personal
ProjektNr
2
3
1,2,3
4
5
Richter
Wiesenland
Hans
Werner
3
2
Verkauf
Einkauf
2
1
Vorname
Sophia
Tatjana
Theo
Theo
Theo
Hans
Werner
AbtNr Abteilung
ProjektNr
1
Personal
2
2
Einkauf
3
1
Personal
1
1
Personal
2
1
Personal
3
3
Verkauf
2
Webseiten mit
2 Interaktive
Einkauf
1 PHP und
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage,
Verkaufspromotion,
Konkurrenzanalyse
Verkaufspromotion
Kundenumfrage
1. Normalform
PersNr
1
2
3
3
3
4
5
Name
Lorenz
Hohl
Wilschrein
Wilschrein
Wilschrein
Richter
Wiesenland
MySQL
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage
Verkaufspromotion
Konkurrenzanalyse
Verkaufspromotion
Kundenumfrage
Der Normalisierungsprozess (praxisorientiert)
2. Normalform: Abhängigkeit vom Primärschlüssel
– Eine Relation befindet sich in der zweiten Normalform, wenn
• sie in der 1. Normalform ist und
• jedes Nicht-Schlüssel-Attribut vom Primärschlüssel voll funktional abhängig
ist.
– Ein Attribut B ist vom Attribut A funktional genau dann abhängig, wenn
gilt: aus A folgt direkt B (A → B)
– Relationsstypen, die in der 1. NF sind, sind automatisch in der 2. NF,
wenn ihr Primärschlüssel nicht zusammengesetzt ist (nur aus einem
Attribut besteht)
– Es muss also geprüft werden, ob man aus einem Teilschlüssel auf
Nichtschlüsselattribute folgern kann
– Bei der „Erzeugung“ der 2. NF entstehen i.d.R. mehrere Relationen
Interaktive Webseiten mit PHP und
MySQ
Der Normalisierungsprozess: Beispiel
1. Normalform
PersNr
1
2
3
3
3
4
5
Name
Lorenz
Hohl
Wilschrein
Wilschrein
Wilschrein
Richter
Wiesenland
Vorname
Sophia
Tatjana
Theo
Theo
Theo
Hans
Werner
AbtNr
1
2
1
1
1
3
2
Abteilung
Personal
Einkauf
Personal
Personal
Personal
Verkauf
Einkauf
ProjektNr
2
3
1
2
3
2
1
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage
Verkaufspromotion
Konkurrenzanalyse
Verkaufspromotion
Kundenumfrage
2. Normalform
PersNr
1
2
3
4
5
Name
Lorenz
Hohl
Wilschrein
Richter
Wiesenland
Vorname
Sophia
Tatjana
Theo
Hans
Werner
AbtNr
1
2
1
3
2
Abteilung
Personal
Einkauf
Personal
Verkauf
Einkauf
ProjektNr
2
3
1
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage
Interaktive Webseiten mit PHP und
MySQL
PersNr
1
2
3
3
3
4
5
ProjektNr
2
3
1
2
3
2
1
Der Normalisierungsprozess (praxisorientiert)
3. Normalform: Transitive Abhängigkeit
– Eine Relation befindet sich in der 3. Normalform, wenn
• Sie in der 2. NF ist und
• Die Nichtschlüsselattribute voneinander nicht funktional abhängig sind, d.h.
es existieren keine transitiven Abhängigkeiten.
– Transitivität: X → Y und Y → Z, dann X → Z
– Ein Attribut Z ist vom Attribut X über das Attribut Y genau dann transitiv
abhängig, wenn gilt: X → Y und ¬(Y → X) und Y → Z
– Es muss also geprüft werden, ob aus einem Nichtschlüsselattribut auf
ein weiteres Nichtschlüsselattribut gefolgert werden kann
– Bei der „Erzeugung“ der 3. NF entstehen weitere Relationen
Interaktive Webseiten mit PHP und
MySQL
Der Normalisierungsprozess: Beispiel
2. Normalform
PersNr
1
2
3
4
5
Name
Lorenz
Hohl
Wilschrein
Richter
Wiesenland
Vorname
Sophia
Tatjana
Theo
Hans
Werner
AbtNr
1
2
1
3
2
Abteilung
Personal
Einkauf
Personal
Verkauf
Einkauf
ProjektNr
2
3
1
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage
PersNr
1
2
3
3
3
4
5
ProjektNr
2
3
1
2
3
2
1
3. Normalform
PersNr
1
2
3
4
5
Name
Lorenz
Hohl
Wilschrein
Richter
Wiesenland
Vorname
Sophia
Tatjana
Theo
Hans
Werner
AbtNr
1
2
1
3
2
ProjektNr
2
3
1
Beschreibung
Verkaufspromotion
Konkurrenzanalyse
Kundenumfrage
PersNr
1
2
3
3
3
4
5
Interaktive Webseiten mit PHP und
MySQL
ProjektNr
2
3
1
2
3
2
1
AbtNr
1
2
3
Abteilung
Personal
Einkauf
Verkauf
Das Entity-Relationship-Modell – Kurz & knapp...
Vorgehen
– Jeder Entitytyp wird in eine Relation
transformiert.
– Ein 1:1-Beziehungstyp wird durch
Aufnahme eines Schlüssels in eine
der beiden Tabellen abgebildet.
– Ein 1:n-Beziehungstyp wird durch
Aufnahme des Schlüssels des
Entitytyps, der in der Beziehung n-mal
auftreten kann, in die dem anderen
Entitytyp entsprechende Tabelle
abgebildet.
– Ein m:n-Beziehung wird durch die
Definition einer zusätzlichen Tabelle,
in der die Schlüssel aller beteiligten
Entitytypen enthalten sind, abgebildet.
– Bei attributierten Beziehungen werden
die Attribute des Beziehungstyps in
die Tabelle, in der die Beziehung
Interaktive Webseiten mit PHP und
abgebildet ist, aufgenommen.
MySQL
MySQL
Das MySQL RDBMS (Relationales Datenbankmanagementsystem)
wird von einem kommerziell orientierten
Unternehmen, der MySQL AB, entwickelt.
MySQL AB ist ein schwedisches Unternehmen, das von
Michael >Monty< Widenius, Allan Larson und David Axmark
gegründet wurde.
Das Produkt MySQL wird in zwei getrennten Lizenzmodellen
angeboten:
– Lizenzmodell der GPL (OpenSource)
– Kommerzielle Fassung
– Die Lizenzpolitik von MySQL AB ist allerdings nicht so ganz klar
verständlich und sollte auf jeden Fall aufmerksam studiert werden,
wenn MySQL im kommerziellen Umfeld zum Einsatz kommt.
Interaktive Webseiten mit PHP und
MySQL
SQL
SQL steht für Structured Query Language (strukturierte Abfrage Sprache).
Damit ist der Funktionsumfang allerdings nur unzureichend umrissen:
– Sie enthält nicht nur Funktionen für Datenbankabfragen,
– sondern deckt das volle Aufgabenspektrum vom Anlegen und Pflegen von
Datenstrukturen üder das Einfügen, Ändern und Löschen von Daten bis hin zur
Benutzerverwaltung ab.
Wichtige Funktionsbereiche von SQL
–
–
–
–
–
Datendefinition (DDL – Data Definition Language)
Datenmanipulation (DML – Data Manipulation Language)
Datenabfrage (QL – Query Language)
Zugriffskontrolle
spezielle Befehle zur internen Datenbankadministration
Eine richtige "Programmiersprache" ist SQL trotz ihrer Mächtigkeit aber
nicht.
– Sie enthält beispielsweise keine Schleifen- oder Verzweigungsbefehle
SQL ist eher eine "Schnittstellensprache", in der ein Datenbankserver die
Interaktive Webseiten mit
PHP und
Anforderungen einer Client-Anwendung
entgegen
nimmt.
MySQL
MySQL-Befehle → phpMyAdmin
Bevor wir aber mit dem mysqlMonitor weiter machen, ein
Hinweis auf ein sehr nützliches
Tool: phpMyAdmin
phpMyAdmin erleichtert die
Administration und
Manipulation von MySQLDatenbanken
– Es ist zu bekommen unter der
URL
http://www.phpmyadmin.net
– phpMyAdmin ist eine
browserbasierte Oberfläche
zur Bedienung von MySQL
über das WWW
Interaktive Webseiten mit PHP und
MySQL
PHP & MySQL: Erste Schritte
MySQL wird von PHP explizit unterstützt.
Für die Nutzung stehen Funktionen zur Verfügung, die direkt
auf die Datenbank zugreifen.
Neben MySQL bietet PHP auch die Unterstützung für weitere
Datenbanken, u.a.
–
–
–
–
–
–
mSQL
Postgres
Informix
MS SQL Server
Oracle
„ODBC“
Interaktive Webseiten mit PHP und
MySQL
PHP & MySQL: Erste Schritte
Mit dem MySQL DBMS(Datenbankmanagementsystem) verbinden:
resource mysql_connect ([string Server[:Port] [, string
Benutzername [, string Benutzerkennwort [, bool
neue_Verbindung [, int client_flags]]]]])
Beispiel:
<?php
$link = mysql_connect ("localhost", "mysql_user",
"mysql_password") or die ("keine Verbindung möglich");
print ("Verbindung erfolgreich");
mysql_close ($link);
?>
Verbindung zum MySQL DBMS schließen:
bool mysql_close ([resource Verbindungs-Kennung])
Interaktive Webseiten mit PHP und
MySQL
PHP & MySQL: Erste Schritte
Persistente(dauernde) Verbindung zu MySQL:
resource mysql_pconnect ( [string Server[:port] [,
string Benutztername [, string Benutzerkennwort [, int
client_flags]]]])
– vor dem Verbindungsaufbau wird zunächst versucht eine offene
(persistente) Verbindung zum gleichen Host, mit dem gleichen
Benutzernamen und Benutzerkennwort zu finden
– die Verbindung zum SQL Server wird beim Beenden des PHP-Skripts
nicht geschlossen
Auswahl einer MySQL Datenbank:
bool mysql_select_db ( string Datenbankname [, resource
Verbindungs-Kennung])
Interaktive Webseiten mit PHP und
MySQL
PHP & MySQL: Erste Schritte
Eine Anfrage an das MySQL DBMS senden:
resource mysql_query (string Anfrage [, resource
Verbindungs-Kennung [, int Ergebnis-Modus]])
Beispiel:
<?php
$result = mysql_query ("SELECT * FROM my_tbl")
or die ("Invalid query");
?>
Daneben gibt es auch die Funktion:
resource mysql_db_query (string Datenbank, string
Anfrage [, resource Verbindungs-Kennung])
– Diese Funktion sollte aber nach Möglichkeit nicht mehr verwendet werden (seit
PHP 4.0.6 als veraltet gekennzeichnet)
Interaktive Webseiten mit PHP und
MySQL
Nützliche Bibliotheken
PHPLib – PHP Base Library
– http://phplib.sourceforge.net (früher: http://phplib.netuse.de)
– PHPLib ist eine Sammlung von in PHP geschriebenen Klassen
•
•
•
•
•
Datenbankabstraktion (mSQL, MSSQL, MySQL, Oracle8, Postgres ...)
Sessionhandling
Authentifizierung
Rechteverwaltung
Templates
– Aber: die PHPLib wird nicht mehr weiterentwickelt.
• Entwicklung seit Version 7.2d im Stillstand
• Dennoch eine der wichtigsten und immer noch am meisten genutzten PHPBibliotheken
• Funktionalität der PHPLib wird schrittweise in das "PEAR-Projekt" integriert
Interaktive Webseiten mit PHP und
MySQL
Herunterladen