SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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                                                                                            4
1     Grundbegriffe                                                                                         4

2     Architektur                                                                                           4

3     MySQL                                                                                                 5


II     Datenbankabfragen                                                                                    6
4     Überblick verschaffen                                                                                 6

5     Einfache Abfragen                                                                                     6

6     Ergebnisse einschränken                                                                               7


III     Datenbankdesign                                                                                     8
7     Einführung in die theoretischen Grundlagen                                                            8
      7.1 Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . .                           8
      7.2 Datenbankschema . . . . . . . . . . . . . . . . . . . . . . . . . . . .                           9

8     Datenbankdesign in der Praxis                                                                        10
      8.1 Ablauf . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   10
      8.2 Konzeptionelles Design: Entity-Relationship-Model        .   .   .   .   .   .   .   .   .   .   10
      8.3 Logisches Design: Relationales Schema . . . . . .        .   .   .   .   .   .   .   .   .   .   12
      8.4 Physikalisches Design: Storage Engine . . . . . . .      .   .   .   .   .   .   .   .   .   .   12

9     Qualitätssicherung                                                                                   12
      9.1 Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                         12

10 Datenbank definieren                                                                                     13
   10.1 Exkurs: Die MySQL-Dokumentation . . . . . . . . . . . . . . . . . .                                13
   10.2 Tabellen anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . .                           14


IV      Datenbanksprachen                                                                                  15
11 Allgemein                                                                                               15

12 SQL                                                                                                     15


V      Datenbanken erzeugen und manipulieren                                                               16
13 Daten eintragen, ändern, löschen                                                                        16




                                            2
14 Tabellen verknüpfen                                                           16


VI    Vor- und Nachteile von Datenbanken                                         18
15 Datenbanken vs. Dateien                                                       18
   15.1 Vorteile von Datenbanksystemen . . . . . . . . . . . . . . . . . . . .   18
   15.2 Nachteile von Datenbanksystemen . . . . . . . . . . . . . . . . . . .    19

16 Relationale Datenbanksysteme                                                  19


VII    Datenbank manipulieren - Weitere Möglichkeiten                            19
17 Aggregierte Daten                                                             19




                                         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) an-
      bietet
         – 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 (Darstel-
      lung)
    • 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
   • physikalisches Modell: Datenspeicherung, Zugriffspfade

Physikalisches 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, . . .
        – physikalische 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 software-
             gestützt
    • Physikalisches Design: Physikalische 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 Relation 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    Physikalisches Design: Storage Engine
Storage Engine Physikalisches Schema

    • zuständig für Datenspeicherung
    • setzt physikalisches 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:
          – häufig schon in Normalform
          – ggf. “nachbessern”

Normalform
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
                                 [0.3cm]
    1          Example Erna
    2          Kundin    Karla
        Bestellungen
    KundNr ArtikelNr
    2          5
    1          4
    2          6

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 gespei-
       chert

     • 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 physikalischer 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 Stu-
            dierendenverwaltung
          – 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 Datenspar-
            samkeit 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 KundIn-
     nen 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

Más contenido relacionado

Similar a Einstieg in relationale Datenbanken mit MySQL (Handout)

Die "Semantic Web Recommendations" und das Jena Framework
Die "Semantic Web Recommendations" und das Jena FrameworkDie "Semantic Web Recommendations" und das Jena Framework
Die "Semantic Web Recommendations" und das Jena FrameworkJulian Maicher
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAPmurat9393
 
Abap course chapter 4 database accesses
Abap course   chapter 4 database accessesAbap course   chapter 4 database accesses
Abap course chapter 4 database accessesMilind Patil
 
Datenbank-Selbstverwaltung - Das Oracle-Data-Dictionary
Datenbank-Selbstverwaltung - Das Oracle-Data-DictionaryDatenbank-Selbstverwaltung - Das Oracle-Data-Dictionary
Datenbank-Selbstverwaltung - Das Oracle-Data-DictionaryMarkus Flechtner
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterMeMo News AG
 
RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?Capgemini
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenMagnus Pfeffer
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteMarkus Flechtner
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...André Krämer
 
Präsentation Werdegang tassilo koller
Präsentation Werdegang tassilo kollerPräsentation Werdegang tassilo koller
Präsentation Werdegang tassilo kollertassilok
 
Datenbanksysteme/Datenbankmanagementsysteme
Datenbanksysteme/DatenbankmanagementsystemeDatenbanksysteme/Datenbankmanagementsysteme
Datenbanksysteme/DatenbankmanagementsystemeTatjana8
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS ViewsCadaxo GmbH
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 
04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltungklickandbau
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 

Similar a Einstieg in relationale Datenbanken mit MySQL (Handout) (20)

Die "Semantic Web Recommendations" und das Jena Framework
Die "Semantic Web Recommendations" und das Jena FrameworkDie "Semantic Web Recommendations" und das Jena Framework
Die "Semantic Web Recommendations" und das Jena Framework
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAP
 
Abap course chapter 4 database accesses
Abap course   chapter 4 database accessesAbap course   chapter 4 database accesses
Abap course chapter 4 database accesses
 
Webinar big data für unternehmen
Webinar big data für unternehmenWebinar big data für unternehmen
Webinar big data für unternehmen
 
Datenbank-Selbstverwaltung - Das Oracle-Data-Dictionary
Datenbank-Selbstverwaltung - Das Oracle-Data-DictionaryDatenbank-Selbstverwaltung - Das Oracle-Data-Dictionary
Datenbank-Selbstverwaltung - Das Oracle-Data-Dictionary
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year After
 
RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?RDBMS oder NoSQL – warum nicht beides?
RDBMS oder NoSQL – warum nicht beides?
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
 
Digicomp sqlday admin
Digicomp sqlday adminDigicomp sqlday admin
Digicomp sqlday admin
 
Präsentation Werdegang tassilo koller
Präsentation Werdegang tassilo kollerPräsentation Werdegang tassilo koller
Präsentation Werdegang tassilo koller
 
Datenbanksysteme/Datenbankmanagementsysteme
Datenbanksysteme/DatenbankmanagementsystemeDatenbanksysteme/Datenbankmanagementsysteme
Datenbanksysteme/Datenbankmanagementsysteme
 
Moderne & flexible Architektur mit BW/4HANA
Moderne & flexible Architektur mit BW/4HANAModerne & flexible Architektur mit BW/4HANA
Moderne & flexible Architektur mit BW/4HANA
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
 
04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 

Einstieg in relationale Datenbanken mit MySQL (Handout)

  • 1. Einstieg in relationale Datenbanken mit MySQL Dr. Kerstin Puschke September 2009 1
  • 2. 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/
  • 3. Inhaltsverzeichnis I Einführung 4 1 Grundbegriffe 4 2 Architektur 4 3 MySQL 5 II Datenbankabfragen 6 4 Überblick verschaffen 6 5 Einfache Abfragen 6 6 Ergebnisse einschränken 7 III Datenbankdesign 8 7 Einführung in die theoretischen Grundlagen 8 7.1 Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7.2 Datenbankschema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 8 Datenbankdesign in der Praxis 10 8.1 Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 8.2 Konzeptionelles Design: Entity-Relationship-Model . . . . . . . . . . 10 8.3 Logisches Design: Relationales Schema . . . . . . . . . . . . . . . . 12 8.4 Physikalisches Design: Storage Engine . . . . . . . . . . . . . . . . . 12 9 Qualitätssicherung 12 9.1 Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10 Datenbank definieren 13 10.1 Exkurs: Die MySQL-Dokumentation . . . . . . . . . . . . . . . . . . 13 10.2 Tabellen anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 IV Datenbanksprachen 15 11 Allgemein 15 12 SQL 15 V Datenbanken erzeugen und manipulieren 16 13 Daten eintragen, ändern, löschen 16 2
  • 4. 14 Tabellen verknüpfen 16 VI Vor- und Nachteile von Datenbanken 18 15 Datenbanken vs. Dateien 18 15.1 Vorteile von Datenbanksystemen . . . . . . . . . . . . . . . . . . . . 18 15.2 Nachteile von Datenbanksystemen . . . . . . . . . . . . . . . . . . . 19 16 Relationale Datenbanksysteme 19 VII Datenbank manipulieren - Weitere Möglichkeiten 19 17 Aggregierte Daten 19 3
  • 5. 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) an- bietet – 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 (Darstel- lung) • Browser oder Client des Anwendugnsservers 4
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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 • physikalisches Modell: Datenspeicherung, Zugriffspfade Physikalisches 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, . . . – physikalische Schema: Storage Engine und Indizierung 9
  • 11. 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 software- gestützt • Physikalisches Design: Physikalische 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 Relation eindeutig kennzeichnet • Kardinalität von Beziehungen: (mögliche) Anzahl beteiligter Entitäten 10
  • 12. 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
  • 13. 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 Physikalisches Design: Storage Engine Storage Engine Physikalisches Schema • zuständig für Datenspeicherung • setzt physikalisches 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
  • 14. 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: – häufig schon in Normalform – ggf. “nachbessern” Normalform 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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 [0.3cm] 1 Example Erna 2 Kundin Karla Bestellungen KundNr ArtikelNr 2 5 1 4 2 6 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
  • 19. 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 gespei- chert • 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 physikalischer 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 Stu- dierendenverwaltung – angepaßte Präsentation der Daten • kleinere Änderung auf einer Ebene beeinflußt andere Ebenen nicht 18
  • 20. 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 Datenspar- samkeit 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
  • 21. • 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 KundIn- nen 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