Stefan Pröll, Eva Zangerle, Wolfgang Gassler. MySQL 5.6. Das umfassende Handbuch



Ähnliche Dokumente
Auf einen Blick. MySQL-Administration

Auf einen Blick. 1 Datenbanken - eine allgemeine Einleitung Datenbankmodellierung Schnellstart-Tutorial... 91

Inhalt. TEILI Erste Schritte

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

OP-LOG

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

1 Mathematische Grundlagen

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

2.5.2 Primärschlüssel

Avira Server Security Produktupdates. Best Practice

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Warenwirtschaft Handbuch - Administration

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Kurzeinführung Excel2App. Version 1.0.0

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Hinweise zur Installation von MySQL

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Backup der Progress Datenbank

SANDBOXIE konfigurieren

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Avira Management Console Optimierung für großes Netzwerk. Kurzanleitung

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Datensicherung. Beschreibung der Datensicherung

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

Step by Step Webserver unter Windows Server von Christian Bartl

PHPNuke Quick & Dirty

Anleitung für den Euroweb-Newsletter

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

Informatik I Tutorial

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Anleitung zur Verwendung der VVW-Word-Vorlagen

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Microsoft SharePoint 2013 Designer

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Benutzeranleitung Superadmin Tool

Schulberichtssystem. Inhaltsverzeichnis

Installationsanleitung Webhost Windows Flex

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

7. Übung - Datenbanken

Patch Management mit

Windows 10 > Fragen über Fragen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

1 PIVOT TABELLEN. 1.1 Das Ziel: Basisdaten strukturiert darzustellen. 1.2 Wozu können Sie eine Pivot-Tabelle einsetzen?

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Handbuch B4000+ Preset Manager

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

PHP Kurs Online Kurs Analysten Programmierer Web PHP

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Die neue Datenraum-Center-Administration in. Brainloop Secure Dataroom Service Version 8.30

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

Reporting Services und SharePoint 2010 Teil 1

Speichern. Speichern unter

TeamViewer App für Outlook Dokumentation

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Datenbanken Kapitel 2

Task: Nmap Skripte ausführen

SMART Newsletter Education Solutions April 2015

Bedienungsanleitung CAD-KAS Reklamationserfassung. Einen neuen Datensatz anlegen. Klicken Sie auf das + Symbol, um einen neuen Datensatz anzulegen.

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

HTBVIEWER INBETRIEBNAHME

Dokumentation IBIS Monitor

Einrichten der Outlook-Synchronisation

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Hinweise zum Ausfüllen der Zeiterfassung

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Microsoft Access 2013 Navigationsformular (Musterlösung)

-Versand an Galileo Kundenstamm. Galileo / Outlook

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

ODBC-Treiber Programmübersicht

KURZANLEITUNG CLOUD OBJECT STORAGE

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Benutzerverwaltung Business- & Company-Paket

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Die i-tüpfelchen: Favicons

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Kurzanleitung zu. von Daniel Jettka

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Zwischenablage (Bilder, Texte,...)

Transkript:

Stefan Pröll, Eva Zangerle, Wolfgang Gassler MySQL 5.6 Das umfassende Handbuch

Auf einen Blick Auf einen Blick 1 Datenbanken eine allgemeine Einleitung... 23 2 Datenbankmodellierung... 49 3 Schnellstart-Tutorial... 91 4 Einführung in die Beispieldatenbank... 121 5 Architektur... 147 6 Manuelle Installation, Plugins und Upgrades... 211 7 MySQL administrieren... 255 8 Replikation und Hochverfügbarkeit... 361 9 Anfrageoptimierung... 375 10 Sicherheit... 467 11 Gespeicherte Programme und Events... 529 12 Softwareentwicklung mit MySQL... 639 13 NoSQL mit MySQL... 675 A Referenz... 695

Inhalt Inhalt Vorwort... 15 TEIL I Erste Schritte 1 Datenbanken eine allgemeine Einleitung 23 1.1 Grundlagen von Datenbanken... 23 1.1.1 Die Geschichte von Datenbanken... 23 1.1.2 Moderne Datenbanken und Datenmodelle... 25 1.1.3 Vorteile... 28 1.1.4 Einsatzgebiete... 30 1.1.5 Anforderungen an ein Datenbankmanagementsystem... 34 1.2 MySQL... 38 1.2.1 Einleitung und Vorstellung... 38 1.2.2 Die Geschichte von MySQL... 41 1.2.3 Open Source und Lizenzen... 44 1.3 Zusammenfassung... 47 2 Datenbankmodellierung 49 2.1 Einführung in den Datenbankentwurf... 49 2.1.1 Anforderungsanalyse... 50 2.1.2 Konzeptioneller Datenbankentwurf... 51 2.1.3 Logischer Datenbankentwurf... 52 2.1.4 Physischer Datenbankentwurf... 52 2.1.5 Der Datenbankentwurf im Überblick... 53 2.2 Ein konkretes Beispiel: Flughafenverwaltung... 54 2.3 Das relationale Datenbankenmodell... 55 2.3.1 Tabellen, Spalten und Zeilen... 55 2.3.2 Schlüssel identifizieren Datensätze... 57 2.3.3 Die relationale Algebra... 58 2.3.4 Joins... 63 2.4 Datenbankdesign... 67 2.4.1 Das ER-Diagramm... 67 5

Inhalt 2.4.2 Entitäten... 68 2.4.3 Beziehungen... 72 2.5 Normalformen... 81 2.5.1 Die erste Normalform... 82 2.5.2 Die zweite Normalform... 84 2.5.3 Die dritte Normalform... 86 2.5.4 Weitere Normalformen... 88 2.6 Zusammenfassung... 88 3 Schnellstart-Tutorial 91 3.1 MySQL herunterladen... 91 3.2 Minimale Systemanforderungen... 92 3.3 MySQL installieren... 93 3.3.1 Schnellinstallation unter Windows... 94 3.3.2 Schnellinstallation unter Linux... 100 3.3.3 Schnellinstallation unter Mac OS X... 105 3.3.4 Zusammenfassung der Installation... 106 3.4 Endlich loslegen MySQL ausprobieren... 107 3.5 Übersicht der wichtigsten Befehle... 110 3.5.1 Datenbanken anlegen und löschen... 111 3.5.2 Tabellen anlegen, Daten einfügen und löschen... 113 3.5.3 Datensätze anlegen, abfragen und löschen... 118 3.5.4 Datensätze abfragen und anzeigen... 120 3.6 Zusammenfassung... 120 4 Einführung in die Beispieldatenbank 121 4.1 Die Datenbank für das Szenario anlegen... 121 4.2 Die Beispieldatenbank auf der Buch-DVD... 137 4.3 Hilfe bei der Arbeit mit MySQL... 139 4.3.1 Fehlermeldungen und Warnungen... 139 4.3.2 Online-Manual und weitere Anlaufstellen... 141 4.4 Zusammenfassung... 142 6

Inhalt TEIL II MySQL-Administration 5 Architektur 147 5.1 Einführung... 147 5.1.1 Teile einer Datenbank das Fünf-Schichten-Modell... 147 5.1.2 MySQL-Architektur... 153 5.2 Abfrageverarbeitung... 157 5.2.1 Der Query-Cache das Kurzzeitgedächtnis von MySQL... 157 5.2.2 Der Optimierer die Intelligenz von MySQL... 164 5.2.3 Execution-Engine der Arbeiter von MySQL... 169 5.3 Transaktionen und Nebenläufigkeit... 170 5.3.1 Nebenläufigkeit... 170 5.3.2 Transaktionen... 171 5.3.3 Lock-Management... 184 5.4 Storage-Engines... 187 5.4.1 Grundlagen des Storage-Engine-Plugin-Systems... 187 5.4.2 InnoDB... 191 5.4.3 MyISAM... 197 5.4.4 MEMORY... 202 5.4.5 Sonstige Engines... 203 5.4.6 Fremdhersteller-Engines... 206 5.4.7 Vergleichstabelle... 207 5.5 Zusammenfassung... 208 6 Manuelle Installation, Plugins und Upgrades 211 6.1 Von neuen Quellen MySQL selbst kompilieren und installieren... 212 6.1.1 Voraussetzungen... 212 6.1.2 MySQL kompilieren und installieren... 214 6.1.3 Die Installation grundlegend absichern... 219 6.1.4 Anlegen der Konfigurationsdatei... 224 6.1.5 Den MySQL-Dienst starten... 225 6.1.6 Zusammenfassung der Installation... 229 6.2 Usermanagement... 229 6.3 Die zentrale Konfigurationsdatei»my.cnf«... 235 6.3.1 Die Syntax der Konfigurationsdatei... 237 6.3.2 Die grundlegenden Einstellungen... 239 7

Inhalt 6.3.3 Kommandozeilenargumente... 242 6.3.4 Servervariablen setzen und ändern... 243 6.4 MySQL aktualisieren und erweitern... 247 6.4.1 Upgrades... 247 6.4.2 Die Plugin-API... 251 6.5 Zusammenfassung... 254 7 MySQL administrieren 255 7.1 Der bordeigene Werkzeugkasten... 255 7.2 Der Name ist Programm:»mysqladmin«... 256 7.2.1 Datenbanken anlegen und löschen... 256 7.2.2 Caches leeren... 257 7.2.3 Das»root«-Passwort ändern... 258 7.2.4 Den Server überwachen... 261 7.3 Daten importieren und exportieren... 264 7.3.1 Daten aus Dateien importieren... 264 7.3.2 Daten exportieren... 270 7.4 Richtig sichern Backups und Strategien... 272 7.4.1 Die Basics... 272 7.4.2 Physisches oder logisches Backup... 274 7.4.3 Online- und Offline-Backups... 276 7.4.4 Volle und inkrementelle Backups... 277 7.4.5 Logische Backups und Wiederherstellung mit»mysqldump«... 278 7.4.6 Physisches Offline-Backup schnell, sicher und effizient... 282 7.4.7 MySQL Hot Copy... 285 7.4.8 InnoDB-Tabellen sichern mit Percona XtraBackup... 286 7.4.9 Recovery von Bedienfehlern zeitpunktbezogene Wiederherstellung 288 7.4.10 Backups mit Replikation... 291 7.4.11 Backups automatisieren... 291 7.5 Tabellenwartung mit»mysqlcheck«... 292 7.5.1 MyISAM-Tabellen überprüfen und reparieren... 292 7.5.2 Die Erholungsphase Crash Recovery... 295 7.6 Performance-Check mit»mysqlslap«... 297 8

Inhalt 7.7 MySQL beobachten... 298 7.7.1 Die»INFORMATION_SCHEMA«-Tabellen... 298 7.7.2 Den Status abfragen... 298 7.7.3 Statistiken zu InnoDB-Tabellen... 299 7.7.4 MySQL überwachen... 301 7.8 Die grafischen Werkzeuge im Überblick... 302 7.8.1 MySQL Workbench... 302 7.8.2 MySQL Administrator... 308 7.8.3 Weitere Tools... 311 7.9 Optimierungstechniken... 311 7.9.1 Leistungsschau... 311 7.9.2 Profiling... 314 7.9.3 Das Percona Toolkit... 318 7.9.4 Die wichtigsten Variablen der zentralen Konfigurationsdatei im Überblick... 321 7.9.5 MySQL feineinstellen Empfehlungen eines Skripts... 326 7.10 Exakte Statistiken mit dem Performance Schema... 339 7.10.1 Grundlagen des Performance Schemas... 340 7.10.2 Instrumente einrichten und Messvorgaben anpassen... 343 7.10.3 Anpassen der Einstellungen und Ausgabe von Statusvariablen... 351 7.10.4 Auswertung des Performance Schemas... 352 7.10.5 Den Gesamtüberblick mit Summary-Tabellen behalten... 356 7.10.6 Aufspüren von Problemen... 359 8 Replikation und Hochverfügbarkeit 361 8.1 Grundprinzipien... 362 8.1.1 Ablauf... 363 8.1.2 Arten von Replikation... 363 8.2 Topologien... 365 8.2.1 Master Slave... 365 8.2.2 Master Slave mit zwischengeschaltetem Slave... 366 8.2.3 Master Master... 367 8.3 Vorarbeiten zur Replikation... 368 8.4 Konfiguration einer Master-Slave-Replikation... 370 8.5 Zusammenfassung... 373 9

Inhalt 9 Anfrageoptimierung 375 9.1 Aufspüren von langsamen Anfragen... 375 9.1.1 Langsame Anfrage protokollieren... 375 9.1.2 Log-Dateien regelmäßig kontrollieren... 378 9.2 Indexstrukturen... 378 9.2.1 Die Grundidee von Indexstrukturen... 379 9.2.2 Primärindex vs. Sekundärindex... 380 9.2.3 Der limitierende Faktor die Festplatte... 381 9.2.4 Technische Umsetzung von Indexstrukturen der B-Baum und MyISAM... 382 9.2.5 Clustered Index... 387 9.2.6 Non-clustered Index... 388 9.2.7 Mehrdimensionale Indexstrukturen der R-Baum... 388 9.2.8 GIS und raumbezogene Indizes... 392 9.2.9 Volltextindex... 400 9.2.10 Die großen Nachteile des Indexes... 410 9.3 Optimierung von Anfragen... 410 9.3.1 Die EXPLAIN-Anweisung... 410 9.3.2 Auswertung der EXPLAIN-Informationen und Optimierungen... 413 9.4 Partitionierung... 443 10 Sicherheit 467 10.1 Grundlagen... 467 10.1.1 Verschiedene Szenarien für das Rechtemanagement... 467 10.1.2 Die zwei Phasen des Berechtigungssystems... 469 10.2 Privilegiert die Benutzerrechte im Detail... 470 10.2.1 Die Ebenen der Benutzerberechtigungen... 472 10.2.2 Berechtigungen zum Schutz der Daten... 475 10.2.3 Berechtigungen zur Programmierung mit MySQL... 480 10.2.4 Das Sicherheitskonzept von Programmen oder DEFINER vs. INVOKER... 482 10.2.5 Berechtigungen zur Administration von MySQL... 486 10.2.6 Die Befehle GRANT und REVOKE im Detail... 491 10.2.7 Benutzerverwaltung ohne GRANT die Datenbank»mysql«... 496 10

Inhalt 10.3 Tipps und Tricks... 501 10.3.1 Vorgehen bei der Erstellung von Benutzern... 502 10.3.2 Tausende Benutzer und Datenbanken ohne Chaos verwalten... 503 10.3.3 Benutzerverwaltungs-API... 504 10.3.4 Benutzerverwaltung in der Applikation, nicht in der Datenbank?... 505 10.3.5 Workaround für Berechtigungen auf Zeilenebene/Kapselung... 507 10.4 STOP! MySQL absichern... 510 10.4.1 Allgemeine Sicherheitshinweise der gewissenhafte Administrator 510 10.4.2 Zugang beschränken oder verschlüsseln... 515 10.4.3 MySQL im Web... 520 10.5 Zusammenfassung... 525 Teil III Programmierung 11 Gespeicherte Programme und Events 529 11.1 Wozu gespeicherte Programme?... 529 11.1.1 Arten von gespeicherten Programmen... 531 11.1.2 MySQL Stored Program Language... 532 11.1.3 Grundlegendes Arbeiten mit gespeicherten Programmen... 532 11.1.4 Kommentare... 535 11.1.5 Datentypen... 536 11.1.6 Sicherung und Backup gespeicherter Programme und Sichten... 537 11.1.7 Rechte von gespeicherten Programmen... 538 11.1.8 Einschränkungen... 539 11.2 Gespeicherte Prozeduren... 539 11.2.1 Erzeugung gespeicherter Prozeduren... 540 11.2.2 Erweiterte Einstellungen beim Erzeugen von gespeicherten Prozeduren... 542 11.2.3 Verwendung gespeicherter Prozeduren... 543 11.2.4 Löschen von gespeicherten Prozeduren... 544 11.2.5 Bearbeiten gespeicherter Prozeduren... 544 11.2.6 Parameter... 546 11.2.7 Ergebnismengen... 550 11.3 Gespeicherte Funktionen... 551 11.3.1 Erzeugen von gespeicherten Funktionen... 552 11.3.2 Erweiterte Optionen beim Erzeugen von gespeicherten Prozeduren... 554 11.3.3 Aufrufen gespeicherter Funktionen... 556 11

Inhalt 11.3.4 Bearbeiten gespeicherter Funktionen... 558 11.3.5 Einschränkungen... 558 11.4 Informationen zu bestehenden gespeicherten Programmen (Metadaten) 559 11.5 Programmieren in MySQL... 563 11.5.1 BEGIN-/END-Blöcke... 563 11.5.2 Variablen... 565 11.5.3 Ablaufsteuerung und konditionale Anweisungen... 571 11.5.4 Schleifen... 579 11.5.5 Cursors... 583 11.5.6 Handler... 590 11.5.7 Selbstdefinierte Fehlermeldungen mit SIGNAL... 599 11.5.8 Verschachtelte Cursors und ihre Handler... 604 11.5.9 Temporäre Tabellen... 607 11.5.10 Rekursion... 608 11.5.11 Transaktionen... 611 11.6 Trigger... 613 11.6.1 Trigger erstellen... 613 11.6.2 Löschen und Bearbeiten von Triggern... 618 11.6.3 Informationen über bestehende Trigger (Metadaten)... 618 11.6.4 Einschränkungen... 621 11.7 Events... 622 11.7.1 Event-Scheduler... 623 11.7.2 Erzeugung von Events... 624 11.7.3 Löschen und Bearbeiten von Events... 628 11.7.4 Informationen zu bestehenden Events (Metadaten)... 629 11.7.5 Sicherheit, Rechte und Einschränkungen... 631 11.8 Sichten (Views)... 632 11.8.1 Erzeugung und Verwenden von Sichten... 633 11.8.2 Updates auf Sichten... 635 11.8.3 Löschen und Bearbeiten einer Sicht... 636 11.8.4 Informationen zu bestehenden Sichten (Metadaten)... 637 11.9 Zusammenfassung... 638 12 Softwareentwicklung mit MySQL 639 12.1 Konnektoren/Programmiersprachen... 641 12.1.1 Allgemeines... 641 12.1.2 ODBC... 646 12

Inhalt 12.1.3 Java, JDBC und Connector/J... 650 12.1.4 PHP,»mysqli«,»PDO_MYSQL«... 655 12.1.5.NET... 659 12.1.6 Perl,»DBD:mysql«... 664 12.1.7 Ruby... 667 12.1.8 Python... 669 12.1.9»node-mysql«, Node.js serverseitiges JavaScript... 671 12.2 Zusammenfassung... 674 13 NoSQL mit MySQL 675 13.1 Not Only SQL NoSQL... 675 13.2 Skalierung und Verteilung: ACID vs. BASE... 677 13.3 Mit Hochgeschwindigkeit ins Herz: MySQL öffnet sich»memcached«-benutzern... 678 13.3.1 Die Integration von Memcached in die MySQL-Architektur... 679 13.3.2 Grundlagen des Memcache-Protokolls... 680 13.3.3 Memcached zur Verwendung mit InnoDB installieren... 681 13.3.4 Die Verbindung testen... 683 13.3.5 Memcached und InnoDB verbinden... 684 13.3.6 Lesen und Schreiben von Daten mittels Memcached... 687 13.3.7 Replikation und Memcached... 689 13.3.8 Sicherheit gegen Geschwindigkeit... 689 13.3.9 Weitere Einstellungen... 690 13.4 Zusammenfassung... 692 Teil IV Anhang 14 Referenz 695 A.1 Datentypen... 696 A.2 Datendefinition, Datenmanipulation und Abfragen... 698 A.3 Index... 704 A.4 Boolesche Operatoren... 705 A.5 Mathematische Funktionen... 706 A.6 Zeit- und Datumsfunktionen... 708 13

Inhalt A.7 String-Funktionen... 714 A.8 Transaktionen... 722 A.9 Sperren... 724 A.10 Sichten (Views)... 725 A.11 MySQL-Client... 726 A.12 Gespeicherte Prozeduren... 727 A.13 Gespeicherte Funktionen... 729 A.14 Triggers... 731 A.15 Events... 731 A.16 Kontrollfluss-Elemente... 733 A.17 Variablen in Programmen... 735 A.18 Cursors... 736 A.19 Handlers... 737 A.20 Volltextsuche... 739 A.21 Replikation... 740 A.22 GIS-Funktionen... 742 A.23 Partitionierung... 743 A.24 Administrationsaufgaben... 747 A.25 Benutzerverwaltung und Sicherheit... 752 A.26 Wartungsarbeiten... 755 A.27 Backups, Wiederherstellung und Logfiles... 757 A.28 Import und Export... 759 A.29 Benchmarking, Monitoring und Profiling... 760 A.30 Query-Cache... 762 A.31 Plugins... 762 A.32 Storage-Engines... 763 A.33 Hilfe, Warnungen und Fehler... 766 A.34 Fehlernummern und SQL-States... 767 A.35 Escape-Sequenzen... 769 A.36 Zeichensätze und Sortierfolgen (Character Sets und Collations)... 770 Index... 771 14

Vorwort Da Sie dieses Buch aufgeschlagen haben, haben Sie mit großer Wahrscheinlichkeit bereits von MySQL gehört. In diesem Buch geht es um eines der erfolgreichsten und weitverbreitetsten Open-Source-Softwareprojekte der Welt. MySQL ist ein vollwertiges Datenbankmanagementsystem, das nicht nur im Allgemeinen kostenlos für alle Betriebssysteme verfügbar ist, es ist zudem relativ einfach zu bedienen. Doch wozu dann ein eigenes Buch, wenn die Software doch so einfach zu bedienen ist? Der angemerkte einfache Umgang mit MySQL setzt voraus, dass Sie wissen, wo Sie welche Einstellungen vornehmen müssen. Nun könnten Sie sich durch die frei verfügbare englischsprachige Dokumentation im Umfang von mehreren Tausend Seiten quälen. Oder Sie wählen die smarte Alternative: Sie haben sich richtig entschieden! Schließlich lesen Sie bereits dieses Buch; herzlichen Glückwunsch! Damit Sie so schnell wie möglich sicher im Umgang mit MySQL werden, bietet dieses Buch ein umfangreiches und realistisches Praxisbeispiel, anhand dessen wir die wichtigsten Kniffe, Tipps und Tricks erklären. Für wen ist dieses Buch gedacht? MySQL ist ein sehr weit verbreitetes Datenbanksystem, das in den verschiedensten Szenarien erfolgreich eingesetzt werden kann. Wie Sie das meiste aus MySQL herausholen, lernen Sie in diesem Buch. Vorwiegend richtet sich das vorliegende Administrationshandbuch an Einsteiger und Fortgeschrittene. Aber gleichgültig, ob Sie Datenbanken-Einsteiger sind oder schon Erfahrungen mit MySQL gesammelt haben, ja sich vielleicht sogar schon zu den Profis zählen können: In diesem Buch werden Sie viel Neues lernen! Dasselbe gilt natürlich auch für Umsteiger von anderen Datenbankmanagementsystemen. Das Besondere an diesem Buch ist das umfassende Praxisbeispiel, anhand dessen wir die Themen aller Kapitel und die darin enthaltenen Befehle genau erläutern. Wir sind der Meinung, dass ein interessantes und reales Praxisbeispiel besser ist als eine öde Schritt-für-Schritt-Anleitung. Das bedeutet jedoch auch, dass Sie an manchen Stellen selbst gefordert sind, da wir eine gewisse Eigeninitiative voraussetzen. Getreu dem Motto learning by doing werden Sie MySQL immer besser kennenlernen, indem Sie die Entwicklung des vorgestellten Szenarios selbst nachvollziehen werden. Wir sind überzeugt, dass Sie so viel mehr lernen und sicherer im Umgang mit dem Datenbanksystem MySQL werden, als wenn Sie zu sehr an die Hand genommen werden. Doch keine Bange, auf der mitgelieferten DVD finden Sie die notwendigen Daten, um jederzeit neu anfangen zu können, falls Sie sich mal einen gröberen Schnitzer leisten. 15

Vorwort Konventionen In diesem Buch gibt es ein paar wenige Konventionen, die die Lesbarkeit erhöhen. So werden sämtliche Befehle durch dieses Format hervorgehoben, damit Sie schneller erkennen, dass es sich um eine Anweisung für den MySQL-Server bzw. für Ihr Betriebssystem handelt. Eingaben, die für den MySQL-Server gedacht sind, tätigen Sie mit dem sogenannten MySQL-Client, einem Kommandozeilen-Programm, in das Sie die Befehle eintippen, um mit dem Server zu interagieren. Alle kürzeren oder längeren Befehlssequenzen sind in Listings als Code-Auflistungen angegeben. Jene Befehle, die Sie innerhalb dieses Clients eingeben müssen, werden durch die Eingabeaufforderung (englisch prompt) mysql> hervorgehoben. Oftmals können die Eingaben für den Client aus Platzgründen nicht in einer Zeile eingegeben werden. Ein solcher Zeilenumbruch wird durch diesen Pfeil -> dargestellt. Dadurch wird ausgedrückt, dass dieser Befehl noch nicht abgeschlossen ist und daher noch fortgesetzt wird. Diese Pfeile dürfen Sie nicht selbst eingeben. Der MySQL-Client schreibt diese Pfeile selbstständig nach einem Zeilenumbruch. In Listing 1 sehen Sie ein Beispiel für das Format, das wir in diesem Buch für MySQL-Befehle verwenden. mysql> SELECT vorname, nachname FROM passagier -> WHERE passnummer = 'P137884'; Listing 1 Ein MySQL-Befehl Die MySQL-Befehle selbst sind immer in GROSSBUCHSTABEN gehalten, damit Sie sie leichter von Benutzereingaben unterscheiden können. Jene Kommandos, die Sie in der Kommandozeilenumgebung eingeben müssen, werden durch den Linux- Prompt bash# eingeleitet. Dadurch sehen Sie auf den ersten Blick, für welche Umgebung der Befehl vorgesehen ist. Listing 2 zeigt ein Beispiel für einen Konsolenbefehl. bash# mysqladmin ping Listing 2 Ein Konsolenbefehl An manchen Stellen im Buch sehen Sie das neben diesem Absatz gezeigte Symbol. Damit kennzeichnen wir diejenigen Befehle, die mit MySQL 5.6 wichtige Unterschiede in der Bedeutung erhalten haben. Die so markierten Befehle sind übrigens nicht zwangsläufig veraltet. In der Regel sind sie nach wie vor gültig, haben aber beispielsweise eine geänderte Semantik, die Sie beachten müssen. Besondere Formatierungsübereinkünfte gelten auch für die Referenz am Ende dieses Buches, in der wir alle besprochenen Befehle und Kommandos auflisten. 16

Vorwort Der Aufbau dieses Buches Dieses Buch ist in vier Teile gegliedert: in»erste Schritte«,»MySQL-Administration«,»Programmierung«und den»anhang«. Der Teil»Erste Schritte«enthält unter anderem ein Schnellstart-Tutorial, in dem Sie die wichtigsten Befehle kennenlernen, um mit MySQL grundlegend arbeiten zu können. Nach diesem Kapitel sind Sie in der Lage, die Datenbanken selbst samt ihren Tabellen, in denen letztendlich die Daten gespeichert werden, anzulegen und zu verwalten. Außerdem stellt dieser Teil das praxisnahe Flughafenszenario vor, das sich durch das gesamte Buch zieht und einen nachvollziehbaren Rahmen für die unterschiedlichsten Aufgaben bietet. Sie lernen in diesem Abschnitt, wie Sie die Anforderungen an ein Datenbanksystem herausarbeiten und umsetzen. Auf der DVD zu diesem Buch finden Sie einen sehr umfangreichen Datensatz, mit dem Sie auf realistische Weise den Umgang mit MySQL testen können. Dieses Daten-Set für das Flughafenszenario enthält mehrere Millionen Datensätze und eignet sich daher gut für Tests und Optimierungsmaßnahmen. Der zweite Teil,»MySQL-Administration«, beschäftigt sich mit der Installation und der Wartung von MySQL. Hier erfahren Sie nicht nur, wie Sie MySQL optimal an Ihre Anforderungen anpassen, sondern auch, wie Sie MySQL aktuell halten. Des Weiteren lernen Sie mit der Replikation eine interessante Möglichkeit kennen, MySQL im Hochverfügbarkeitsbereich und somit auch im High-Performance-Bereich einzusetzen. Wie Sie Ihre Queries möglichst effizient gestalten, lernen Sie ebenfalls in diesem Teil. Ein sehr wichtiger Aspekt dieses Teils ist die Benutzerverwaltung und das Absichern Ihrer MySQL-Installation. Im dritten Teil,»Programmierung«, werden Sie lernen, mit MySQL zu programmieren, um so auch spezielle Anforderungen geschwindigkeitsoptimiert umzusetzen. Mit gespeicherten Programmen lassen sich viele Probleme sehr elegant lösen. Da MySQL in den meisten Fällen als Daten-Backend für Software-Programme dient, lernen Sie hier ebenfalls, wie Sie mit den unterschiedlichsten Programmiersprachen auf den Datenschatz einer MySQL-Installation zugreifen. Abgerundet wird dieses Buch durch eine umfangreiche Referenz im vierten und letzten Teil, in der Sie alle im Buch besprochenen Befehle samt Syntax und Kurzbeschreibung vorfinden. Diese Befehle sind übersichtlich nach Themen geordnet, wodurch Sie sich schneller zurechtfinden werden. Natürlich enthält dieses Buch auch einen Index, in dem Sie alle wichtigen Begriffe und Befehle nachschlagen können und somit schnell finden werden. 17

Vorwort Die DVD zum Buch Die beiliegende DVD enthält nicht nur alle Versionen der aktuellen, stabilen Version 5.6 von MySQL für Windows, Mac und Linux, sondern auch im Buch vorgestellte Skripte und Tools, die Sie sofort einsetzen können. Im Verzeichnis FlughafenDB finden Sie die Beispieldatenbank mit dem Flughafenszenario. Sie bildet das Herzstück dieses Buches, denn sie ermöglicht es Ihnen, alle Befehle, Tricks und Tools sofort anhand einer vollwertigen Datensammlung auszuprobieren. Die darin enthaltenen Flug-, Passagier- und Buchungsdaten sind möglichst realistisch gehalten. Sie finden zwei Versionen der Daten des Flughafenszenarios auf dieser DVD. Sie unterscheiden sich im Umfang der enthaltenen Daten. Während Sie die kleine Ausgabe sehr schnell importieren können, dient die große Version mit einigen Millionen Datensätzen besonders zum Testen von Optimierungen und Tuning-Maßnahmen. Wie Sie diese Daten importieren, erfahren Sie in Abschnitt 4.2,»Die Beispieldatenbank auf der Buch-DVD«. Die Webseite zum Buch Unter der Web-Adresse www.mysqladmin.at finden Sie aktuelle Informationen rund um dieses Buch, Kontaktmöglichkeiten und Neues rund um MySQL. Vorwort zur zweiten Auflage Am 5. Februar 2013 verkündete Oracle stolz die Freigabe der aktuellen Version MySQL 5.6 für den produktiven Einsatz. Seit wir an der ersten Ausgabe dieses Buches gearbeitet haben, sind beinahe zwei Jahre vergangen, und es hat sich viel getan. Damals haben wir in unseren Beispielen die Version 5.6.2 verwendet, in dieser Ausgabe werden wir uns auf das aktuelle Release 5.6.12 konzentrieren. Diese Developer-Version MySQL 5.6.2 war in der letzten Ausgabe noch nicht offiziell für den professionellen Einsatz freigegeben. Inzwischen ist diese Vorsichtsmaßnahme jedoch nicht mehr gültig, und nun können Sie auch in kritischen Umgebungen alle neuen Features einsetzen. Der Versionssprung von MySQL 5.5 auf 5.6 umfasst viele Neuigkeiten, die wir Ihnen in diesem Buch vorstellen möchten. Zu den bemerkenswertesten Neuerungen zählen vor allem deutliche Performancesteigerungen vor allem in Zusammenhang mit der InnoDB Storage Engine, ein noch schlauerer Optimierer, bessere Skalierbarkeit und eine erhöhte Sicherheit. Mit der aktuellen Version 5.6.12 wagt MySQL sich in neue Gefilde und entert den Bereich der NoSQL-Datenbanken. Dem Schlagwort NoSQL sind Sie sicher schon begegnet, es ist schließlich in aller Munde. NoSQL (Not Only SQL) bezeichnet ein sehr flexibles Datenbankmodell, das insbesondere auf Ska- 18

Vorwort lierung ausgelegt ist. Details dazu finden Sie in Teil III,»Programmierung«, und dort in Kapitel 13,»NoSQL mit MySQL«. Die Autoren Stefan Pröll (Dipl.-Ing.), Jahrgang 1983, studierte in Innsbruck und Madrid Informatik und spezialisierte sich dabei im Masterstudiengang auf Datenbanken und Informationssysteme. Während seines Studiums absolvierte er mehrere Praktika im In- und Ausland bei internationalen Organisationen und Unternehmen im Bereich Wissenschaftskommunikation, Webentwicklung und Datenbankadministration. Seit 2009 lebt er in Wien, wo er Wirtschaftsingenieurswesen an der Technischen Universität Wien als zweites Masterstudium studiert und zusätzlich im Bereich der Linux-Serveradministration bei privaten Unternehmen gearbeitet hat. Seit 2011 ist er wissenschaftlicher Mitarbeiter und Doktorand bei einem auf IT-Sicherheit spezialisierten Forschungszentrum. Dort beschäftigt er sich mit aktuellen Fragen in den Bereichen Digital Preservation, e-science und Business Processes. In seiner Freizeit treibt er gelegentlich Sport, hört leidenschaftlich gerne Soul-, Funk- und Jazzmusik, geht ins Theater und reist, wann immer die Zeit es zulässt. Dr. Eva Zangerle studierte Informatik an der Universität Innsbruck in Österreich. Dabei spezialisierte sie sich während ihres Masterstudiums auf den Bereich der Datenbanken. In ihrer Masterarbeit entwickelte sie neue Techniken, um komplexe Datenstrukturen, wie graphbasierte Wissensdarstellungen, in Datenbanken optimiert zu verarbeiten. Seit 2007 arbeitet sie als wissenschaftliche Mitarbeiterin am Lehrstuhl für Datenbanken und Informationssysteme am Institut für Informatik der Universität Innsbruck. Dabei beschäftigt sich ihre Forschung und Lehre mit der Entwicklung von neuen Methoden zur Personalisierung sogenannten Recommender- Systemen und der damit verbundenen intelligenten Datenspeicherung. Die von ihr entwickelten Techniken und Verfahren wurden bereits auf zahlreichen internationalen Konferenzen veröffentlicht. Neben der Forschung und Lehre von neuartigen Datenbanksystemen setzt Eva Zangerle aber bereits seit 2002 auf MySQL, mit dem sie zahlreiche erfolgreiche Projekte im universitären Umfeld realisierte. Wolfgang Gassler (Dipl.-Ing.) absolvierte das Informatikstudium an der Universität Innsbruck in Österreich und ist seit 2007 wissenschaftlicher Mitarbeiter in der Forschungsgruppe Datenbanken und Informationssysteme an der Universität Innsbruck. Er beschäftigt sich in seiner Forschung mit neuen Datenbanktechnologien und neuartigen Verfahren zur optimierten Wissensspeicherung und Analyse. Seit 1999 arbeitet er mit dem Datenbanksystem MySQL damals in der Version 3.21 und der zu dieser Zeit in Tirol/Österreich beinahe unbekannten Programmiersprache 19

Vorwort PHP in der Version 3. Seit dieser Zeit, als einer der ersten PHP-Entwickler in Tirol, ist er in zahlreichen Softwareprojekten vorrangig in den Bereichen Web und Mobile bis heute als Entwicklungsleiter oder in beratender Funktion tätig. Die Verbindung zwischen Forschung und Wirtschaft ist ihm ein großes Anliegen, und so arbeitet er auch heute noch neben seiner wissenschaftlichen und lehrenden Tätigkeit an der Universität Innsbruck an Projekten in der Wirtschaft. 20

Kapitel 2 Datenbankmodellierung 2 Dieses Kapitel behandelt die Grundlagen der Datenbankmodellierung. Sie lernen, wie Sie jene Anforderungen, die Sie an Ihre Datenbankanwendung stellen, identifizieren, abstrahieren und sowohl im Modell als auch in der Datenbank umsetzen können. Am Anfang einer jeden Datenbankanwendung steht immer der Entwurf des zugrundeliegenden Datenbankmodells. In diesem Kapitel lernen Sie die notwendigen Schritte kennen, mit denen Sie ein Konzept in ein passendes Datenbankmodell umsetzen. Sie werden anhand eines praktischen Anwendungsbeispiels sehen, wie Sie die notwendigen Phasen erfolgreich durchlaufen, und so alle Aspekte, von den Vorüberlegungen bis hin zum konkreten Datenbankenschema in MySQL, nachvollziehen können. 2.1 Einführung in den Datenbankentwurf Datenbanken werden zur Lösung und Unterstützung von vielschichtigen Aufgaben und Problemen eingesetzt. Überall dort, wo viele Daten anfallen, die geordnet und strukturiert aufbewahrt und zuverlässig verfügbar sein müssen, werden diese Systeme verwendet. Denken Sie beispielsweise an die Personalverwaltung, die Buchhaltung oder auch an die Lagerlogistik. Datenbanken sind dazu gedacht, Vorgänge der realen Welt in einem Schema abzubilden, mit Hilfe dessen bestimmte Aufgaben umgesetzt werden können. MySQL ist ein sogenanntes relationales Datenbanksystem, für das bestimmte Anforderungen gelten, wie wir sie in Kapitel 5,»Architektur«, ausführlich darstellen. Sofern wir es nicht anders betonen, handelt es sich auch bei allgemeinen Beschreibungen immer um diesen Datenbankentyp. Damit Datenbanken der Aufgabe der Abbildung gerecht werden, müssen kleine Ausschnitte der Umwelt abstrahiert und in eine einheitliche Darstellungsform umgewandelt werden. Unter diesem Vorgang der Abstraktion versteht man das Modellieren eines Prozesses der realen Welt mit Hilfe eines Datenbankenmodells. Ein solcher Ausschnitt der Umwelt ist beispielsweise die Adress- und Mitgliedsverwaltung eines Vereins, das Management eines Unternehmens oder das Betreiben eines Newsportals im Web. Der Datenbankentwurf beschäftigt sich also mit der Frage, wie ein Ausschnitt der Wirklichkeit in einer Datenbank abgebildet werden kann. 49

2 Datenbankmodellierung Die Schwierigkeit der Abstraktion besteht darin, alle relevanten Eigenschaften, die einen bestimmten Ausschnitt der Wirklichkeit ausmachen, zu identifizieren und in ein konzeptionelles Schema zu übertragen. Wie der Name andeutet, beschreibt ein konzeptionelles Schema die zugrundeliegende Idee, nicht jedoch die konkrete Ausprägung eines Objekts der realen Welt. Abstraktion ist daher immer eine Verallgemeinerung und dient der Vereinfachung komplexer Sachverhalte. Der Datenbankentwurf besteht aus mehreren Phasen, die für die Modellierung notwendig sind. Diese stellen wir nun vor. 2.1.1 Anforderungsanalyse Die Grundlage eines soliden Modellentwurfs ist es, die Anforderungen und den eigentlichen Sinn und Zweck des Einsatzes eines Datenbankmanagementsystems zu analysieren und sich klarzumachen, welche Aspekte eines Ausschnitts der realen Welt überhaupt abgebildet werden müssen, also welche Ausschnitte relevant für die Modellierung in einer Datenbank sind. Oftmals sind diese Abbildungen Geschäftsprozesse eines Unternehmens, die abstrahiert werden sollen. Diese Geschäftsprozesse werden in den allermeisten Fällen durch eine Software abgebildet, die den Benutzer bei seiner täglichen Arbeit unterstützt. Die Datenbank selbst ist Teil dieses Softwaresystems und speichert die abstrahierten Objekte der abgebildeten Modellwelt ab. Unter Objekten versteht man in diesem Kontext jene Gegenstände oder Sachverhalte, die durch den Vorgang der Abstraktion mittels einer allgemeineren Beschreibung im Datenbanksystem gespeichert werden sollen. Diese Objekte sind für die Software dauerhaft verfügbar. Die Software bzw. der Anwender können neue Objekte anlegen, vorhandene verändern und nicht mehr benötigte Daten aus der Datenbank löschen. Damit diese Objekte adäquat umgesetzt werden können, müssen sie vom Benutzer bzw. von den Softwareentwicklern in einer Art und Weise beschrieben werden, die vom Datenbankmanagementsystem verstanden wird. Zuallererst müssen Sie daher, gemeinsam mit Ihren Mitarbeitern und Kollegen, Informationen sammeln, welche Anforderungen genau Ihr Datenbankmanagementsystem umsetzen muss. Innerhalb dieses Prozesses erstellen Sie ein strukturiertes Dokument, in dem Sie alle Funktionen und Methoden festhalten, die Ihr System bereitstellen soll. Wichtig ist hierbei, dass all die Punkte, die Sie sich notieren, nachvollziehbar und vollständig sind. Ob Sie dabei spezielle Tools, Mindmaps, Karteikarten oder ein gewöhnliches Word-Dokument einsetzen, bleibt ganz allein Ihnen überlassen, solange Sie alle Aspekte sorgfältig spezifizieren. Wenn Sie sich an das sehr einfach gehaltene Motivationsbeispiel aus dem ersten Kapitel erinnern, dann muss ein Datenbanksystem die Anforderungen der Vereinsverwaltung unterstützen. Dazu müssen die notwendigen Objekte abstrahiert werden. 50

2.1 Einführung in den Datenbankentwurf In dem Beispiel handelt es sich bei diesen Objekten um die Daten der Vereinsmitglieder. Die Datensätze müssen, neben weiteren Informationen, mindestens den Namen und das Geburtsdatum der Mitglieder abbilden können. Des Weiteren muss das System grundlegende Funktionen wie das Einfügen, Bearbeiten und Löschen von Mitgliedsdaten beherrschen. 2 Die Beschreibung dieser und weiterer Anforderungen kann rein textuell, auch ohne Formalismus erfolgen. Wichtig ist nur, dass Sie all jene Informationen festhalten, die Ihr Datenbanksystem später aufnehmen und verarbeiten soll. Um diesen Vorgang an einem etwas komplexeren Beispiel zu demonstrieren, stellen wir im späteren Teil dieses Kapitels das Szenario einer Flughafenverwaltung vor, anhand dessen Sie diesen Vorgang nachverfolgen können. 2.1.2 Konzeptioneller Datenbankentwurf Der nächste Schritt der Datenbankmodellierung ist der konzeptionelle Datenbankentwurf. Ziel dieser Phase ist es, die während der Anforderungsanalyse gewonnenen Erkenntnisse unabhängig von der konkreten Implementierung in einem Datenbankentwurf darstellen zu können. Die im vorherigen Schritt gewonnenen Informationen über die gewünschten Fähigkeiten des Datenbanksystems werden im konzeptionellen Entwurf oder Design mit Hilfe eines Modells genauer beschrieben und in einer unmissverständlichen Form spezifiziert. Auch hier ist die eigentliche Wahl des Datenbanksystems, das letztendlich zum Einsatz kommen wird, noch irrelevant, da ein solches Modell unabhängig von der konkreten Umsetzung ist. In diesem Schritt übersetzen Sie die in der Anforderungsanalyse erstellte Liste von Aufgaben und Fähigkeiten, die Ihr Datenbankmanagementsystem umsetzen muss, in ein standardisiertes Datenbankmodell. Um eine einheitliche Beschreibung der gewonnenen Anforderungen zu ermöglichen, werden unterschiedliche Modellierungsverfahren eingesetzt. Diese Verfahren erlauben eine genauere Beschreibung der mit Hilfe des Datenbanksystems zu lösenden Aufgaben. Das bekannteste dieser Modelle ist sicherlich das Entity-Relationship- Modell (ER-Modell), das wir im Laufe des Kapitels noch detailliert beschreiben werden. Sprechende Namen Wenn Sie während des Modellentwurfs beginnen, Ihre Entitäten und deren Eigenschaften festzulegen, sollten Sie bereits hier»sprechende Namen«für alle Bezeichner wählen. So erkennen andere Mitarbeiter und Kollegen bereits am Namen einer Datenbank und an den Bezeichnern einer Tabelle, einer Funktion oder Variablen, was das betreffende Objekt für eine Funktion erfüllt. Vermeiden Sie auf jeden Fall 51

2 Datenbankmodellierung nichtssagende Bezeichnungen wie»tabelle1«oder»testdb«, denn Sie werden in wenigen Wochen nicht mehr wissen, was die betreffende Tabelle bzw. Datenbank ursprünglich bezwecken sollte. Wählen Sie daher aussagekräftige Bezeichner, auch wenn das eventuell mehr Schreibarbeit bedeutet. Entscheiden Sie sich außerdem, ob Sie für Ihre Bezeichner und Kommentare die englische oder deutsche Sprache wählen möchten. Mischen Sie aber keine Sprachen, denn das führt zu Missverständnissen und ist verwirrend. Apropos Kommentare: Verwenden Sie Kommentare so oft und ausführlich wie möglich! 2.1.3 Logischer Datenbankentwurf Ist das grundlegende Modell aus dem konzeptionellen Entwurf fertiggestellt, dann folgt als nächste Phase der logische Datenbankentwurf. Darunter versteht man die Modellierung des zuvor entworfenen Schemas mit Hilfe jenes Datenbankmanagementsystems, das zum Einsatz kommen soll. In diesem Fall ist das MySQL als DBMS und SQL als Data Definition Language (DDL). Ab diesem Modellierungsschritt ist der Modellentwurf nicht mehr unabhängig von der konkreten Modellierung, da hier die Entscheidung für ein konkretes System in diesem Fall MySQL bereits gefallen ist. In dieser Entwurfsphase erfolgt auch die Umsetzung in das relationale Datenmodell, das Gegenstände aus der realen Welt in Tabellen und Beziehungen zwischen Tabellen, sogenannte Relationen, übersetzt. Hier erfolgt also die Übersetzung des unabhängigen ER-Modells in jene Sprache, die von MySQL verstanden werden kann. Dieser Transformationsschritt vom konzeptionellen Modell in das logische Modell kann entweder manuell oder automatisch durch Tools geschehen. In diesem Buch erfolgt diese Umwandlung manuell, damit wir auf die Feinheiten in diesem Schritt eingehen können. Mehr dazu erfahren Sie in Abschnitt 2.3,»Das relationale Datenbankmodell«. 2.1.4 Physischer Datenbankentwurf In der vierten und letzten Phase des Datenbankentwurfs geht es um den physischen Datenbankentwurf und damit um die Art und Weise, wie die Daten konkret auf der Hardware des Datenbankservers durch das DBMS gespeichert werden. Diese Phase dient unter anderem der Performancesteigerung, indem die Besonderheiten von Daten- und Indexstrukturen sowie die Eigenheiten des Serverbetriebssystems und der Hardware analysiert und ausgenutzt werden, um die Leistung zu erhöhen. Details zum Datenbanktuning finden Sie in Kapitel 9,»Anfrageoptimierung«. 52

2.1 Einführung in den Datenbankentwurf 2.1.5 Der Datenbankentwurf im Überblick Die vier Phasen des Datenbankentwurfs lauten: 1. Anforderungsanalyse 2 2. konzeptioneller Entwurf 3. logischer Entwurf 4. physischer Entwurf Diese vier Schritte müssen nicht streng nacheinander durchlaufen werden. Vielmehr handelt es sich dabei um ein iteratives Vorgehensmodell, bei dem Sie immer wieder in bereits durchlaufene Phasen zurückspringen und Ihr Modell weiter verfeinern können. Je weiter der Entwicklungsprozess jedoch fortgeschritten ist, desto aufwendiger werden diese Änderungen. Daher sollten Sie jeder Phase besondere Aufmerksamkeit widmen, um zeit- und kostenintensive Überarbeitungen zu vermeiden. Natürlich müssen Sie insbesondere bei der Anforderungsanalyse und beim konzeptionellen Design intensive Rücksprache mit Ihrem Team halten, damit Sie alle Aspekte berücksichtigen können, die Ihnen selbst vielleicht verborgen sind. In Abbildung 2.1 sehen Sie diese vier Phasen schematisch dargestellt. Anforderungsanalyse Konzeptioneller Entwurf Logischer Entwurf Physischer Entwurf Abbildung 2.1 Die vier Entwurfsphasen 53

2 Datenbankmodellierung 2.2 Ein konkretes Beispiel: Flughafenverwaltung Um die Begriffe, die für das Verständnis und das Design von Datenbanken notwendig sind, besser erklären zu können, ziehen wir im Folgenden ein praxisnahes Beispiel heran. Es dient dazu, die Fachtermini einzuführen und gleich anhand einer konkreten Problemstellung zu erklären. Als Beispiel wird uns die Verwaltung eines Flughafens mit Hilfe einer MySQL-Datenbank dienen. Im Laufe der folgenden Kapitel werden wir dieses Beispiel immer weiter ausbauen und verfeinern. Stellen Sie sich die Verwaltung eines großen internationalen Flughafens vor. Flughäfen sind die Drehscheiben des internationalen Personen- und Güterverkehrs und aus unserem Alltag nicht mehr wegzudenken. Es handelt sich dabei um ein komplexes Unternehmen, das verschiedenste Geschäftsregeln umsetzen muss, um erfolgreich und sicher wirtschaften zu können. Dazu gehören neben verschiedensten Geschäftsprozessen, wie der Verwaltung der Mitarbeiter, das Ticket- und Buchungssystem, die Protokollierung aller Starts und Landungen und vieles mehr, so auch sämtliche Informationsflüsse zwischen diesen Systemen. Um dieser Fülle an Informationen Herr zu werden, werden zu einem Großteil Datenbanksysteme eingesetzt, die diese Daten in ihrem Datenbankenschema speichern. Dieses Datenbankenschema legt demnach die genaue Struktur fest, also welche Eigenschaften in welcher Form gespeichert werden und wie die verschiedenen Elemente eines Modells zueinander in Beziehung stehen. Stellen Sie sich vor, in Ihrer Stadt wird ein neuer Flughafen gebaut. Er soll zukünftig als die zentrale Achse für den aufstrebenden Tourismus, die Geschäftswelt und für den Güterverkehr Ihrer Region dienen. Ein derart komplexes Unternehmen wie ein internationaler Flugplatz ist auf eine effiziente und leistungsfähige IT-Infrastruktur angewiesen, um den vielen Aufgaben gerecht zu werden. Sie als Datenbankdesigner und Datenbankadministrator in Personalunion werden mit der Umsetzung des Datenbanksystems für diesen Flughafen betraut. Sogleich machen Sie sich daran, die Anforderungen für eine Flughafenverwaltungs-Datenbank herauszuarbeiten. Der Flugplatz ist nicht nur wichtige Drehscheibe, sondern auch ein beliebter Arbeitgeber in der Region, der für viele Angestellte einen sicheren Arbeitsplatz bereitstellt. Ihr Design muss daher neben den Aspekten des Flugbetriebes auch die Anforderungen einer Personalverwaltung erfüllen, denn die Mitarbeiter sind verschiedenen Aufgaben wie Verwaltung, Bodenpersonal, Luftpersonal oder Sicherheitspersonal zugeordnet. Auch deren Daten sollen mit Ihrem Datenbanksystem verwaltet werden. Für das Management der komplexen Abläufe an einem Flughafen müssen Sie selbstverständlich alle Bereiche abdecken, die mit dem Tagesgeschäft an sich den Flügen zusammenhängen. Daher müssen nicht nur die Flüge, die den Flughafen anfliegen, sondern auch sämtliche startenden Maschinen erfasst werden. Doch damit nicht genug: Um die Start- und Landezeiten an den internationalen Flugverkehr anpassen 54

2.3 Das relationale Datenbankenmodell und optimieren zu können, muss in Ihrer Datenbank ein vollständiger Flugplan vorhanden sein. Auch dieser wird mit Ihrem System verwaltet. Die Flüge werden ebenfalls mit der Datenbank verwaltet, indem jeweils eine eindeutige Flugnummer, Startund Landeflughafen und weitere Details festgehalten werden. 2 An dem Flughafen operieren mehrere Fluglinien, die diesen Flugplatz als Heimatflughafen verwenden, von dem aus sie ihre Flüge abwickeln. Dazu gehört neben der Verwaltung der Fluglinien natürlich auch ein System für die Erfassung der Flotte jeder Fluglinie. Da Sie den lokalen Flugplatz auch im Internet präsentieren wollen, stellen Sie eine Webseite mit dynamischem Inhalt zur Verfügung, die nicht nur den Flugplatz selbst, sondern auch die einzelnen Flugzeuge der Fluglinien beschreibt. Doch was wäre ein neuer Flughafen ohne Kunden? Daher müssen Sie alle Passagiere samt ihren Daten im System erfassen. Aus diesem Grund ist die Passagierliste ein weiteres zentrales Element für die Verwaltung des Flughafens mit dem Datenbanksystem. Schließlich werden hier sämtliche Daten der Passagiere von Vorname bis E-Mail-Adresse erfasst und geprüft. Diese Passagiere können Flüge buchen, eine wichtige Funktion, die Ihr System unbedingt erfüllen muss. Auch hier müssen Sie viele Details berücksichtigen. Mehr dazu erfahren Sie, nachdem wir das relationale Datenbankenmodell vorgestellt haben. 2.3 Das relationale Datenbankenmodell Das relationale Datenbankmodell ist die theoretische Grundlage von sehr vielen aktuellen Datenbankmanagementsystemen, und es wird auch bei MySQL eingesetzt. Das relationale Datenbankmodell basiert auf der relationalen Algebra, die selbst wiederum auf der mathematisch exakt definierten Mengentheorie aufbaut. Das ist wichtig, denn durch das robuste mathematische Fundament lassen sich die Abfrageoperationen auf beweisbare Operationen der Mengenlehre zurückführen und liefern daher korrekte Ergebnisse. Da detaillierte Kenntnisse des mathematischen Formalismus jedoch nicht zwingend notwendig sind, um gute Datenbankdesigns zu entwickeln, greifen wir nun auf die anschaulichere Darstellung von Relationen als Tabellen zurück. Im Folgenden benutzen wir die Begriffe Tabelle und Relation daher synonym. 2.3.1 Tabellen, Spalten und Zeilen Wie Sie bereits wissen, werden Gegenstände aus der realen Welt in Tabellen nachempfunden. So wie Sie zum Beispiel auch in den Tabellen eines Tabellenkalkulationsprogramms wie Microsoft Office Excel oder OpenOffice Calc zusammengehörige Datensätze erfassen, werden in einer Datenbank ebenfalls Daten in einer Tabelle zusammengefasst, die über gemeinsame Eigenschaften verfügen. Eine Tabelle stellt 55

2 Datenbankmodellierung Daten, die in einem Zusammenhang stehen, zueinander in Beziehung sie setzt sie in Relation zueinander. Eine Datenbank bündelt diese Tabellen zu einer Einheit; eine Tabelle kann nicht für sich allein, ohne Datenbank existieren. Beachten Sie, dass der Begriff der Datenbank nicht gleichbedeutend mit dem Datenbankmanagementsystem MySQL ist, sondern ein Teil dessen. Eine Tabelle ist eine zweidimensionale Datenstruktur, die aus Zeilen und Spalten besteht. Jede Tabelle hat einen eindeutigen Namen, den Bezeichner (englisch identifier). Dieser Bezeichner wird allgemein auch Tabellenname genannt, und er muss innerhalb einer Datenbank eindeutig sein. Zwei Tabellen innerhalb ein und derselben Datenbank dürfen also keinen identischen Bezeichner haben. Eine Tabelle besteht aus mehreren Spalten, die selbst wiederum alle einen eigenen Bezeichner haben. Passnummer Vorname Nachname Geburtsdatum Anschrift P12345678 Ada Betha 28.11.1984 Adresse 1 P12233445 Edgar Zetmann 17.07.1982 Adresse 2 P11122233 Gabriel Deltram 12.01.1983 Adresse 3 P12345123 Jonas Kapper 01.03.1980 Adresse 4 P54321123 Etha Thees 21.08.1979 Adresse 5 Tabelle 2.1 Passagiertabelle Betrachten Sie das obige Beispiel für eine Tabelle im Flughafenszenario (Tabelle 2.1). Diese Tabelle stellt einen Ausschnitt der Passagierliste für einen Flug dar und ist daher ein zentrales Element für die Flugverwaltung. In der ersten Zeile befinden sich die Tabellenüberschriften, die gleichzeitig die Spaltennamen darstellen. Jede dieser Spalten steht für eine Eigenschaft des abzubildenden Objekts in diesem Fall ist dieses Objekt ein Passagier. Diese Eigenschaften werden auch als Attribute bezeichnet, und sie fassen jene Informationen über konkrete Passagiere zusammen, die für die Verwaltung des Flughafens notwendig sind. In diesem Ausschnitt sind diese Attribute die eindeutige Passnummer, der Vor- und der Nachname des Passagiers sowie dessen Geburtsdatum und die Anschrift. Eine Reihe oder Zeile in einer Tabelle steht für die Abbildung eines konkreten Objekts aus der realen Welt innerhalb der Datenbank. Ein Passagier besteht aus der Tabellenperspektive aus Attributen wie Passnummer, Vor- und Nachname und weiteren persönlichen Details eines wirklichen Passagiers. Beispielsweise ist die Zeile mit der Passnummer P12233445, dem Vornamen Edgar und dem Nachnamen Zetmann, dem Geburtsdatum 17.07.1982 sowie der Anschrift ein kompletter Datensatz, der genau einen Passagier beschreibt und im Normalfall genau einmal innerhalb einer Tabelle 56

2.3 Das relationale Datenbankenmodell vorhanden ist, er ist also eindeutig. Datensätze werden auch als Tupel bezeichnet. In diesem konkreten Beispiel wird diese Eindeutigkeit durch den Bezug auf die Passnummer dargestellt, die weltweit genau ein einziges Mal für eine Person vergeben wird. Obwohl zwei Passagiere denselben Namen tragen, werden sie anhand der Passnummer unterschieden. Für Datenbanksysteme ist es von entscheidender Wichtigkeit, dass ein Datensatz eindeutig von allen anderen Datensätzen unterscheidbar ist wie sonst sollten Verwechslungen zwischen verschiedenen Passagieren vermieden werden, wenn nicht jeder einzelne eindeutig identifizierbar wäre. 2 Eine Datenbank selbst umfasst mindestens eine Tabelle. Selbstverständlich kann eine Datenbank nicht nur eine, sondern beliebig viele Tabellen enthalten, solange diese voneinander unterscheidbar sind und daher eindeutige Bezeichner aufweisen. Außerdem muss natürlich genügend Speicherplatz auf dem Server zur Verfügung stehen. Die Darstellung von Daten in Tabellen und deren Zusammenfassung in Datenbanken hat einen triftigen Grund. Wie bei allen Anwendungen in der Informatik ist auch hier die Mathematik nicht weit. Denn auch diese anschauliche Darstellungsform hat ihre Entsprechungen im mathematischen Formalismus. So werden Tabellen als Relationen, Spalten als Attribute und Zeilen als Tupel bezeichnet. Das Ziel dieses Formalismus ist es, mathematische Operationen der Mengenlehre auf die Daten der Tabelle anwenden zu können. Die Konsequenzen dafür sind weitreichend, wenn es zum Beispiel um die Verbindung mehrerer Tabellen (Kreuzprodukt), um Sortierreihenfolgen oder Schlüssel geht. Wann immer es nötig sein sollte, erfahren Sie davon in den jeweiligen Abschnitten. Auch wenn dieses Hintergrundwissen nicht zwingend für den praxisnahen Entwurf von Datenbankenmodellen notwendig ist, wird es Ihnen leichter fallen, wenn Sie den Begriffen hier schon einmal begegnet sind. 2.3.2 Schlüssel identifizieren Datensätze Wie Sie im vorangegangenen Abschnitt bereits erfahren haben, ist es für das Datenbankmanagementsystem unerlässlich, die einzelnen Datensätze voneinander unterscheiden zu können. Daher hat jede Datenbank innerhalb eines DBMS einen eindeutigen Namen, jede Tabelle innerhalb der Datenbank besitzt ebenfalls einen eindeutigen Bezeichner, und auch jede Spalte innerhalb der Tabelle ist eindeutig benannt, sofern diese Spalte nicht als Schlüssel dient. Auch der Inhalt der Tabellen jeder einzelne Datensatz muss eindeutig sein. Nur durch eindeutige Datensätze kann sichergestellt werden, dass es zu keinen Verwechslungen kommt, was im realen Leben zu fatalen Folgen führen kann. Stellen Sie sich vor, jemand mit nicht ganz so weißer Weste hätte zufällig denselben Namen wie Sie, und das System rät nun, wer von Ihnen beiden am Flughafen den Sicherheitscheck passieren möchte... 57

2 Datenbankmodellierung Um solche Fehler zu vermeiden, verlassen sich Datenbanken lieber gar nicht auf»ratespielchen«, sondern setzen auf das Konzept von Schlüsseln. Ein Schlüssel identifiziert die Zeile einer Tabelle eindeutig durch einen oder mehrere Werte. Diese Werte werden so gewählt, dass sie allein oder auch in Kombination nur ein einziges Mal innerhalb einer Tabelle vorkommen können. Dadurch wird sichergestellt, dass es keine Zweifel gibt, welcher Datensatz gemeint sein könnte. Wie wir beim vorherigen Beispiel schon gesehen haben, reicht bei Passagieren die Kombination aus Vorund Nachname nicht aus, um sicherzustellen, dass ein Passagier eindeutig identifizierbar ist. Auch wenn Sie einen ausgefallenen Namen haben, kann Ihnen niemand garantieren, dass nicht noch jemand Eltern mit einem Hang zur kreativen Namensfindung hatte. Anders sieht es mit der Passnummer aus. Da sie von staatlicher Seite nur genau einmal vergeben wird, schützt sie vor Verwechslungen. Die Passnummer ist daher ein Attribut, das als Schlüssel geeignet ist. Somit ist es wichtig, Attribute zu finden, die als Schlüssel eingesetzt werden können, denn dadurch sind Verwechslungen per Definition ausgeschlossen. Zahlen eignen sich für diesen Zweck hervorragend, da sie auch automatisch vergeben werden können. So kann für jeden neuen Eintrag beim Anlegen die nächsthöhere Nummer zugewiesen werden. Aus diesem Grund werden oftmals künstliche Schlüssel vergeben, wie Sie im späteren Tutorial noch sehen werden. Dieser Mechanismus wird sehr häufig eingesetzt, da er leicht zu handhaben ist und von MySQL unterstützt wird. Generell können für Schlüssel nicht nur einzelne Attribute wie oben nur die Passnummer, sondern auch Kombinationen von Attributen verwendet werden, solange diese Kombination als Gesamtheit eindeutig ist. 2.3.3 Die relationale Algebra Nachdem Sie im einleitenden Teil von Abschnitt 2.3 schon mit den grundlegenden Begriffen der relationalen Datenbanken in Berührung gekommen sind, folgt nun eine exaktere Definition. In der Einleitung haben Sie gelernt, dass Sie sich Relationen als Tabellen vorstellen können. Der Begriff der Relation stammt aus der relationalen Algebra, einem Teilgebiet der Mathematik. Mit Hilfe der relationalen Algebra können Anfragen an das definierte Datenbankenschema gestellt werden. Sie stellt verschiedenste Operationen bereit, die selbst wiederum Teilmengen bzw. Ergebnismengen zurückliefern, die beinahe beliebig kombiniert und verknüpft werden können. Die relationale Algebra arbeitet demnach nicht mit einzelnen Zahlen, sondern mit Mengen bzw. Teilmengen. Sie können sich eine Tabelle auch als Menge im mathematischen Sinn vorstellen, deren Elemente die einzelnen Datensätze sind. Auf diese Menge werden verschiedene Operationen angewendet, die als Ergebnis ebenfalls eine Menge zurückliefern. Diese Ergebnismengen sind wiederum Ausschnitte oder Kombinationen der Ausgangstabellen. Der folgende Abschnitt soll einen kurzen Überblick über die Materie der relationalen Algebra vermitteln. 58