Einstieg in relationale Datenbanken mit MySQL. Dr. Kerstin Puschke September 2009

Ähnliche Dokumente
DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SQL structured query language

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

7. Übung - Datenbanken

Arbeiten mit einem lokalen PostgreSQL-Server

105.3 SQL-Datenverwaltung

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Relationale Datenbanken in der Praxis

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

IV. Datenbankmanagement

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Übersicht der wichtigsten MySQL-Befehle

Labor 3 - Datenbank mit MySQL

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Ein Schlüssel ist eine Menge von Attributen (also eines oder mehrere), die eine Datenzeile (Tupel) einer Tabelle eindeutig identifiziert

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Allgemeines zu Datenbanken

Einführung in SQL Datenbanken bearbeiten

Sructred Query Language

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Informatik 12 Datenbanken SQL-Einführung

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

SQL (Structured Query Language) Schemata Datentypen

Datenbanken. Ein DBS besteht aus zwei Teilen:

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Einteilung von Datenbanken

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Relationale Datenbanken Datenbankgrundlagen

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

MySQL Installation. AnPr

SQL und MySQL. Kristian Köhntopp

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Datenbanken. Prof. Dr. Bernhard Schiefer.

Bibliografische Informationen digitalisiert durch

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

3. Übung. Einführung MS Access. TU Dresden - Institut für Bauinformatik Folie-Nr.: 1

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Inhaltsverzeichnis. jetzt lerne ich

Inhalt. 1. MySQL-Einführung Datenbankentwurf 27

Datenbanken. Zusammenfassung. Datenbanksysteme

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

1 Grundbegriffe Datenbanksysteme Entwicklung von Datenbanksystemen Inhaltsverzeichnis. 1.1 Information und Daten...

Arbeiten mit ACCESS 2013

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Übersicht über Datenbanken

Datenbanken im WI-Unterricht mit

Referenzielle Integrität SQL

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Carl-Christian Kanne. Einführung in Datenbanken p.1/513

Definition Informationssystem

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Wiederholung VU Datenmodellierung

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Themen. M. Duffner: Datenbanksysteme

Datenbanken: Relationales Datenbankmodell RDM

Einführung. Informationssystem als Abbild der realen Welt

ER-Modell. Entity-Relationship-Model

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

Business Intelligence Praktikum 1

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Wiederholung VU Datenmodellierung

SQL, MySQL und FileMaker

Business Intelligence Praktikum 1

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

Inhaltsverzeichnis. 1. Fragestellung

Die Grundbegriffe Die Daten Die Informationen

MySQL: Einfaches Rechnen.

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbanken für Online Untersuchungen

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

3. Das Relationale Datenmodell

Vorlesung ) Einführung

SQL. Fortgeschrittene Konzepte Auszug

2 Datenbanksysteme, Datenbankanwendungen und Middleware... 45

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Datenbanken: Datenintegrität.

Erstellen einer Datenbank. Datenbankabfragen

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Einführung in Datenbanksysteme. H. Wünsch

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Entwurf einer einfachen Datenbank zur Wunschzettel- Verwaltung

Microsoft Access 2010 SQL nutzen

Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

Profilbezogene informatische Bildung in den Klassenstufen 9 und 10. Schwerpunktthema Daten und Datenbanken

Vorwort zur 5. Auflage Über den Autor... 16

Garten - Daten Bank. - survival pack -

Transkript:

Einstieg in relationale Datenbanken mit MySQL Dr. Kerstin Puschke September 2009 1

Lizenz Lizenz Dieser Text steht unter einer Creative Commons Attribution-Share Alike 3.0 Germany Lizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/

Inhaltsverzeichnis I Einführung 3 1 Grundbegriffe 3 2 Architektur 3 3 MySQL 4 II Datenbankabfragen 5 4 Überblick verschaffen 5 5 Einfache Abfragen 5 6 Ergebnisse einschränken 6 III Datenbankdesign 7 7 Einführung in die theoretischen Grundlagen 7 7.1 Datenbankmodell............................ 7 7.2 Datenbankschema............................ 8 8 Datenbankdesign in der Praxis 9 8.1 Ablauf.................................. 9 8.2 Konzeptionelles Design: Entity-Relationship-Model.......... 9 8.3 Logisches Design: Relationales Schema................ 11 8.4 Physisches Design: Storage Engine................... 11 9 Qualitätssicherung 11 9.1 Normalform............................... 11 10 Datenbank definieren 12 10.1 Exkurs: Die MySQL-Dokumentation.................. 12 10.2 Tabellen anlegen............................ 13 IV Datenbanksprachen 14 11 Allgemein 14 12 SQL 14 V Datenbanken erzeugen und manipulieren 15 13 Daten eintragen, ändern, löschen 15 2

14 Tabellen verknüpfen 15 VI Vor- und Nachteile von Datenbanken 17 15 Datenbanken vs. Dateien 17 15.1 Vorteile von Datenbanksystemen.................... 17 15.2 Nachteile von Datenbanksystemen................... 18 16 Relationale Datenbanksysteme 18 VII Datenbank manipulieren - Weitere Möglichkeiten 18 17 Aggregierte Daten 18 3

Teil I Einführung 1 Grundbegriffe Datenbanksystem Datenbank und Datenbankmanagementsystem Datenbanksystem dient der Speicherung und Verwaltung von Daten besteht aus Datenbanken und Datenbankmanagementsystem (DBMS) Datenbank: strukturiert abgelegte Daten zu verwaltende Daten, z.b. Adressen Datenbankschema: Metadaten zur Datenbankdefinition Datenbankmanagementsystem: Software zur Verwaltung der Daten Datenbank definieren, erzeugen, manipulieren 2 Architektur Client und Server Datenbankserver: Software, die Datenbankdienste (ein Datenbanksystem) anbietet auch der Rechner, auf dem dieser Dienst läuft Anwendung oder Client greift auf den Datenbankserver zu Architektur Mainframe Großrechner (Zugriff über Terminals) Zwei-Schichten-Architektur Datenbankserver Anwendung, Client Anwendungslogik und Darstellung/Benutzeroberfläche Drei-Schichten-Architektur Datenbankserver Anwendung (Anwendungslogik) Webserver oder Anwendungsserver (Darstellung) Browser oder Client des Anwendugnsservers 4

3 MySQL MySQL DBMS sehr verbreitet in Webanwendungen auch eingebettet in anderen Anwendungen schwedische Firma MySQL AB, jetzt Sun Microsystems, Übernahme durch Oracle kostenlose Community-Version, freie Software (GPL) kostenpflichtige Enterprise-Version MySQL Clients und Anwendungen Kommandozeilenclient mysql Webinterface phpmyadmin MySQL GUI Tools... Webanwendungen MediaWiki WordPress... Anwendungen mit eingebetteter Datenbank Zimbra... 5

Teil II Datenbankabfragen 4 Überblick verschaffen Aufgaben Überblick verschaffen SHOW DATABASES, USE datenbank, SHOW TABLES, DESCRIBE tabelle Erste Befehle SHOW DATABASES zeigt alle Datenbanken USE datenbank wählt Datenbank datenbank aus SHOW TABLES zeigt Tabellen der gewählten Datenbank DESCRIBE tabelle zeigt Spalten der Tabelle an 5 Einfache Abfragen Aufgaben Einfache Abfragen SELECT, ORDER BY, LIMIT, NULL Abfragen I SELECT verlangt Angabe von Spalte(n) und Tabellen, die auszugeben sind * bedeutet alle Spalten der Tabelle SELECT Name,Vorname FROM KundInnen SELECT * FROM KundInnen ORDER BY sortiert Ausgabe SELECT Name,Vorname FROM KundInnen ORDER BY Name 6

Abfragen II LIMIT beschränkt die Zahl der ausgegeben Einträge häufig mit ORDER BY kombiniert SELECT Name,Vorname FROM KundInnen LIMIT 5 NULL Kein Eintrag (z.b. für Kundin Müller keine Telefonnummer vermerkt): NULL NULL NULL ist etwas anderes als die Zahl Null oder ein leerer String! 6 Ergebnisse einschränken Aufgaben Ergebnisse einschränken WHERE, AND, OR, UNION,DISTINCT Ergebnisse einschränken I WHERE schränkt Ergebnisse ein SELECT Name FROM KundInnen WHERE Stadt = Salzburg SELECT Name FROM KundInnen WHERE Vorname IS NULL Ergebnisse einschränken II AND und OR verknüpfen mehrere Bedingungen SELECT Name FROM KundInnen WHERE Stadt = Salzburg AND Vorname= Clara Abfragen einschränken III UNION vereinigt Ergebnisse (SELECT Name FROM KundInnen WHERE Stadt = Salzburg ) UNION (SELECT Name FROM KundInnen WHERE Stadt = Wien ) 7

Ergebnisse einschränken IV SELECT DISTINCT gibt nur unterschiedliche Ergebnisse aus SELECT DISTINCT Stadt FROM KundInnen Teil III Datenbankdesign 7 Einführung in die theoretischen Grundlagen 7.1 Datenbankmodell Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität Konzeptionelles Modell formale Beschreibung eines Ausschnittes der Realität verbreitet: Entity-Relationship-Model (Gegenstand-Beziehungs-Modell) Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität logisches Modell: Beschreibung der Implementierung Logisches Modell Beschreibung der Implementierung verbreitete Modelle: netzwerkartig hierarchisch relational objektorientiert objektrelational... 8

Relationales Modell E.F. Codd (1970) hohe Verbreitung seit den 80er Jahren, z.b. MySQL PostgreSQL Oracle... Datenbank als Sammlung von Relationen (Tabellen) Relation: Menge von Tupeln (Datensätzen, Zeilen) unsortiert keine Duplikate Schema einer Relation (Tabellenstruktur) besteht aus Attributen (Spalten) Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität logisches Modell: Beschreibung der Implementierung physisches Modell: Datenspeicherung, Zugriffspfade Physisches Modell Wie werden die Daten gespeichert? Auf Platte geschrieben oder nur im Speicher gehalten? Wie auf Dateien aufgeteilt? Was für Dateien? Indizierung 7.2 Datenbankschema Datenbankschema Datenbankschema Beschreibung der Datenbankstruktur gespeichert als Metadaten in der Datenbank folgt gewählten Datenmodellen konzeptionelles SchemaER-Modell: ER-Diagramm logisches Schemarelationales Modell: Tabellen, Spalten,... physische Schema: Storage Engine und Indizierung 9

Datenbankzustand Datenbankzustand Daten zu einem bestimmten Zeitpunkt 8 Datenbankdesign in der Praxis 8.1 Ablauf Datenbankdesign Relationale Datenbanken entwerfen Anforderungsanalyse Geschäftsprozesse analysieren,... Konzeptionelles Design: konzeptionelles Schema entwerfen Anforderungen in formale Struktur überführen Entitiy-Relationship-Diagramm entwickeln Logisches Design: logisches Schema entwerfen Relationales Datenbankschema entwerfen ER-Diagramm in Tabellen, Spalten usw. übersetzenmanuell oder softwaregestützt Physisches Design: Physische Schema entwerfen Storage Engine wählen Indizierung festlegen 8.2 Konzeptionelles Design: Entity-Relationship-Model Entity-Relationship-Model Entitiy-Relationship-Model, ER-Modell, ERM, Gegenstand-Beziehungs-Modell: konzeptionelles Datenmodell zur formalen Beschreibung eines Ausschnitts der realen Welt P.P. Chen (1976) Entity-Relationship-Model Elemente eines Schemas Entitäten: Gegenstände, Personen,... Beziehungen: Verknüpfungen von Entitäten Attribute: Eigenschaften von Entitäten oder Beziehungen Attribute haben Werte (nicht modelliert) Primärschlüssel: Attribut (oder Kombination mehrerer Attribute), welches eine Entität oder Beziehung eindeutig kennzeichnet Kardinalität von Beziehungen: (mögliche) Anzahl beteiligter Entitäten 10

ER-Diagramm ER-Diagramm: grafische Darstellung eines ER-modellierten Schemas verschiedene Notationen vorhanden Erstellen von ER-Diagrammen Softwaretools Dia Microsoft Visio MySQL Workbench... Elemente eines ER-Diagramms Entität: Rechteck Attribut: Kreis Beziehung: Raute Primärschlüssel: unterstrichen Kardinaliäten: Chen-Notation: 1 oder N Min-Max-Notation: Paare mit Einträgen 0,1 oder N, z.b. (1,N) ER-Diagramm Aufgaben Datenbankentwurf Anforderungsanalyse, ER-Diagramm 11

8.3 Logisches Design: Relationales Schema Vom ER-Diagramm zum Relationalen Schema ein Primärschlüssel für jede Tabelle eine Tabelle für jede Entität eine Tabelle für jede n-m-beziehung Attribute sind Spalten der jeweiligen Tabelle n-eins-beziehung als Fremdschlüssel (in der Tabelle der Entität auf der n-seite) Aufgaben Datenbankentwurf Relationales Schema, ER-Diagramm in Tabellen überführen 8.4 Physisches Design: Storage Engine Storage Engine Physisches Schema zuständig für Datenspeicherung setzt physisches Modell um MySQL bringt mehrere Storage Engines mit weitere Engines können eingebunden werden Standard Engine in MySQL: MyISAM Index Sequential Access Method zunehmend verbreitet: InnoDB wir verwenden die Standardeinstellungen 9 Qualitätssicherung 9.1 Normalform Aufgabe Normalform Negativbeispiel diskutieren Normalform Normalform Jedes Attribut, das kein Schlüssel ist, hängt direkt vom Schlüssel ab, vom gesamten Schlüssel, und zwar nur vom Schlüssel 12

Daten in Normalform keine Anomalien Konsistenz der Daten keine Redundanzen einfache Wartung effizientes Suchen und Bearbeiten Normalisierung Normalisierung = in Normalform bringen verschiedene Algorithmen ER-Diagramme und daraus abgeleitete relationale Schemata: Normalform häufig schon in Normalform ggf. nachbessern Hinweis Die Darstellung zum Thema Normalisierung/Normalform ist sehr vereinfacht. Wer mehr wissen möchte, findet links im Wiki. 10 Datenbank definieren 10.1 Exkurs: Die MySQL-Dokumentation Umgang mit der MySQL-Doku eckige Klammern umschliessen optionale Klauseln bedeutet oder nur eine der genannten Alternativen kann/muss benutzt werden geschweifte Klammern: eine der Alternativen muss benutzt werden eckige Klammern: eine oder keine der Alternativen kann benutzt werden Beispiel 1: DROP TABLE [IF EXISTS] tbl_name Beispiel 2: {DESCRIBE DESC} tbl_name [col_name wild]} 13

10.2 Tabellen anlegen Datenbank definieren Tabellen anlegen Name der Tabelle Storage Engine Beschreibung der Spalten Name der Spalte Datentyp (INT Integer, VARCHAR(20) String mit max. 20 Zeichen) Eintrag obligatorisch? (NULL/NOT NULL) Eintrag eindeutig? (UNIQUE) Schlüssel? (PRIMARY KEY, impliziert NOT NULL und UNIQUE) Default-Wert? (DEFAULT) Extras? (z.b. AUTO_INCREMENT; AUTO_INCREMENT ist kein Standard- SQL!) Tabellen verwalten I Tabelle anlegen CREATE TABLE CREATE TABLE KundInnen (KundNr INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(50) NOT NULL, Vorname VARCHAR(25)) Tabellen verwalten II Informationen über Tabellen DESCRIBE und SHOW CREATE TABLE DESCRIBE KundInnen SHOW CREATE TABLE KundInnen Tabellen verwalten III Tabellenstruktur ändern ALTER TABLE ALTER TABLE KundInnen DROP COLUMN Vorname... ALTER TABLE Vorsicht! Viele Stolperfallen! Tabellen verwalten IV Tabellen löschen DROP TABLE DROP TABLE KundInnen 14

Aufgaben Datenbank definieren CREATE TABLE, DROP TABLE, SHOW CREATE TABLE Teil IV Datenbanksprachen 11 Allgemein Datenbanksprachen Data Definition Language (DDL) Definition des Datenbankschemas Data Manipulation Language (DML) Daten abfragen und verändern Data Control Language (DCL) Zugriffsrechte Data Administration Language (DAL) finetuning, Zugriffspfad 12 SQL SQL Structured Query Language Vorgänger: SEQUEL Sprache relationaler DBMS beinhaltet DDL, DML, DCL, DAL deklarative Sprache beschreibt, was zu tun ist, nicht wie erweitert um prozedurale Funktionalitäten (Ablaufsteuerung) Konvention: Befehle und Co. in Großbuchstaben schreiben SELECT * FROM kurse SQL Implementierungen sehr verbreitet, z.b. MySQL, PostgreSQL, Oracle u.v.a. fast alle Systeme implementieren nicht den kompletten Standard implementieren eigene Erweiterungen daher: Kompatibilität der Systeme eingeschränkt 15

Teil V Datenbanken erzeugen und manipulieren 13 Daten eintragen, ändern, löschen Aufgaben Datenbank erzeugen und manipulieren INSERT, UPDATE, DELETE Datenbank erzeugen und manipulieren Daten eintragen INSERT INSERT INTO KundInnen (Name,Vorname) VALUES ( Example, Erna ) Datenbank erzeugen und manipulieren Daten ändern UPDATE UPDATE KundInnen SET TelefonNr= 1234567 WHERE KundNr= 666 Datenbank erzeugen und manipulieren Daten entfernen DELETE DELETE FROM KundInnen WHERE Stadt= Wien 14 Tabellen verknüpfen Deskriptoren für Objekte in SQL Objekt: Tabelle, Spalte,... kein Objekt im Sinne von OO-Programmierung! Deskriptor: identifiziert das Objekt (z.b. Spaltenname) unterschiedlich für die verschiedenen Datenbanksystem Deskriptoren für Objekte in MySQL Vollständig Tabelle: Datenbank.Tabelle Spalte: Datenbank.Tabelle.Spalte Abkürzung Angabe der Datenbank kann entfallen, wenn die mit USE voreingestellte benutzt werden soll Angabe der Tabelle kann zusätzlich entfallen, wenn Spaltenname innerhalb der verwendeten Tabellen eindeutig 16

Tabellen verknüpfen JOIN Abfragen über mehrere Tabellen Tabellen verknüpfen (JOIN) verknüpfe Zeilen, ggf. gemäß einer Bedingung (an gemeinsame Attribute) über verknüpften Tabellen SELECT durchführen Tabellen verknüpfen Beispiel KundInnen KundNr Name Vorname 1 Example Erna 2 Kundin Karla Bestellungen KundNr ArtikelNr 2 5 1 4 2 6 [0.3cm] Tabellen verknüpfen Cross Join, Cartesisches Produkt KundNr Name Vorname KundNr ArtikelNr 1 Example Erna 1 4 1 Example Erna 2 5 1 Example Erna 2 6 2 Kundin Karla 2 6 2 Kundin Karla 2 5 2 Kundin Karla 2 6 Tabellen verknüpfen Theta Join Verknüpfungsbedingung: KundInnen.KundNr = Bestellungen.KundNr[0.3cm] KundNr Name Vorname KundNr ArtikelNr 1 Example Erna 1 4 2 Kundin Karla 2 5 2 Kundin Karla 2 6 Aufgaben Tabellen verknüpfen JOIN JOIN-Syntax INNER JOIN Zeilen ohne Entsprechung in der anderen Tabelle entfallen SELECT Name, Vorname, ArtikelNr FROM KundInnen INNER JOIN Bestellungen ON KundInnen.KundNr = Bestellungen.KundNr 17

JOIN-Syntax OUTER JOIN Zeilen ohne Entsprechung in der anderen Tabelle werden mit NULL-Einträgen ergänzt LEFT JOIN: alle Zeilen der linken Tabelle, dazu nur Zeilen der rechten Tabelle, die eine Entsprechung in der linken Tabelle haben SELECT Name, Vorname, ArtikelNr FROM KundInnen INNER JOIN Bestellungen ON KundInnen.KundNr = Bestellungen.KundNr zeigt auch KundInnen, die nichts bestellt haben Teil VI Vor- und Nachteile von Datenbanken 15 Datenbanken vs. Dateien 15.1 Vorteile von Datenbanksystemen Vorteile von Datenbanksystemen Daten und Datenstruktur enthalten Datenstruktur als Metadaten im DBS gespeichert konkurrierende, gleichzeitige Zugriffe handhaben Fehlertoleranz Sicherheit (Zugriffsschutz) und Flexibilität durch Trennung von Anwendung und Daten große Datenmengen beherrschbar Trennung von Anwendung und Daten Externe Sichten Trennung von physischer Ebene, logischer Ebene und externer Ebene (Sicht) Sicht: user-abhängige Zugriffsmöglichkeit und Präsentation der Daten Beispiel: ZugriffsschutzBeispiel: Prüfungsbüro hat Zugriff auf andere Daten als Studierendenverwaltung angepaßte Präsentation der Daten kleinere Änderung auf einer Ebene beeinflußt andere Ebenen nicht 18

15.2 Nachteile von Datenbanksystemen Nachteile von Datenbanksystemen nicht alle Datenbanksysteme bieten die genannten Vorteile Aufwand nicht immer gerechtfertigt insbesondere unterschiedliche Sichten aufwändig Beherrschbarkeit großer Datenmengen verleitet zu ausufernder Datensammlung oder Verknüpfung von Daten Mißachtung des Datenschutzes, insbesondere der gebotenen Datensparsamkeit drängt sich u.u. auf 16 Relationale Datenbanksysteme Relationale Datenbanksysteme Daten stark strukturiert nachträgliche Änderung des Schemas problematisch gut geeignet für stark strukturierte Daten z.b. Adressdaten weniger geeignet für flexible Strukturenz.B. user generated content nicht für verteilte Systeme optimiert hohe Verbreitung auch in diesen Bereichenlange Zeit quasi alternativlos Teil VII Datenbank manipulieren - Weitere Möglichkeiten 17 Aggregierte Daten Aufgaben Aggregierte Daten COUNT, SUM, MAX,... GROUP BY, HAVING Aggregierte Daten COUNT gibt Anzahl der Datensätze aus SELECT COUNT(*) FROM KundInnen WHERE Stadt= WIEN liefert Anzahl der KundInnen aus Wien SUM,AVG,MAX,MIN 19

Summe, Durchschnitt, Maximum, Minimum SELECT SUM(Rechnungsbetrag) FROM Rechnungen GROUP BY und HAVING GROUP BY läßt Zeilen mit gemeinsamem Attributwert aggregieren SELECT Name, COUNT(*) FROM KundInnen gibt aus, wieviele KundInnen jeweils den gleichen Nachnamen haben HAVING schränkt Ergebnisse ein SELECT Name, COUNT(*) FROM KundInnen HAVING COUNT(*) > 1 zeigt nur Namen, die mehrfach vorkommen GROUP BY und HAVING HAVING vs. WHERE WHERE stellt Bedingungen an die Spalten, die in die Berechnung eingehen HAVING stellt Bedingungen an die Ergebnisse der Berechnung Spalten Keine Spalten in SELECT und HAVING eintragen, die nicht in GROUP BY stehen! 20