web technologien – klassische datenbanken am beispiel von...

21
Web Technologien – Klassische Datenbanken am Beispiel von MySQL Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 – 10:00 a.m. Room HS 021, B4 1

Upload: others

Post on 28-Oct-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Web Technologien – Klassische Datenbanken am Beispiel von MySQL Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 – 10:00 a.m. Room HS 021, B4 1

Page 2: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 2

Wrap-Up

•  Der Linux, Apache, MySQL, PHP Stack (= LAMP) ist eine Sammlung von Open Source Standardsoftware zur Realisierung serverseitiger dynamischer Websites

•  Die Skriptsprache PHP ermöglicht die Erstellung komplexer Serverskripte, welche Formulardaten, Sessions und Cookies lesen und schreiben können

Browser

Clie

nt

Linux

Apache MySQL

PHP , (Python, Perl)

Ser

ver

Page 3: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 3

MySQL

•  Am weitesten verbreitetes Open Source „Database Management System“ (DBMS) der Welt

•  Erstmals 1997 als Version 3.21 veröffentlicht um zu zeigen, dass bereits viele Jahre der Erfahrung im Produkt stecken

•  Die aktuellste Version 5.5.17 steht für eine Vielzahl verschiedenster Betriebssysteme zur Verfügung

•  Verfügbar in verschiedenen Versionen mit unterschiedlichem Leistungsumfang, darunter die kostenfreie „Community Edition“

(siehe www.mysql.de)

Page 4: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 4

Datenbanksystem  

Datenbank Management System

•  Set aus Komponenten zur Definierung, Erstellung und Verwaltung von Datenbanken

•  Datenbanken können Daten persistent speichern, durchsuchen und verwalten

•  Bei MySQL handelt es sich um ein relationales Datenbanksystem (RDBMS)

•  Relationale Datenbanken, nach dem von Edgar F. Codd 1970 entwickelten Modell, beinhalten teilweise untereinander verknüpfte Tabellen zur Speicherung von Daten

Anwendung  

DBMS   Datenbank-­‐Dateien  

Page 5: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 5

Aufgaben eines DBMS

•  Datensicherheit im Sinne von Zugriffsrechten und Datenverlust

•  Transaktionen zur Ermöglichung von Rollbacks und zur Sicherung der Datenintegrität

•  Datenintegrität nach fest definierten Constraints (z.B. Foreign Key)

•  Anfrageoptimierung durch Bereitstellung einer Sprache welche erst intern in logische Operationen übersetzt wird

•  Anwendungsunterstützung durch Bereitstellung von Triggern und gespeicherten Prozeduren

•  Mehrbenutzerfähigkeit durch Berechtigungsvergabe und Locking-Mechanismen

Page 6: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 6

Tabellen in relationalen Datenbanken

Kundennummer Name Kundentyp 10000 Max Müller 0 10001 Franziska Maier 0 10002 Schmid und Söhne GmbH 1

Tabelle Kunden

TypID Typbezeichnung 0 Privatkunde 1 Geschäftskunde

Tabelle Kundentypen

Page 7: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 7

Terminologie

•  Datenbank/Database: Ein Behältnis zum Speichern von Daten

•  Tabelle/Table: Der Teil einer Datenbank die die Daten enthält. Eine Tabelle hat Spalten/Columns zur Speicherung der zeilenweise abgelegten Daten mit ihren Attributen.

•  Spalten/Columns: Jede Spalte enthält ein Attribut eines Datensatzes in einem festgelegten Datentyp (string, integer, date etc.)

•  Zeile/Row: Der Datensatz/Record in einer Tabelle

•  Primärschlüssel/Primary Key: Eine oder mehrere Spalten, welche eindeutige Werte zur Referenzierung eines Datensatzes enthalten

•  Index: Spalten welche häufig zur Filterung von Ergebnissen eingesetzt werden können zum Performance-Gewinn als Indices markiert werden

Page 8: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 8

SQL

•  SQL ist die Standardsprache zur Interaktion mit relationalen Datenbanken und entstand aus der bereits Anfang der 70er entwickelten Sprache Sequel

•  Verschiedene Datenbanksysteme haben ihren eigenen Dialekt •  SQL besteht aus Befehlen dreier Kategorien:

1.  Data Definition Language (DDL) zur Verwaltung der Datenbanken und deren Struktur

2.  Data Manipulation Language (DML) zur Verwaltung der Daten innerhalb einer Datenbank (à CRUD)

3.  Data Control Language (DCL) zum Transaktionsmanagement für „Locks“ and „Rollbacks“, zur Zugriffssteuerung und zur Datenüberprüfung/-korrektur/-aufbereitung

Page 9: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 9

Entwicklung eines Datenbankmodells

Kernfragen: •  Welche Tabellen benötige ich? •  Welche Spalten in den Tabellen benötige ich? •  Wie sehen die möglichen Beziehungen zwischen den verschiedenen

Datensätzen aus?

Hilfsmittel: Entity-Relationship Model (ERM)

Kundennummer Name

10000 Max Müller

10001 Franziska Maier

10002 Schmid und Söhne GmbH

Tabelle Kunden

AdressID Kundennummer Straße ...

0 10000 Hauptstraße

1 10000 Bahnhofsstraße

Tabelle Adressen Kunde

KN  

Name  

...  

Adresse hat 1 n

(siehe Peter Chen, 1976)

Straße  

Stadt  

...  

Page 10: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 10

SQL Syntax

•  Befehle müssen immer mit einem Strichpunkt terminiert werden

•  Bei Namen wird die Groß-/Kleinschreibung beachtet, bei Befehlen nicht

•  Namen von Datenbanken, Tabellen und Spalten müssen in Akzentsymbole (`) eingefasst werden

•  String-Werte müssen in einfache Anführungszeichen (') eingefasst werden

select * from table `Kunden` where `Name`='Maier';

(weitere Datentypen unter http://dev.mysql.com/doc/refman/5.1/de/data-type-overview.html)

Page 11: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 11

Anlegen von Datenbanken und Tabellen (DDL)

•  Mit „create“ können Datenbanken und Tabellen erstellt werden

•  Mittels „use“ kann zwischen Datenbanken gewechselt werden

•  Bei der Tabellenerstellung muss jeder Spalte ein Typ (int, varchar, boolean etc.) zugewiesen werden

•  Über weitere Schlüsselwörter können z.B. ein Primärschlüssel oder automatisch hochzählende Werte definiert werden

•  Mit „drop“ können Datenbanken und Tabellen wieder gelöscht werden

���mysql> create database `Shop`; Query OK, 1 row affected (0.00 sec) mysql> use `Shop`; Database changed ���mysql> create table `Kunden` (`Kundennummer` INT NOT NULL AUTO_INCREMENT, `Name` VARCHAR(45), PRIMARY KEY (`Kundennummer`)); Query OK, 0 rows affected (0.02 sec) ���mysql> drop table `Kunden`; Query OK, 0 rows affected (0.00 sec) mysql> drop database `Shop`; Query OK, 0 rows affected (0.04 sec)

SQL Kommandozeile

(weitere Datentypen unter http://dev.mysql.com/doc/refman/5.1/de/data-type-overview.html)

Page 12: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 12

DDL und DCL mittels GUI Tools

Page 13: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 13

Datensätze anlegen

•  Mit dem Befehl „insert into“ können Datensätze in einer Datenbank angelegt werden

•  Ist ein Feld als „AUTO_INCREMENT“ definiert wird dieses automatisch mit dem nächsthöheren Wert befüllt

•  Felder die als „NOT NULL“ definiert sind müssen befüllt werden

•  Felder die als PRIMARY KEY oder eindeutige Indices definiert sind müssen die Eindeutigkeit in der Tabelle einhalten

���mysql> ���insert into `Shop`.`Kunden` (`Name`, `Hausnummer`) values ('Max Müller', 2); Query OK, 1 row affected (0.00 sec) oder alternativ mysql> ���insert into `Shop`.Kunden set `Name`='Franziska Maier', `Hausnummer`=5; Query OK, 1 row affected (0.00 sec)

SQL Kommandozeile

Page 14: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 14

Datensätze abfragen

•  Mit dem Befehl „select“ können in einer Datenbank existierende Datensätze abgefragt werden

•  Der Befehl erwartet eine Angabe welche Werte aus der Ergebnismenge zurückgegeben werden sollen; diese kann sein: •  „*“ für alle Ergebniswerte •  Eine kommagetrennte Liste aus

Spaltennamen

•  Der Befehl „select distinct“ schließt doppelte Ergebnisse in der Ergebnismenge aus

��� mysql> ������select * from `Shop`.`Kunden`; +--------------+-----------------+------------+!| Kundennummer | Name | Hausnummer |+--------------+-----------------+------------+!| 1 | Max Müller | 2 |!| 2 | Franziska Maier | 5 |!+--------------+-----------------+------------+!

2 rows in set (0.00 sec) mysql> select `Name` from `Shop`.`Kunden`; !+-----------------+!| Name |!+-----------------+!| Max Müller |!| Franziska Maier |!+-----------------+!

2 rows in set (0.00 sec)

SQL Kommandozeile

Page 15: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 15

Datensätze filtern und sortieren

•  Über den Befehl „where“ kann die Ergebnismenge durch Filter eingeschränkt werden

•  Der Befehl „order by“ erlaubt es, durch die Parameter „asc“ und „desc“ die Ergebnismenge auf- oder absteigend nach bestimmten Spalten zu sortieren

•  Weitere Filter/Sortierungen werden kommagetrennt hintereinander geschrieben

��� mysql> ������select * from `Shop`.`Kunden` where `Kundennummer`=2; +--------------+-----------------+------------+!| Kundennummer | Name | Hausnummer |+--------------+-----------------+------------+!| 2 | Franziska Maier | 5 |!+--------------+-----------------+------------+!

1 row in set (0.00 sec) mysql> ������select * from `Shop`.`Kunden` order by `Name` asc; +--------------+-----------------+------------+!| Kundennummer | Name | Hausnummer |+--------------+-----------------+------------+!| 2 | Franziska Maier | 5 |!| 1 | Max Müller | 2 |!+--------------+-----------------+------------+!

2 rows in set (0.00 sec)

SQL Kommandozeile

Page 16: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 16

Datensätze ändern und löschen

•  Die Befehle „update...set“ und „delete from“ ermöglichen das ändern und löschen von Datensätzen

•  Um nicht alle Datensätze einer Tabelle zu ändern oder zu löschen, können die Befehle mit dem Befehl „where“ kombiniert werden

•  Die beiden Befehle werden lediglich auf die Ergebnismenge angewendet

��� mysql> ������update `Shop`.`Kunden` set `Name`='Franziska Müller' where `Kundennummer`=2; ���Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> ������delete from`Shop`.`Kunden` where `Kundennummer`=1; ���Query OK, 1 row affected (0.00 sec) mysql> ������select * from `Shop`.`Kunden`; +--------------+------------------+------------+!| Kundennummer | Name | Hausnummer |+--------------+------------------+------------+!| 2 | Franziska Müller | 5 |!+--------------+------------------+------------+!

1 row in set (0.00 sec)

SQL Kommandozeile

Page 17: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 17

Verknüpfte Datenanfragen

•  Über sog. Joins können Inhalte verschiedener Tabellen in einer Anfrage abgefragt werden

•  Über Referenzen der verschiedenen Tabellen untereinander können Datensätze mit anderen in Bezug gesetzt werden

��� mysql> ���������select * from `Shop`.`Kunden` join `Shop`.`Adressen` on `Kunden`.`Kundennummer`= `Adressen`.`Kundennummer`; ���+--------------+-----------------+-----------+--------------+-----------------+!| Kundennummer | Name | AddressId | Kundennummer | Straße |!+--------------+-----------------+-----------+--------------+-----------------+!| 1 | Max Müller | 2 | 1 | Hauptstraße |!| 2 | Franziska Maier | 1 | 2 | Bahnhofsstraße |!+--------------+-----------------+-----------+--------------+-----------------+!

2 rows in set (0.00 sec)

SQL Kommandozeile

Kundennummer Name

1 Max Müller

2 Franziska Maier

Tabelle Kunden

AdressID Kundennummer Straße ...

1 2 Bahnhofsstraße

2 1 Hauptstraße

Tabelle Adressen

Beispiel: Abfrage aller Kunden aus der Tabelle Kunden und dazu jeweils die passende Adresse aus der Tabelle Adressen, referenziert über die Kundennummer

Page 18: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 18

MySQL & PHP

•  Zur einfachen Verknüpfung einer MySQL-Datenbank mit PHP stellt PHP die MySQL Extension bereit

•  Die MySQL Extension bietet ein umfangreiches Set von Funktionen um mit Datensätzen in MySQL Datenbanken zu arbeiten

•  Mit der Extension können MySQL Datensätze zu PHP Arrays umgewandelt werden, was den Zugriff auf Ergebnisse erheblich erleichtert

•  Alle angeboten Funktionen sind auf der PHP Website dokumentiert: http://www.php.net/manual/de/ref.mysql.php

Page 19: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 19

MySQL & PHP Beispiel

PHPAndMySQL.php

Page 20: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass

15.11.11 Slide 20

Literatur

Bücher: •  Hugh E. Williams, David Lane

Web Database Applications with PHP & MySQL ISBN-10: 0596000413

•  Paul DuBois MySQL Cookbook ISBN-10: 059652708X, ISBN-13: 978-0596527082

Web: •  http://www.mysql.de/ •  http://dev.mysql.com/

Artikel:

•  Peter Pin-shan Chen: The Entity-Relationship Model: Toward a Unified View of Data, ACM Transactions on Database Systems, Vol. 1, p. 9-36, 1976

Page 21: Web Technologien – Klassische Datenbanken am Beispiel von ...iss.uni-saarland.de/workspace/documents/wt_5_klassische_datenbanken.pdf · Web Technologien – Klassische Datenbanken

Univ.-Prof. Dr.-Ing. Wolfgang Maass  

Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Saarland University, Germany