Handreichung zur Lehrplaneinheit "Relationale Datenbanken"

Werbung
Landesinstitut für Schulentwicklung
Vorläufige Version der Handreichung
zum neuen Lehrplan
für das Fach
„Informatik"
an beruflichen Gymnasien
(AG, EG, SG und WG)
Jahrgangstufe 1
Relationale Datenbanken
Stand April 2009
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Inhaltsverzeichnis:
Teil 2 Jahrgangstufe 1
5
Relationale Datenbanken
S.
3
5.1
Entwicklung eines Datenmodells
S.
3
5.2
Einrichten des Datenbankmodells auf einem Datenbankserver und Auswertung der erfassten Daten
S.
20
5.3
Arbeiten mit Datenbanken unter Eclipse
S.
62
5.4
Datenbankverwaltung mit Hilfe von OpenOffice Base
S.
93
5.5
Arbeiten mit Datenbanken unter phpMyAdmin
S.
108
5.6
Übungsaufgaben zur ER-Modellierung
S.
115
5.7
Übungsaufgaben zu SQL
S.
143
Anhang 1 Anlagen zum SQL-Teil
Anhang 2 Nutzen vorhandener Access-Datenbanken
Autoren:
Rainer Federle, Kaufmännische Schule Ehingen
Gernot Hege, Kaufmännische Schule Nord Stuttgart
Lothar Wiedemer, Kaufm. u. Hausw. Schulen Donaueschingen
Koordination:
Dr. Joachim Fels, Gebhard-Müller-Schule Biberach
1
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Vorwort
Die Einheitlichen Prüfungsanforderungen in der Abiturprüfung Berufliche Informatik (Beschluss der Kultusministerkonferenz vom 1.6.1979 i.d.F. vom 10.05.2007) sind in Kraft getreten. Dies erforderte eine Überarbeitung des bisherigen Lehrplans für das Fach „Datenverarbeitung“. In diesem Zusammenhang ist auch die Änderung der Fachbezeichnung von „Datenverarbeitung“ in „Informatik“ zu sehen.
Die vorliegende Handreichung soll den Lehrkräften als Hilfestellung für die Auswahl und Anordnung des im Unterricht thematisierten Stoffes dienen. Die durch die Handreichung formulierten Inhalte und Vorgehensweisen müssen von den Lehrkräften durch eigene Unterrichtsbeispiele und auf die jeweilige Klassensituation angepasste Materialien ergänzt werden.
Dennoch kann die Handreichung dazu dienen, landesweit einheitliche Anforderungen an die
Schülerinnen und Schüler zu etablieren.
Die Handreichung lässt für die eingesetzte Unterrichtsmethodik große Spielräume. Dadurch
ist es möglich, auf den jeweiligen Lernprozess abgestimmte und schülerzentrierte Arbeitsformen zu wählen. Dies kommt einem problem- und projektorientierten Informatikunterricht
entgegen.
Die Darstellung von informatischen Lehrplaninhalten in einer Handreichung ist notwendigerweise immer mit der Auswahl von konkreten Softwareprodukten verbunden. Hierbei wurde
versucht, den starken Wünschen nach frei verfügbarer Software an möglichst vielen Stellen
gerecht zu werden. Selbstverständlich können alle in der Handreichung aufgeführten Beispiele jedoch auch auf andere Weise umgesetzt werden.
Unter
http://www.ls-bw.de/beruf/material/spezifisch/bg
können digitale Materialien zum Fach Informatik heruntergeladen werden. Hierunter finden
sich digitale Versionen der in der Handreichung angesprochenen Übungsaufgaben sowie
Lösungen für durchgearbeitete Unterrichtsbeispiele.
2
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5
Relationale Datenbanken
5.1
Entwicklung eines Datenmodells
5.1.1
Eingangssituation
Kai Carlsson ist Inhaber der Fahrradvermietung "Rent A Bike e.K." in Meersburg. Er hat zur
Zeit 36 verschiedene Fahrräder im Angebot, die vor allem an Urlauber für einen oder mehrere Tage vermietet werden.
Kai Carlsson beschließt, die Verwaltung seines Unternehmens in Zukunft Computer unterstützt zu organisieren. Vorgesehen ist eine Datenbank, mit der zunächst die Vermietung der
Fahrräder abgewickelt werden kann.
In einer ersten Analysephase wurden bei der Fahrradvermietung folgende Beobachtungen
gemacht:
20. Mai: Angelika Schlauch, Neck-Allee 81, 10865 Berlin, mietet
vom 20.05. bis zum 25.05 das Fahrrad "Scale 70" der Marke "Scott".
21. Mai: Andreas Hennes, Lindenallee 12, 69126 Heidelberg, mietet:
vom 22.05. bis zum 25.05. das Fahrrad "Viale Abruzzi Gent" der Marke " Bianchi",
vom 22.05. bis zum 28.05. das Fahrrad "Lady Lite Comfort" der Marke "Maxcycles".
Aufgaben
1
Bestimmen Sie die Objekte, die in der ersten Analysephase angesprochen wurden und
erläutern Sie die Beziehungen, die zwischen den einzelnen Objekten bestehen.
2
Bilden Sie Gruppen, die Objekte mit gleicher Struktur zusammenfassen.
3
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Objekte und deren Beziehungen
5.1.2
Notwendigkeit der Datenmodellierung
Situation:
In einem weiteren Interview nennt Kai Carlsson die Daten, die in der zu entwickelnden Datenbank gespeichert werden sollen:
"Von allen Mietern müssen Vorname, Name und Anschrift gespeichert werden können.
Die Fahrräder sind mit Bezeichnung, Rahmennummer, Hersteller, Jahr der Anschaffung, Anschaffungskosten und Mietpreis pro Tag zu speichern.
Die Fahrradhersteller sollen mit ihrem Namen sowie ihrer E-Mail-Adresse erfasst werden.
Zu jedem Vermietvorgang sind das Mietdatum, der Mietbeginn und das Mietende zu speichern.
Von den Wohnorten ist der Ortsname und die Postleitzahl zu erfassen."
Aufgabe:
Entwickeln Sie aufgrund der beschriebenen Anforderungen an die zu erstellende Datenbank
ist ein allgemeingültiges Datenmodell.
4
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Warum Datenmodellierung?
Daten und ihre Verarbeitung, die Funktionen, sind zwei Grundsteine unserer Informatiksysteme. Verschiedene Funktionen benötigen die gleichen Daten. Aber jede Funktion bzw. dann
auch jedes Programm sieht diese Daten mit anderen Augen.
Ziel muss es daher sein:
• feste, allgemeingültige Regeln zu schaffen, nach denen Informatiksysteme aufgebaut werden können,
• diese Daten müssen soft- und hardwareunabhängig sein,
• Daten sind unabhängig von der Anwendung zu speichern.
Auftretende Probleme:
• mangelnde Planung und Koordination,
• Kommunikationsprobleme zwischen IT-Abteilung und Fachabteilung,
• unkontrollierte Datenredundanzen, die zu inkonsistenten Datenbeständen führen.
Deshalb die Forderung:
• implementierungsunabhängige Datenanalyse,
• Orientierung an fachlichen Zusammenhängen (ÎFunktionsanalyse),
• Aufbau der Daten für alle Systeme unabhängig von den einzelnen Anwendungen
(ÎDatenanalyse),
• Verwendung eines gemeinsamen Kommunikationsmediums von Anwendungsund IT-Fachleuten (ÎERD),
• Vermeidung von Redundanzen.
Diese Forderungen lassen sich durch ein implemetierungsunabhängiges Vorgehen bei der
Analyse sowie durch Verwendung eines Datenmodells erfüllen.
5.1.3
Regeln für die Datenmodellierung
(Entity-Relationship-Modellierung)
Ein Entity-Relationship-Modell stellt einen Standard für die Datenmodellierung dar. Es bildet
die Datenstrukturen ab und dient zum einen in der konzeptionellen Phase der Anwendungsentwicklung der Verständigung zwischen Anwendern und Entwicklern. Zum anderen ist das
ER-Modell in der Implementierungsphase die Grundlage für das Design der Datenbank.
Die Umsetzung der in der Realwelt erkannten Objekte und Beziehungen in ein Datenbankschema erfolgt dabei in mehreren Schritten (Regeln für die Entity-Relationship-Modellierung
nach Peter Chen1) ):
a)
b)
c)
d)
e)
f)
g)
h)
1)
Entitäten und Beziehungen identifizieren
Identitätsschlüssel für Entitäten bestimmen
Festlegen der Entitäts- und Beziehungstypen
Festlegen der Beziehungskardinalitäten
Attribute und ihre Wertebereiche (Domänen) ermitteln
Entity-Relationship-Diagramme (ERD) für Entitäts- und Beziehungsmengen zeichnen
Definieren von Primär- und Fremdschlüsseln
Attribute und ihre Wertebereiche in Tabellen eintragen
Peter Chen, US-amerikanischer Informatiker, entwickelte 1976 die Entity-Relationship-Modellierung. Mit dieser
grafischen Darstellungsform revolutionierte er die Datenmodellierung und legte den Grundstein zur grafischen
Softwareentwicklung
5
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.1.4
a)
Phasen der Datenmodellierung
Beteiligte Objekte und deren Beziehungen erkennen
Zu Beginn des Datenmodellierungsprozesses müssen alle Objekte des zu analysierenden
Projektes identifiziert werden. Unter einem Objekt ist dabei nicht nur ein konkreter Gegenstand (Fahrrad, Haus, etc.) zu verstehen. Vielmehr sind auch Lebewesen (Mensch, Tier,
Pflanze) und abstrakte Dinge wie Rollen von Personen (Kunde, Mitarbeiter etc.) oder Ereignisse (Vermietung, Bestellung etc.) als Objekte zu verstehen.
Hinweis:
Zur Vereinfachung des Modells wird unterstellt, dass die Fahrradvermietung von
jedem Fahrradmodell nur ein Exemplar im Bestand hat.
Mit der Analyse der beschriebenen Beobachtungen lassen sich folgende Objekte identifizieren:
"Lady Lite Comfort" der Marke "Maxcycles"; Kaufpreis "780,00 €"; Mietpreis "11,00 €
je Tag"; Rahmen-Nr. "CB/098"; angeschafft am "16.05.2008"
"Viale Abruzzi Gent" der Marke "Bianchi"; Kaufpreis "399,00 €"; Mietpreis "15,00 € je
Tag"; Rahmen-Nr. "22-88-333"; angeschafft am "22.06.2008"
"Scale 70" der Marke "Scott"; Kaufpreis "750,00 €"; Mietpreis "21,00 € je Tag";
Rahmen-Nr. "88/07"; angeschafft am "10.03.2008"
Firma "Maxcycles" E-Mail-Adresse "[email protected]"
Firma "Bianchi" E-Mail-Adresse "[email protected]"
Firma "Scott" E-Mail-Adresse "[email protected]"
"Angelika Schlauch" aus "Berlin", "Neckallee 81"
"Andreas Hennes" aus "Heidelberg", "Lindenallee 12"
"10865" "Berlin"
"69126" "Heidelberg"
Vermietung am "20. Mai" von "Lady Lite Comfort" vom "20.05." bis "25.05."
an "Angelika Schlauch"
Vermietung am "21. Mai" von "Viale Abruzzi Gent" vom "22.05." bis "25.05."
"Scale 70" vom "22.05." bis "28.05."
an "Andreas Hennes"
In der Datenbanktheorie werden Objekte als Entitäten bezeichnet.
Im zweiten Schritt müssen die Beziehungen, die zwischen je zwei Objekten (Entitäten) bestehen, identifiziert werden. Bei der Beobachtung der Fahrradvermietung lassen sich folgende Beziehungen erkennen:
6
"Maxcycles"
"Bianchi"
"Scott"
ist Hersteller des Fahrrads
ist Hersteller des Fahrrads
ist Hersteller des Fahrrads
"Lady Lite Comfort",
"Viale Abruzzi Gent",
"Scale 70",
"Angelika Schlauch"
"Andreas Hennes"
hat ihren Wohnsitz im Wohnort
hat seinen Wohnsitz im Wohnort
"Berlin",
"Heidelberg",
"Angelika Schlauch"
"Andreas Hennes"
ist Mieterin des Fahrrads
ist Mieter des Fahrrads
ist Mieter des Fahrrads
"Lady Lite Comfort",
"Viale Abruzzi Gent",
"Scale 70",
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
b)
"Angelika Schlauch"
"Andreas Hennes"
vereinbart einen Mietvertrag am
vereinbart einen Mietvertrag am
"20. Mai",
"21. Mai",
"Lady Lite Comfort"
ist Gegenstand der Vermietung vom
"20. Mai",
"Viale Abruzzi Gent"
ist Gegenstand der Vermietung vom
"21. Mai",
"Scale 70"
ist Gegenstand der Vermietung vom
"21. Mai".
Identitätsschlüssel für Entitäten bestimmen
Jede Entität muss durch ein Merkmal (Attribut) oder durch eine Kombination von Merkmalen
(Attributkombination) eindeutig identifizierbar sein.
Eine minimale Attributkombination, die jede Entität einer Entitätsmenge eindeutig identifiziert,
wird als Schlüsselkandidat bezeichnet. Bei mehreren Möglichkeiten ist eine fest auszuwählen, die als Primärschlüssel (Primary Key) bezeichnet wird. Wenn keine geeigneten Attribute für einen Primärschlüssel existieren, so muss ein künstliches Schlüsselattribut (z.B.
fortlaufende Nummer - Datentyp: Auto-Increment) eingeführt werden.
Für die identifizierten Entitäten des Projektes "Fahrradvermietung" können folgenden Identitätsschlüssel bestimmt werden:
Entität:
Lady Lite Comfort, "CB/098", 780,00 €, …
Viale Abruzzi Gent, "22-88-333", 780,00 €, …
Scale 70, "88/07", 750,00 €, …
möglicher Identitätsschlüssel:
Æ Attribut Rahmennummer
Æ Attribut Rahmennummer
Æ Attribut Rahmennummer
Maxcycles
Bianchi
Scott
Æ Attribut Herstellername
Æ Attribut Herstellername
Æ Attribut Herstellername
Angelika Schlauch, Neck-Allee 81, 10865 Berlin
Æ künstliches Schlüsselattribut
Andreas Hennes, Lindenallee 12, 69126 Heidelberg Æ künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
10865 Berlin
69126 Heidelberg
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
20. Mai "Lady Lite Comfort" an "Angelika Schlauch" Æ Kombination aus allen Attributen
21. Mai "Viale Abruzzi Gent" an "Andreas Hennes" Æ Kombination aus allen Attributen
"Scale 70"
an "Andreas Hennes" Æ Kombination aus allen Attributen
Aufgrund mangelnder Eindeutigkeit ist bei allen Entitäten die Wahl eines künstlichen Schlüsselattributs vorzuziehen.
7
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
c)
Festlegen der Entitäts- und Beziehungstypen
In einer weiteren Phase der Datenmodellierung werden alle Objekte, die eine gleiche Struktur aufweisen und gleich beschrieben werden können, zu Gruppen (Entitätstypen) zusammengefasst. Im relationalen Datenbanksystem wird jeder Entitätstyp durch eine Datenbanktabelle abgebildet.
Bei den identifizierten Entitäten des Projektes "Fahrradvermietung" können folgende Gruppierungen vorgenommen werden (Entitätstypen):
"Lady Lite Comfort" der Marke "Maxcycles"; Kaufpreis "780,00 €"; Mietpreis "11,00 €";
Rahmen-Nr. " CB/098"; angeschafft am "16.05.2008";
"Viale Abruzzi Gent" der Marke "Bianchi"; Kaufpreis "780,00 €"; Mietpreis "15,00 €";
Rahmen-Nr. " 22-88-333"; angeschafft am "22.06.2008";
"Scale 70" der Marke "Scott"; Kaufpreis "750,00 €"; Mietpreis "21,00 €";
Rahmen-Nr. " 88/07"; angeschafft am "10.03.2008";
Æ Entitätstyp Fahrrad
Firma "Maxcycles"
Firma "Bianchi"
Firma "Scott"
Æ Entitätstyp Hersteller
"Angelika Schlauch" aus "Berlin", "Neckallee 81",
"Andreas Hennes" aus "Heidelberg", "Lindenallee 12",
Æ Entitätstyp Kunde
"10865 Berlin",
"69126 Heidelberg",
Æ Entitätstyp Wohnort
Vermietung am "20. Mai" von "Lady Lite Comfort"
Vermietung am "21. Mai" von "Viale Abruzzi Gent"
"Scale 70"
an "Angelika Schlauch"
an "Andreas Hennes"
an "Andreas Hennes"
Æ Entitätstyp Vermietung
Ebenso wie die einzelnen Objekte zu Gruppen zusammengefasst werden, sind die ermittelten Beziehungen, die zwischen je zwei Objekten bestehen, gemäß der gebildeten Entitätstypen zu Beziehungstypen zusammenzufassen.
Aus den Beziehungen
"Maxcycles"
"Bianchi"
"Scott"
wird der Beziehungstyp
ist Hersteller des Fahrrads
ist Hersteller des Fahrrads
ist Hersteller des Fahrrads
"Lady Lite Comfort",
"Viale Abruzzi Gent",
"Scale 70",
"Hersteller liefert Fahrrad"
Aus den Beziehungen
"Angelika Schlauch"
"Andreas Hennes"
wird der Beziehungstyp
hat ihren Wohnsitz im Wohnort
hat seinen Wohnsitz im Wohnort
"10865 Berlin ",
"69126 Heidelberg ",
"Kunde wohnt in Wohnort"
Aus den Beziehungen
"Angelika Schlauch"
"Andreas Hennes"
ist Mieterin des Fahrrads
ist Mieter des Fahrrads
ist Mieter des Fahrrads
wird der Beziehungstyp
"Kunde mietet Fahrrad"
8
"Lady Lite Comfort",
"Viale Abruzzi Gent"
"Scale 70"
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Aus den Beziehungen
"Angelika Schlauch"
ist Partnerin der Vermietung vom
"20. Mai",
"Andreas Hennes"
ist Partner der Vermietung vom
"21. Mai",
wird der Beziehungstyp
"Kunde ist Vertragspartner einer Vermietung"
Aus den Beziehungen
"Lady Lite Comfort"
"Viale Abruzzi Gent"
"Scale 70"
wird der Beziehungstyp
ist Gegenstand der Vermietung vom
ist Gegenstand der Vermietung vom
ist Gegenstand der Vermietung vom
"20. Mai",
"21. Mai",
"21. Mai",
"Fahrrad ist Gegenstand der Vermietung"
d)
Festlegen der Beziehungskardinalitäten
In der nächsten Phase des Modellierungsprozesses muss für jeden Beziehungstyp die mögliche Anzahl der beteiligten Objekte (Kardinalität) festgestellt werden. Die Kardinalität eines
Beziehungstyps gibt dabei an, mit wie viel anderen Entitäten eine Entität eines bestimmten
Entitätstyps in einer konkreten Beziehung stehen muss bzw. kann.
Für den Beziehungstyp "Hersteller liefert Fahrrad" gilt:
Ein Hersteller liefert kein, ein oder mehrere Fahrrad/Fahrräder
ein Fahrrad wird von genau einem Hersteller geliefert.
In diesem Fall spricht man von einer 1:N–Beziehung.
Für den Beziehungstyp "Kunde wohnt in Wohnort" gilt:
Ein Kunde wohnt in genau einem Wohnort
in einem Wohnort wohnen kein, ein oder mehrere Kunde/n.
In diesem Fall spricht man ebenfalls von einer 1:N–Beziehung.
Für den Beziehungstyp "Kunde mietet Fahrrad" gilt:
Ein Kunde mietet ein Fahrrad oder mehrere Fahrräder
ein Fahrrad wird von keinem, einem oder mehreren Kunden gemietet.
In diesem Fall spricht man von einer M:N–Beziehung.
und
und
und
Beziehungen zwischen Entitäten werden in relationalen Datenbanken mit Hilfe von Schlüsselattributen hergestellt, wobei das Primärschlüsselattribut der einen Relation (Entitätstypen
werden bei der Überführung in ein relationales Datenbanksystem zu Relationen) als Fremdschlüssel in die andere aufgenommen wird. Bei M:N-Beziehungen bestünde somit eine Überkreuzverknüpfung und würde eine eindeutige Zuordnung unmöglich machen. Somit können M:N-Beziehungen in einem relationalen Datenbanksystem nicht abgebildet werden und
müssen in zwei 1:N-Beziehungen aufgelöst werden. Im vorliegenden Fall geschieht dies mit
dem Entitätstyp Vermietung.
Für den Beziehungstyp "Kunde ist Vertragspartner einer Vermietung" gilt:
Ein Kunde ist Vertragspartner von einer oder mehrerer Vermietung/en
eine Vermietung hat genau einen Kunden als Vertragspartner.
In diesem Fall spricht man von einer 1:N–Beziehung.
Für den Beziehungstyp "Fahrrad ist Gegenstand der Vermietung" gilt:
Ein Fahrrad ist Gegenstand keiner, einer oder mehrerer Vermietungen
eine Vermietung bezieht sich auf genau ein Fahrrad.
In diesem Fall spricht man ebenfalls von einer 1:N-Beziehung.
und
und
Die Ergebnisse der Modellierung werden in einem Entity-RelationshipDiagramm (ERD) grafisch dargestellt (siehe unten, Seite 11).
9
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
e)
Attribute und ihre Wertebereiche (Domänen) bestimmen
In einer weiteren Modellierungsphase sind die Eigenschaften jedes Entitätstyps zu bestimmen. Darunter fallen die Bestimmung der Attribute sowie die Festlegung des identifizierenden Attributs (Schlüsselattribut). Gegebenenfalls können hier bereits die Datentypen der jeweiligen Attribute sowie deren Format bestimmt werden. Ebenso können für einzelne Attribute deren Wertebereiche bestimmt werden. Am Beispiel der Postleitzahlen sind dies die Werte
zwischen "01001" und "99998".
Exkurs:
Datentypen für eine SQL-Datenbank
Für die Attribute eine Datenbanktabelle sind jeweils geeignete Datentypen zu bestimmen. In
der folgenden Übersicht finden Sie die gängigen Datentypen für eine SQL-Datenbank:
Datentyp
Beschreibung
TINYINT
SMALLINT
INT
INTEGER
FLOAT
Ganzzahlen von 0 bis 255 bzw. -128 bis +127
Ganzzahlen von 0 bis 65.535 bzw. -32.768 bis +32.767
Ganzzahlen von 0 bis ~4,3 Mill. bzw. ~ -2,15 Mill. - ~ +2,15 Mill.
Alias für INT
Fließkommazahl, vorzeichenbehaftet; Wertebereich von
-3,402823466^38 bis -1,175494351^38, 0 und 1,175494351^38
bis 3,402823466^38
Fließkommazahl, vorzeichenbehaftet, Wertebereich von
~ -1,798^308 bis ~ -2,225^-308, 0 und
~ 2,225^-308 bis ~ 1,798^308.
Alias für DOUBLE
DOUBLE
REAL
CHAR
VARCHAR
Zeichenkette mit fester Länge N (für N von 0 bis 255)
Zeichenkette mit variabler Länge N zwischen 0 und 255
(Siehe hierzu auch Seite 30)
DATE
Datum im Format "JJJJ-MM-TT"
Wertebereich von 1000.01.01.bis 9999.12.31
Datum im Format " JJJJ-MM-TT hh:mm:ss"
Wertebereich entspricht DATE
Zeitangabe zwischen -838:59:59 und +839:59:59
Jahreszahl zwischen 1901 und 2155
DATETIME
TIME
YEAR
Speicherplatz
1 Byte
2 Bytes
4 Bytes
4 Bytes
8 Bytes
N Bytes
N+1 Bytes
3 Bytes
8 Bytes
3 Bytes
1 Byte
AUTO-INCREMENT ist kein eigenständiger Datentyp. Vielmehr dient ein Attribut vom Typ
AUTO-INCREMENT zur Erzeugung einer eindeutigen Kennung von
Datensätzen. Er ordnet jeder neuen Zeile einen um Eins größeren
Wert zu als der vorherige höchste Wert dieses Attributs.
In seiner Standarddefinition ist dieses Attribut vom Typ INT.
Für die fünf Entitätstypen sind folgende Attribute mit den entsprechenden Datentypen anzulegen:
Hersteller:
Fahrrad:
Herstellername CHAR(30), Email CHAR(30)
Bezeichnung CHAR(50), Rahmennummer CHAR(10), Tagesmietpreis DOUBLE, Wert DOUBLE, Kaufdatum DATE,
Kunde:
Name CHAR(30), Vorname CHAR(20), Strasse CHAR(30)
Vermietung: Mietdatum DATE, von DATE, bis DATE
Wohnort:
Plz CHAR(5), Ort CHAR(50)
10
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
f)
Entity-Relationship-Diagramm (ERD) für Entitäts- und Beziehungsmengen zeichnen
1
vereinbart
Kunde
N
N
Vermietung
bezieht
sich auf
1
Fahrrad
N
N
wohnt
in
geliefert
von
1
1
Wohnort
Hersteller
Erläuterungen zum Erstellen eines Entity-Relationship-Diagramm finden Sie unter
Kapitel 5.1.5 - Seite 15ff.
g) Definieren von Primär- und Fremdschlüsseln
Jede Entität muss durch ein Merkmal eindeutig identifizierbar sein. Hierzu erhält jeder Entitätstyp ein so genanntes Primärschlüsselattribut. Wie oben bereits angeführt, sollte dabei ein
zusätzliches, künstliches Attribut gewählt werden.
In einem relationalen Datenbanksystem wird die Beziehung zwischen zwei Entitätstypen
durch die Verknüpfung von Schlüsselattributen erzeugt. Hierzu muss auf der N-Seite des
Beziehungstyps der Primärschlüssel des Entitätstyps der 1-Seite als Fremdschlüssel eingefügt werden.
Beispiel:
1
N
liefert
Hersteller
Fahrrad
Das Primärschlüsselattribut des Entitätstyps Hersteller (Herstellernr) wird als
Fremdschlüsselattribut dem Entitätstyp Fahrrad hinzugefügt.
Für die Entitätstypen des Projekts "Fahrradvermietung" ergeben sich folgende Festlegungen:
Entitätstyp Hersteller:
Attribut
Herstellernr
Herstellername
Email
Datentyp
Character
Character
Character
Länge/Format
5
30
30
Primärschlüssel: Herstellernr
11
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Entitätstyp Fahrrad:
Attribut
Fahrradnr
Bezeichnung
Rahmennummer
Tagesmietpreis
Wert
Kaufdatum
Herstellernr
Datentyp
Character
Character
Character
Double
Double
Date
Character
Primärschlüssel: Fahrradnr
Entitätstyp Kunde:
Attribut
Kundennr
Name
Vorname
Strasse
Ortnr
Datentyp
Character
Character
Character
Character
Integer
Primärschlüssel: Kundennr
Entitätstyp Wohnort:
Attribut
Ortnr
PLZ
Ort
Länge/Format
5
50
10
4-stellige Zahl, 2 Dezimalstellen
6-stellige Zahl, 2 Dezimalstellen
30
Fremdschlüssel: Herstellernr
Länge/Format
5
30
20
30
Fremdschlüssel: Ortnr
Datentyp
Integer
Character
Character
Länge/Format
Datentyp
Character
Date
Date
Date
Character
Character
Länge/Format
5
5
50
Primärschlüssel: Ortnr
Entitätstyp Vermietung:
Attribut
Vermietnr
Mietdatum
von
bis
Fahrradnr
Kundennr
Primärschlüssel: Vermietnr
5
5
Fremdschlüssel: Fahrradnr
Fremdschlüssel: Kundennr
Die Konkretisierung des ERD durch Attribute werden im Relationenmodell sichtbar (Erläuterungen zum Relationenmodell befinden sich im Kapitel 5.1.5, Seite 15)
Relationenmodell (Fahrrad)
KUNDEN (Kundennr, Name, Vorname, Strasse, ÇOrtnr)
VERMIETUNGEN (Vermietnr, von, bis, ÇFahrradnr, ÇKundennr)
FAHRRAEDER (Fahrradnr, Bezeichnung, Rahmennummer, Tagesmietpreis, Wert, Kaufdatum, ÇHerstellernr)
HERSTELLER (Herstellernr, Herstellername)
WOHNORTE (Ortnr, PLZ, Ort)
(Allgemeine Regeln zum Relationenmodell befinden sich auf Seite 17.)
12
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Bevor nun das Datenmodell mit Hilfe eines relationalen Datenbankmanagementsystems implementiert wird, muss überprüft werden, ob jeder Entitätstyp einen Primärschlüssel aufweist
und alle Attribute atomare Inhalte enthalten. Darüber hinaus müssen alle Attributswerte direkt vom Primärschlüssel und nicht nur von Schlüsselteilen abhängen.
Dieser Schritt erhält seine Bedeutung durch die Forderung, Redundanzen innerhalb der zu
erstellenden Datenbank zu verhindern. (Von Redundanz spricht man dann, wenn gleiche Informationen mehrfach gespeichert werden.) Darüber hinaus ist die Gewährleistung der genannten Bedingungen Voraussetzung dafür, dass in der zu erstellenden Datenbank die referentielle Integrität (siehe unten) sichergestellt werden kann.
Falls sich hierbei Widersprüche ergeben, muss der Modellierungsprozess nochmals durchlaufen werden.
Nachdem die logische Struktur der relationalen Datenbank vorliegt, kann sie in ein relationales Datenbankmanagement-System (RDBMS) übertragen werden.
Referentielle Integrität
Werden Daten in einer Datenbank erfasst, geändert oder gelöscht, muss sichergestellt sein,
dass die Inhalte der Tabellen widerspruchsfrei bleiben. Die referentielle Integrität garantiert
die Korrektheit zwischen den Attributen von Tabellen und der Erhaltung der Eindeutigkeit ihrer Schlüssel. Sie gewährleistet, dass in einer Detailltabelle (N-Seite einer Beziehung) die
Fremdschlüssel nur solche Werte annehmen können, die in der betreffenden Mastertabelle
(1-Seite einer Beziehung) bereits als Primärschlüsselattribute angelegt worden sind.
Referentielle Integrität liegt in einer Datenbank somit dann vor, wenn jedem Wert, der unter
einem Fremdschlüssel eingetragen wird, auch tatsächlich ein identischer Eintrag in der Relation entspricht, in der das Attribut Primärschlüssel ist. In einer Detailtabelle dürfen somit nur
Datensätze eines Objektes enthalten sein, das in der Mastertabelle vorkommt; "Kinder" ohne
Eltern" darf es nicht geben.
Am Beispiel der Tabellen FAHRRAD und HERSTELLER bedeutet dies, dass bei einem
Fahrrad nur die Identifikationsnummer eines Herstellers erfasst werden kann, die bereits einem Hersteller in der Tabelle HERSTELLER als Primärschlüssel zugeordnet wurde. Darüber
hinaus können die Daten eines Herstellers nicht gelöscht werden, solange er noch als Hersteller eines Fahrrads gespeichert ist.
Übungsaufgabe
Nachdem mit Kai Carlsson, Inhaber der Fahrradvermietung "Rent A Bike e.K.", die Ergebnisse der ersten Phase der Datenmodellierung besprochen wurden, bittet er Sie, dass die folgenden Sachverhalte auch noch in der zu erstellenden Datenbank Berücksichtigung finden:
¾ Für alle Fahrräder soll eine Kategorisierung in Fahrradtypen ("Mountain-Bike", "Herren
City Bike", "Jugendfahrrad", etc.) möglich sein. Dabei soll auch eine kurze Erläuterung
dieser Fahrradtypen ("Geländefahrrad mit Federung", "Herrenräder für Straßen und Wege", "Fahrrad für Jugendliche", etc.) festgehalten werden.
¾ Herr Carlsson beschäftigt mehrere Aushilfskräfte, welche die regelmäßig durchzuführenden
Inspektionen der Fahrräder vornehmen. Festgehalten werden soll, wer (Vorname, Name)
an welchem Tage (Datum) welches Fahrrad gewartet hat. Darüber hinaus sind die Inspektionsdauer (Dauer_in_Minuten) sowie der Wert der benötigten Ersatzteile zu erfassen.
Ergänzen Sie das vorliegende Datenmodell. (Name: Fahrradvermietung - erweitert)
13
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Ergebnis der Datenmodellierung (Fahrradvermietung - erweitert)
Der Modellierungsprozess erfolgt analog zu der auf den Seiten 4 - 12 dargestellten Vorgehensweise.
Für die zusätzlich identifizierten Entitätstypen des Projekts "Fahrradvermietung - erweitert"
ergeben sich folgende Festlegungen:
Entitätstyp Fahrradtypen:
Attribut
Datentyp
Typnr
Character
Typbezeichnung
Character
Kurzerlaeuterung
Character
Länge/Format
5
30
60
Primärschlüssel: Typnr
Entitätstyp Monteure:
Attribut
Monteurnr
Vorname
Name
Datentyp
Character
Character
Character
Länge/Format
5
20
30
Primärschlüssel: Monteurnr
Entitätstyp Inspektionen:
Attribut
Datentyp
Inspektionnr
Character
Datum
Date
Dauer
Integer
Ersatzteilwert
Double
Fahrradnr
Character
Monteurnr
Character
Primärschlüssel: Inspektionnr
Länge/Format
5
3-stellige Ganzzahl
6-stellige Zahl, 2 Dezimalstellen
5
5
Fremdschlüssel: Fahrradnr
Fremdschlüssel: Monteurnr
Der bereits festgelegte Entitätstyp Fahrrad erhält ein weitere Fremdschlüsselattribut (Typnr):
Entitätstyp Fahrrad:
Attribut
Fahrradnr
Bezeichnung
Rahmennummer
Tagesmietpreis
Wert
Kaufdatum
Herstellernr
Typnr
Datentyp
Character
Character
Character
Double
Double
Date
Character
Character
Primärschlüssel: Fahrradnr
14
Länge/Format
5
50
10
4-stellige Zahl, 2 Dezimalstellen
6-stellige Zahl, 2 Dezimalstellen
5
5
Fremdschlüssel: Herstellernr
Fremdschlüssel: Typnr
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.1.5
Begriffe und Definitionen
Ausgangspunkt des ER-Modells ist der Begriff der Entität. Eine Entität ist ein individuelles
und identifizierbares Exemplar von Dingen, Personen oder Begriffen der realen oder der
Vorstellungswelt. Die Entität wird durch Attribute näher beschrieben.
Die Entitäten, die durch dieselben Eigenschaften beschrieben werden, werden zu einem Entitätstyp zusammengefasst und in einem Rechteck dargestellt. Die Bezeichnung des Entitätstyps steht im Singular.
Fahrrad
Die Wechselwirkungen und Abhängigkeiten zwischen Entitäten werden durch Beziehungen
dargestellt. Die Zusammenfassung gleichartiger Beziehungen zwischen Entitäten erfolgt
durch Beziehungsmengen, Assoziationen genannt.
Eine Assoziation wird nach Chen grafisch durch eine Raute dargestellt. Als Name sollte ein
Verb gewählt werden. Die Diagramme werden von oben nach unten beziehungsweise von
links nach rechts gelesen.
geliefert
von
Die Beziehung wird durch eine Verbindungslinie, zwischen der die Assoziationsraute steht,
dargestellt.
Fahrrad
wird geliefert von
Hersteller
Entität - Entitätstyp
Die Entität (Entity) ist das konkrete, individuell identifizierbare Objekt bzw. Exemplar von
Dingen, Personen oder Begriffen der realen oder der Vorstellungswelt, für das auf einem Datenträger Sachverhalte festzuhalten sind.
Beispiele:
Individuen:
Reales Objekt:
Ereignis:
Abstraktes:
Schüler Hans Dampf; Kunde Hennes, Mitarbeiterin Braun; …
Fahrrad Lady Lite Comfort; Ersatzteil Lenker; …
Vermietung; Zahlung; Buchung; Start; Landung …
Unterricht; Dienstleistung; Verarbeitungsart; Zahlungsart ...
Die Entität ist Mitglied einer Gruppe (Klasse), dem Entitätstyp.
Der Schüler Hans Dampf ist ein konkretes individuell identifizierbares Objekt, über den Informationen abgespeichert werden müssen. Er gehört zur Gruppe der Schüler. Man kann auch
sagen, er ist vom Entitätstyp Schueler. Alle Informationen, die über Schüler abgespeichert
werden, sind von der Struktur her gleich.
Attribut
Attribute beschreiben die Entitäten. Beispiel: Schueler(Schuelernr, Vorname, Name, ...)
Man unterscheidet zwischen
• identifizierenden Attributen (z.B.: Schuelernr, Kundennr; ...)
• beschreibenden Attributen (z.B.: Name, Kundenname, Bezeichnung; .....)
15
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Beziehungstyp - Kardinalitäten
Zwischen den Entitätstypen Hersteller und Fahrrad besteht ein Beziehungstyp „liefert“. Wenn
es einen solchen Beziehungstyp gibt, so kann (muss) eine konkrete Beziehung zwischen einem Paar der dazu gehörenden Entitäten bestehen:
1
N
Hersteller
Fahrrad
liefert
Man liest: Hersteller liefert Fahrrad bzw. Fahrrad wird geliefert von Hersteller.
Beziehungsattribute sind die beschreibenden interessierenden Merkmale der Beziehung.
Beispiel zwischen Schüler und Fächern: Note.
Die verschiedenen und für die Praxis relevanten Beziehungstypen werden im Folgenden
dargestellt.
Die 1:1-Beziehung
1
Mitarbeiter
1
Firmenausweis
gehört
Zwischen zwei Objekten A und B besteht eine 1:1-Beziehung, wenn Folgendes gilt:
Zu jedem Objekt von A gibt es genau ein Objekt von B und umgekehrt.
Die 1:C-Beziehung
PKW
1
C
Tempomat
enthält
Es gibt aber auch Entitäten, zwischen denen eine Beziehung stehen kann. Für diesen Fall
führt man die konditionale Beziehung ein. Auf der Seite, auf der die Beziehung optional ist,
wird ein „C“ geschrieben. (Ein Pkw hat keinen oder einen Tempomat.)
Die 1:MC-Beziehung
Mann
1
MC
Kind
ist Vater von
Analog der 1:C-Beziehung ist es hier darüberhinaus auch zulässig, wenn es Objekte in Mann
gibt, denen kein, ein oder mehrere Kind(er) zugeordnet sind.
Die M:N-Beziehung
Zwischen zwei Objekttypen A und B besteht eine M:N Beziehung, wenn Folgendes gilt:
Zu jedem Objekt von A gibt es ein oder mehrere Objekte von B und umgekehrt. Ein Schüler
muss mehrere Kurse belegen. Umgekehrt müssen immer mehrere Schüler in einem Kurs
sein.
Kurs
16
M
wird belegt von
N
Schueler
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die MC:NC-Beziehung
Es ist auch möglich, dass einer Entitätsmenge aus der M:N-Beziehung kein, ein oder mehrere Elemente aus der anderen Entitätsmenge zugeordnet ist. In diesem Fall steht analog zur
1:MC-Beziehung das Konditionalzeichen „C“.
Kunde
NC
MC
Fahrrad
mietet
Im Relationenmodell ist eine M:N-/ bzw. MC:NC-Beziehung nicht umsetzbar (siehe oben,
Seite 9)
Sie muss deshalb in 1:N-Beziehungen aufgelöst werden, d. h., die Beziehung wird eine eigene Tabelle (Verbindungsentity).
So wird im Beispiel "Kunde mietet Fahrrad" „Vermietung"als Verbindungsentität eingefügt.
Kunde
1
vereinbart
N
Vermietung
NC
bezieht
sich auf
1
Fahrrad
Für die Auflösung von M:N Beziehungen ist eine Verbindungsentität erforderlich. Im Relationenmodell nimmt dabei die Tabelle, die die Assoziationen darstellt, den Primärschlüssel der
beteiligten Tabellen als Fremdschlüssel auf. Die beiden Schlüssel zusammen können als
Primärschlüssel der Assoziationstabelle dienen. Weitere Attribute in dieser Tabelle sind in
der Regel möglich.
Für die 1:M Beziehung ist keine eigene neue Relation erforderlich, sondern sie wird durch
Aufnahme des Schlüsselattributes des übergeordneten Entitytyps in die Relation des untergeordneten Entitytyps hergestellt. Das aufgenommene Schlüsselattribut wird dann als
Fremdschlüssel bezeichnet.
In den nun folgenden Übungen zum ER-Modell werden die Kardinalitäten ohne Conditional-Optionen (C in den Kardinalitäten) dargestellt. Dies ist zum einen als didaktische Reduktion sinnvoll, weil sich das ER-Modell dann auf das Wesentliche konzentriert. Zum anderen ergeben sich die Conditional-Optionen oft nur im zeitlichen Ablauf und sind dauerhaft nicht sehr sinnvoll (Ein Kunde ohne Anfrage oder Auftrag macht eigentlich keinen
Sinn, dennoch wird ein Kunde, der gerade angelegt wird, erst in einem weiteren Schritt mit
einem Geschäftsprozess verbunden. In einer Datenbank muss demnach ein Kunde zunächst isoliert von Geschäftsprozessen existieren können).
Relationenmodell
Ein Relationenmodell (Relationenschema) besteht aus einer Menge von Attributen, die gemeinsame Eigenschaften von Objekten darstellen. Das Relationenmodell ist daher ein wertebasierendes Datenbankmodell. Die Ausprägung der Attribute wird über Standard-Datentypen (Integer, Real, Character, ... ) beschrieben.
Syntax: Relationenname(attribut1, attribut2, Çattribut3, ... attribut_n)
Hinweis: Der Name der Relation steht im Plural.
Das Primärschlüsselattribut wird unterstrichen dargestellt; Fremdschlüssel erhalten einen senkrechten Pfeil (Ç) vorangestellt.
17
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.1.6
Modellierungsergebnisse
Projekt "Fahrradvermietung - erweitert"
Entity-Relationship-Diagramm
N
1
Kunde
vereinbart
N
wohnt
in
1
Vermietung
Fahrradtyp
N
1
kategorisiert
bezieht
sich auf
1
N
Wohnort
Fahrrad
1
N
geliefert
von
1
Hersteller
gewartet bei
N
Inspektion
N
durchgeführt
von
Relationenmodell
1
Erweiterung:
FAHRRADTYPEN (Typnr, Typbezeichnung, Kurzerlaeuterung)
Monteur
INSPEKTIONEN (Inspektionnr, Datum, ÇFahrradnr, ÇMonteurnr)
MONTEURE (Monteurnr, Vorname, Name)
FAHRRAEDER (Fahrradnr, Bezeichnung, Rahmennummer, Tagesmietpreis, Wert, Kaufdatum, ÇHerstellernr, ÇTypnr)
18
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.1.7
Zusammenfassung
Entität: Eindeutig bestimmbares, von anderen wohlunterscheidbares Objekt
der realen Welt oder unserer Vorstellung (z. B.: Vorgang, Prozess). In der
Datenbank ist sie durch eine Zeile einer Tabelle repräsentiert.
Entitätstyp: Beschreibung des Bauplans einer jeden Entität gleichen Typs
(ist in der Datenbank durch die Tabellenüberschrift beschrieben)
Beziehung (Relationship): Beschreibt einen Zusammenhang zweier Objekte.
Beziehungstyp: Beziehung zweier Entitätstypen.
Attribut: Ein gemeinsames Merkmal aller Entitäten eines Entitätstyps (wird
in der Datenbank die Tabellespalte)
Attributswert: Eine Ausprägung eines Merkmals einer Entität, bzw. der
Schnittpunkt zwischen Zeile und Spalte ( In der Datenbank die Zelle)
Relationenmodell (Relationenschema): Ist die Beschreibung des Aufbaus
einer Entität (Tupel).
Unterschied Entity - Relation:
Entity:
Nach der Realität funktional zusammen gehörende Attribute
Relation: Menge von Attributen
Beispiele:
Entität (Entity) Entitätstyp
Attribute
(Eigenschaften)
Attributswerte
Relationenmodell (Relati(Ausprägungen) onenschema)
Schüler Hans
Dampf
Name
Dampf
Strasse
Rosenweg 3
Tagesmietpreis
780,00 €
Kaufdatum
16.05.2008
Name
Hesses
Vorname
Andreas
Schueler
Lady Lite Com- Fahrrad
fort
Herr Andreas
Hennes
Kunde
SCHUELER (Schuelernr,
Vorname, Name, Strasse,
ÇOrtnr)
FAHRRAEDER (Fahrradnr,
Bezeichnung, Rahmennummer; ÇHerstellernr)
KUNDEN (Kundennr, Name,
Vorname, ÇOrtnr)
(Beispiel für Primärschlüssel: Schuelernr ; Beispiel für Fremdschlüssel: ÇOrtnr)
Hinweis:
Weitere Beispiele, die als alternative Problemstellungen für
den Einstieg in die Datenmodellierung verwendet werden
können, finden Sie in Kapitel 5.6, Seite 115ff.
19
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2
Einrichten des Datenbankmodells auf einem Datenbankserver und Auswertung der erfassten Daten
Vorbemerkung
Die Schülerinnen und Schüler sollen in die Lage versetzt werden, die Anwendung und den
Gebrauch von Datenbanken im Kontext von Client-Server-Architekturen zu verstehen und zu
interpretieren.
Beim Einsatz von Software sind verschiedene Szenarien denkbar. Bereits das Modellieren
der Datenbank kann softwareunterstützt erfolgen. Dieses Vorgehen empfiehlt sich insbesondere für leistungsstarke Kurse und für Kurse, die in der Jahrgangsstufe 2 eine Vertiefung der
Datenbankkenntnisse in Verbindung mit dynamischen Webseiten mit Datenbankanbindung
erfahren (siehe Lehrplaneinheit "7 Design und Realisierung von Internetseiten").
Für die Modellierung stehen mehrere Free-Tools zur Verfügung. In dieser Handreichung wird
als Modellierungstool Azzurri Clay unter Eclipse verwendet (siehe unten, Seite 64 ff.). Wird
beim Modellieren der Datenbank auf Softwareeinsatz verzichtet, kann die Überführung des
ER-Modell in eine relationale Datenbank dennoch mit Hilfe unterschiedlicher Softwaretools
erfolgen.
Folgende Szenarien sind im Unterricht denkbar und werden in den nachfolgenden Ausführungen dargestellt.
Umsetzung im Unterricht
Aufgabenstellung
ER-Modellierung
Überführung in eine
Datenbank
Softwareunterstützt
- Eclipse
(Azzurri Clay)
Datenbankserver: MySQL
- SQLExplorer
Datenoperationen mit SQL
Theoretisch
- SQLExplorer
Frontend:
- Query Browser
- phpMyAdmin
- Open Office
Base
Open
Office
Base
Nachdem ein grundlegendes Verständnis für die Datenmodellierung entwickelt ist, soll nun
mit der Abfragesprache SQL das Datenbankmanagementsystem MySQL genutzt werden,
um die entworfene relationale Datenbank einzurichten. Dabei wird methodisch so vorgegangen, dass zunächst die Client–Server–Umgebung eingeführt und eingerichtet wird. Anschließend wird die Datenbank Fahrrad eingerichtet und eine Tabelle aus dem Modell angelegt.
Anhand dieser Tabelle werden dann die SQL-Befehle zur Datenmanipulation und zur Datenbankabfrage eingeführt. Dabei sollen wichtige Grundbegriffe geklärt werden. Im zweiten
Schritt werden Beziehungen zwischen den Tabellen eingerichtet und umfangreichere Datenbankabfragen bearbeitet.
Der Lehrplaninhalt "Datenoperationen mit SQL" kann mit jedem beliebigen relationalen Datenbankmanagementsystem (RDBMS) unterrichtet werden. In dieser Handreichung wird als
RDBMS die Open-Source-Software MySQL verwendet. Diese Entscheidung fiel insbesonde20
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
re im Hinblick auf die in der Lehrplaneinheit "7 Design und Realisierung von Internetseiten"
der Jahrgangsstufe 2 enthaltenen Inhalte "serverseitige dynamische Webseiten" und "Zugriff
auf Datenbanken". MySQL bietet als bevorzugtes Einsatzgebiet die Datenspeicherung für
Web-Services und wird häufig in Verbindung mit dem Webserver Apache und PHP, einer
Skriptsprache, die hauptsächlich zur Erstellung von dynamischen Webseiten verwendet wird,
eingesetzt. Diese Kombination wird entsprechend der Anfangsbuchstaben der beteiligten
Software als LAMP, MAMP bzw. WAMP bezeichnet, je nachdem ob als Betriebssystem
Linux, Mac OS oder Windows benutzt wird.
Die Erarbeitung der Lehrplaninhalte erfolgt in dieser Handreichung mit Hilfe eines WAMPServers. Er lässt sich mit Hilfe der Software XAMPP einfach (auch ohne Windows-Administratorrechte) installieren.
Für den Unterricht sollte die Installation des Webservers in Abhängigkeit der Netzkonfiguration erfolgen. Hierzu liegen Installationshinweise der ZPG-Netze vor.
Die Installation im Schulnetz sollte nur in Absprache mit den zuständigen Netzadministratoren erfolgen.
Die folgenden Ausführungen sind in erster Linie für Einzelplatzrechner zu verstehen. Damit
können Lehrerinnen und Lehrer sowie Schülerinnen und Schüler auf ihren privaten PCs mit
geringem Aufwand einen Apache-Server installieren und zur Unterrichtsvorbereitung bzw.
zum Üben der Unterrichtsinhalte nutzen.
Als Softwareumgebung wird serverseitig der MySQL-Server aus dem XAMPP-Paket und als
Frontend auf dem Client–PC MySQL Query Browser eingesetzt. Die anderen Varianten werden an späterer Stelle (siehe Seite 62 ff.) vorgestellt.
5.2.1
Das Client–Server–Prinzip
In einer Client–Server–Umgebung bieten bestimmte Rechner (Server) Funktionen (Dienste)
an andere Rechner (Clients) an, die diese Dienste nutzen. Der Server nimmt die Anfragen
der Clients entgegen und sendet diesen daraufhin die angeforderten Daten über das Netz.
Als Server bezeichnet man den zentralen Rechner (oder das zentrale Programm), der in einem Computer-Netz Dienste (zum Beispiel E-Mail), Anwendungsprogramme und Daten
(zum Beispiel eine Adressdatenbank) bereitstellt. Der Client ist ein Computer oder ein Programm, das über eine Datenverbindung auf einen Server zugreift, um bestimmte Datenverarbeitungsprozesse durchzuführen oder um Daten abzurufen. Die meisten ComputerNetze, insbesondere das Internet, sind nach dem Client-Server-Prinzip aufgebaut.
Die Begriffe "Client" und "Server" bezeichnen nicht nur die entsprechenden Computer,
(Hardware), sondern auch die erforderlichen Computerprogramme (Software).
Beispiele für Client–Server–Architekturen:
Client-Programm
Browser, z. B. Internetexplorer
E-Mailprogramm, z. B. Outlook
FTP-Client, z.B. Wise Ftp
Datenbank-Frontend
- MySQL Query Browser
- Eclipse/SQLExplorer
- phpMyAdmin
:
Server
Webserver
Mailserver
Ftp- Server
Datenbankserver, z. B. MySQL
21
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Hinweis:
In der Praxis ist die physikalische Unterscheidung zwischen Client und Server nicht immer
eindeutig, weil ein Computer auch beide Funktionen wahrnehmen kann. So können auf einem Arbeitsplatzrechner gleichzeitig der Datenbankserver mit den Datenbanken (MySQL)
und das Programm zur Kommunikation mit dem Datenbankserver (MySQL Query Browser)
installiert sein.
Im Unterricht ist es zu empfehlen, die Client–Server–Architektur zu visualisieren (Siehe Seite
24).
5.2.2
Herstellen einer Client–Server–Umgebung
¾ Java Runtime Environment installieren
Bevor mit dem Apache-Webserver gearbeitet werden kann, muss sichergestellt sein, dass
auf dem Rechner eine Java-Plattform vorhanden ist. Unter http://java.com/de/download/
steht die aktuelle Version des benötigten Java Runtime Environment zum Download bereit,
die kostenlos und ohne Registrierung installiert werden kann.
¾ XAMPP "installieren"
- Laden Sie von der Seite "http://www.apachefriends.org/de/xampp-windows.html#631" die
Datei "xampp-win32-1.7.0.zip" herunter. (Es handelt sich hierbei um die, bei der Erstellung
dieser Handreichung, aktuelle Version - Dezember 2008.) Mit dem Entpacken dieser Datei
wird in einem individuell festgelegten Installationslaufwerk ein Ordner "xampp" angelegt, in
den alle notwendigen Daten kopiert werden. Das Installationsverzeichnis sollte sich auf der
Root-Ebene eines beliebigen Laufwerks befinden, wobei dies auch ein Netzlaufwerk, beispielsweise H:\XAMPP sein kann.
- Im Ordner XAMPP muss anschließend die Datei "setup_xampp.bat" ausgeführt werden.
Dabei werden die Pfadangaben des Serverlaufwerks festgelegt.
Damit ist ein kompletter WAMP-Server mit Apache-Webserver und php-Unterstützung,
MySQL-Datenbank und phpMyAdmin als webbasiertes Frontend zur Datenbankadministration installiert. ("phpMyAdmin" ist ein Managementsystem für MySQL-Datenbanken. Es hilft,
typische Aufgaben wie das Anlegen von Datenbanken, das Bearbeiten von Strukturen, die
Benutzerverwaltung etc. zu vereinfachen. - Siehe hierzu die Ausführung unter Kapitel 5.5,
Seite 108 ff.)
(1) Mit der Datei xampp_start.exe im Ordner xampp wird der WAMP-Server gestartet.
(1)
(2)
22
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Wichtig:
Das sich öffnende DOS-Fenster muss während der Bearbeitung geöffnet bleiben! Falls
sich das Systemfenster wieder schließt, liegt eine parallele Nutzung von Ressourcen vor.
So kann beispielsweise ein anderes Programm den gleichen Port nutzen. In diesem Fall
deaktivieren Sie die andere Applikation (siehe Hinweis).
(2) Zum Beenden der Sitzung muss „xampp_stop.exe“ im Ordner xampp ausgeführt werden.
Damit wird auch das DOS-Fenster wieder geschlossen.
Ein Server auf dem eigenen Rechner (der local host) ist unter der IP-Adresse "127.0.0.1"
oder unter dem Namen "localhost" erreichbar.
Mit der Installation werden folgende Standardpfade festgelegt:
Für MySQL-Datenbanken
../xampp/mysql/data
Für HTML- bzw. php-Dokumente
../xampp/htdocs
Aufruf von phpMyAdmin:
http://localhost/phpmyadmin
(siehe hierzu unten, Seite 110 ff.)
Aufruf von lokalen Webseiten:
http://localhost/<Name_der_HTML-Seite>
Hinweis: Für den Betrieb von XAMPP ist darauf zu achten, dass kein anderes, konkurrierendes Webserver-Programm (z.B. Internet Information Server IIS) aktiv ist, da
sonst der Apache-Webserver behindert würde.
Um mit dem lokalen Webserver kommunizieren zu können, muss gegebenenfalls
das Internet-Telefonierprogramm "Skype" deaktiviert (heruntergefahren) werden.
¾ MySQL GUI Tools "installieren"
Die "MySQL GUI Tools" beinhalten u.a. den "MySQL Query Browser", mit dem MySQL-Datenbanken erzeugt werden können bzw. auf bestehende MySQL-Datenbanken zugegriffen werden kann (siehe Seite 25 ff.).
Daneben gehört das "MySQL Migration Toolkit" zu diesen GUI Tools. Mit ihm lassen sich
vorhandene Access-Datenbanken sehr einfach in MySQL-Datenbanken migrieren (siehe
hierzu unten, Seite Anhang 2 - 1).
Die "MySQL GUI Tools" stehen im Internet zum kostenlosen Download bereit:
"www.mysql.de/products/tools/migration-toolkit/". Die dort zur Verfügung gestellte Datei
mysql-gui-tools-noinstall-5.0-r12-win32.zip ermöglicht die Nutzung des Toolkit ohne Installation. Die zip-Datei ist lediglich zu entpacken.
23
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Elemente der Client–Server-Umgebung
Clients
Server
(2)
(1)
LAN
---------------------------
- Fileserver (Pro-
--------------------------gramme + Daten)
Proxyserver
Internet
- E-Mailserver
---------------------------
- Webserver
- Datenbankserver
-------------------------------------------------------------------------------
(3)
MySQL Datenbankserver
(4)
(1) In einer Client–Server–Umgebung nehmen die Clients mit Hilfe geeigneter Software
(Client–Software) Serverdienste in Anspruch.
(2) Die Serverdienste können im lokalen Netz (LAN) oder im Internet zur Verfügung stehen.
(3) Die Kommunikation mit dem Datenbankserver MySQL erfolgt mit Hilfe der Datenbanksprache SQL (Structured Query Language). Die SQL-Befehle werden mit Hilfe einer
geeigneten Clientsoftware wie beispielsweise MySQL Query Browser zum Datenbankserver gesandt und dort bearbeitet.
(4) Der Datenbankserver liefert dann dem Client das Ergebnis.
(5) Bevor die Clientsoftware zum Arbeiten mit dem Datenbankserver MySQL genutzt werden
kann, muss der MySQL-Datenbankserver gestartet sein. Dies geschieht aus dem Anwendungsserver XAMPP mit Hilfe des Buttons
(Verzeichnis H:\XAMPP)
Das Fenster des
Servers muss während der Arbeit geöffnet bleiben!
Wird der MySQL-Server nicht mehr benötigt, wird er mit dem Button
beendet.
24
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Der MySQL Query Browser als Frontend
Ein einfaches Werkzeug zum Kommunizieren mit MySQL-Datenbanken ist der MySQL Query Browser. Er ist Bestandteil der "MySQL GUI Tools".
Als Frontend ist eine Eingabemaske zu verstehen, mit der ein User Daten eingeben und an
das für ihn nicht sichtbare "Backend" - in diesem Fall eine Datenbank auf einem Server - zur
Weiterverarbeitung weiterleitet.
Nach dem Starten des Programms müssen zunächst
die Verbindungsinformationen zum (zuvor gestarteten)
Datenbankserver eingegeben werden (siehe Seite 23).
-
Name der Verbindung (optional)
-
Name des Servers; localhost, wenn
Der Server „lokal“ läuft. Soll auf einen
entfernten Server zugegriffen werden,
wird die IP-Adresse eingegeben.
-
Standardnutzername root
Das nachfolgende Fenster mit der Aufforderung zur
Angabe eines Vorgabeschemas für die Verbindung
kann mit "Ignorieren" übergangen werden.
Nach dem Start des Query Browsers liegt der folgende Bildschirm vor (zunächst ohne Daten
im Ergebnisfenster):
Fenster für die Eingabe der SQL-Befehle
Button zum Ausführen der SQLAnweisungen. Beim Ausführen
einer SQL-Anweisung muss die
entsprechende Datenbank im
Schemata-Fenster markiert sein.
Fenster der Datenbanken
(Schemata). Die Tabellen der
aktivierten Datenbank werden
angezeigt.
Fenster für programmbegleitende Hilfe.
Ergebnisfenster
25
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3
Datenoperationen mit SQL (Structured Query Language)
Zum Bearbeiten der Datenbank wird die Standardsprache für moderne Datenbanken SQL
(Structured Query Language) verwendet.
Die Sprache SQL wird verwendet für:
• Datendefinitionen
Data Definition Language (DDL)
• Datenbankabfragen
Data Query Language (DQL)
• Datenmanipulationen
Data Manipulation Language (DML)
• Datenkontrollen
Data Control Language (DCL)
Im Lehrplan für das Fach Informatik an Beruflichen Gymnasien sind in der Lehrplaneinheit
Relationale Datenbanken "Datenoperationen mit SQL" vorgesehen, wobei in der Hinweisspalte lediglich ein Verweis auf mögliche Befehle gemacht wird.
Die nachfolgenden Ausführungen zu den SQL-Befehlen gehen teilweise erheblich über die
Anforderungen des Lehrplans hinaus. Vor allem der erste Teil, in dem die Datenbank aus
dem Modell auf einem Datenbankserver implementiert wird (Seiten 73ff) sollte im Unterricht
sehr dosiert oder allenfalls als generierte Vorlage zur Analyse verwendet werden. Trotzdem
sollen in dieser Handreichung die grundlegenden SQL-Befehle zu diesen Thematiken angesprochen werden. Wenn auch diese Befehle nicht selbst formuliert werden müssen, so sollen
sie von den Schülerinnen und Schülern doch nachvollzogen und interpretiert werden können.
Dabei ist es notwendig, dass der/die Lehrende über das notwendige Hintergrundwissen verfügt.
Es obliegt dem Urteilsvermögen des/der Lehrenden, die Stoffauswahl unter Berücksichtigung
des Leistungsvermögens der Klasse vorzunehmen.
In den nachfolgenden Ausführungen wird zunächst auf dem MySQL-Server eine Datenbank
mit einer Tabelle eingerichtet und mit dieser Tabelle gearbeitet. Die Datenbank wird dann um
eine zweite Tabelle erweitert, die Beziehung zwischen diesen Tabellen wird eingerichtet und
SQL-Anweisungen mit mehreren Tabellen werden erarbeitet.
Als Arbeitsumgebung werden der Datenbankserver aus dem XAMPP-Paket sowie als Frontend der MySQL Query Browser eingesetzt:
1. Datenbankserver starten
2. MySQL Query Browser
starten
26
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3.1
Einrichten einer Datenbank, Erzeugen, Ändern und Löschen
einer Tabelle
Problemstellung:
Kai Carlsson, Inhaber der Fahrradvermietung Rent A Bike GmbH hat für seine Fahrradvermietung folgendes Entity-Relationship-Diagramm entwickelt.
Die Daten der zu vermietenden Fahrräder mit der Bezeichnung "Scott" sollen in einem ersten
Schritt in der Tabelle Fahrraeder_1 der Datenbank Fahrrad gespeichert werden.
¾ Anlegen der Datenbank
Bevor Tabellenstrukturen erzeugt und Werte in die Datenbanktabellen eingetragen werden
können, muss die Datenbank angelegt werden.
Syntax: CREATE DATABASE <datenbankname>;
Merke:
Jedes SQL-Statement endet mit einem Semikolon.
Beispiel:
Für die Fahrradvermietung Rent A Bike soll eine Datenbank "Fahrrad" erzeugt
werden. Das SQL-Statement zum Erstellen der Datenbank lautet demnach
CREATE DATABASE Fahrrad;
Dieser Befehl wird im SQL-Fenster eingegeben und ausgeführt. Schaltfläche:
27
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Nach dem Aktualisieren im Fenster Schemata (Funktionstaste F5) erscheint die angelegte
Datenbank Fahrrad. Die Datenbank wird mit einem Doppelklick auf den Datenbanknamen
geöffnet und erscheint dann im Fenster Schemata fett gedruckt.
Mit der SQL-Anweisung SHOW DATABASES
können die auf dem Server verfügbaren Datenbanken im Ergebnisfenster angezeigt werden.
¾ Löschen der Datenbank
Syntax: DROP DATABASE <datenbankname>;
Beispiel:
Für die Fahrradvermietung Rent A Bike soll eine Datenbank "test" gelöscht werden. Das SQL-Statement zum Löschen der Datenbank lautet demnach
DROP DATABASE test;
(Vor dem Löschen dieser Datenbank muss diese mit der CREATE DATABASE-Anweisung
erzeugt werden.)
Wird im Anschluss an die Löschanweisung das
Schemata-Fenster aktualisiert, ist der Eintrag
der Datenbank test verschwunden.
28
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Erstellen von Datenbanktabellen
Das Erstellen von Tabellen erfolgt mit der CREATE-Anweisung:
Syntax: CREATE TABLE <tabellenname>(<attributsbezeichnung> <datentyp>,
<attributsbezeichnung> <datentyp>, PRIMARY KEY (<attributsbezeichnung>)) [ENGINE = InnoDB];
Merke:
Jede Datenbanktabelle benötigt ein Attribut, das der eindeutigen Identifikation
eines Datensatzes in einer Tabelle dient. Dieses Attribut wird als Primärschlüssel
bezeichnet. Der Inhalt des Primärschlüssels darf sich in den anderen Zeilen nicht
wiederholen (eindeutiger Schlüssel).
Der Primärschlüssel wird innerhalb der CREATE TABLE-Anweisung mit dem
Ausdruck PRIMARY KEY (<attributsbezeichnung>) definiert.
Um in MySQL beim Erstellen mehrerer Tabellen referentielle Integrität zwischen
diesen Tabellen zu gewährleisten, müssen die Tabellen im Tabellentyp InnoDB
erzeugt werden. (Alternative Schreibweise: TYPE = InnoDB;)
Aufgabe:
In der Datenbank Fahrrad soll die Tabelle Fahrraeder_1 mit den
Attributen, wie im nebenstehenden ERM dargestellt, erzeugt
werden. Geben Sie den dafür notwendigen SQL-Befehl an.
Lösung:
CREATE TABLE Fahrraeder_1 (
Fahrradnr VARCHAR(5) NOT NULL
, Bezeichnung VARCHAR(50)
, Rahmennummer VARCHAR(10)
, Tagesmietpreis DOUBLE(4, 2)
, Wert DOUBLE(6, 2)
, Kaufdatum DATE
, PRIMARY KEY (Fahrradnr)
)ENGINE = InnoDB;
Tabelle erzeugen
Attribute und Attributstypen
Primärschlüssel festlegen
Gewährleistung der referentiellen
Integrität
Hinweis: Die SQL-Anweisung kann auch in einer
Zeile stehen.
Wird der SQL-Befehl im MySQL Query Browser eingegeben und ausgeführt, erscheint nach
dem Aktualisieren des Schemata-Fensters (F5) die angelegte Tabelle:
29
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Einige SQL-Datentypen:
Typ
AUTOINCREMENT *)
Bedeutung
Beispiel
CREATE TABLE Kunden (Kundennr AUTOINCREMENT)
CHAR(länge) /
VARCHAR(länge) **
Text
CREATE TABLE Kunden(Name CHAR(30));/
CREATE TABLE Kunden(Name VARCHAR(30));
INTEGER
Ganzzahl
CREATE TABLE Inspektionen(Dauer INTEGER);
DOUBLE
Fließkommazahl
CREATE TABLE Fahrraeder (Wert DOUBLE);
DATE
Datumsangaben
CREATE TABLE Vermietungen(von DATE);
TIME
Zeitangaben
CREATE TABLE Unterricht (Beginn TIME);
DATETIME
Datums- mit Zeitangaben
CREATE TABLE Auftraege(erstlief DATETIME);
BIT ***)
ja/nein als 0/-1
CREATE TABLE Forderungen(bezahlt BIT);
TINYINT
***)
Ganzzahl (0 - 255) CREATE TABLE Forderungen(bezahlt TINYINT);
(Im Gegensatz zur Entity, die im Singular genannt wird, steht eine Tabelle im Plural.)
*)
Zum Typ AUTO-INCREMENT siehe oben, Seite 10.
**
Die Typen CHAR und VARCHAR werden unter Angabe einer Länge deklariert, die die
maximale Anzahl von Zeichen spezifiziert, die gespeichert werden kann. Der charDatentyp ist ein Datentyp fester Länge, wenn die NOT NULL-Klausel angegeben wird.
Wird ein Wert, der kürzer als die Länge der Spalte ist, in eine char NOT NULL-Spalte
eingefügt, so wird der Wert rechts bis zum Erreichen der Spaltengröße mit Leerzeichen
aufgefüllt. Wenn z. B. eine Spalte als char(10) definiert wurde und "music" die zu speichernden Daten darstellt, speichert der SQL-Server diese Daten als "music_____", wobei "_" ein Leerzeichen anzeigt.
Der varchar-Datentyp ist ein Datentyp variabler Länge. Werte, die kürzer als die Größe
der Spalte sind, werden nicht rechts mit Leerzeichen bis zum Erreichen der Spaltengröße aufgefüllt.
***)
Den aus Access-Anwendungen bekannten Datentyp BOOLEAN gibt es in MySQL nicht.
Er wird beim Anlegen einer Tabelle grundsätzlich in den Typ "TINYINT" umgewandelt.
Bei diesem Datentyp handelt es sich um einen ganzzahligen Datentyp mit einem Wertebereich von 0 bis 255. Die importierten Ja-Werte werden mit -1, die Nein-Werte mit 0
gespeichert.
Für ein Datenfeld, dessen Eintragungen nicht aus einem vorhandenen Datenstand importiert werden soll, bietet sich der ENUM-Typ als sinnvollere Lösung an. Der Datentyp
ENUM ist ein String-Objekt mit einem Wert, der aus einer Liste zulässiger Werte ausgewählt wird, die beim Erstellen der Tabelle explizit in der Spaltendefinition aufgelistet werden.
Beispiel: CREATE TABLE xy(bezahlt ENUM('nein', 'ja') default 'nein');
Anmerkung: Umfassende Ausführungen zu den Datentypen finden Sie unter Kapitel 11 des
MySQL Referenzhandbuch
(http://dev.mysql.com/doc/refman/5.1/de/index.html).
30
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Bestandteile (Aufbau) einer Datenbanktabelle
Die Fahrräder der Rent A Bike GmbH sollen in der Tabelle Fahrraeder_1 in der Datenbank
Fahrrad gespeichert werden (Arbeitsblattvorlage siehe unten, Seite Anhang 1-1)
Zeile (Tupel)
= Datensatz
Spalte (Datenfeld)
= Attribut
Datenfeldinhalt
=Attributwert
Spaltennamen
= Attributname
Elemente einer Tabelle
⇒ Eine Tabelle besteht aus Zeilen und Spalten.
⇒ Eine Zeile (= ein Datensatz / Tupel) enthält die Daten eines Kunden. Alle Zeilen sind
gleich aufgebaut.
⇒ Die Identifizierung eines Datensatzes erfolgt über einen eindeutigen Primärschlüssel
(Zeilenname, hier die Fahrradnr).
⇒ Die Identifizierung einer Spalte erfolgt über einen eindeutigen Spaltennamen
(= Attributname). Jede Spalte enthält einen bestimmten Typ von Attributen (z. B. Zahlen,
Text, Datum).
Die Bedeutung des Primärschlüssels
Wird für ein Datenfeld (=Attribut) die Eigenschaft des Primärschlüssels festgelegt, kann
mit Hilfe dieses Datenfeldes der einzelne Datensatz eindeutig identifiziert werden.
y
y
Jede Fahrradnummer kann nur einmal vorkommen.
Die Datensätze sind nach dem Primärschlüsselfeld (Fahrradnr) sortiert.
31
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Löschen einer Tabelle aus der Datenbank
Das Löschen einer Datenbanktabelle (Tabellenstruktur und Tabellendaten) erfolgt mit der
SQL-Anweisung
Syntax: DROP TABLE <tabellenname>;
Zum Löschen der Tabelle "Fahrraeder_1" wäre folgender SQL-Befehl einzugeben:
DROP TABLE Fahrraeder_1;
Aufgabe:
In der Datenbank Fahrrad soll
•
zur Kategorisierung der Fahrräder eine Tabelle mit dem Namen Fahrradtypen und den Attributen Typnr (Primärschlüssel) und Bezeichnung eingerichtet werden.
•
Für die Speicherung der Hersteller der Fahrräder eine Tabelle Hersteller
mit den Attributen Herstellernr (Primärschlüssel) und Herstellername eingerichtet werden (siehe ERM Seite 27).
Wenn das Fenster Schemata aktualisiert (F5) wird, erscheinen die angelegten Tabellen in
der Liste der Tabellen.
Aufgabe:
Die Tabelle Fahrradtypen soll nun doch nicht verwendet werden und ist
mit der SQL-Anweisung DROP TABLE Fahrradtypen wieder zu löschen.
Sollen lediglich die Daten einer Tabelle gelöscht werden, deren Struktur jedoch erhalten
bleiben, so ist folgender SQL-Befehl anzuwenden:
Syntax: DELETE * FROM <tabellenname>;
(Mehr hierzu, siehe unter "Datensätze löschen" – Seite 55)
32
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Ändern einer Tabellenstruktur
Mit der SQL-Anweisung ALTER TABLE kann die Struktur einer bestehenden Tabelle geändert werden. Beispielsweise können Spalten hinzugefügt oder gelöscht, Indizes erzeugt
oder gelöscht, der Typ bestehender Spalten geändert aber auch Spalten oder die Tabelle
selbst umbenannt werden.
Attribute hinzufügen
Syntax: ALTER TABLE <tabellenname> ADD COLUMN
<attributsbezeichnung> <datentyp>;
Beispiel: Für jeden Hersteller soll dessen Telefonnummer, Faxnummer, Straßenbezeichnung und die Ortsnummer erfasst werden können. Für alle Attribute sollen 25 Zeichen reserviert werden.
ALTER
ALTER
ALTER
ALTER
Attributstyp ändern
TABLE
TABLE
TABLE
TABLE
Hersteller
Hersteller
Hersteller
Hersteller
ADD
ADD
ADD
ADD
COLUMN
COLUMN
COLUMN
COLUMN
Telefon CHAR(25);
Fax CHAR(25);
Strasse CHAR(25);
Ortnr INT(5);
Syntax: ALTER TABLE <tabellenname> MODIFY <attributsname> <datentyp>;
Beispiel: Das Attribut Ortnr in der Tabelle Hersteller wurde mit
falschem Datentyp hinzugefügt (siehe oben, Attribute
hinzufügen). Es soll als Datentyp CHAR(5) erhalten.
ALTER TABLE Hersteller MODIFY Ortnr CHAR(5);
Attribute entfernen
Syntax: ALTER TABLE <tabellenname> DROP COLUMN
<attributsbezeichnung>
Beispiel: Das Attribut Ortnr der Tabelle Hersteller ist zu entfernen.
ALTER TABLE Hersteller DROP COLUMN Ortnr;
Attributsname ändern
Syntax: ALTER TABLE <tabellenname> CHANGE <attributsname_alt> <attributsname_neu> <datentyp>
Beispiel: In der Tabelle Hersteller soll anstelle der Faxnummer
die E-Mail-Adresse gespeichert werden. Das Attribut
Fax ist in Email umzubenennen. Für die E-MailAdresse sind 20 Zeichen zu reservieren.
ALTER TABLE Hersteller CHANGE Fax Email CHAR(20);
Tabellennamen ändern
Syntax: ALTER TABLE <tabellenname> RENAME TO
<neuerName>
Beispiel: Die Tabelle Hersteller soll den neuen Namen Produzenten erhalten.
ALTER TABLE Hersteller RENAME TO Produzenten;
33
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3.2
Daten in Datenbanken schreiben
¾ Datensätze in Tabellen hinzufügen
Situation: Für die Verwaltung der Fahrräder sollen zunächst die Fahrräder mit der Bezeichnung „Scott“ in die Tabelle fahrraeder_1 erfasst werden.
Syntax:
INSERT INTO <tabellenname>(<attributsbezeichnung1>, <attributsbezeichung2>, …) VALUES (<attributswert1>, <attributswert2>, …);
Beispiele:
Absicht
Befehl
Text einfügen
INSERT... ( ... Bezeichnung, ...) VALUES (...“Scott ...“, ...) ;
Datumswert einfügen
INSERT... ( ... Kaufdatum, ...) VALUES (..."2008-07-23", ...);
numerischer Wert einfügen
INSERT... ( ... Wert, ...) VALUES (... 899.00, ...);
Berechnung einfügen
INSERT... ( ... Wochenpreis, ...) VALUES (... 19.95 * 7, ...);
Hinweis:
Einige SQL-Dialekte verlangen folgende Schreibweise für Datumsangaben:
…#2008-07-23# …
SQL-Befehl zum Erfassen des ersten Fahrrades:
INSERT INTO Fahrraeder_1 (Fahrradnr, Bezeichnung, Rahmennummer, Tagesmietpreis, Wert, Kaufdatum)
VALUES ("6", "Scott Speedster", "MTB/B88", 19.95, 899.0, "2008-07-23");
Die SQL-Anweisung wird im MySQL Query Browser eingegeben:
Das Ergebnis kann mit der Auswahlanweisung SELECT * FROM Fahrraeder_1 kontrolliert
werden (zur SELECT-Anweisung siehe Seite 36 ff.):
34
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Hinweis:
An dieser Stelle wird zunächst nur mit der Tabelle Fahrraeder der Datenbank Fahrrad_0 gearbeitet. Dabei soll mit Hilfe der Auswahlabfragen der Umgang mit dem MySQL Query Browser geübt und vertieft werden. Im nächsten Schritt wird dann die Beziehung zu der auch
schon angelegten Tabelle Hersteller (siehe Seite 32) eingerichtet.
Damit dafür ein einheitlicher Datenstand mit ausreichend Datenmaterial zur Verfügung steht,
werden jetzt sinnvollerweise Struktur und Daten importiert, die Grundlage für die weitere
Vorgehensweise sind.
SQL-Script–Dateien importieren
Mit Hilfe des MySQL Query Browsers lassen sich vorhandene Skriptdateien zum Anlegen
von Datenbanken und Einfügen von Tabelleninhalte importieren.
(Siehe hierzu auch Seite Anhang 2 - 6.)
Hierzu müssen die entsprechenden Dateien (fahrrad_0_struktur.sql und fahrrad_0_daten.sql)
jeweils über die Befehlsfolge
Datei Æ Skript öffnen…
geöffnet und mit der Schaltfläche
aktiviert werden.
Nach dem Ausführen der Skriptdateien wird die
importierte Datenbank mit den
Tabellen angezeigt.
Wenn das Datenmaterial bereit gestellt ist, stehen zwar die beiden Tabellen Fahrraeder und
Hersteller in der Datenbank Fahrrad_0 zur Verfügung (siehe auch Datenbankstruktur Seite 27),
ausgewertet wird aber zunächst nur die Tabelle Fahrraeder.
35
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3.3
Daten aus einer Datenbanktabelle lesen
Situation Im Verkaufsraum der Fahrradvermietung möchte ein Kunde eine Übersicht (Liste) aller Fahrräder, deren Tagesmietpreis unter 15,00 EURO liegt. Die Mitarbeiterin wählt die entsprechenden Informationen aus (AB-Vorlage Seite Anhang 1 -8).
SQL
Backend:
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis
FROM Fahrraeder
WHERE Tagesmietpreis < 15;
Frontend:
Abfrageergebnis
Backend: In diesem Bereich liegen praktisch alle Dateien, die der MySQL-Server zur Verwaltung der Informationen braucht. Dieser Bereich ist den Administratoren, Programmierern
und Designern vorbehalten.
Frontend: Dies ist der Bereich der Benutzer, also derjenigen, welche die Ergebnisse aus der
Datenbank benötigen. Software für Frontends können unter anderen SQLExplorer in Eclipse,
phpMyAdmin aus dem XAMPP-Paket, MySQL Query Browser aus den MySQL Tools, Open
Office Base oder auch MS ACCESS sein. Auf einige dieser Frontends wird in dieser Handreichung an anderer Stelle eingegangen.
Als Kommunikationsplattform zwischen Backend und Frontend dient die universelle Abfragesprache SQL (Structured Query Language).
Befehlssyntax der SELECT-Anweisung
SELECT <attributsbezeichnung1>, <attributsbezeichnung2> …
FROM <tabelle> [, <tabelle>, <tabelle>....]
[WHERE <bedingung> ]
[ORDER BY <attributsbezeichnung> [ASC|DESC]..]
[GROUP BY <attributsbezeichnung> ]
[HAVING <bedingung> ];
36
( * = alle Felder )
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Übersicht zu SQL-Klauseln
Die FROM Klausel
Hinter FROM steht der Name der Tabelle. Entstammen die Felder verschiedenen Tabellen, so muss jeweils der Tabellenname durch einen
Punkt getrennt vorangesetzt werden (z.B.: Kunden.Ortnr).
Die WHERE Klausel
Damit wird bestimmt, welche Datensätze (Zeilen einer Tabelle) ausgewählt werden sollen. (Bedingungsprüfung). Enthält die Bedingungsprüfung mehrere Bedingungen, werden diese mit logischen Operatoren
AND, OR und NOT verknüpft:
AND ist dann wahr, wenn beide Bedingungen/Kriterien erfüllt sind
Beispiel: Alle weiblichen Kunden aus Filderstadt (Ortnr=29740).
… Geschl = "w" AND Ortnr = 29740
OR
ist dann wahr, wenn mindestens eine der beiden Bedingungen/Kriterien erfüllt ist.
Beispiel: Alle Kunden aus Blaubeuren (Ortnr 39815) und
Laichingen (Ortnr 39816).
… OrtNr = 39815 OR Ortnr = 39816
NOT
negiert einen Ausdruck.
Beispiel: Alle Kunden, die nicht aus Stuttgart kommen.
… NOT Ort = "Stuttgart"
Die ORDER BY Klausel
Daten werden nach einem oder mehreren Feldnamen sortiert ausgegeben. Die vorgegebene Sortierreihenfolge ist aufsteigend
ASC(ending). Soll absteigend sortiert werden, muss DESC(ending)
eingegeben werden (…ORDER BY wert DESC).
Die GROUP BY Klausel
Sie dient dazu, die Zeilen einer Tabelle nach bestimmten Feldern zu
gruppieren.
Die HAVING Klausel
Bei der HAVING-Klausel werden bestimmte Gruppen aus einer Gruppenmenge ausgewählt. Somit kann die HAVING-Klausel nur im Zusammenhang mit der GROUP BY-Klausel angewandt werden.
Hinweis: MySQL verwendet als Platzhalter für beliebige Zeichen innerhalb einer Zeichenkette das "%"-Symbol. In Access findet das "*"-Symbol Anwendung.
Übersicht: Vergleichs-Operatoren / Arithmetische Operatoren
SQL kennt die üblichen Vergleichsoperatoren:
= gleich
<> ungleich > größer < kleiner
>= größer gleich
<= kleiner gleich
BETWEEN .Wert1..AND..Wert2.. Vergleichswert liegt zwischen Wert1 und Wert2
IN Werteliste
Vergleichswert ist in der angegebenen Werteliste
Like Zeichenfolge
Vergleichszeichen entsprechen der Zeichenfolge
Is Null Feld
Vergleichsfeld hat einen NULL-Wert
Vergleichsoperatoren können verknüpft werden mit den Operatoren AND, OR und NOT
Rechenoperationen ( + , - , * , / ) sind nur möglich mit numerischen Daten.
37
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Übersicht Aggregatsfunktionen (Gruppierungsfunktionen)
AVG(Spalte)
MAX(Spalte)
SUM(Spalte)
= Durchschnittswert
= Maximalwert
= Summe aller Einträge
in einer Spalte
COUNT(Spalte)
MIN(Spalte)
= Anzahl aller Einträge
= Minimalwert
Gruppierungsfunktionen können nur anstelle eines Spaltennamens direkt hinter der SELECTAnweisung stehen. Sie liefern genau einen Wert, beziehen sich jedoch auf mehrere Tabellenzeilen.
Aufgabenbeispiele für einfache Auswahlabfragen mit der Tabelle Fahrraeder
der Datenbank Fahrrad_0
Methodischer Hinweis:
Die folgenden SQL-Befehle sollte anhand der allgemeinen Syntax des SELECT-Befehls
(siehe Seite 36) erarbeitet werden.
Um die Abfragen mit Hilfe der SQL-Befehle in der Datenbank abzuspeichern, ist die SQLAnweisung
CREATE VIEW viewname AS SELECT … ;
anzuwenden.
Die so gespeicherten Abfragen können jederzeit mit dem SQL-Befehl
SELECT * FROM viewname ;
erneut ausgeführt werden.
Beispiel
CREATE VIEW FahrradUnter15 AS
SELECT *
FROM Fahrraeder
WHERE Tagesmietpreis < 15;
SELECT *
FROM FahrradUnter15
WHERE Bezeichnung = "Scott%";
38
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Aufgabenbeispiele sind als einführende Grundaufgaben in die SQL-Syntax zu verstehen.
Zu den Aufgabenbeispielen wird eine Arbeitsblattvorlage (siehe Seite Anhang 1 - 9 ff.) angeboten, die an die Schülerinnen/Schüler in digitaler Form ausgeteilt und dann bearbeitet/vervollständigt werden kann.
Aufgabe 1: Ausgabe einer ausgewählten Anzahl von Attributen
Von allen Fahrrädern sollen die Fahrradnummer, die Bezeichnung und der
Kaufpreis ausgegeben werden. Die Aufstellung soll nach dem Kaufpreis aufsteigend sortiert sein.
Aufgabe 2: Selektion mit einer Bedingung (einfacher Textvergleich)
Aufzulisten sind die Attribute
Fahrradnr, Bezeichnung, Wert
und Kaufdatum des Fahrrads mit
der Bezeichnung „Scott Scale 70“.
Erweiterung:
Alle Fahrräder, deren Bezeichnung mit ‚Scott‘ beginnt, soll
aufgelistet werden. Die Liste
sollen nach dem Kaufdatum
absteigend sortiert sein
Aufgabe 3: Selektion mit einer Bedingung (numerischer Vergleich)
Gewünscht wird eine Auflistung aller Fahrräder, deren Tagesmietpreis unter
15.00 € liegt (Attribute: Fahrradnr, Bezeichnung, Tagesmietpreis).
Aufgabe 4: Selektion mit einer Bedingung (Vergleich mit Datumswert)
Alle Fahrräder, die vor dem 01.01.2009 angeschafft wurden, sind nach dem
Kaufdatum absteigend sortiert auszugeben. (Fahrradnr, Bezeichnung, Rahmennummer, Kaufdatum).
Aufgabe 5: Abfrage mit berechnetem Feld
Eine Liste soll erstellt werden, in der für alle Fahrräder ein Wochenpreis ausgewiesen wird. Der Wochenpreis errechnet sich aus dem Tagespreis * 6 (ein Tag
ist frei). Die Liste soll nach dem Wochenpreis aufsteigend geordnet sein und
folgende Informationen enthalten (Auszug):
39
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Aufgabe 6:
Abfrage mit zwei Bedingungen (UND-Verknüpfung)
Alle Fahrräder mit der Bezeichnung Scott, deren Kaufdatum
vor 2009 liegt, sind, fallend
sortiert nach dem Kaufdatum,
anzuzeigen. (Fahrradnr, Bezeichnung, Kaufdatum)
Aufgabe 7:
Abfrage mit zwei Bedingungen (ODER-Verknüpfung)
Von allen Fahrrädern, deren Tagesmietpreise unter 10,00 € oder über 20,00 €
liegen, sollen die Attribute Fahrradnr, Bezeichnung und Tagesmietpreis angezeigt werden.
Aufgabe 8:
Abfrage mit der NICHT-Bedingung (Verneinung)
Alle Fahrräder (Attribute: Fahrradnr und Bezeichnung), außer dem mit der Bezeichnung Scott Speedster sollen angezeigt werden. Die Aufstellung soll alphabetisch fallend nach Bezeichnungen sortiert sein.
Aufgabe 9:
Abfrage mit der "Zwischen"-Bedingung BETWEEN … AND …
Aufzulisten sind alle Fahrräder, deren Tagesmietpreis zwischen 15,00 € und
20,00 € liegt (Attribute: Fahrradnr, Bezeichnung und Tagesmietpreis).
Aufgabe 10: Abfrage mit der YEAR-Funktion
Ermitteln Sie, welche Fahrräder im Jahr 2007 gekauft wurden.
Aufgabe 11: Abfrage mit der MONTH-Funktion
Alle Fährräder, die im Monat Mai gekauft wurden, sollen aufgelistet werden.
Aufgabe 12: Abfrage mit der Systemdatumsfunktion NOW
Welche Fahrräder werden im laufenden Jahr zwei Jahre alt?
Aufgabe 13: Aggregatfunktionen SUM, AVG, MAX, MIN
Ermitteln Sie den Gesamtwert aller Fahrräder, deren durchschnittlichen Wert
sowie den Wert des teuersten und des günstigsten Fahrrades.
40
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungshinweise
Aufgabe 1:
SELECT Fahrradnr, Bezeichnung, Wert
FROM Fahrraeder
ORDER BY wert;
Aufgabe 2:
SELECT Fahrradnr, Bezeichnung, Wert, Kaufdatum
FROM Fahrraeder
WHERE Bezeichnung = "Scott Scale 70"
ORDER BY Kaufdatum DESC;
Erweiterung:
SELECT Fahrradnr, Bezeichnung, Wert, Kaufdatum
FROM Fahrraeder
WHERE Bezeichnung LIKE "Scott%"
ORDER BY Kaufdatum DESC;
Aufgabe 3:
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis
FROM Fahrraeder
WHERE Tagesmietpreis < 15;
Aufgabe 4:
SELECT Fahrradnr, Bezeichnung, Rahmennummer, Kaufdatum
FROM Fahrraeder
WHERE Kaufdatum < "2009-01-01"
ORDER BY Kaufdatum;
Aufgabe 5:
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis, Tagesmietpreis*6 As Wochenpreis
FROM Fahrraeder
ORDER BY Wochenpreis;
Rechenfeld
Überschrift
Aufgabe 6:
SELECT Fahrradnr, Bezeichnung, Kaufdatum
FROM Fahrraeder
WHERE Kaufdatum < "2009-01-01"
AND Bezeichnung LIKE "Scott%"
ORDER BY Kaufdatum DESC;
41
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Aufgabe 7:
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis
FROM Fahrraeder
WHERE Tagesmietpreis < 10
OR Tagesmietpreis > 20;
Aufgabe 8:
SELECT Fahrradnr, Bezeichnung
FROM Fahrraeder
WHERE NOT Bezeichnung = "Scott Speedster"
ORDER BY Bezeichnung DESC;
Die WHERE-Klausel kann auch mit den Vergleichsoperatoren ungleich <> formuliert werden:
WHERE Bezeichnung <> "Scott Speedster"
Aufgabe 9:
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis
FROM Fahrraeder
WHERE Tagesmietpreis BETWEEN 15 AND 20;
Aufgabe 10
SELECT *
FROM Fahrraeder
WHERE YEAR(Kaufdatum) = 2007;
Die Funktion YEAR(<datumfeld>) liefert die Jahreszahl aus einem regulären Datum.
Aufgabe 11
SELECT * FROM Fahrraeder
WHERE Month(Kaufdatum) = 5;
Die Funktion MONTH(<datumfeld>) liefert die Monatszahl aus einem regulären Datum.
Aufgabe 12
SELECT * FROM Fahrraeder
WHERE YEAR(Kaufdatum) =YEAR(NOW()) - 2 ;
Die Funktion NOW() liefert das aktuelle Datum.
Aufgabe 13
SELECT SUM(Wert) AS Gesamtwert, AVG(Wert) AS Durchschnitt, MAX(Wert)AS
Höchster, MIN(Wert) AS Niedrigster
FROM Fahrraeder;
42
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3.4
Datenbank mit mehreren Tabellen
Problemstellung
Nachdem die Daten der Fahrräder in der Tabelle Fahrraeder ausgewertet wurden, sollen nun
auch die Daten zu den Herstellern in die Datenbank aufgenommen werden. In der nachfolgenden Aufstellung sind die Fahrräder mit den Herstellerangaben aufgelistet (Auszug):
Angenommen, die Tabelle Fahrraeder wird um die Attribute Herstellernr und Herstellername
erweitert und die Herstellerinformationen werden wie in der Abbildung dargestellt erfasst.
Diese Tabelle entspricht erkennbar nicht den Regeln einer relationalen Datenbank, weil das
Attribut Herstellername nicht direkt vom Primärschlüssel, sondern indirekt (transitiv) über das
Attribut Herstellernr vom Primärschlüssel der Tabelle abhängig ist. Alle Attributswerte einer
Tabelle müssen aber direkt vom Primärschlüssel abhängen (siehe oben, Seite 13).
Diese Art der Datenspeicherung kann in der Datenbank zu Anomalien führen, wenn
- bei der Erfassung der Herstellerangaben gleiche Informationen mehrmals erfasst werden
müssen. Bei Eingabefehlern ist nicht eindeutig, welche Eingabe fehlerhaft ist und welche
nicht (Einfügeanomalie);
- beim Ändern von Herstellerangaben diese Änderungen an verschiedenen Stellen vorgenommen werden müssen. Auch hierbei können Fehler passieren (Änderungsanomalie).
- Ebenso muss beim Löschen eines Herstellers dieser an verschiedenen Stellen aufgesucht und gelöscht werden, was zu Fehlern führen kann (Löschanomalie).
43
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
In relationalen Datenbanken arbeitet man mit mehreren Datenbanktabellen. Im vorliegenden
Beispiel, in dem Fahrräder und Hersteller gespeichert werden sollen, lagert man das Attribut
Herstellername in eine eigene Tabelle Hersteller aus und ordnet jedem Hersteller eine eindeutige Herstellernummer zu. Die beiden Tabellen Fahrraeder und Hersteller verbindet man
dann mit dem gemeinsamen Attribut Herstellernr. Die Attributswerte des Attributs Herstellernr aus der Child-Tabelle Fahrraeder zeigen auf die übereinstimmenden Attributswerte in
der Parent-Tabelle Hersteller (siehe Anhang 1, Seite Anhang1 - 4 f.).
Tabelle Fahrraeder: CHILD-Tabelle
Tabelle Hersteller: Parent-Tabelle
Gemeinsames Feld: Fremdschlüssel
Gemeinsames Feld: Primärschlüssel
Begriff
Erklärung
• Parent-Tabelle und
Beim Verknüpfen von Tabellen wird/werden jedem Datensatz der Parent-Tabelle (= Mastertabelle) je nach Beziehungsart ein oder mehrere Datensätze der Child-Tabelle (= Detailtabelle) zugeordnet.
Das für die Verknüpfung erforderliche Verbindungsfeld (= Schlüsselfeld) in der Parent-Tabelle muss beim Planen der Tabellenstruktur
immer als Primärschlüssel festgelegt werden.
• Child-Tabelle
• Primärschlüssel
In einer Tabelle muss ein Datenfeld (Attribut) als Primärschlüssel
festgelegt werden, wenn eine Beziehung zu anderen Tabellen hergestellt werden soll. Durch die Festlegung als Primärschlüssel können
sich in den Zeilen dieses Feldes Eintragungen nicht wiederholen.
• Fremdschlüssel
Verbindungsfeld in der Child-Tabelle
¾ Herstellen einer Beziehung zwischen Datenbanktabellen
Hinweis: Die Behandlung dieses Inhalts ergibt sich nicht zwingend aus dem Lehrplan. Siehe
aber Vorbemerkung Seite 20.
Die Definition der Beziehung erfolgt über den Fremdschlüssel (Child-Tabelle). Er kann erst dann
definiert werden, nachdem der Primärschlüssel (Parent-Tabelle) definiert ist. Außerdem kann
für das Fremdschlüsselattribut ein Index angelegt werden, um Zugriffe zu beschleunigen.
44
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Fremdschlüsselattribut einfügen:
Zunächst ist in der Child-Tabelle Fahrraeder das Fremdschlüsselattribut Herstellernr einzufügen (in der importierten Datenbank Fahrrad_0 ist dieses Attribut bereits enthalten - siehe
oben, Seite 35):
Syntax:
ALTER TABLE <tabellenname> ADD COLUMN <schlüsselattribut>);
ALTER TABLE Fahrraeder ADD COLUMN Herstellernr VARCHAR(5) ;
Index erzeugen (optional):
Syntax:
ALTER TABLE <tabellenname> ADD INDEX <indexname> (<schlüsselattribut>);
Der Index für das Fremdschlüsselattribut Herstellernr in der Tabelle Fahrraeder wird demnach folgendermaßen erzeugt:
ALTER TABLE Fahrraeder ADD INDEX Herstellernr_index (Herstellernr) ;
Beziehung herstellen:
Syntax:
ALTER TABLE <child_tabellenname> ADD CONSTRAINT <relationenbezeichnung> FOREIGN KEY(<fremdschlüsselattribut>) REFERENCES <
parent_tabellenname> (<primärschlüsselattribut>);
ALTER TABLE Fahrraeder ADD CONSTRAINT Relation1 FOREIGN KEY(Herstellernr)
REFERENCES Hersteller (Herstellernr);
Erläuterungen zur Syntax:
Es werden CONSTRAINTS (= Einschränkungen) mit dem Befehl ALTER (= verändern) definiert. Die recht freie Übersetzung des Befehls lautet somit:
Ändere die Tabelle Fahrraeder, indem eine Einschränkung mit dem Namen Relation1 hinzugefügt wird. Diese Einschränkung bezieht sich auf das Attribut Herstellernr, das nur Werte
annehmen darf, die auch in der Tabelle Hersteller unter Herstellernr zu finden sind (= Fremdschlüssel).
Diese Fremdschlüssel sind per se nicht indiziert, was in einem RDBMS auch nicht notwendig
ist. Die Indizierung dient der Beschleunigung der Zugriffe, verlangsamt aber Schreiboperationen. Die Indizierung über Attribute ist bei den führenden Herstellern von Datenbanksoftware sehr unterschiedlich geregelt, weshalb sie hier nicht weiter behandelt wird.
Erklärungen im Einzelnen:
ALTER TABLE Fahrraeder
Verändert die Struktur der Tabelle Kunden.
ADD CONSTRAINT
Fügt eine Bedingung bzw. eine Einschränkung in die Tabelle ein.
Relation1
Ist der gewählte Name der Einschränkung (hier: Name der ersten
Beziehung in der Datenbank zwischen Kunden und Personal).
FOREIGN KEY(Herstellernr) Das Attribut Herstellernr in der Tabelle Fahrraeder ist der Fremdschlüssel in der Beziehung zur Tabelle Hersteller.
REFERENCES
Der Fremdschlüssel (Herstellernr) referenziert (d.h.: nimmt Bezug)
auf das Primärschlüsselattribut (Herstellernr) der Tabelle Hersteller.
45
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die referentielle Integrität stellt sicher, dass in einer Child-Tabelle die Fremdschlüssel nur
solche Werte annehmen können, die in der referenzierten Parent-Tabelle der Beziehung bereits als Primärschlüssel angelegt worden sind.
Am Beispiel der Tabellen HERSTELLER und FAHRRAEDER bedeutet dies, dass bei einem
neu gelieferten Fahrrad nur dann die Herstellernummer des Herstellers (Attribut Herstellernr)
in der Tabelle FAHRRAEDER erfasst werden kann, wenn diese Herstellernummer als Primärschlüssel in der Tabelle HERSTELLER vorhanden ist. Darüber hinaus können die Daten eines
Herstellers aus der Tabelle HERSTELLER nicht gelöscht werden, solange es Fahrräder dieses Herstellers in der Tabelle FAHRRAEDER gibt.
Hinweis:
Zunächst wird die Beziehung zwischen den beiden Tabellen Fahrraeder und Hersteller hergestellt.
Dabei sind zwei Vorgehensweisen (im Unterricht) denkbar:
z Ausgehend von den bereits erzeugten (importierten) Tabellen Fahrraeder und Hersteller
(siehe Seite 35) wird mit der SQL-Anweisung ALTER TABLE in der Child-Tabelle Fahrraeder die Referenz des Fremdschlüssels Herstellernr zum Primärschlüssel Herstellernr
in der Parent-Tabelle Hersteller hergestellt.
Hinweis:
46
Wenn die Verbindung zu bereits bestehenden Tabellen, die Daten enthalten,
eingerichtet wird, muss sichergestellt sein, dass die Daten den Anforderungen der referentiellen Integrität entsprechen (siehe oben), das bedeutet, alle
Herstellernummern in der Tabelle Fahrraeder müssen in der Tabelle Hersteller vorhanden sein.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
z
Die Verbindung der Child-Tabelle zur Parent-Tabelle wird schon beim Erzeugen der
Tabelle (CREATE TABLE-Befehl) eingerichtet:
Tabelle mit den Attributen erzeugen
Primärschlüssel festlegen
Fremdschlüssel einrichten
Tabellentyp InnoDB für die
ref. Integrität
¾
Daten aus mehreren Tabellen auswählen
Hinweis:
Bevor Auswertungen der gesamten Datenbank Fahrrad durchgeführt werden, soll an einem einfachen Beispiel die Datenauswahl aus zwei Tabellen
gezeigt werden.
Situation:
Die Geschäftsleitung der Rent A Bike GmbH wünscht eine Aufstellung aller Fahrräder
mit den Herstellernamen. Die Aufstellung soll alphabetisch nach den Herstellernamen
sortiert sein (Auszug):
Fahrraeder
Hersteller
Das gesuchte Abfrageergebnis enthält Informationen aus den Tabellen Fahrraeder und Hersteller. Die beiden Tabellen sind durch das gemeinsame Attribut Herstellernr verbunden. Die
Tabelle Hersteller ist Parent-Tabelle, die Tabelle Fahrraeder ist Child-Tabelle.
Allgemeine Syntax für die Verbindung von Tabellen über gemeinsame Tabellenfelder:
SELECT <attributsbezeichnung1>, <attributsbezeichnung2>....
FROM <tabelle1>,<tabelle2> …..
WHERE <tabelle1.gemeinsamesAttribut>=<tabelle2.gemeinsamesAttribut> ;
47
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
SQL-Anweisung für die Auswahl der Fahrräder mit Herstellerangaben:
SELECT Fahrradnr, Bezeichnung, Fahrraeder.Herstellernr, Herstellername
(1)
FROM Fahrraeder, Hersteller
(2)
WHERE Fahrraeder.Herstellernr = Hersteller.Herstellernr
(3)
ORDER BY Herstellername ;
(4)
(1) Auswahl der Attribute (=Projektion). Die Attributsbezeichnung erhält als „Vorsilbe“ den
Namen der Tabelle. Kommt ein Attribut nur ein einer Tabelle vor, kann der vorangestellte
Tabellennamen entfallen.
(2) Angabe der Tabellen
(3) Die Verbindung der Tabellen erfolgt mit Hilfe der WHERE-Klausel.
(4) Sortierung
5.2.3.5
Daten erfassen, löschen und verändern
Hinweis:
Bevor mit den SQL-Befehlen zur Datenmanipulation sowie mit umfangreicheren Auswahlabfragen gearbeitet wird, ist es sinnvoll, mit Hilfe der vorbereiteten SQL-Skipts fahrrad_1_struktur.sql und fahrrad_1_daten.sql die gesamte Datenbank mit den vorbereiteten
Daten (Datenbankstruktur siehe nachfolgende Abbildung) einzulesen.
Das Einlesen von SQL-Scripten ist unten Seite Anhang 2 - 6 f. beschrieben.
48
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
SQL-Script zum Erzeugen der Datenbankstruktur (Tabellen mit Beziehungen) der Datenbank
Fahrrad_1:
CREATE TABLE Fahrrad_1.Hersteller (
Herstellernr VARCHAR(5) NOT NULL
, Herstellername VARCHAR(30)
, PRIMARY KEY (Herstellernr)
)TYPE=InnoDB;
alternativ: Engine=InnoDB
CREATE TABLE Fahrrad_1.Fahrradtypen (
Typnr CHAR(5) NOT NULL
, Typbezeichnung CHAR(30)
, Kurzerlaeuterung CHAR(60)
, PRIMARY KEY (Typnr)
)TYPE=InnoDB;
CREATE TABLE Fahrrad_1.Wohnorte (
Ortnr INT(10) NOT NULL
, PLZ VARCHAR(5)
, Ort VARCHAR(50)
, PRIMARY KEY (Ortnr)
)TYPE=InnoDB;
CREATE TABLE Fahrrad_1.Kunden (
Kundennr VARCHAR(5) NOT NULL
, Name VARCHAR(30)
, Vorname VARCHAR(20)
, Strasse VARCHAR(30)
, Ortnr INT(10) NOT NULL
, PRIMARY KEY (Kundennr)
, INDEX (Ortnr)
, CONSTRAINT WohnorteKunden FOREIGN KEY (Ortnr)
REFERENCES Fahrrad_1.Wohnorte (Ortnr)
)TYPE=InnoDB;
CREATE TABLE Fahrrad_1.Fahrraeder (
Fahrradnr VARCHAR(5) NOT NULL
, Bezeichnung VARCHAR(50)
, Rahmennummer VARCHAR(10)
, Tagesmietpreis DOUBLE(4, 2)
, Wert DOUBLE(6, 2)
, Kaufdatum DATE
, Herstellernr VARCHAR(5) NOT NULL
, Typnr CHAR(5) NOT NULL
, PRIMARY KEY (Fahrradnr)
, INDEX (Herstellernr)
, CONSTRAINT HerstellerFahrraeder FOREIGN KEY (Herstellernr)
REFERENCES Fahrrad_1.Hersteller (Herstellernr)
, INDEX (Typnr)
, CONSTRAINT FahrradtypenFahrraeder FOREIGN KEY (Typnr)
REFERENCES Fahrrad_1.Fahrradtypen (Typnr)
)TYPE=InnoDB;
CREATE TABLE Fahrrad_1.Vermietungen (
Mietnr VARCHAR(5) NOT NULL
, Mietdatum DATE
, Von DATE
, Bis DATE
, Kundennr VARCHAR(5) NOT NULL
, Fahrradnr VARCHAR(5) NOT NULL
, PRIMARY KEY (Mietnr)
, INDEX (Kundennr)
, CONSTRAINT KundenVermietungen FOREIGN KEY (Kundennr)
REFERENCES Kunden (Kundennr)
, INDEX (Fahrradnr)
, CONSTRAINT FahrraederVermietungen FOREIGN KEY (Fahrradnr)
REFERENCES Fahrrad_1.Fahrraeder (Fahrradnr)
)TYPE=InnoDB;
49
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
In der nachfolgenden Übersicht sind Beziehungen zwischen den Tabellen der Datenbank
Fahrrad dargestellt:
gemeinsames Datenfeld
Kundennr
Ortnr
Fahrradnr
Herstellernr
Typnr
Parent-Tabelle
(Primärschlüssel)
KUNDEN
WOHNORTE
FAHRRAEDER
HERSTELLER
FAHRRADTYPEN
Child-Tabelle
(Fremdschlüssel)
VERMIETUNGEN
KUNDEN
VERMIETUNGEN
FAHRRAEDER
FAHRRAEDER
Beziehung
1:N
1:N
1:N
1:N
1:N
Erläuterung der Beziehungen zwischen den Tabellen der Datenbank Fahrrad:
Tabelle
KUNDEN
WOHNORTE
Beschreibung der Beziehung
Auswirkung der referentiellen Integrität
Ein Kunde kann keinen, einen oder
mehrere Mietverträge abschließen.
Ein Kunde aus der KUNDEN-Tabelle kann nicht gelöscht
werden, wenn es noch Verträge mit übereinstimmender
Kundennr in der Tabelle VERMIETUNGEN gibt.
Jeder Kunde hat genau einen Wohnort.
Für einen Kunden kann ein Wohnort (über das Attribut
Ortnr) nur dann erfasst werden, wenn der Wohnort auch
in der Tabelle WOHNORTE vorkommt.
Ein Wohnort kann keinem, einem oder
mehren Kunden zugeordnet sein.
Ein Wohnort kann aus der Tabelle WOHNORTE nicht
gelöscht werden, wenn Kunden mit diesem Wohnort in
der Tabelle KUNDEN enthalten sind.
VERMIETUNGEN Ein Mietvertrag muss immer mit genau Ein Mietvertrag kann nur dann für einen Kunden abgeeinem Kunden abgeschlossen werden. schlossen werden (d.h.: in der (Child-)Tabelle VERMIETUNGEN erfasst werden), wenn die entsprechende
Kundennummer (Attribut Kundennr) in der (Parent-)
Tabelle KUNDEN vorhanden ist.
FAHRRAEDER
HERSTELLER
FAHRRADTYPEN
50
Ein Mietvertrag muss immer für die
Vermietung genau eines Fahrrades
abgeschlossen werden.
Ein Mietvertrag kann nur dann für die Vermietung eines
Fahrrades in der (Child-)Tabelle VERMIETUNGEN erfasst werden, wenn die entsprechende Fahrradnummer
(Attribut Fahrradnr) in der (Parent-)Tabelle FAHRRAEDER vorhanden ist.
Ein Fahrrad kann in keinem, einem
oder in mehreren Mietverträgen (Tabelle VERMIETUNGEN) vorkommen.
Ein Fahrrad kann aus der Tabelle FAHRRAEDER nicht
gelöscht werden, wenn in der Tabelle VERMIETUNGEN
noch Mietverträge für dieses Fahrrad enthalten sind.
Ein Fahrrad wird immer von genau
einem Hersteller hergestellt und geliefert.
Für ein Fahrrad kann der Hersteller (über das Attribut
Herstellernr) nur dann erfasst werden, wenn dieser auch
in der Tabelle Hersteller angelegt ist.
Ein bestimmter Hersteller kann kein,
ein oder mehrere Fahrräder liefern.
Ein Hersteller kann nicht aus der Tabelle Hersteller gelöscht werden, wenn von ihm noch Fahrräder in der Tabelle FAHRRAEDER vorhanden sind.
Ein bestimmter Fahrradtyp kann keiEin Hersteller kann nicht aus der Tabelle Hersteller genem, einem oder mehreren Fahrrädern löscht werden, wenn von ihm noch Fahrräder in der Tazugeordnet sein.
belle FAHRRAEDER vorhanden sind.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾
Datensätze in Tabellen hinzufügen
Situation: Am 07. August 2009 besucht Alina Kesser aus 89584 Ehingen, Schulgasse 10,
die Fahrradvermietung Rent A Bike. Sie möchte vom 10.08.2009 bis zum
22.08.2009 das Fahrrad mit der Fahrradnr 30 mieten.
Hinweis:
Der Wohnort Ehingen ist in der Tabelle Wohnorte unter der Ortnr 36262, das
Fahrrad in der Tabelle Fahrraeder unter der Fahradnr 30 gespeichert. Die Daten
sollen in den Tabellen KUNDEN und VERMIETUNGEN erfasst werden.
Vorgehensweise:
Die Eingabe eines Mietvertrages in die Child–Tabelle Vermietungen setzen voraus, dass
aufgrund der Anforderungen der referentiellen Integrität bei der Datenerfassung die Attributswerte, auf die sich die Fremdschlüssel Kundennr (Referenzschlüssel Kundennr in der
Parent-Tabelle Kunden) und Fahrradnr (Referenzschlüssel Fahrradnr in der Parent-Tabelle
Fahrraeder) schon existieren.
Wegen der Eigenschaften der referentiellen Integrität ergibt sich für die Eingabe der Daten in
die einzelnen Tabelle der nachfolgende Plan (siehe Seite Anhang 1 -15):
Parent-Tabelle
Primärschlüssel
Child-Tabelle
Fremdschlüssel
1.
Wohnorte
Ortnr
Kunden
Ortnr
2.
Kunden
Kundennr
Vermietungen
Kundennr
3.
Hersteller
Herstellernr
Fahrraeder
Herstellernr
4.
Fahrradtypen
TypNr
Fahrraeder
TypNr
5.
Fahrraeder
Fahrradnr
Vermietungen
Fahrradnr
Vermietungen
Fahrradnr
Kundennr
6.
Mit SQL–Auswahlbefehlen wird zunächst geklärt, ob die entsprechenden Informationen in
den Parent-Tabellen vorliegen:
SQL-Befehl
Ergebnis
SELECT * FROM Kunden
WHERE Name = "Kesser";
Der Kunde Kesser ist noch nicht in der Tabelle Kunden und muss also zunächst erfasst werden. Die nächste zu vergebende
Kundennummer ist die Kundennr 309.
SELECT * FROM Wohnorte
WHERE Ortnr = "36262";
Die Ortsangabe Ehingen ist unter der Ortnr
36262 gespeichert.
SELECT * FROM Fahrraeder
WHERE Fahrradnr = "30";
Das Fahrrad mit der Fahrradnummer 30 ist
in der Tabelle Fahrraeder enthalten.
51
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Erfassen der Daten des Kunden
Syntax:
INSERT INTO <tabellenname>(<attributsbezeichnung1>, <attributsbezeichung2>, …) VALUES (<attributswert1>, <attributswert2>, …);
Beispiele:
Absicht
Befehl
Text einfügen
INSERT... ( ... Name, ...) VALUES (...“Knüller“, ...);
Datumswert einfügen
INSERT... ( ... Lieferdatum, ...) VALUES (..."2005-07-19", ...);
numerischer Wert einfügen
INSERT... ( ... Umsatz, ...) VALUES (... 4000.90, ...);
Berechnung einfügen
INSERT... ( ... Bruttowert, ...) VALUES (... 280 * 1.19, ...);
Hinweis:
Einige SQL-Dialekte verlangen folgende Schreibweise für Datumsangaben:
…#2009-07-19# …
Erfassen der Kundendaten in der Tabelle KUNDEN
Die (Child-)Tabelle Kunden hat eine Referenz zur (Parent-)Tabelle WOHNORTE, das bedeutet, dass die Datenintegrität voraussetzt, dass die in der Tabelle (Child-)Kunden zu erfassende Ortsnummer (Attribut Ortnr) in der (Parent-)Tabelle Wohnorte vorhanden sein muss.
SQL-Befehl:
INSERT INTO Kunden (Kundennr, Name, Vorname, Strasse, Ortnr)
VALUES ('309', 'Kesser', 'Alina', 'Schulgasse 10', 36262);
Nach der Ausführung der SQL-INSERT INTO–Anweisung die Datenerfassung mit einer
Auswahlabfrage überprüft:
Erfassen der Vermietungsdaten in der Tabelle VERMIETUNGEN
Die Tabelle VERMIETUNGEN weist eine Referenz zur Tabelle Kunden (gemeinsames Attribut Kundennr) und zur Tabelle Fahrraeder (gemeinsame Attribut Fahrradnr) auf, sie ist also
Child-Tabelle zu den Parent-Tabellen Kunden und Fahrraeder. Für die Datenerfassung bedeutet dies, dass die in der Tabelle zu erfassende Kundennr in der Tabelle Kunden und die
Fahrradnr in der Tabelle Fahrrad vorhanden sein müssen, was in dem Beispiel der Fall ist.
Die nächste zu vergebende Mietvertragsnummer (Attribut Mietnr) ist 136.
52
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
SQL-Befehl:
INSERT INTO Vermietungen (Mietnr, Kundennr, Fahrradnr, Mietdatum, von, bis)
VALUES ('136', '309', '30', '2009/08/07','2009/08/10', '2009/08/22');
Das Datumsformat ist teilweise abhängig vom SQL-Dialekt. Der hier eingesetzte MySQL
Query Browsers unterstützt das Format ‘JJJJ/MM/TT‘.
Liegt bei der Datenerfassung ein Verstoß gegen die Datenintegrität vor, so wird die Datenaufnahme in die Tabelle verweigert und es erscheint eine Fehlermeldung.
Beispiel:
Der Kunde Mark Spenn aus Blaubeuren, Karlstraße 10 hat angerufen und möchte in den nächsten Tagen vorbei kommen, um sich ein Fahrrad für eine Wochenendtour auszusuchen. Erfassen Sie Mark Spenn in die Tabelle Kunden mit den vorliegenden Daten. Als Ortsnummer (Attribut Ortnr) wählen Sie die Nummer 36046. Die nächste zu vergebende Kundennummer ist 310.
SQL-Befehl:
INSERT INTO Kunden (Kundennr, Name, Vorname, Strasse, Ortnr)
VALUES ('310','Spenn', 'Mark', 'Karlstrasse 10', 36046);
Werden die Kundendaten ohne vorherige Überprüfung der Ortsnummer erfasst, kommt es
zur untenstehenden Fehlermeldung, weil die Ortsnummer 36046 nicht in der Tabelle Wohnorte enthalten ist.
Also ist in diesem Fall zunächst die Tabelle Wohnorte um die Ortsnummer 36046 mit dem
Wohnort Blaubeuren zu ergänzen.
INSERT INTO Wohnorte (Ortnr, PLZ, Ort)
VALUES ('36046', '89147','Blaubeuren');
Tabelleninhalte importieren
Die zur Verfügung gestellten Datenbanken können auch in eine bestehende Datenbank importiert werden. (Siehe hierzu die Ausführungen unten, Seite Anhang 2 - 6 f.).
53
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Datensätze ändern
Situation:
Wegen gestiegener Kosten sollen bei allen Fahrrädern die Tagesmietpreise
um 5 % erhöht werden. In der Tabelle Fahrraeder sind die Tagesmietpreise
durch die erhöhten Mietpreise zu ersetzen (siehe Seite Anhang 1 - 6).
Syntax:
UPDATE <tabellenname> SET <attributsbezeichnung1> = <attributswert1>,
<attributsbezeichnung2> = <attributswert2>, … WHERE <bedingung>;
Beispiele:
Absicht
Text ändern
Datumswert ändern
Tagesdatum einsetzen
numerischen Wert ändern
Feldinhalte löschen
mehrere Datensätze ändern
Befehl
... SET Name = „Huber“ ...WHERE ……;
... SET Lieferdatum = "2005-02-18" ...;
... SET Bestelldatum = DATE() ...;
... SET Umsatz = 7000.75 ...;
... SET Umsatz = NULL ..; (geht auch bei Datums- u. Zeichenfeld)
... WHERE Umsatz < 10000 ...
... WHERE Bestelldatum < "2005.03.22" ...;
Lösung:
Tagesmietpreis*1.05
Um den Tagesmietpreis nach der Preiserhöhung zu erhalten, wird der bisherige Mietpreis mit
1,05 multipliziert.
Damit man die Änderung in der Tabelle FAHRRAEDER verfolgen kann, ist es vorteilhaft, den
Inhalt der Tabelle vor und nach der Änderungsanweisung aufzulisten.
Liste der Fahrräder mit den Tagesmietpreisen vor der Erhöhung (Auszug):
SQL-Befehl zur Erhöhung des Tagesmietpreise um 5%:
UPDATE Fahrraeder SET Tagesmietpreis = Tagesmietpreis*1.05;
Ausdruck, mit dem der aktualisierte Wert ermittelt wird.
54
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Liste der Fahrräder mit den Tagesmietpreisen nach der Erhöhung (Auszug):
Übungsbeispiel:
Alina Kesser teilt ihre neue Adresse mit. Sie wohnt jetzt in Ulm (Ortnr 36023) in der Kuhbergstraße 22. Berichtigen Sie den Inhalt der Datenbank.
SQL-Befehl:
UPDATE Kunden SET Ortnr=36023, Strasse ='Kuhbergstraße 22'
WHERE Name ='Kesser';
¾ Datensätze löschen
Situation:
Die Fahrräder 'Steel Lite Lady GT' und 'Comus Einräder XM (Fahrradnr 1 und
Fahrradnr 8) wurde noch nie oder selten vermietet und sollen deshalb aus der
Tabelle Fahrraeder gelöscht werden (siehe Seite Anhang 1 - 7).
Syntax:
DELETE FROM <tabellenname> WHERE <bedingung>;
SQL-Befehl zum Löschen des Fahrrads mit der Fahrradnummer 8:
DELETE FROM Fahrraeder WHERE Fahrradnr = '8';
Nach der Ausführung des Befehls
fehlt das Fahrrad mit der Fahrradnummer 8 in der Liste der Fahrräder.
Weil das Fahrrad noch nie vermietet
war, gibt es keine Verbindung zur
(Child-)Tabelle Vermietungen und
das Löschen des Datensatzes
klappt.
SQL-Befehl zum Löschen des Fahrrads mit der Fahrradnummer 1:
DELETE FROM Fahrraeder WHERE Fahrradnr = '1';
Nach der Ausführung des Befehls erscheint das untenstehende Meldefenster. Der Datensatz
kann nicht gelöscht werden, weil noch Verbindungen zur (Child-)Tabelle Vermietungen vorhanden sind.
55
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.2.3.6
Auswahlabfragen mit mehreren Tabellen und Funktionen
Übung 1
Erstellen Sie eine Liste aller Fahrräder mit ihren jeweiligen Herstellern, die im aktuellen Kalenderjahr gekauft wurden. Die Liste soll das nachfolgende Aussehen (Auszug) haben und
nach Kaufdatum aufsteigend sortiert sein.
Lösungshinweis:
SELECT Fahrradnr, Bezeichnung, Hersteller.Herstellernr, Herstellername,
Kaufdatum
FROM Fahrraeder, Hersteller
WHERE Fahrraeder.Herstellernr = Hersteller.Herstellernr
AND YEAR(NOW()) = YEAR(Kaufdatum)
ORDER BY Kaufdatum;
Erläuterung:
- Die Funktion YEAR(<datumsfeld>) liefert den numerischen Wert der Jahreszahl.
Beispiel: YEAR( “2009/05/10“) liefert den Wert 2009.
- Die Funktion NOW() greift auf das Systemdatum zu.
Der Ausdruck YEAR(NOW()) liefert die aktuelle Jahreszahl 2009.
Übung 2
Erstellen Sie eine Liste der Kunden, die im Juni
2009 einen Vertrag über die Miete eines Fahrrads
abgeschlossen haben. Es sollen nur die Mietverhältnisse aufgelistet werden, die auch im Juni 2009
beendet wurden. Die Liste soll den nachfolgend
dargestellten Aufbau haben und nach dem Namen
der Kunden alphabetisch aufsteigend sortiert sein.
Lösungshinweise:
SELECT Kunden.Kundennr, Name, von ,bis, DATEDIFF(bis, von) As Dauer
FROM Kunden, Vermietungen
WHERE Kunden.Kundennr= Vermietungen.Kundennr
AND MONTH(Mietdatum) = 6
AND MONTH(bis) = 6
ORDER BY Name;
-
Die Funktion DATEDIFF(ausdruck1, ausdruck2) liefert als Ergebnis den numerischen
Wert der Differenz zweier Datumsangaben, wobei ausdruck1 das höhere Datum ist.
Beispiel: DATEDIFF(‘2009/06/23‘,‘2009/06/20‘) liefert den Wert 3
56
Da beim Verknüpfen der Bedingungen nur AND-Operatoren verwendet werden, sind
keine Klammern notwendig.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Auswahlabfragen mit Gruppierungen
Situation:
Kai Carlsson, Inhaber der Fahrradvermietung "Rent A Bike e.K." möchte eine Aufstellung
darüber, wie viele Tage insgesamt seine Fahrräder von männlichen beziehungsweise weiblichen Kunden im Ferienmonat August 2009 gemietet werden (siehe Seite Anhang 1 - 14).
Es sollen die Vermietungen selektiert
werden, bei denen der Mietbeginn im
August liegt.
Die nebenstehende Aufstellung zeigt
diese Aufstellung der Vermietungen
im Monat August 2009, geordnet nach
männlichen und weiblichen Kunden.
Mit Hilfe einer Gruppierungsabfrage sollen nun die Vermietungen an
Männer und die an Frauen zusammengezählt und als Summe ausgewiesen werden:
Übung 1
Kai Carlsson, Inhaber der Fahrradvermietung "Rent A Bike
e.K.", möchte eine Übersicht der Mieteinnahmen, gruppiert
nach Fahrradtypen (siehe nebenstehende Aufstellung).
Übung 2
Kai Carlsson möchte die Mieteinnahmen der beiden Fahrradtypen Mountain-Bikes und Cross-Bikes ermitteln.
Die Gegenüberstellung soll folgendes Aussehen haben:
Übung 3
Kai Carlsson möchte eine Aufstellung der Mieterträge von den
Fahrradtypen, bei denen die Mieterträge 1000.00 € nicht
übersteigen (vgl. nebenstehende Aufstellung).
57
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungshinweise:
(1)
Situation
SELECT Geschlecht, SUM(DATEDIFF(bis, von)) AS AnzahlTage
FROM Kunden, Vermietungen
WHERE Kunden.Kundennr = Vermietungen.Kundennr
AND Mietdatum BETWEEN '2008/08/01' AND '2008/08/31'
GROUP BY Geschlecht
ORDER BY Geschlecht;
Erläuterungen:
(2)
(3)
(4)
(1) Rechenfeld mit Aggregatfunktion zum Aufsummieren der Miettage mit
Hilfe der Funktion DATEDIFF().
(2) Bedingung für die Verbindung der Tabellen Kunden und Vermietungen.
(3) Auswahlbedingung.
(4) Festlegung der Gruppierung nach dem Geschlecht.
Übung 1
SELECT Fahrradtypen.Typbezeichnung, SUM(DATEDIFF(bis, von) * Tagesmietpreis) AS
Mieteinnahmen
FROM Fahrradtypen, Fahrraeder, Vermietungen
WHERE Fahrradtypen.Typnr = Fahrraeder.Typnr And Fahrraeder.Fahrradnr = Vermietungen.Fahrradnr
GROUP BY Fahrradtypen.Typbezeichnung;
Übung 2
(1)
SELECT Fahrradtypen.Typbezeichnung, SUM((DATEDIFF(bis, von)) * Tagesmietpreis)As
Mieteinnahmen
FROM Fahrraeder, Fahrradtypen, Vermietungen
WHERE Fahrradtypen.Typnr = Fahrraeder.Typnr
AND Fahrraeder.Fahrradnr = Vermietungen.Fahrradnr
AND (Fahrradtypen.Typbezeichnung = 'Mountain-Bike' OR Fahrradtypen.Typbezeichnung ='Cross-Bike')
GROUP BY Fahrradtypen.Typbezeichnung;
Erläuterungen:
(2)
(3)
(4)
(1) Rechenfeld mit Aggregatfunktion zum Errechnen und Aufsummieren
der Mieterträge.
(2) Verbindung von drei Tabellen: Fahrradtypen mit Fahrraeder über das
gemeinsame Attribut Typnr sowie Fahrraeder und Vermietungen über
das gemeinsame Attribut Fahrradnr.
(3) Auswahlbedingung für die beiden Fahrradtypen Mountain-Bike und
Cross-Bike. Die OR-Verknüpfung muss zwischen Klammern stehen.
(4) Gruppierung nach den Fahrradtypen.
58
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Übung 3
SELECT Fahrradtypen.Typbezeichnung, SUM(DATEDIFF(bis, von) * Tagesmietpreis) AS
Mieteinnahmen
FROM Fahrradtypen, Fahrraeder, Vermietungen
WHERE Fahrradtypen.Typnr = Fahrraeder.Typnr
AND Fahrraeder.Fahrradnr = Vermietungen.Fahrradnr
GROUP BY Fahrradtypen.Typbezeichnung
HAVING SUM(DATEDIFF(bis, von) * Tagesmietpreis) <= 1000;
(1)
(2)
(2)
Erläuterung:
(1) Mit der HAVING-Klausel werden die mit GROUP BY zusammengefassten Daten gefiltert.
(2) In der HAVING-Klausel kann die Bezeichnung Mieteinnahmen nicht verwendet werden.
¾ Auswahlabfragen mit Unterabfragen
Situation:
Es soll eine Liste der Fahrräder angezeigt werden, deren
Kaufpreis (Attribut Wert) unter dem durchschnittlichen
Kaufpreis liegt. Die Liste soll nach dem Wert fallend sortiert sein. Die Liste soll nebenstehendes Aussehen
haben (Auszug):
In der Aufgabenstellung sind zwei Fragen enthalten:
-
Wie hoch ist der durchschnittliche Kaufwert der Fahrräder?
Welche Fahrräder haben einen höheren Kaufwert als der durchschnittliche Kaufwert?
Wird in der WHERE-Klausel einer Abfrage die Bedingung durch eine weitere Auswahlabfrage ermittelt, so ist eine Unterabfrage zu bilden. Der Aufbau einer Unterabfrage kann schrittweise über zwei Einzelabfragen entwickelt werden.
a)
Lösung mit zwei Einzelabfragen:
1.
Durchschnittlichen Kaufwert aller Fahrräder ermitteln
SELECT AVG(Wert)AS Durchnittlicher_Kaufwert FROM Fahrraeder;
Das Ergebnis dieser Abfrage lautet:
Das Ergebnis dieser Abfrage wird als Bedingung in die WHERE-Klausel der zweiten Abfrage übernommen:
2.
Fahrräder auswählen, deren Kaufwert unter 849,28 € beträgt.
SELECT Fahrradnr, Bezeichnung, Wert FROM Fahrraeder WHERE Wert < 849.28;
59
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
b) Lösung mit einer Unterabfrage:
SELECT Fahrradnr, Bezeichnung, Wert
FROM Fahrraeder
WHERE Wert < (SELECT AVG(WERT) FROM Fahrraeder)
ORDER BY Wert DESC;
Die Bedingung der Abfrage wird durch eine eigene Abfrage (= Unterabfrage) ermittelt.
Weitere Übungsbeispiele
1.
Für eine Werbeaktion wird eine Adressliste aller Kunden aus Leverkusen (Plz 51333)
und Köln (Plz 51153) mit den Attributen Kundennummer, Name, Plz, Straße und Ort benötigt. In der Auflistung sollen zuerst die Kunden aus Leverkusen und dann die Kunden
aus Köln angezeigt werden. Innerhalb des jeweiligen Ortes sind die Kunden alphabetisch nach ihrem Namen zu sortieren:
2.
Welche Fahrräder hat der Kunde Ulrich Heller mit der Kundennummer 244 gemietet?
(Attribute Kundennr, Name ,von, bis, Fahrradnr, Bezeichnung)
3.
Welche Kunden haben im August 2008 (Mietdatum) ein Fahrrad gemietet?
(Attribute Kundennr, Name, von, bis, Fahrradnr, Bezeichnung)
4.
Sie sollen die nachfolgende Liste erstellen. Sie zeigt, wie oft ein Fahrrad vermietet wurde. Die Auflistung erfolgt in alphabetischer Reihenfolge der Fahrradbezeichnung.
5.
Es sollen nur noch die Fahrräder aufgelistet werden, die weniger als 5 Mal vermietet
wurden. Die Aufstellung soll nach der Anzahl aufsteigend sortiert sein.
60
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungshinweise:
1.
SELECT Kundennr, Name, Vorname, Strasse, PLZ, Ort
FROM Kunden, Wohnorte
WHERE Kunden.Ortnr = Wohnorte.Ortnr
AND (PLZ='51333' OR PLZ='51153')
ORDER BY Ort DESC, Name;
2.
SELECT Kunden.Kundennr, Name, von, bis, Fahrraeder.Fahrradnr, Bezeichnung
FROM Kunden, Vermietungen, Fahrraeder
WHERE Kunden.Kundennr = Vermietungen.Kundennr
AND Vermietungen.Fahrradnr = Fahrraeder.Fahrradnr
AND Kunden.Kundennr = '244';
Ergebnis:
3.
SELECT Kunden.Kundennr, Name, von, bis, Fahrraeder.Fahrradnr, Bezeichnung
FROM Kunden, Vermietungen, Fahrraeder
WHERE Kunden.Kundennr = Vermietungen.Kundennr
AND Vermietungen.Fahrradnr = Fahrraeder.Fahrradnr
AND MONTH(Mietdatum) = 8
AND YEAR(Mietdatum) = 2008;
Ergebnis:
(Auszug)
4.
SELECT Fahrraeder.Fahrradnr, Bezeichnung, COUNT(Fahrraeder.Fahrradnr) AS
Anzahl
FROM Fahrraeder, Vermietungen
WHERE Fahrraeder.Fahrradnr = Vermietungen.Fahrradnr
GROUP BY Fahrraeder.Bezeichnung
ORDER BY Bezeichnung;
5. SELECT Fahrraeder.Fahrradnr, Bezeichnung, COUNT(Fahrraeder.Fahrradnr) AS
Anzahl
FROM Fahrraeder, Vermietungen
WHERE Fahrraeder.Fahrradnr = Vermietungen.Fahrradnr
GROUP BY Fahrraeder.Bezeichnung
HAVING COUNT(Fahrraeder.Fahrradnr) < 5
ORDER BY COUNT(Fahrraeder.Fahrradnr);
Ergebnis:
(Auszug)
61
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.3
Arbeiten mit Datenbanken unter Eclipse
Vorbemerkung
Eine weitere Zugriffsmöglichkeit auf eine relationale Datenbank mit Hilfe eines Frontends
bietet Eclipse. Der Einsatz dieses Tools empfiehlt sich insbesondere dann, wenn von der Datenmodellierung bis zum Bearbeiten und Auswerten der Datenbank die gleiche Softwareumgebung genutzt werden soll.
Zum softwareunterstützten Modellieren von Datenbanken stehen mehrere Free-Tools zur
Verfügung (DBDesigner 4, Borland TogetherSoft, Azzurri Clay, u.a.).
Trotz seiner Komplexität ist die Verwendung des Eclipse-Tools zu empfehlen, da es auch bei
der Umsetzung der Lehrplaninhalte "Datenoperationen mit SQL", "Objektorientierte Analyse
und Design" und "Objektorientierte Systementwicklung" eingesetzt werden kann.
Was ist Eclipse?
Eclipse ist eine Plattform für Entwicklungsumgebungen. Vom Grundumfang her ist Eclipse
geeignet um Java-Programme zu schreiben. Es gibt aber viele Erweiterungen für Eclipse,
um auch andere Programmiersprachen zu nutzen. Außerdem gibt es auch Erweiterungen
(Plugins) für andere Aufgabenstellungen wie das Modellieren, Pflegen und Auswerten von
relationalen Datenbanken.
Mit Hilfe von Eclipse erfolgt die Bearbeitung von Datenbanken in zwei Phasen:
Phase I
Erstellen des Entity Relationship Modells aus der Aufgabenstellung
mit Hilfe des Modellierungstools Azzurri Clay. Azzuri Clay ermöglicht
es, ein Datenbankmodell in einem grafischen Editor als ERD (Entity
Relationship Diagram) zu entwerfen, das auch die Beziehungen zwischen den Entitäten sofort klar und übersichtlich darstellt. Die benötigten Tabellen lassen sich direkt auf der Arbeitsfläche anlegen und
editieren. Ebenso lassen sich die Fremdschlüsselbeziehungen zwischen den Tabellen durch Drag and Drop herstellen. Das Tool generiert für alle Objekte ein SQL-Skript, das alle SQL-Anweisungen enthält, um die Struktur der Datenbank zu erzeugen. In der diesen Unterlagen zugrunde liegenden Eclipse-Version 3.3.2 ist der "Azzuri
Clay Data-Base Designer“ als Plug-In bereits integriert.
Phase II
Datenoperationen mit SQL mit Hilfe des Plugins SQLExplorer
Nach der Erstellung des Entity Relationship Modells (ERM) wird zunächst eine Verbindung zum Datenbankserver MySQL aufgebaut
und dann wird das ERM mit Hilfe der Datenbankabfragesprache
SQL in eine relationale Datenbank auf dem Datenbankserver überführt. Mit dieser Datenbank werden dann Datenoperationen (Erfassen, Ändern, Löschen und Auswahl der Daten) ausgeführt.
Hilfsmittel beim Arbeiten mit der Datenbank unter Eclipse ist das
Plugin SQLExplorer.
62
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Der Arbeitsbildschirm von Eclipse
Die Plattform Eclipse kann je nach Aufgabenstellung in verschiedenen Perspektiven (Einstellungen) genutzt werden.
Nach dem Starten des Programms steht Eclipse in der Java - Perspektive zur Verfügung.
Für das Arbeiten mit Datenbanken ist die SQL Explorer-Perspektive geeigneter. Sie wird daher nach dem Start mit dem Menü:
Window Æ Open Perspective Æ Other Æ SQL Explorer
eingestellt.
(1)
(2)
(3)
(6)
(1) Menüleiste mit den Befehlsmenüs.
(2) Fenster des Projektexplorers. Alle zu erledigenden Aufgaben werden in Projekten verwaltet.
(3) Fenster der SQL-Historie. Hier werden die abgesetzten SQL-Befehle gesammelt und
können gegebenenfalls wiederholt aufgerufen werden.
(4) Button zum Wechseln der Perspektive (Ersatz für das Menü: Window Æ Open Perspective Æ Other).
(5) Datenbankfenster. Hier erscheinen später die Datenbanken, die auf dem MySQL-Server
verfügbar sind.
(6) Arbeitsfläche für das Modellieren von ERMs oder das Editieren von SQL-Befehlen.
63
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.3.1
Datenmodellierung mit Azzurri Clay unter Eclipse
Problemstellung
Die Schulbibliothek der Louis-Leitz-Schule Stuttgart verleiht aus dem umfangreichen Bestand an Fachliteratur und Belletristik Bücher an ihre Schülerinnen und Schüler.
Die betreuenden Lehrer beschließen, die Bibliotheksverwaltung in Zukunft Computer unterstützt zu organisieren. Vorgesehen ist eine relationale Datenbank, mit der zunächst die
Buchausleihe abgewickelt werden kann. Bei der Abwicklung der Ausleihe sind zwei Arbeitsbereiche zu unterscheiden:
Die Ausleihe:
Hier werden die Personalien der Schülerinnen und Schüler, die ausgegebenen Bücher und das Ausleihdatum erfasst.
Die Rückgabe: Hierbei wird das Rückgabedatum erfasst.
Vereinfachend ist davon auszugehen, dass von jedem Buch nur ein Exemplar für die Ausleihe zur Verfügung steht.
Als Daten der Ausleiher werden verpflichtend Vorname, Name und Anschrift gespeichert. Die
Bücher sind mit Autor, Titel, Erscheinungsort, Erscheinungsjahr und Verlag zu speichern.
In einer ersten Analysephase wurden in der Schulbibliothek folgende Beobachtungen gemacht:
20. Mai:
Hans Dampf, Rosenweg 44, 70599 Stuttgart leiht die Bücher
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag)
- "Die Räuber" von F.v. Schiller (Reclam-Verlag)
- "Die Tore der Welt" von Ken Follett (Lübbe)
10. Juni
Hans Dampf gibt Bücher zurück
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag )
- "Die Räuber" von F.v. Schiller (Reclam-Verlag)
15 Juni:
Heidi Husch, Hauptstraße 11, 73740 Ostfildern leiht ein Buch
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag)
Für die Schulbibliothek wird unter Berücksichtigung der Regeln für die Entity-RelationshipModellierung nach Peter Chen das folgende Datenmodell (ER-Diagramm) entwickelt:
(Siehe unten: Übungsaufgaben zur ER-Modellierung - Projekt Schulbibliothek, Seite 139 ff.)
1
Schueler
N
wohnt
in
1
Ort
64
nimmt
vor
N
N
Ausleihe
besteht
aus
1
Buch
N
herausgegeben
von
1
Verlag
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Aus dem ER-Diagramm und den Beobachtungen der Analysephase wird das folgende Relationenmodell abgeleitet:
Schueler (Schuelernr, Vorname, Name, Strasse, ÇOrtnr)
Ausleihen (Ausleihnr, A_datum, R_datum, ÇSchuelernr, ÇBuchnr)
Buecher (Buchnr, Autor, Titel, E_jahr, ÇVerlagnr)
Verlage (Verlagnr, Verlagname, ÇOrtnr)
Orte (Ortnr, PLZ, Ortname)
Das Relationenmodell zeigt – mit Blick auf die technische Umsetzung als Datenbank – alle
relevanten Tabellen (Relationen) und ihre Beziehungen.
5.3.1.1 Erstellung des ERD in Eclipse
(1) Anlegen eines neuen Projekts
Nach dem Starten von Eclipse in der SQL Explorerperspective
wird zuerst ein neues Projekt mit Namen projectSchulbibliothek
eingerichtet.
Menü: File Æ New Æ ProjectÆ General Æ Project
Das angelegte Projekt erscheint im Fenster des Project Explorers.
Datenbankmodell anlegen
Aus dem aktiven Projekt (das zugrunde liegende Projekt "projektSchulbibliothek" im Paket-Explorer muss markiert sein) wird das
Modellierungstool Azzuri Clay gestartet
File Æ New Æ Other Æ Database Modeling - Clay Database
Design Diagram
Nach dem Klick auf "Weiter >" öffnet sich ein Dialogfenster, in
dem der Name der .clay - Datei festgelegt wird. (Im aktuellen
Beispiel soll dies der Name "Schulbibliothek" sein.) In dieser Datei
werden die Modellierungsdaten gespeichert.
Außerdem lässt sich hier der anzuwendende SQL-Dialekt
auswählen. Azzurry Clay schlägt als Standardwert "HSQLDB
1.7.0/1.7.1" vor.
Obwohl SQL standardisiert ist, gibt es kleine Unterschiede zwischen den Anweisungen in verschiedenen Datenbankmanagementsystemen, zum Beispiel bei der Unterstützung verschiedener
Datentypen. Jedes RDBMS hat seinen eigenen Dialekt.
Um mit einer SQL-Datenbank arbeiten zu können, bei der die
referentielle Integrität gewährleistet ist, muss hier der SQL-Dialekt
"MySQL 4.0" gewählt werden.
65
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Nach dem Klick auf die Taste "Finish" öffnet sich das Editorfenster zum Modellieren der Datenbank. Im Paket-Explorer wird die .clay-Datei angezeigt.
(Mit einem Doppelklick lässt sich das Editorfenster zum Vollbild vergrößern - bei nochmaligem Doppelklick erhalten Sie wieder die ursprüngliche Fensteransicht.)
(2)
Tabellen anlegen und editieren
Die Symbolleiste des Editorfensters bietet eine Schaltfläche zum Hinzufügen
von Tabellen.
Hierzu ist diese Schaltfläche zu drücken und anschließend
auf der Zeichenfläche des Editors aufzuziehen.
Anschließend wird für das erstellte Objekt mit dem Kontextmenü (rechte Maustaste bei aktiviertem Tabellenobjekt) der Menübefehl Edit Table geöffnet um die Haupteigenschaften der
ersten Tabelle festzulegen.
66
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(3)
Tabellenattribute editieren und Eigenschaften festlegen
Mit einem Doppelklick auf
das Tabellensymbol oder
mit Hilfe des Befehls "Edit
Table Columns..." aus
dem Kontextmenü des
Tabellenobjekts (siehe
vorherige Grafik) wird
folgendes Fenster geöffnet, in dem die Attribute
festgelegt und deren
Eigenschaften bestimmt
(1)
werden:
(4a)
(2)
(3)
(4)
Erläuterungen zum Fenster "Edit Table"
(1)
Schaltflächen zum Anlegen, Einfügen, Löschen und Kommentieren von Attributen.
(2)
Festlegen der Bezeichnung des Attributs. Im Label am rechten Bildschirmrand wird angezeigt, wie viele Zeichen der Name beansprucht. Verschiedene SQL-Dialekte nehmen
Längenbegrenzungen bei Namen vor.
(3)
Das Kombinationsfeld "Data Type" listet die Datentypen auf, die der jeweilige SQLDialekt unterstützt. "Precision" definiert die Länge (Größe) des jeweiligen Attributs,
"Scale" die Anzahl der Nachkommastellen.
(4)
Mit der CheckBox "Primary Key" kann das ausgewählte Attribut als Primärschlüssel
festgelegt werden. Wenn die CheckBox "Mandatory" aktiviert ist, ist festgelegt, dass
das Attribut einen Attributswert erhalten muss. Sowohl Primary Key als auch Mandatory
werden in die Tabelle im oberen Teil des Bildschirmfensters eingetragen (4a).
Auf der Grundlage des erarbeiteten Relationenmodells zum Projekt "Schulbibliothek" wird die
folgende Tabellenstruktur erfasst:
67
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(4)
Herstellen der Beziehungen
Eine Beziehung zwischen zwei Tabellen wird mit dem Symbol Foreign
Key Reference hergestellt.
Nach der Aktivierung des Symbols wird zunächst die Detailtabelle (ChildTabelle: gemeinsames Feld = Fremdschlüssel) und dann die Mastertabelle (Parent-Tabelle: gemeinsames Feld = Primärschlüssel) angeklickt.
Das Fremdschlüsselattribut wird dann automatisch in der Detailtabelle
angelegt.
Hinweis: Um die Ebene der Erstellung von Beziehungen wieder zu verlassen, muss das
Pfeilsymbol aktiviert werden.
Abschließend ergibt sich folgende Datenbankstruktur:
In der Eclipse - Version 3.3 werden die Beziehungen zwischen den Tabellen in der Krähenfuß-Notation dargestellt.
68
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Exkurs: Krähenfussnotation
Die Martin-Notation (auch crow's foot notation) nach James Martin, Bachmann und Odell
ist eine Notation zur semantischen Datenmodellierung, um vereinfachte Entity-RelationshipModelle darzustellen. Sie verwendet für eine 1:n-Beziehung sog. Krähenfüße und wird daher
auch Krähenfußnotation genannt.
Die Rechtecke bezeichnen die Entitätstypen, die mittels Beziehungslinien miteinander verbunden sind.
Die Kardinalitäten (Multiplizitäten) werden durch 0 (Null), | (Eins) bzw. dem Krähenfuß (beliebig viele) gekennzeichnet. Bei jeder Beziehung stehen zwei Kardinalitäten hintereinander,
die das minimale bzw. das maximale Auftreten beschreiben.
Die Diagramme in der nebenstehenden Grafik lesen sich
wie folgt:
•
•
•
•
Eine Person ist geboren in minimal einem, maximal
einem Ort.
Eine Person ist gestorben in minimal Null, maximal
einem Ort.
Eine Person macht Ferien in minimal Null, maximal
vielen Orten.
Eine Person war bereits in minimal einem, maximal
vielen Orten.
Beziehungen mit referentieller Integrität
Werden Daten in einer Datenbank erfasst, geändert oder gelöscht, muss sicher gestellt sein,
dass die Inhalte der Tabellen widerspruchsfrei bleiben. Die referentielle Integrität garantiert
die Korrektheit zwischen den Attributen von Tabellen und der Erhaltung der Eindeutigkeit ihrer Schlüssel. Sie gewährleistet, dass in einer Child-Tabelle die Fremdschlüssel nur solche
Werte annehmen können, die in der betreffenden Parent-Tabelle der Beziehung bereits als
Primärschlüsselattribute angelegt worden sind.
Referentielle Integrität liegt in einer Datenbank somit dann vor, wenn jedem Wert, der unter
einem Fremdschlüssel eingetragen wird, auch tatsächlich ein identischer Eintrag in der Relation entspricht, in der das Attribut Primärschlüssel ist. In einer Child-Tabelle dürfen somit nur
Datensätze eines Objektes enthalten sein, das in der Parent-Tabelle vorkommt; "Kinder" ohne Eltern" darf es nicht geben.
Am Beispiel der Tabellen SCHUELER und AUSLEIHEN bedeutet dies, dass eine Ausleihe
an einen Schüler (Attribut Schuelernr) in der Tabelle AUSLEIHEN erfasst werden kann,
wenn diese Schülernummer als Primärschlüssel in der Tabelle SCHUELER vorhanden ist.
Darüber hinaus können die Daten eines Schülers aus der Tabelle SCHUELER nicht gelöscht
werden, solange es noch Ausleihen für diesen Schüler in der Tabelle AUSLEIHEN gibt.
Auf der folgenden Seite sind die Beziehungen zwischen den Tabellen der Datenbank Schulbibliothek dargestellt.
69
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Beziehungen zwischen den Tabellen der Datenbank Schulbibliothek
Der nachfolgende Bildschirmausschnitt zeigt alle Tabellen der Datenbank Schulbibliothek:
In der nachfolgenden Übersicht sind Beziehungen zwischen den Tabellen der Datenbank
Schulbibliothek dargestellt:
gemeinsames Datenfeld
Schuelernr
Ortnr
Buchnr
Verlagnr
Parent-Tabelle
(Primärschlüssel)
SCHUELER
WOHNORTE
BUECHER
VERLAGE
Child-Tabelle
(Fremdschlüssel)
AUSLEIHEN
SCHUELER
AUSLEIHEN
BUECHER
Beziehung
1:N
1:N
1:N
1:N
Erläuterung der Beziehungen zwischen den Tabellen der Datenbank Fahrrad:
Tabelle
Beschreibung der Beziehung
Auswirkung der referentiellen Integrität
Ein Schüler kann kein, ein oder mehrere
Bücher ausleihen.
Ein Schüler aus der Tabelle SCHUELER kann nicht gelöscht
werden, wenn es Ausleihungen mit übereinstimmender Schuelernr in der Tabelle AUSLEIHEN gibt.
Jeder Schüler hat genau einen Wohnsitz.
Für einen Schüler kann ein Wohnort (über das Attribut Ortnr)
nur erfasst werden, wenn der Wohnort auch in der Tabelle
ORTE vorkommt.
WOHNORTE
Ein Wohnort kann keinem, einem oder
mehren Schülern zugeordnet sein.
Ein Wohnort kann aus der Tabelle WOHNORTE nicht gelöscht
werden, wenn Schüler mit dem Wohnort in der Tabelle
SCHUELER enthalten sind.
AUSLEIHEN
Eine Ausleihe kann nur an genau einen
Schüler erfolgen.
Eine Ausleihe kann nur dann an einen Schüler erfolgen, das
heißt in der (Child-)Tabelle AUSLEIHEN erfasst werden, wenn
die entsprechende Schülernummer (Attribut Schuelenr) in der
(Parent-)Tabelle SCHUELER vorhanden ist.
Eine Ausleihe bezieht sich immer auf
genau ein Buch.
Ein Buch kann nur dann ausgeliehen, d.h. in der (Child-) Tabelle AUSLEIHEN erfasst werden, wenn die entsprechende
Buchnummer (Attribut Buchnr) in der (Parent-)Tabelle BUECHER vorhanden ist.
Ein Buch kann aus der Tabelle BUECHER nicht gelöscht werden, wenn in der Tabelle AUSLEIHEN noch Einträge für dieses Buch enthalten sind.
SCHUELER
BUECHER
VERLAGE
70
Ein Buch kann nie, einmal oder mehrmals ausgeliehen werden.
Ein Buch wird immer von genau einem
Verlag geliefert.
Ein Buch kann nur in der Tabelle Buecher erfasst werden,
wenn der dazugehörende Verlag in der Tabelle VERLAGE
angelegt ist.
Ein bestimmter Verlag kann keine, ein
oder mehrere Bücher liefern.
Ein Verlag kann nicht aus der Tabelle VERLAGE gelöscht
werden, wenn von ihm noch Bücher in der Tabelle BUECHER
vorhanden sind.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(1) Erzeugen der SQL-Befehle zum Einrichten der Tabellen und Beziehungen
Mit Hilfe des Azzurri Clay-Tools
lässt sich eine Skriptdatei erzeugen, welche die SQL-Befehle
zum Erstellen der Datenbanktabellen enthält. Zum Erstellen des
SQL-Scripts kann bei
geöffnetem Entwurfsfenster mit
den Befehlen
ClayÆ Generate SQL (CREATE TABLE) Script…
oder über das Kontextmenü des
Datenbankentwurfs (rechte
Maustaste im Entwurfsfenster)
der entsprechende Assistent
aufgerufen werden (siehe Abb.).
Es startet der Assistent, mit dessen Hilfe das SQL-Script
erzeugt wird.
Zunächst wird festgelegt, zu welchem Projekt das zu erstellende Skript gehören soll. Sinnvollerweise ist dies das
aktuelle Projekt projektSchulbibliothek.
Wird mit dem Button "Weiter " das nächste Dialogfenster geöffnet, kann festgelegt werden, dass die Schlüssel
in separaten (ALTER TABLE) SQL-Anweisungen generiert wurden. Für die weiteren Ausführungen werden die
Fremdschlüssel beim Erzeugen der Tabellen eingerichtet (siehe hierzu auch oben, Seite 49)
Nach dem Bestätigen der Schaltfläche "Fertig stellen" werden die nachfolgenden SQLAnweisungen generiert (Auszug):
Hinweis:
Der Aufbau des CREATE
TABLE-Befehls wird ausführlich
in Kapitel "Einrichten einer
Datenbank" (siehe Seite 29 ff.)
erläutert.
71
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Im Folgenden ist das vollständige SQL-Script abgebildet, mit dem die Tabellen und Beziehungen der Datenbank Schulbibliothek erzeugt werden. Weitere Ausführungen zum Erzeugen von Tabellen und Beziehungen finden Sie oben, Seite 29 ff. und 45 ff.
CREATE TABLE Orte (
Ortnr CHAR(5) NOT NULL
, PLZ CHAR(5)
, Ort CHAR(50)
, PRIMARY KEY (Ortnr)
)TYPE=InnoDB;
CREATE TABLE Schueler (
Schuelernr CHAR(4) NOT NULL
, Vorname CHAR(20)
, Name CHAR(30)
, Strasse CHAR(50)
, Ortnr CHAR(5) NOT NULL
, PRIMARY KEY (Schuelernr)
, CONSTRAINT FK_Schueler_1 FOREIGN KEY (Ortnr)
REFERENCES Orte (Ortnr)
)TYPE=InnoDB;
CREATE TABLE Verlage (
Verlagnr CHAR(5) NOT NULL
, Verlagname CHAR(50)
, Ortnr CHAR(5) NOT NULL
, PRIMARY KEY (Verlagnr)
, CONSTRAINT FK_Verlage_1 FOREIGN KEY (Ortnr)
REFERENCES Orte (Ortnr)
)TYPE=InnoDB;
Tabelle mit den Attributen
erzeugen
Primärschlüssel festlegen.
Fremdschlüssel einrichten
Tabellentyp InnoDB für die
ref. Integrität
CREATE TABLE Buecher (
Buchnr CHAR(5) NOT NULL
, Autor CHAR(40)
, Titel CHAR(50)
, E_jahr CHAR(4)
, Verlagnr CHAR(5) NOT NULL
, PRIMARY KEY (Buchnr)
, CONSTRAINT FK_Buecher_1 FOREIGN KEY (Verlagnr)
REFERENCES Verlage (Verlagnr)
)TYPE=InnoDB;
CREATE TABLE Ausleihen (
Ausleihnr CHAR(10) NOT NULL
, A_datum DATE
, R_datum DATE
, Schuelernr CHAR(4) NOT NULL
, Buchnr CHAR(5) NOT NULL
, PRIMARY KEY (Ausleihnr)
, CONSTRAINT FK_Ausleihen_1 FOREIGN KEY (Schuelernr)
REFERENCES Schueler (Schuelernr)
, CONSTRAINT FK_Ausleihen_2 FOREIGN KEY (Buchnr)
REFERENCES Buecher (Buchnr)
)TYPE=InnoDB;
72
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.3.2
Erzeugen der relationalen Datenbank aus dem Entity Relationship
Modell
Vorbemerkung:
Das Erzeugen der relationalen Datenbank aus den generierten SQL-Befehlen ist auf zwei
Wegen möglich.
•
Die generierten SQL-Befehle können als Script-Datei (zum Beispiel schulbibliothek_struktur.sql) gespeichert und dann im MySQL Query Browser geöffnet und ausgeführt werden.
Diese Vorgehensweise ist auf Seite 35 beschrieben. Allerdings ist darauf zu achten, dass
das vorliegende SQL-Script nicht nur die Befehle zum Erzeugen der Tabellen und Beziehungen, sondern auch den Befehl zum Erzeugen der Datenbank (CREATE DATABASE
Schulbibliothek) enthält. (siehe oben, Seite 27)
•
Das generierte SQL-Script wird in Eclipse weiter verarbeitet. Dazu wird in Eclipse
− eine Verbindung zum MySQL-Server aufgebaut,
− eine Datenbank auf dem Server eingerichtet und
− die Tabellen der Datenbank eingerichtet, indem das SQL-Script ausgeführt wird.
In den folgenden Ausführungen wird diese Vorgehensweise vorgestellt.
5.3.2.1
Herstellen einer Client–Server–Umgebung in Eclipse
Ist geplant, von der Datenmodellierung in der Jahrgangsstufe 1 bis zur dynamischen Webseite in der Jahrgangsstufe 2 dieselbe Software zu verwenden, bietet sich Eclipse im Zusammenspiel mit MySQL an. Dabei ist es möglich, die für die Schulen in Baden-Württemberg
vorbereitete Eclipse-Version für die Verwendung von MySQL so zu konfigurieren/erweitern,
dass die Entwicklungsumgebung beim Arbeiten mit der Datenbank nicht verlassen werden
muss.
MySQL kann als Bestandteil des XAMPP-Pakets genutzt werden, ohne dass ein Serverdienst eingerichtet wird.
Im Folgenden wird eine lokale Installationsumgebung für MySQL aus dem XAMPP-Paket,
wie sie für die Unterrichtsvorbereitung eingesetzt werden kann, beschrieben.
Voraussetzung dieser Installation ist,
dass Eclipse in der Version 3_3 auf
dem Rechner im Verzeichnis
C:\Programme\Eclipse installiert ist.
73
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(1)
Installieren des XAMPP-Pakets
Bei der Verwendung des XAMPP-Pakets wird ein Paket, bestehend aus einem Apache-Webserver, php-Unterstützung, ein
MySQL-Datenbankserver sowie das Frontend phpMyAdmin für
die webbasierte Datenbankadministration installiert.
Die Installation ist auf Seite 22 f. beschrieben und beschränkt
sich auf das Entpacken des XAMPP-Pakets in das
Rootverzeichnis eines Laufwerkes. Hier wird das lokale
Laufwerk C als Ziellaufwerk verwendet.
Hinweis:
In Eclipse kann der MySQL-Server aus dem XAMPP-Paket genau so genutzt werden wie auf
den Seiten 22 ff. beschrieben.
Die folgenden Ausführungen, wie das XAMPP-Paket in Eclipse eingebunden werden kann
(bis zur Seite 76), sind optional zu verstehen.
(2) Einbinden des XAMPP-Pakets in Eclipse
Für den Einsatz im Unterricht ist es von großem Vorteil, wenn die Anwender (Lehrer/Schüler)
die Entwicklungsumgebung zum Starten oder Beenden des Datenbankservers nicht verlassen müssen. Dies kann auf unterschiedlichen Wegen realisiert werden.
Die einfachste getestete Vorgehensweise, den Datenbankserver MySQL des XAMPP-Pakets
aus Eclipse heraus zu starten, ist die Installation des php-Plugins für Eclipse. Dieses plugin
kann aus dem Internet (http://sourceforge.net/projects/phpeclipse/) kostenfrei bezogen werden.
Für die hier beschriebene Installation wurde das php-Plugin Version 1.20, das für die Eclipse-Versionen 3.3x geeignet ist, installiert. Das Plugin wird wie die meisten Eclipse-Plugins
nach dem Download entpackt und in das Eclipse-Programmverzeichnis kopiert.
Wechselt man nach dem Starten von Eclipse in die php-Perspektive (Menü: Window Æ
Open Perspective Æ Other Æ php), erscheinen die Symbole sowie das Menü: PHP/Apache
für das Starten und Beenden der Server.
Damit die Symbole/Menüs
genutzt werden können, müssen Sie im Eigenschaftenfenster (Menü: Window Æ
Preferences) konfiguriert
werden. Im Eigenschaftenfenster wird der Eintrag für die
PHP External Tools geöffnet.
74
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Nacheinander sind jetzt die Pfade zu den Externen Tools (Webserver Apache, Datenbankserver MySQL sowie zum gesamten XAMPP-Paket) zu überprüfen beziehungsweise einzutragen:
(i)
Einstellungen zum Starten, Beenden und Neustarten des Webservers Apache:
(ii)
Einstellungen zum Starten des MySQL-Datenbankservers
Bei Starten der MySQL-Datenbank muss der Pfad zur Konfigurationsdatei my.cnf eingetragen
werden. Über diese Datei werden wichtige Starteinstellungen, wie etwa das Festlegen des
Tabellentyps InnoDB, der für die Umsetzung der referentiellen Integrität benötigt wird, übergeben. Wird der MySQL-Server über das XAMPP-Paket gestartet (siehe nachfolgender Punkt
(iii)), dann wird die Konfigurationsdatei my.cnf über die Datei xampp_start.exe aktiviert.
(iii)
Einstellungen zum Starten und Beenden des XAMPP-Pakets (Webserver Apache und
MySQL)
Hinweis:
Wenn das XAMPP-Paket
auf ein Netzlaufwerk entpackt wurde, müssen die
Pfadangaben entsprechend angepasst werden,
z. B. H:\XAMPP
75
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(3) Starten des XAMPP-Pakets
Zum Arbeiten mit MySQL-Datenbanken unter Eclipse im Unterricht sind zwei Vorgehensweisen denkbar:
Starten / Beenden des XAMPP-Pakets (Webserver und MySQL) aus der php-Perspektive
Buttons zum Starten und Beenden
Im Konsolenfenster erscheint die Meldung, dass die Server gestartet sind. Diese Meldung
darf nicht geschlossen werden.
Starten / Beenden des Datenbankservers ohne den Webserver
Im Konsolenfenster erscheint die Meldung, dass die Server gestartet sind. Mit dem Button
Terminate kann der Server ebenfalls wieder beendet werden.
76
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Einrichten einer Datenbankverbindung unter Eclipse 3.3.2
Das Einrichten einer Verbindung zu einer MySQL-Datenbank sowie das Arbeiten mit der Datenbank hat sich unter Eclipse 3.3.2 geändert. Grundlage der nachfolgenden Ausführungen
ist die Version, die um die Features zum Starten und Beenden der Datenbanksoftware (siehe
vorherige Seiten) MySQL aus Eclipse heraus, erweitert wurde. Diese Version steht unter
www.ksehingen.de zum Download zur Verfügung.
Bevor die Datenbankverbindung eingerichtet wird, sollte
der aktuelle Datenbanktreiber
im Eclipse-Arbeitsverzeichnis
oder im Eclipse Programmverzeichnis gespeichert sein.
Für die nachfolgenden Ausführungen wird als Eclipse-Arbeitsverzeichnis das Verzeichnis
H:\EclipseAB angenommen. Der derzeit aktuelle Datenbanktreiber für MySQL wird als jarDatei :"mysql-connector-java-5.1.6-bin.jar" unter http://www.mysql.com/products/connector/j/
bereit gestellt.
Die Kommunikation mit der Datenbank erfolgt mit Hilfe der Datenbankabfragesprache SQL.
Als Tool wird das Eclipse-Plugin SQLExplorer verwendet.
Die Verbindung zur MySQL-Datenbank wird in zwei Schritten aufgebaut:
¾ Zunächst wird in den Eigenschaften für den SQLExplorer eine JDBC-Verbindung mit
dem aktuellen Treiber eingerichtet. Diese „allgemeine“ JDBC-Verbindung zeigt auf die
Systemdatenbank mysql und dient lediglich der Verbindungsaufnahme.
¾ Zum konkreten Arbeiten mit vorhandenen Datenbanken wird für jede Datenbank jeweils
ein Verbindungsprofil eingerichtet.
Hinweis:
Die Einrichtung der JDBC-Verbindung mit der ersten Verbindung zur Systemdatenbank
mysql müssen einmal vorgenommen werden. Sie sind nicht Gegenstand des Unterrichts. In
der für diese Handreichung konfigurierten Eclipse-Version ist die JDBC-Verbindung zur Systemdatenbank mysql eingerichtet. Die folgenden Ausführungen dienen dann zur Überprüfung
der Einstellungen.
(1)
JDBC-Treiber einrichten
Eclipse starten und das Fenster Eigenschaften
öffnen (Menü: Windows Æ Preferences).
Im Fenster Preferences muss der Eintrag SQL
Explorer expandiert und der Eintrag JDBCDrivers ausgewählt werden. Man erhält eine Liste der möglichen Treiber, für die eine Datenbankverbindung eingerichtet werden kann.
77
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Wenn der MySQL-Treiber noch nicht konfiguriert ist (grünes Häkchen), wird durch Drücken der Schaltfläche Edit das Fenster zum Einrichten des neuen Treibers geöffnet:
Im Fenster Change Drivers werden zunächst:
-
Ein beliebiger Name (z. B. MySQL) und die
-
URL jdbc:mysql://localhost:3306/mysql eingetragen.
Der Eintrag localhost bezieht sich auf den lokalen PC. An seiner Stelle kann auch
eine IP-Adresse stehen. Es erweist sich als Vorteil und in der Folge als Erleichterung, wenn beim Einrichten der Datenbankverbindung im Treiber sofort eine Datenbank angegeben wird, die im MySQL-Paket schon angelegt ist. Hier wird die
System-Datenbank mysql als „Standardeintrag“ gewählt.
-
Unter dem Register Extra Class Path kann mit Hilfe der Schaltfläche Add der
Treiber mit Namen mysql-connector-java-5.1.6-bin.jar (der zuvor in das Arbeitsverzeichnis gespeichert wurde) ausgewählt und hinzugefügt werden.
Drückt man anschließend den Button List Drivers, erscheint im Listenfeld Driver
Class Name der Eintrag com.mysql.jdbc.Driver. Bei älteren Versionen kann dies
auch der Eintrag org.gjt.mm.mysql.Driver sein.
Der eingerichtete JDBC-Treiber kann jetzt genutzt werden.
78
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(2)
JDBC-Treiber zum Einrichten eines Verbindungsprofils nutzen
Eclipse wird gestartet und die Perspektive SQL Explorer (Menü: Window Æ Open Perspective Æ Other… Æ SQL Explorer) wird geöffnet.
Im Fenster Connections wird mit Hilfe des Symbols Create New Connection Profile eine Datenbankverbindung zu der Systemdatenbank mysql auf der Grundlage des hinterlegten
JDBC-Treibers angelegt:
Im Dialogfenster Create New Connection Profile wird ein beliebiger Name für das Verbindungsprofil eingetragen, aus dem Listenfeld Driver der zuvor eingerichtete JDBC-Treiber
ausgewählt. Wenn noch keine zu bearbeitende Datenbank angelegt ist, wird im Textfeld
URL der Name der Systemdatenbank mysql und als Username wird der Benutzer root ohne
Passwort eingetragen.
79
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anschließend kann dann für das eingerichtete Profil die
Verbindung (Connect) mit Hilfe des Kontextmenüs (rechte
Maustaste) hergestellt werden.
Wenn die Verbindung hergestellt ist, liegt folgender Bildschirm vor:
-
Die Ergebnisse der SQL-Befehle werden im Ergebnisfenster angezeigt.
-
Die eingegebenen SQL-Befehle werden in der SQL-History gespeichert und können bei
Bedarf wieder aufgerufen werden.
80
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.3.2.2
¾
Überführen des Entity Relationship Diagramms in eine relationale Datenbank
Einrichten der Datenbank Schulbibliothek auf dem Datenbankserver MySQL
Bevor das modellierte Entity Relationship Diagramm in eine relationale Datenbank auf dem
Datenbankserver überführt werden kann, muss zunächst dieser Server gestartet werden.
Danach muss die Verbindung zu irgendeiner Datenbank auf diesem Server (z. B. zur Systemdatenbank mysql) hergestellt sein. Für den Unterricht ist es wichtig, die Client–Server –
Umgebung zu visualisieren.
Elemente der Client–Server–Umgebung in Eclipse
Clients
Server
(1)
(2)
--------------------------- Fileserver (Pro
gramme + Daten)
--------------------------Proxyserver
LAN
Internet
- Emailserver
--------------------------- Webserver
- Datenbankserver
-------------------------------------------------------------------------------
(3)
MySQL Datenbankserver
(4)
(1) In einer Client–Server–Umgebung nehmen die Clients mit Hilfe geeigneter Software
(Client–Software) Serverdienste in Anspruch.
(2) Die Serverdienste können im lokalen Netz (LAN) oder im Internet zur Verfügung stehen.
(3) Die Kommunikation mit dem Datenbankserver MySQL erfolgt mit Hilfe der Datenbanksprache SQL (Structured Query Language). Die SQL-Befehle werden mit Hilfe einer
geeigneten Clientsoftware wie beispielsweise SQLExplorer in Eclipse zum Datenbankserver gesandt und dort bearbeitet.
(4) Der Datenbankserver liefert dann dem Client das Ergebnis.
Bevor Eclipse als Clientsoftware zum Arbeiten mit dem Datenbankserver MySQL genutzt
werden kann, muss
9 der MySQL-Datenbankserver gestartet sein (siehe Seite 76). Der erfolgreiche Startvorgang wird in einem Meldefenster angezeigt.
9 die Verbindung zum Daten
bankserver hergestellt sein.
Dazu wird in der SQL ExplorerPerspektive die Verbindung
zu mysql aktiviert.
81
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Das Einrichten, Pflegen und Bearbeiten von Datenbanken erfolgt mit Hilfe der Abfragesprache SQL (Structured Query Language).
(Ausführlichere Ausführungen dazu siehe Seite 26 ff.)
Bevor die Struktur der Tabellen und Beziehungen eingerichtet werden können, muss die Datenbank auf dem Server eingerichtet werden.
Die Datenbank wird mit dem SQLBefehl CREATE DATABASE <datenbankname) auf dem Datenbankserver eingerichtet.
Sinnvollerweise wird zu dieser Datenbank ein eigenes Verbindungsprofil eingerichtet und die
Verbindung zu der neu eingerichteten Datenbank aktiviert. Dies hat den Vorteil, dass sich
dann die folgenden SQL-Befehle auf die richtige Datenbank beziehen.
Dazu wird im Fenster Connection das Kontextmenü geöffnet und der Befehl New Connection
Profile ausgewählt.
Hier werden nun der/die
- Name des Verbindungsprofils,
- Datenbanktreiber,
- URL der Datenbank Schulbibliothek,
- Benutzername root,
eingetragen (siehe auch Seite 79).
Wenn man anschließend die neu eingerichtete Verbindung aktiviert
(Doppelklick auf den Namen des Verbindungsprofils oder Kontextmenü)
startet der SQL-Editor für die Eingabe der SQL-Befehle.
Connection-Fenster
mit den Verbindungsprofilen
82
SQL-Editor für die Eingabe der SQL-Befehle
Datenbanken
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Das generierte SQL-Script
mit den CREATE-Befehlen
zum Erstellen der
Datenbanktabellen der
Datenbank Schulbibliothek
und den Beziehungen
(siehe Seite 72) geht davon aus, dass es von einem in Eclipse eingerichteten Server ausgeführt wird.
Da das Skript jedoch von einem externen Server ausgeführt wird, auf den aus Eclipse zugegriffen wird, muss das generierte Script zunächst geschlossen und (ggf. im aktuellen Projekt)
gespeichert werden. Anschließend wird diese Datei als „normale“ SQL Editor-Datei geöffnet
und ausgeführt:
Nach dem Ausführen des SQL-Scripts wird im Fenster Database
Structure die Anzeige aktualisiert (Kontextmenü zum Datenbankeintrag Schulbibliothek) und die erzeugten Tabellen erscheinen im
Fenster.
83
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
EXKURS: Importieren von SQL-Skript-Dateien
Vergleichbar der Vorgehensweise im MySQL Query Browser (siehe Seite 35) besteht auch
in Eclipse die Möglichkeit, SQL-Skriptdateien zu importieren. Dadurch ist es schnell und einfach möglich, eine Datenbank neu aufzusetzen, falls das Datenmaterial zerstört ist.
Allerdings können Skripts zum Einrichten der Datenbankstruktur (Datenbank und Tabellen)
nicht ohne Änderung übernommen werden, da die generierte SQL-Syntax nicht vollständig
übereinstimmt.
Am Beispiel der Datenbank zum Projekt Fahrradvermietung mit dem Datenstand fahrrad_2
wird die Vorgehensweise dargestellt. Dabei wird gezeigt,
• wie das SQL-Skript für die CREATE-Anweisungen zum Erzeugen der Datenbank und der
Tabellen hergestellt und angepasst wird.
• das SQL-Skript zum Einlesen der Daten aus dem MySQL Migration Toolkit angewandt wird.
• die Skripts später zum Auffrischen des Datenmaterials eingesetzt werden.
Erzeugen des SQL-Skripts für das Einrichten der Datenbank fahrrad_2 und Erzeugen
der Tabellen
Entsprechend der auf den
Seiten 71 ff. beschriebenen
Vorgehensweise wird aus
dem Entity Relationship
Diagramm für die Fahrradvermietung Rent A Bike
GmbH (siehe Seite 96) ein
Skript mit den SQLCREATE-Befehlen generiert.
SQL-Skript mit den CREATE-Befehlen:
DROP DATABASE IF EXISTS `fahrrad_2`;
CREATE DATABASE IF NOT EXISTS `Fahrrad_2`
CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `Fahrrad_2`;
CREATE TABLE Hersteller (
Herstellernr VARCHAR(5) NOT NULL
, Herstellername VARCHAR(30)
, Email VARCHAR(30)
, PRIMARY KEY (Herstellernr)
)TYPE=InnoDB;
CREATE TABLE Wohnorte (
Ortnr INT(10) NOT NULL
, PLZ VARCHAR(5)
, Ort VARCHAR(50)
, PRIMARY KEY (Ortnr)
)TYPE=InnoDB;
CREATE TABLE Fahrradtypen (
Typnr VARCHAR(5) NOT NULL
, Typbezeichnung VARCHAR(30)
, Kurzerlaeuterung VARCHAR(60)
, PRIMARY KEY (Typnr)
)TYPE=InnoDB;
84
Dieses generierte Skript wird
ergänzt:
Falls die zu erzeugende Datenbank fahrrad_2 schon angelegt ist, wird sie gelöscht
und dann neu angelegt
Anschließend werden die Tabellen mit den Beziehungen
angelegt.
Hinweis: Damit kein Widerspruch zu den Anforderungen der referentiellen Integrität entsteht, werden zunächst
die Parent- und danach die Child-Tabellen erzeugt.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
CREATE TABLE Fahrraeder (
Fahrradnr VARCHAR(5) NOT NULL
, Bezeichnung VARCHAR(50)
, Rahmennummer VARCHAR(10)
, Tagesmietpreis DOUBLE(4, 2)
, Wert DOUBLE(6, 2)
, Kaufdatum DATE
, Herstellernr VARCHAR(5)
, Typnr VARCHAR(5)
, PRIMARY KEY (Fahrradnr)
, INDEX (Typnr)
, CONSTRAINT FahrradtypenFahrraeder FOREIGN KEY
(Typnr)
REFERENCES Fahrradtypen (Typnr) ON
DELETE NO ACTION ON UPDATE NO ACTION
, INDEX (Herstellernr)
, CONSTRAINT HerstellerFahrraeder FOREIGN KEY
(Herstellernr)
REFERENCES Hersteller (Herstellernr)
ON DELETE NO ACTION ON UPDATE NO ACTION
)TYPE=InnoDB;
CREATE TABLE Kunden (
Kundennr VARCHAR(5) NOT NULL
, Name VARCHAR(30)
, Vorname VARCHAR(20)
, Strasse VARCHAR(30)
, Ortnr INT(10)
, Geschlecht VARCHAR(1)
, Gebtag DATE
, PRIMARY KEY (Kundennr)
, INDEX (Ortnr)
, CONSTRAINT WohnorteKunden FOREIGN KEY (Ortnr)
REFERENCES Wohnorte (Ortnr) ON
DELETE NO ACTION ON UPDATE NO ACTION
)TYPE=InnoDB;
CREATE TABLE Vermietungen (
Mietnr VARCHAR(5) NOT NULL
, Mietdatum DATE
, von DATE
, bis DATE
, Fahrradnr VARCHAR(5)
, Kundennr VARCHAR(5)
, PRIMARY KEY (Mietnr)
, INDEX (Fahrradnr)
, CONSTRAINT FahrraederVermietungen FOREIGN KEY
(Fahrradnr)
REFERENCES Fahrraeder (Fahrradnr) ON
DELETE NO ACTION ON UPDATE NO ACTION
, INDEX (Kundennr)
, CONSTRAINT KundenVermietungen FOREIGN KEY
(Kundennr)
REFERENCES Kunden (Kundennr) ON
DELETE NO ACTION ON UPDATE NO ACTION
)TYPE=InnoDB;
Das generierte SQL-Skript
wird im aktuellen Projekt
gespeichert und kann jetzt
beliebig oft im SQL-Editor
ausgeführt werden.
85
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Einlesen der Daten
Das SQL-Datenskript, das mit
dem MySQL Migration Toolkit erzeugt wurde (siehe Anhang 2),
wird zuerst mit Drag & Drop aus
dem Datenverzeichnis in das
aktuelle Projekt übernommen.
Alternativ kann die Skriptdatei
auch mit dem Menübefehl
File Æ Import Æ FileSystem
importiert werden.
SQL-Datenskript aus dem MySQL Migration Toolkit
Öffnet man in Eclipse das .sql-Skript (Menü: Open with Æ SQL Editor), werden die Kommentaranweisungen am Anfang des Skripts nicht fehlerfrei übernommen. Sie werden daher
gelöscht.
Um einen Widerspruch zu den Anforderungen der referentiellen Integrität beim Erfassen der
Daten auszuschließen, wird das Skript so umgestellt, dass zunächst die Daten der ParentTabellen und danach die Daten der Child-Tabellen eingelesen werden.
Reihenfolge beim Einlesen der Daten:
Parent-Tabelle
Primärschlüssel
Child-Tabelle
Fremdschlüssel
1.
Fahrradtypen
Typnr
Fahrraeder
Typnr
2.
Hersteller
Herstellernr
Fahrraeder
Herstellernr
3.
Fahrraeder
Fahrradnr
Vermietungen
Fahrradnr
4.
Wohnorte
Ortnr
Kunden
Ortnr
5.
Kunden
Kundennr
Vermietungen
Kundennr
Vermietungen
Kundennr
Fahrradnr
6.
86
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Sinnvollerweise richtet man für die neu angelegte
Datenbank dann ein eigenes Verbindungsprofil ein,
damit später eine einfache und schnelle Verbindung zu der Datenbank hergestellt werden
kann.
Auffrischen des Datenmaterials
Die erzeugten, beziehungsweise
angepassten Skriptdateien können
auch auf ein Sicherungsverzeichnis
ausgelagert und später je nach
Bedarf wieder mit Drag & Drop in
das Projekt übernommen und
ausgeführt werden.
5.3.2.3
Datenoperation mit SQL mit dem SQL Explorer unter Eclipse
Das Arbeiten mit dem SQL Eplorer unter Eclipse ist eine Möglichkeit, SQL-Auswahlabfragen
zu bearbeiten. Die Ausführungen des Kapitels 5.2.3 (ab Seite 34) können analog in Eclipse
umgesetzt werden.
In den folgenden Ausführungen werden exemplarisch einige Datenoperationen mit dem SQL
Explorer unter Eclipse anhand der modellierten und eingerichteten Datenbank Schulbibliothek vorgestellt. Die SQL-Übungen gehen davon aus, dass die Schülerinnen und Schüler
bereits Kenntnisse in der Datenbankmodellierung haben und mit einem anderen Tool
(MySQL Query Browser) gearbeitet haben. Es werden sofort mehrere Tabellen in die Betrachtungsweise einbezogen.
87
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Wenn Eclipse gestartet, das Verbindungsprofil eingerichtet und aktiviert ist, liegt folgender
Bildschirm der SQL Explorer-Perspektive vor:
(2)
(4)
(6)
(3)
(1)
(5)
(1) Die Datenbankstruktur mit den verfügbaren Datenbanken.
(2) Button zum Öffnen eines SQL-Fensters, in das SQL-Anweisung eingegeben werden.
(3) SQL-Editorfenster, in das SQL-Befehle eingegeben werden.
(4) Button zum Ausführen des SQL-Befehls. Hierbei ist zu beachten, dass die richtige Datenbankverbindung und die richtige Datenbank ausgewählt sind.
(5) Das Ergebnis der SQL-Abfrage erscheint im Ergebnisfenster.
Die SQL-Abfrage kann im Eclipse Arbeitsverzeichnis
(Workspace) im angelegten Projektverzeichnis
gespeichert und später wieder geöffnet und bearbeitet
werden.
Als Dateiname ist *.sql zu vergeben.
88
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Daten in die Datenbank schreiben
Situation 1:
Als Mitarbeiter/in in der Schulbibliothek sollen Sie folgende Bücher in die Datenbank Schulbibliothek aufnehmen:
1. Java EE Webanwendungen, Autor Kai Neun, Erscheinungsjahr 2008, Verlag Neupress.
2. CSS Üben, Autor Tim Web, Erscheinungsjahr 2008, Verlag Neupress.
3. Englisch für Webentwickler , Autor Susan Craw, Erscheinungsjahr 2008, Edu-Verlag.
4. Fred Bebel, Römerweg 25, 89584 Ehingen leiht am 12.01.2009 das Buch Java EE Webanwendungen. Das Buch soll am 28.01.2009 zurückgegeben werden.
5. Clara Knall, Wiesenweg 3, 89079 Ulm leiht am 11.01.2009 das Buch Englisch für Webentwickler. Das Buch soll am 27.01.2009 zurückgegeben werden.
Zunächst wird festgestellt, dass die zu erfassenden Daten auf die Tabellen Orte, Verlage,
Buecher, Schueler und Ausleihen verteilt sind:
Die Anforderungen der Datenintegrität (referentielle Integrität s. Seite 70) erfordern die Erfassung der Daten in folgender Reihenfolge:
Parent-Tabelle
Primärschlüssel
Child-Tabelle
Fremdschlüssel
1.
Orte
Ortnr
Schueler
Ortnr
2.
Verlage
Verlagnr
Buecher
Verlagnr
3.
Buecher
Buchnr
Ausleihen
Buchnr
4.
Schueler
Schuelernr
Ausleihen
Schuelernr
Ausleihen
Schuelernr
Buchnr
5.
Die Daten werden mit der SQL–Anweisung INSERT INTO erfasst:
Syntax:
INSERT INTO <tabellenname>(<attributsbezeichnung1>, <attributsbezeichung2>, …) VALUES (<attributswert1>, <attributswert2>, …);
Vorgehensweise:
Erfassen der Wohnorte:
Erfassen der Verlage:
INSERT INTO Orte (Ortnr, PLZ, Ort)
VALUES('1', '89079', 'Ulm');
INSERT INTO Verlage (Verlagnr, Verlagname, Ortnr)
VALUES('1', 'Verlag Neupress',1);
INSERT INTO Orte (Ortnr, PLZ, Ort)
VALUES('2', '89584', 'Ehingen');
INSERT INTO Verlage (Verlagnr, Verlagname, Ortnr)
VALUES('2', 'Edu-Verlag ',2);
89
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Erfassen der Bücher:
Erfassen der Schüler:
INSERT INTO Buecher (Buchnr, Autor,
E_jahr, Titel, Verlagnr)
VALUES('1', 'Kai Neun', '2008', 'Java
EE Webanwendungen', '1');
INSERT INTO Schueler (Schuelernr,
Name, Vorname, Strasse, Ortnr)
VALUES('1', 'Bebel', 'Fred',
'Römerweg 25', '2');
INSERT INTO Buecher (Buchnr, Autor,
E_jahr, Titel, Verlagnr)
VALUES('2', 'Tim Web', '2008', 'CSS
Üben', '1');
INSERT INTO Schueler (Schuelernr,
Name, Vorname, Strasse, Ortnr)
VALUES('2', 'Knall','Clara',
'Wiesenweg 3', '1');
INSERT INTO Buecher (Buchnr, Autor,
E_jahr, Titel, Verlagnr)
VALUES('3', 'Susan Craw', '2008',
'Englisch für Webanwendungen', '2');
Erfassen der Ausleihen:
INSERT INTO Ausleihen (Ausleihnr,
A_datum, Buchnr, R_datum, Schuelernr)
VALUES('1', '2009/01/12', '1',
'2009/01/28', '1');
INSERT INTO Ausleihen (Ausleihnr,
A_datum, Buchnr, R_datum, Schuelernr)
VALUES('2', '2009/01/11', '3',
'2009/01/27', '2');
Situation 1:
Fred Bebel möchte am 28.01.2009 für eine Woche das Buch „So lerne ich Vokabeln“ bis
zum 16.02.2009 ausleihen. Das Buch des Edu-Verlages aus Ulm erschien 2009, der Autor
heißt Kim Klein. Obwohl das Buch bereits die Inventarnummer (Buchnr) ‘4‘ erhalten hat, ist
es noch nicht inventarisiert. Trotzdem versucht die bearbeitende Schülerin die Ausleihdaten
in die Tabelle Ausleihen zu erfassen:
INSERT INTO Ausleihen (Ausleihnr, A_datum, Buchnr, R_datum, Schuelernr)
VALUES('3','2009/01/28','4','2009/02/16','1');
Wird der SQL-Befehl mit den bekannten Daten
ausgeführt, tritt die nebenstehende Fehlermeldung auf, weil ein Verstoß gegen die referentielle Integrität vorliegt.
Die Eingabe der Buchnummer 4 in die (Child-)
Tabelle Ausleihen ist erst möglich, wenn die
Buchnummer (Attribut Buchnr) in der (Parent-)
Tabelle Buecher angelegt ist.
Sobald das Buch in der Tabelle Buecher inventarisiert (erfasst) ist, kann auch die Ausleihe
erfasst werden.
INSERT INTO Buecher (Buchnr, Autor, E_jahr, Titel, Verlagnr)
VALUES('4','Tim Klein','2009','So lerne ich Vokabeln','2');
Nach der Inventarisierung kann auch die Ausleihe erfasst werden.
90
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Daten aus der Datenbank löschen
Situation 1:
Die Bibliotheksleiterin bittet Sie, das Buch „So lerne ich Vokabeln“ wieder aus der Tabelle
Buecher zu entfernen, da vom Verlag eine Neuauflage angekündigt wurde.
Das Löschen von Datensätzen aus einer Tabelle geschieht mit folgender SQL- Anweisung
(siehe auch oben, Seite 55).
Syntax:
DELETE FROM <tabellenname> WHERE <bedingung>;
Beim Versuch mit der SQL-Anweisung
DELETE FROM Buecher
WHERE Buchnr ='4';
das Buch mit der Buchnummer 4 zu löschen,
erhalten Sie die nebenstehende Fehlermeldung, weil ein Datensatz aus der (Parent-) Tabelle Buecher nicht gelöscht werden kann,
wenn Ausleihungen in der (Child-)Tabelle Ausleihen eingetragen sind.
Situation 2:
Die Bibliotheksleiterin bittet Sie, das Buch „CSS Üben“ wieder aus der Tabelle Buecher zu
entfernen, da es noch nie verliehen wurde.
DELETE FROM Buecher WHERE Titel ='CSS Üben';
In diesem Beispiel ist das Löschen erfolgreich, der Primärschlüsselwert Buchnr = ‘2‘ in der
(Parent-)Tabelle Buecher von keinem Fremdschlüssel in der (Child-)Tabelle Ausleihen referenziert wird.
¾ Daten verändern/aktualisieren
Situation:
Das Erscheinungsjahr des Buches „So lerne ich Vokabeln“ ist nicht ‚2009‘, sondern ‚2006‘.
Nehmen Sie die Änderung vor und aktualisieren Sie die Tabelle Buecher.
Syntax:
UPDATE <tabellenname> SET <attributsbezeichnung1> = <attributswert1>,
<attributsbezeichnung2> = <attributswert2>, … WHERE <bedingung>;
(siehe auch Seite 54)
Lösung
UPDATE Buecher SET E_jahr ='2006'
WHERE Titel ='So lerne ich Vokabeln';
91
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
¾ Auswahlabfragen
Die nachfolgenden Beispiele beziehen sich auf das zuvor erfasste Datenmaterial. Umfangreichere Auswahlabfragen können auch mit der Datenbank fahrrad_1 geübt werden (siehe
Seite 39 ff. und Seite 56 ff.). Wie das Datenmaterial dazu bereitgestellt wird, ist auf den Seiten 84 ff. beschrieben).
Befehlssyntax der SELECT – Anweisung (siehe auch S. 36 ff.)
SELECT <attributsbezeichnung1>, <attributsbezeichnung2> …
FROM <tabelle> [, <tabelle>, <tabelle>....]
[WHERE <bedingung> ]
[ORDER BY <attributsbezeichnung> [ASC|DESC]..]
[GROUP BY <attributsbezeichnung> ]
[HAVING <bedingung> ];
( * = alle Felder )
Situation 1 :
Die Bibliotheksleitung möchte eine Auswahl der Bücher, die 2006 erschienen sind. Die Liste
soll die Attribute Buchnr, Titel, Autor und E_jahr umfassen und nach den Autoren alphabetisch sortiert sein.
Lösung
SELECT Buchnr, Titel, Autor, E_jahr
FROM Buecher
WHERE E_jahr ='2006'
ORDER BY Autor;
Situation 2 :
Die Bibliotheksleitung möchte eine Auswahl der Bücher, die 2006 erschienen sind. Die Liste
soll die Attribute Buchnr, Titel, Autor und E_jahr und den Namen des Verlages umfassen.
Lösung
SELECT Buchnr, Titel, Autor, E_jahr, Verlagname
FROM Buecher, Verlage
WHERE Buecher.Verlagnr = Verlage.Verlagnr
AND E_jahr ='2006';
92
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.4
Datenbankverwaltung mit Hilfe von OpenOffice Base
Das Datenbankmodul Base aus dem Officepaket Open Office erfreut sich zunehmender Beliebtheit. Open Office Base kann eingesetzt werden:
Als Frontend, das eine benutzerfreundliche Schnittstelle zu einer Datenbank, hier einer
MySQL-Datenbank, bietet;
-
- als „eigenständiges Datenbanksystem“, vergleichbar mit MS-ACCESS. Mit Hilfe der implementierten HSQLDB-Engine können neue Datenbanken inklusive der Frontends wie Abfragen, Formulare und Berichte bearbeitet und verwaltet werden.
In beiden Fällen wird eine *.odb-Datei erzeugt und gespeichert, in der alle Informationen
über die Datenbank enthalten sind. Während die ODB-Datei im Falle der Verwendung von
OpenOffice Base als Frontend einer MySQL-Datenbank die Verbindungsinformationen zu
dieser Datenbank enthält, speichert sie im Falle der Verwendung als „eigenständige Datenbank“ alle Informationen, die eine Datenbank ausmachen, wie zum Beispiel Tabellen, Abfragen, Berichte und Formulare.
In den folgenden Ausführungen wird die Verwendung von OpenOffice Base als Frontend
zum Auswählen von Daten aus einer MySQL-Datenbank verwendet.
5.4.1 Herstellen der Verbindung zum MySQL-Datenbankserver
-
Zunächst wird das XAMPP-Paket mit Hilfe
des Start-Buttons oder mit Hilfe des
Kontrollpanels aus dem Verzeichnis
H:\XAMPP gestartet.
(Siehe auch Seite 22 f.)
-
Das aufgehende DOS-Fenster
darf nicht geschlossen werden.
-
Verbindung zum MySQL-Server herstellen.
Bevor die Verbindung hergestellt werden
kann, muss der aktuelle JDBC-Treiber aus
dem Internet geladen und in einem Verzeichnis, z.B. H:\Treiber\...hinterlegt werden.
(Siehe auch Seite 77 f.)
93
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
-
Anschließend muss eine beliebige Anwendung aus OpenOffice (z. B. Writer) gestartet
und das Menü Extras Optionen geöffnet werden. Unter der Kategorie OpenOffice.org
muss im Eintrag Java eine Java-Laufzeitumgebung (JRE) installiert sein (1). Falls dies
nicht der Fall ist, kann mit dem Button Hinzufügen eine JRE eingebunden werden. Anschließend wird mit dem Button Class Path das Treiberarchiv hinzugefügt (Button Archive hinzufügen) (2).
(1)
(2)
-
OpenOffice muss beendet und anschließend mit dem
Datenbankmodul BASE neu gestartet werden. Wichtig ist,
dass neben der Anwendung, auch der OpenOffice Schnellstarter in der Taskleiste beendet wird.
-
Nach dem Neustart von Open Office Base
wird ein Assistent gestartet, mit dessen
Hilfe die Datenbankverbindung eingerichtet
und gespeichert werden kann. Im ersten
Schritt wird als herzustellende Verbindung
MySQL aus dem Listenfeld ausgewählt.
-
Im zweiten Schritt wird die Verbindung über
JDBC bestätigt und im dritten Schritt als Verbindungsdaten der Namen der Systemdatenbank mysql (oder einer anderen vorhandenen Datenbank) und der Servernamen localhost eingetragen.
94
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Als Benutzernamen wird im 4. Schritt der Standardbenutzer root ohne Passwort verwendet.
Vor dem Fertigstellen der Verbindung wird dann die Datenbank angemeldet und zum Bearbeiten geöffnet.
Abschließend wird dann die Information der Datenbankverbindung als *.odb – Datei gespeichert.
95
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Wurde eine Base-Datei erfolgreich erzeugt, so startet das Base-Modul und lädt die Daten in
die Arbeitsumgebung.
Module des DBMS
Objekte des jeweiligen Moduls
Aufgaben, die erledigt werden können mit deren Beschreibung
Inhalt des jeweiligen Objekt
Soll eine Auswahlabfrage erstellt werden, ist unter der Rubrik Aufgaben die Option Abfrage
in SQL-Ansicht erstellen… zu wählen.
96
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.4.2
Datenoperationen mit SQL unter Open Office Base
In der Unterrichtspraxis spielt das Einrichten der Datenbank auf dem MySQL-Server keine
dominante Rolle. Vielmehr eignet sich Open Office Base eher dazu, eine vorhandene Datenbank (siehe Seite 48) als Frontend zu nutzen.
In den folgenden Ausführungen wird die Verwendung von Open Office Base als Datenbankmanagementsystem zum Aufbau der Datenbank sowie zum Bearbeiten und Auswerten
der Daten verwendet. Der Einsatz von Open Office Base ist denkbar im Anschluss an die
Modellierung der Datenbank, wenn das entwickelte Datenmodell in einem Datenbankmanagementsystem implementiert werden soll.
5.4.2.1
Erstellen der Tabellen einer Datenbank und deren Beziehungen
Es werden zunächst die Tabellen mit den Attributen und Schlüsseln (Primär- und Fremdschlüssel) entsprechend dem entwickelten ERM erstellt und die Beziehungen zwischen den
Tabellen hergestellt. Daran anschließend können dann einfache Operationen (Datenerfassung, Bearbeiten und Löschen) auf der Oberfläche von Open Office Base durchgeführt werden. Hier kann die Bedeutung der referentiellen Integrität einbezogen werden.
Folgendes ERM zum Projekt Fahrradverleih soll in die Datenbank rentAbike auf dem Datenbankserver überführt werden:
Einrichten der Datenbank
Wenn die Verbindung zum
Datenbankserver MySQL
hergestellt ist (siehe Seite 93 f.),
wird zunächst eine neue
Datenbank mit Namen rentAbike
mit der SQL-Anweisung
CREATE DATABASE <datenbankname> ;
auf dem MySQL-Server eingerichtet. Die SQL-Anweisung wird
im Fenster SQL Statement, das
97
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
mit dem Menübefehl Extras Æ SQL geöffnet wird, ausgeführt. Die erfolgreiche Ausführung
des Befehls wird im Meldefenster angezeigt.
Nachdem die Datenbank eingerichtet ist, wird mit
dem Menübefehl Bearbeiten Æ Datenbank Æ
Eigenschaften die Verbindung zur neu erzeugten
Datenbank hergestellt
und unter dem Register zusätzliche
Einstellungen der Zeichensatz angepasst.
Abschließend wird die neu eingerichtete Datenbankverbindung unter dem
Namen Fahrradvermietung als Datei
mit der Erweiterung .odf gespeichert
und kann dann später wieder geöffnet
werden, sobald der Datenbankserver
gestartet ist.
Erzeugen der Tabellen und der Beziehungen
Vorbemerkung
Auch in Open Office Base ist es möglich, Tabellen mit ihren Beziehungen mit Hilfe von SQLBefehlen zu Erzeugen. Das Ausführen von SQL-Skipts (beispielsweise mit dem MySQL
Migration Toolkit erzeugt) ist nicht möglich. Open Office BASE bietet sich deshalb insbesondere als Frontend zum Auswerten einer bereits bestehenden MySQL–Datenbank an.
Obwohl das Erzeugen von Tabellen und deren Beziehungen in der Unterrichtspraxis eher mit
anderen Tools abgedeckt wird, soll die Vorgehensweise in Open Office BASE kurz vorgestellt werden.
98
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Vorgehensweise
(1) Erzeugen der Tabellen
Aus dem Startbildschirm wird die Entwurfsansicht für Tabellen gewählt und die Struktur
der jeweiligen Tabelle wird angelegt.
Die Datenfelder werden in die Entwurfsansicht eingetragen, die Datentypen werden
festgelegt.
Für die Tabelle Kunden wird das Attribut Kundennr als Primärschlüssel festgelegt
(Kontextmenü für das Attribut Kundennr).
Die anderen Tabellen des Entity Relationship-Diagramms werden entsprechend angelegt. Mit dem Menübefehl Extras Æ Beziehungen können dann die angelegten Tabellen
zunächst ohne Beziehungen angezeigt werden. Im Fenster Relationenentwurf kann je
nach Bedarf eine weitere Tabelle ein- oder auch ausgeblendet werden.
99
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
(2) Herstellen der Beziehungen
Wenn die Tabellen mit dem Menü: Extras Æ Beziehungen angezeigt sind, können nun die
Beziehungen zwischen den Tabellen hergestellt werden.
(3)
(1)
(2)
Die neue Relation wird im Fenster Relationenentwurf mit dem Menü: Einfügen Æ Neue
Relation eingerichtet. Dabei müssen
(1) die beteiligten Tabellen,
(2) das gemeinsame Attribut, über das die Beziehung aufgebaut wird, ausgewählt
werden. Als Ergebnis wird
(3) die Beziehung mit der Multiplizität angezeigt.
Das gemeinsame Attribut Ortnr ist in der Parent-Tabelle Wohnorte Primärschlüssel und
in der Child-Tabelle Kunden Fremdschlüssel. Einem Wohnort können mehrere Kunden
zugeordnet werden, also entsteht eine 1:n-Beziehung.
Die Beziehungen zwischen den Tabellen können auch mit Drag & Drop hergestellt werden. Dabei wird bei gedrückter Maustaste das Attribut Ortnr der Tabelle Kunden mit dem
Attribut Ortnr der Tabelle Wohnorte verknüpft und als Ergebnis erscheint die Verbindungslinie. Mit einem Doppelklick auf die Verbindungslinie kann das Dialogfenster für die
eingerichtete Beziehung angezeigt und gegebenenfalls verändert werden.
Wenn alle Beziehungen eingerichtet sind, liegt der nachfolgende Relationenentwurf vor:
100
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.4.2.2
Datenmanipulation mit SQL-Anweisungen
Vorbemerkung
Für das Arbeiten mit den Daten der
Datenbank wird den Schülerinnen
und Schülern die Datenbank
fahrrd_2 mit vorbereitetem
Datenmaterial zur Verfügung gestellt. Die Datenbank wird
sinnvollerweise mit dem dafür
geeigneteren Werkzeug MySQL
Query Browser hergestellt (siehe
hierzu Seite 35).
Sobald die SQL-Skripts der
Datenbank fahrrad_2 mit dem
entsprechenden Datenmaterial
eingelesen sind, wird in Open
Office mit dem Menü: BearbeitenÆ
DatenbankÆ Eigenschaften die
neue Datenbankverbindung eingerichtet und sofort mit gespeichert
(Menü: DateiÆ Speichern untern).
Mit dem Menübefehl: ExtrasÆ Beziehungen können die eingelesenen Tabellen der Datenbank fahrrad_2 und ihre Beziehungen überprüft werden.
101
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Standard-SQL-Ansicht kann nur für Auswahlabfragen (SELECT-Befehle siehe Seite 36 ff.)
verwendet werden.
SQL-Anweisungen zum Einfügen,
Ändern und Löschen von Daten in
den Tabellen der Datenbank
werden im Fenster SQLStatement ausführen (Menü:
Extras Æ SQL).
a) Daten in Tabellen einfügen
Situation:
Die Kundin Alina Kesser aus 89584 Ehingen (Ortnr =
36023), Schulgasse 10, geboren am 23.07.1990 möchte
das Fahrrad Lady Lite Comfort (Fahrradnr=30) vom
10.08.2009 bis 22.08.2009 mieten.
Mark Spenn aus Blaubeuren (Ortnr = 30267), Karlstraße
10, geboren am 02.03.1988 hat angerufen und möchte
in den nächsten Tagen vorbei kommen und sich ein
Fahrrad für eine Wochenendtour aussuchen.
Daten der Kundin Alina Kesser erfassen:
INSERT INTO Kunden(Kundennr, Name, Vorname, Geschlecht, Gebtag, Strasse, Ortnr)
VALUES(311, 'Kesser', 'Alina',' w', {D '1990-07-23'}, 'Schulgasse 10', 36262)
Strings als Attributswerte
Datumswerte
Während die Eingabe der Daten für Alina Kesser problemlos verläuft, zeigt OpenOffice Base
beim Speichern der Eingabedaten für Mark Spenn eine Fehlermeldung.
Erklärung: Zwischen den Tabellen Kunden und Wohnorte besteht eine Relation. Gemeinsames Attribut ist das Attribut Ortnr. Die Tabelle Wohnorte ist Parent-Tabelle, die
Tabelle Kunden ist Child-Tabelle. Ein Attributswert für das gemeinsame Attibut
Ortnr kann nur dann in die Child-Tabelle aufgenommen werden, wenn es in der
Parent-Tabelle vorhanden ist (referentielle Integrität). Das bedeutet, dass zunächst die Daten des Ortes Blaubeuren in der Tabelle Wohnorte erfasst werden
müssen.
Vermietung in die Tabelle Vermietungen erfassen:
INSERT INTO Vermietungen(Mietnr, Kundennr, Fahrradnr, von, bis)
VALUES (658, 309, 30, {D '2009-08-10' },{D '2009-08-22'})
102
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
b) Datenänderungen in Tabellen
Situation:
Alina Kesser teilt ihre neue Adresse mit. Sie wohnt jetzt in Ulm (Ortnr 36023) in der Kuhbergstraße 22. Berichtigen Sie den Inhalt der Datenbank.
UPDATE Kunden SET Ortnr = 36023, Strasse ='Kuhbergstraße 22'
WHERE Name = 'Kesser';
Wegen gestiegener Kosten sollen bei allen Fahrrädern die Tagesmietpreise um 5 % erhöht
werden. In der Tabelle FAHRRAEDER sind die Tagesmietpreise um die erhöhten Mietpreise
zu ersetzen.
UPDATE Fahrraeder SET "Tagesmietpreis" = "Tagesmietpreis" *1.05;
c)
Daten in Tabellen löschen
Situation:
Die Comus Einräder XM (Fahrradnr = 1 und Fahrradnr = 8) wurden noch nie oder selten
vermietet und sollen deshalb aus der Tabelle Fahrraeder gelöscht werden.
- Das Fenster SQL-Statement ausführen (Menü:
Extras Æ SQL) öffnen; den SQL-Befehl eingeben
und ausführen.
DELETE FROM Fahrraeder WHERE Fahrradnr = '1';
DELETE FROM Fahrraeder WHERE Fahrradnr = '8';
oder:
DELETE FROM Fahrraeder
WHERE (Fahrradnr = '1' OR Fahrradnr = '8');
- Das Ergebnis des Befehls wird dann im „StatusFenster“ angezeigt. In diesem Beispiel wird der
Hinweis auf die Beeinträchtigung der referentiellen
Integrität angezeigt (Fahrradnr = 1).
Da es in der (Child-)Tabelle Vermietungen noch
Verweise des Fremdschlüssels Fahrradnr zum
Primärschlüssel Fahrradnr der (Parent-)Tabelle
Fahrraeder gibt, kann der Datensatz nicht gelöscht werden.
-
Wird das Fahrrad mit der Fahrradnr = 8 gelöscht, erscheint die Statusmeldung
„Befehl erfolgreich ausgeführt“.
103
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.4.2.3
Auswahlabfragen
Open Office Base eignet sich besonders zum Auswerten und Präsentieren von Daten aus
MySQL-Datenbanken, da in der Umgebung eines grafisch orientierten Anwendungsprogramms eine Vielzahl von Möglichkeiten bestehen, die ausgewählten Daten in Berichten
oder Formularen zu präsentieren.
In dieser Handreichung wird lediglich die Auswahl der Daten mit der SQL-Auswahlabfrage
SELECT thematisiert.
Als Beispiele werden die Aufgaben aus Kapitel 5.2.3.3 (siehe Seite 36 ff.) und 5.2.3.6 (siehe
Seite 56 ff.) verwendet. Es werden hier nur wenige Aufgabenbeispiele exemplarisch vorgestellt.
Situation:
Zur Vorbereitung des Internetauftritts, in dem die Fahrräder der Fahrradvermietung Rent A
Bike GmbH angezeigt werden sollen, wünscht die Geschäftsleitung eine Auflistung aller
Fahrräder (Attribute Fahrradnr, Bezeichnung, Tagesmietpreis und Wert). Die Aufstellung soll
nach dem Kaufpreis aufsteigend sortiert sein.
Vorgehensweise
SQL-Abfragen werden in Open Office Base unter der Rubrik Abfragen Æ Abfragen in SQLAnsicht erstellen… erfasst.
Wenn die Abfrage ausgeführt wird, teilt sich das SQL-Fenster
•
•
104
in den Ergebnisbereich für den ausgeführten Befehl;
in den SQL-Bereich, in dem der Befehl geändert oder weitere Befehle eingegeben werden können.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Ergebnisbereich
SQL-Bereich
(1) Speichert man den SQL-Befehl (Menü: Datei Æ Speichern unter oder Speichern-Button)
unter dem Namen Fahrräder ab, erscheint die Abfrage in der Rubrik Abfragen.
(2) Wenn im Menübefehl Ansicht Æ Vorschau die Option Document aktiviert ist, wird eine
Schnellansicht der Abfrage eingeblendet.
(1)
(2)
Weitere Beispiele
Beispiel 1: Abfrage mit zwei Bedingungen (UND-Verknüpfung, siehe Seite 40)
Alle Fahrräder mit der Bezeichnung
Scott, deren Kaufdatum vor 2009
liegt, sind sortiert nach dem Kaufdatum fallend aufzulisten.
Die Abfrage soll unter dem Namen „Scott 2008“ gespeichert werden.
105
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösung:
SQL-Entwurf und Ergebnis
Rubrik Abfrage mit Vorschau
Beispiel 2: Abfrage mit der MONTH-Funktion (Siehe Seite 40)
Alle Fährräder, die im Monat Mai gekauft wurden. Die Abfrage soll unter dem
Namen „Mai“ gespeichert werden.
SQL-Entwurf und Ergebnis
Rubrik Abfrage mit Vorschau
Beispiel 3: Die Geschäftsleitung der Rent A Bike GmbH wünscht eine Aufstellung aller
Fahrräder mit den Herstellernamen (Attribute Fahrradnr, Bezeichnung, Herstellernr, Herstellername). Die Aufstellung soll alphabetisch nach den Herstellernamen sortiert sein und unter dem Namen FahrradHersteller gespeichert werden.
SQL-Entwurf und Ergebnis
106
Rubrik Abfrage mit Vorschau
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Beispiel 4: Mit Hilfe einer Gruppierungsabfrage soll die Summe der Kaufwerte der Fahrräder vom Typ Damen City Bike und Herren City Bike ermittelt und gegenübergestellt werden. Die Abfrage soll unter dem Namen „Wert_CityBikes“ gespeichert werden.
SQL-Entwurf und Ergebnis
Rubrik Abfrage mit Vorschau
Alternative
SELECT Typbezeichnung, SUM(Wert) AS Summe
FROM Fahrraeder, Fahrradtypen
WHERE Fahrraeder.Typnr = Fahrradtypen.Typnr
GROUP BY Typbezeichnung
HAVING (Typbezeichnung ='Damen City-Bike'
OR Typbezeichnung ='Herren City-Bike');
Durch die Auswahl der Fahrradtypen in der Where-Klausel werden
die Fahrradtypen vor der Gruppierung ausgewählt. Die Klammersetzung ist zu beachten.
Zuerst werden alle Datensätze
gruppiert und danach werden die
Fahrradtypen mit der HAVINGKlausel ausgewählt.
Die Verwendung der HAVINGKlausel verkürzt die Zugriffszeit.
107
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.5
Arbeiten mit Datenbanken unter phpMyAdmin
Vorbemerkung
Eine weitere Zugriffsmöglichkeit auf eine MySQL-Datenbank liefert das Tool phpMyAdmin.
Es steht dem Anwender zur Verfügung, nachdem xampp installiert (entpackt) wurde (siehe
hierzu oben, Seite 22 ff.).
Kritisch anzumerken ist, dass phpMyAdmin ein webbasiertes Frontend zur Datenbankadministration darstellt, also auf dem installierten Apache-Webserver ausgeführt wird. Der oben
beschriebene MySQL Query Browser stellt dagegen ein "echtes" Frontend dar, das clientseitig (auf dem Rechner des Anwenders) ausgeführt wird.
Selbstverständlich können mit phpMyAdmin die typischen Aufgaben eines Frontends, wie
das Anlegen von Datenbanken, das Bearbeiten von Strukturen, die Benutzerverwaltung, die
Auswertung der Daten etc., ausgeführt werden.
Im Folgenden soll die Handhabung dieser Software kurz dargestellt werden. Als Grundlage
hierzu dient das Projekt Schulbibliothek (siehe unten: Übungsaufgaben zur ER-Modellierung Projekt Schulbibliothek, Seite 139).
5.5.1
Starten von phpMyAdmin
Zum Starten des Datenbankmanagementsystems muss in die Adresszeile eines beliebigen
Browsers die URL "http://localhost/phpmyadmin" eingegeben werden. Zuvor ist der WebServer zu starten (siehe oben, Seite 22 f.).
Daraufhin öffnet sich das Startfenster von phpMyAdmin:
108
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.5.2
Hinweis:
Überführung des ER-Modells in eine relationale Datenbank mit Hilfe
von phpMyAdmin
Die softwaregestützte Überführung eines Entity-Relationship-Modells in eine relationale Datenbank ist nicht Inhalt des Lehrplans.
Dennoch wird im Folgenden auf diese Thematik eingegangen. Damit soll der Entwurf und die Implementierung einer eigenen Datenbank für Lehrerinnen und Lehrer erleichtert werden.
Aufgabenstellung
Die Schulbibliothek der Louis-Leitz-Schule Stuttgart verleiht aus dem umfangreichen Bestand
an Fachliteratur und Belletristik Bücher an ihre Schülerinnen und Schüler.
Die betreuenden Lehrer beschließen, die Bibliotheksverwaltung in Zukunft Computer unterstützt zu organisieren. Vorgesehen ist eine relationale Datenbank, mit der zunächst die Buchausleihe abgewickelt werden kann.
(Zur ausführlichen Projektbeschreibung siehe unten Seite 139)
Die Datenmodellierung zur Problemstellung führte zu nachfolgenden Ergebnissen:
Entity-Relationship-Diagramm:
Relationenmodell:
SCHUELER(Schuelernr, Vorname, Name, Strasse, ↑Ortnr)
ORTE(Ortnr, PLZ, Ort)
AUSLEIHEN(Ausleihnr, A_datum, R_datum, ↑Schuelernr, ↑Buchnr)
BUECHER(Buchnr, Autor, Titel, E_jahr, ↑Verlagnr)
VERLAGE(Verlagnr, Verlagname)
Nach dem Starten von phpMyAdmin kann die Datenbank
(1) vollständig mit Hilfe der Abfragesprache SQL oder
(2) benutzergeführt
angelegt und administriert werden. Auf die Vorgehensweise mit Hilfe der Abfragesprache
SQL wird beim Einsatz des Tools Query Browser (siehe Seite 25 ff.) eingegangen und kann
unter phpMyAdmin entsprechend angewandt werden. Für die folgenden Ausführungen mit
phpMyAdmin wird die „benutzergeführte“ Variante vorgestellt.
109
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Vorgehensweise
Nach dem Starten von
phpMyAdmin wird zunächst der Link Datenbanken ausgewählt.
Im folgenden Bildschirm
kann eine neue Datenbank
angelegt werden. Dazu
wird der Name und der
gewünschte Zeichensatz
(utf8_general_ci) eingetragen und der Button Anlegen getätigt.
Anschließend erscheint die
neue Datenbank in der Liste der Datenbanken. Außerdem kann der generierte SQL-Befehl im SQLFenster abgelesen werden.
Die erste Tabelle wird
durch die Eingabe ihres
Namens und der Anzahl
der vorgesehenen Attribute
angelegt.
110
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anschließend werden die Datenfelder (Attribute) erfasst, wobei der Datentyp, die Länge der
Felder, das Schlüsselattribut und der Zeichensatz festzulegen sind.
(Primärschlüssel
festlegen!)
Die Festlegung des Tabellentyps InnoDB gewährleistet die Datenintegrität bei verbundenen Tabellen (referentielle Integrität).
Nach dem Drücken des Buttons Speichern wird der Entwurf gespeichert und die Tabelle erscheint
in der Liste der Datenbanktabellen. Gleichzeitig wird im SQL-Fenster der entsprechende SQLBefehl generiert.
Die Datenbankübersicht wird wieder aktiviert und die restlichen Tabellen können entsprechend erfasst werden.
111
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Wenn alle Tabellen und deren
Attribute erfasst
sind, werden nun
die Beziehungen
hergestellt. Dazu
wird für jede
„Child“-Tabelle
über den Link
Beziehungsübersicht der Bildschirm zum Eintragen der Fremdschlüssel geöffnet.
Wie im ER-Modellausschnitt für die beiden Tabellen SCHUELER und ORTE vorgesehen, ist
in der Beziehungsübersicht für die Child-Tabelle SCHUELER der Fremdschlüssel Ortnr einzutragen. Er zeigt auf den Primärschlüssel Ortnr der Parent-Tabelle ORTE.
ERM
Hinweis:
112
Beziehungsübersicht
Da es für die Unterrichtspraxis nicht angebracht ist, alle Tabellen mit Hilfe von
SQL-Anweisungen zu erzeugen, können mit phpMyAdmin auch vorgefertigte
(siehe Server des Landesinstituts für Schulentwicklung - die URL finden Sie im
Vorwort dieser Handreichung) oder selbst erzeugte Skriptdateien (siehe Anhang
2) mit den Tabellenentwürfen und den Tabelleninhalten importiert werden.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.5.3
Import vorhandener Datenbanken
1. Schritt Zunächst wird die Skriptdatei zum Erzeugen der Datenbank und zum Anlegen der
Tabellen importiert. Der Import erfolgt aus dem Startfenster von phpMyAdmin und
wird mit dem Schaltfläche
gestartet. Im sich öffnenden "Importieren"Fenster muss der Pfad zur benötigten Skriptdatei ausgewählt werden. Nachdem
der OK-Button bestätigt wurde, wird die Datenbank angelegt und es beginnt der
Import der Datenbanktabellen, dessen erfolgreicher Abschuss von phpMyAdmin
gemeldet wird.
("Importieren"-Fenster von phpMyAdmin)
2. Schritt Nachdem die Datenbanktabellen importiert wurden, können die Tabelleninhalte
mit dem Import der Insert-Skriptdatei eingelesen werden. Dazu muss zunächst
die entsprechende Datenbank im Pull-down-Fenster des Sidebarfensters von phpMyAdmin aktiviert werden.
Anschließend wird der Import mit der Schaltfläche
gestartet.
Auch hier muss im entsprechenden Pfad die gewünschte Skriptdatei ausgewählt
und geöffnet werden. Nachdem der OK-Button bestätigt wurde, werden die Daten in die Tabellen importiert.
113
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Danach meldet phpMyAdmin den erfolgreichen Import
Anschließend existiert im MySQL-Datenbank-Pfad (.../xampp/mysql/data) ein Ordner "Fahrrad", in dem die MySQL-Datenbankdateien abgelegt sind. Daneben wurde die Datei "ibdata1" in den Ordner ../data geschrieben. Sie enthält die Indexeinträge, über welche die referentielle Integrität der Datenbank gesteuert wird.
Wichtig: Soll eine MySQL-Datenbank von einem PC auf einen anderen kopiert werden, so muss neben dem entsprechenden Datenbankordner auch die Datei
"ibdata1" kopiert werden. Bereits vorhandene Eintragungen sind danach
jedoch nicht mehr vorhanden!
Nach erfolgreichem Import zeigt phpMyAdmin die importierte Datenbank mit den enthaltenen
Datenbanktabellen. Über den SQL-Button wird der SQL-Editor gestartet und es können beliebige SQL-Statements an die Datenbank abgegeben werden.
Beispiel: SQL-Anweisung, mit
der alle Kundendaten
aufgelistet werden.
(Zum Thema "Datenoperationen mit SQL" siehe Seite 26 ff.)
Hinweis:
114
Je nach Version begrenzt phpMyAdmin die Größe der zu importierenden
Skriptdateien. Dies bedeutet, dass Datenbanken mit umfangreichen Datenbeständen mit php-MyAdmin nicht importiert werden können. Für den Import solcher Datenbanken empfiehlt sich der Einsatz des MySQL Query
Browsers (siehe Seite 35 f.).
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.6
Übungsaufgaben zur ER-Modellierung
Die nachfolgenden Aufgabenstellungen können als alternative Problemstellungen für den Einstieg in das Kapitel "5.1.2 Phasen der Datenmodellierung" bzw. zur Erarbeitung der in diesem
Abschnitt thematisierten Lerninhalte gesehen werden.
5.6.1
Projekt "Förderkurse"
Die SMV der Helene-Lange-Schule Stuttgart organisiert für die Schülerinnen und Schüler
ihrer Schule Förder- und Nachhilfekurse in verschiedenen Fächern. Die Kurse werden von
Schülerinnen und Schülern geleitet.
Die Schülersprecherin Maike Bahr wünscht sich für die Verwaltung und Organisation dieser
Kurse in Zukunft eine individuelle Software. Eine kleine Gruppe Informatik begeisterter Schülerinnen hat sich bereit erklärt, die gewünschte Software zu entwickeln. In einer ersten Projektphase soll eine relationale Datenbank zur Verwaltung der relevanten Daten entwickelt werden.
Die Anforderungen an diese Datenbank ergeben sich aus folgenden Aussagen der Schülersprecherin:
"Zu Beginn jedes Schuljahres fragen wir bei den Schülerinnen und Schülern der Jahrgangsstufen nach,
ob sie bereit sind, einen Förderkurs in irgendeinem Fach der Stundentafel zu leiten. Voraussetzung dafür ist, dass sie im letzten Zeugnis mindestens 13 Punkte in diesem Fach hatten. Aus Erfahrung wissen
wir, dass in einigen Fächern die Nachfrage so groß ist, dass ein Kurs gar nicht ausreicht. In diesem
Schuljahr hatten wir für Mathe drei Kurse, für die Fächer Ernährungslehre mit Chemie und Biologie zwei
Kurse anbieten müssen. Für die Fächer Physik, Wirtschaftslehre, Englisch und Französisch hat jeweils
ein Kurs gereicht.
Beide Kurse für Ernährungslehre mit Chemie wurden von Kathrin Bauch geleitet. Die Kurse in Biologie
haben sich Silke Schneider und Franziska Bauer geteilt. Silke macht das schon zum zweiten Mal. Emanuel Manz, unser Primus, hat zwei Mathe-Kurse und den Physik-Kurs geleitet. Der hat in Mathe 15 und
in Physik 14 Notenpunkte. Den dritten Mathe-Kurs hat Ralf Schuh übernommen. Mara Heitger hat die
Kurse für Wirtschaftslehre und Französisch geleitet; den Englisch-Kurs hat Claire Rausch übernommen.
An diesem Kurs nehmen auch ich und meine Freundin Ute Kreuz teil. Die ist auch noch Teilnehmerin im
1. Mathe-Kurs von Emanuel Manz. Die Fachgruppenleiter des jeweiligen Faches haben sich bereit erklärt, bei Fragen und Problemen den Kursleitern als Ansprechpartner zur Verfügung zu stehen.
Sobald feststeht, wer welchen Kurs leitet, legen wir gemeinsam den 1. Kurstag und die Termine für die
einzelnen Kurse fest - also an welchem Wochentag und um wie viel Uhr - und machen einen Aushang
am Schwarzen Brett. Dort können sich alle Interessierten informieren und sich für die jeweiligen Kurse
eintragen. Falls die Nachfrage unser Kursangebot übersteigt, prüfen wir, ob wir noch eine geeignete
Kursleiterin oder geeigneten Kursleiter finden und bieten diesen Kurs auch noch an. Ach ja, die Unterrichtsdauer in den verschiedenen Kursen ist nicht identisch. Der Mathe- und Ernährungslehre-Kurs
dauert beispielsweise immer 120 Minuten; die Kurse in den Sprachen dagegen nur 45 Minuten. Wie
lange die anderen Kurse jeweils dauern weiß ich jetzt nicht - da müsste ich zuerst mal nachschauen.
Für die Teilnahme an einem Kurs müssen wir einen kleinen Kostenbetrag für die Vervielfältigung der
Kursunterlagen verlangen. Außerdem sollen die Kursleiter an ihren Geburtstagen auch ein kleines Geschenk als Anerkennung für ihre Bemühungen bekommen. Die Kostenbeiträge sind nicht für alle Kurse
gleich hoch, da ja auch unterschiedlich viel Material bereitgestellt werden muss. So verlangen wir beispielsweise für Kurse im Fach Mathematik zur Zeit 8,00 Euro je Teilnehmerin und Teilnehmer; für Englisch werden nur 4,50 Euro fällig. Es kann sein, dass wir dieses Jahr etwas mehr verlangen müssen."
Aufgabe
Entwickeln Sie für die SMV der Helene-Lange-Schule unter Berücksichtigung der Regeln für
die Entity-Relationship-Modellierung nach Peter Chen (siehe oben, Seite 5) ein Datenmodell.
115
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Phasen der Datenmodellierung
a)
Beteiligte Objekte und deren Beziehungen erkennen
Im vorliegenden Projekt können folgende Objekte identifiziert werden (Auszug):
"Kathrin Bauch" geboren am "13.03.1992";
"Emanuel Manz" geboren am "05.09.1992";
"Maike Bahr" geboren am "22.12.1991";
….
"Mathematik", Ansprechpartner "Herr Mainzer", Dauer "120 Minuten";
"Englisch", Ansprechpartner "Frau Kaiser", Dauer "45 Minuten";
…
"Mathe-Kurs 2009/10", Beginn am "07.10.2009", "dienstags" ab "16:00 Uhr";
"Englisch-Kurs 2009/10", Beginn am "10.10.2009", "freitags" ab "13:00 Uhr";
….
Aufgrund der Aussagen der Schülersprecherin lassen sich folgende Beziehungen erkennen:
"Silke Schneider"
"Franziska Bauer"
"Emanuel Manz"
"Emanuel Manz"
ist qualifiziert im Fach
ist qualifiziert im Fach
ist qualifiziert im Fach
ist qualifiziert im Fach
"Biologie",
"Biologie",
"Mathematik",
"Physik",
"Silke Schneider"
"Silke Schneider"
"Franziska Bauer"
"Emanuel Manz"
"Emanuel Manz"
leitet den Kurs
leitet den Kurs
leitet den Kurs
leitet den Kurs
leitet den Kurs
"Bio 2008/09",
"Bio I 2009/10",
"Bio II 2009/10",
"Mathe I 2009/10",
"Physik 2009/10",
"Bio I 2009/10"
"Mathe I 2009/10"
ist ein Kurs im Fach
ist ein Kurs im Fach
"Biologie",
"Mathematik",
"Maike Bahr"
"Ute Kreuz"
"Ute Kreuz"
ist Teilnehmerin am Kurs
ist Teilnehmerin am Kurs
ist Teilnehmerin am Kurs
"Englisch A 2009/10",
"Englisch B 2009/10",
"Mathe I 2009/10",
b)
Identitätsschlüssel für Entitäten bestimmen
Für die identifizierten Entitäten des Projektes "Förderkurse" können folgenden Identitätsschlüssel bestimmt werden:
Entität:
Maike Bahr, 22.12.1991
….
Mathematik, Herr Mainzer, 130 Minuten
….
Mathematik 2009/10, Dienstag, 16:00 Uhr
….
c)
Identitätsschlüssel:
künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
Kombination aus allen Attributen
Kombination aus allen Attributen
Festlegen der Entitäts- und Beziehungstypen
Bei den identifizierten Entitäten können folgende Gruppierungen vorgenommen werden:
"Kathrin Bauch" geboren am "13.03.1992";
"Emanuel Manz" geboren am "05.09.1992";
…..
Æ Entitätstyp Schueler
116
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
"Mathematik", Ansprechpartner "Herr Mainzer", Dauer "130 Minuten";
"Englisch", Ansprechpartner "Frau Kaiser", Dauer "45 Minuten";
…..
Æ Entitätstyp Fach
"Mathe-Kurs 2009/10" ab "07.10.2009", "dienstags" ab "16:00 Uhr", "8,00 €";
"Englisch-Kurs 2009/10" ab "10.10.2009", "freitags" ab "13:00 Uhr", "4,50 €";
…..
Æ Entitätstyp Kurs
Die erkannten Beziehungen zwischen den einzelnen Objekten lassen sich zu folgenden Beziehungstypen zusammenzufassen:
Aus den Beziehungen
"Silke Schneider"
leitet den Kurs
"Bio I 2009/10",
…
wird der Beziehungstyp
"Schueler
Aus den Beziehungen
"Bio I 2008/09"
leitet
Kurs"
ist ein Kurs im Fach
"Biologie",
…
wird der Beziehungstyp
"Fach
Aus den Beziehungen
"Silke Schneider "
wird geschult in
Kurs"
ist qualifiziert im Fach
"Biologie",
…
wird der Beziehungstyp
"Schueler
Aus den Beziehungen
"Maike Bahr"
ist qualifiziert im
Fach"
ist Teilnehmerin am Kurs
"Englisch 2009/10",
…
wird der Beziehungstyp
"Schueler
d)
nimmt Teil an
Kurs"
Festlegen der Beziehungskardinalitäten
Für den Beziehungstyp "Schueler leitet Kurs" gilt:
Ein Schüler leitet keinen, einen oder mehrere Kurs/Kurse
ein Kurs wird von genau einem Schüler geleitet.
In diesem Fall spricht man von einer 1:N-Beziehung.
Für den Beziehungstyp "Schüler ist qualifiziert im Fach" gilt:
Ein Schüler ist in keinem, einem oder mehreren Fach/Fächer qualifiziert
in einem Fach ist kein, ein oder mehrere Schüler qualifiziert.
In diesem Fall spricht man von einer M:N-Beziehung.
Für den Beziehungstyp " Schueler nimmt Teil an Kurs " gilt:
Ein Schüler nimmt an keinem, einem oder mehreren Kurs/Kursen teil
an einem Kurs nimmt kein, ein oder mehrere Schüler teil.
In diesem Fall spricht man ebenfalls von einer M:N-Beziehung.
und
und
und
117
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Da M:N-Beziehungen in einem relationalen Datenbanksystem nicht abgebildet werden können, müssen sie in zwei 1:N-Beziehungen aufgelöst werden.
Im Fall "Schüler ist qualifiziert im Fach" geschieht dies mit dem Entitätstyp "Qualifikation",
dessen Entitäten zum Ausdruck bringen, welcher Schüler in welchem Fach die für die Leitung eines Förderkurses geforderte Qualifikation aufweist und welche Notenpunkte er in diesem Fach hat:
Qualifiziert ist "Emanuel Manz" im Fach "Mathematik" mit "15 Notenpunkten",
qualifiziert ist "Emanuel Manz" im Fach "Physik" mit "14 Notenpunkten",
…
Daraus folgen zwei neue Beziehungstypen:
"Schueler hat Qualifikation"
Ein Schüler hat keine, eine oder mehrerer Qualifikation/en
eine Qualifikation bezieht sich auf genau einen Schüler.
und
"Qualifikation bezieht sich auf Fach"
In einem Fach liegt keine, eine oder mehrerer Qualifikation/en vor
eine Qualifikation bezieht sich genau auf ein Fach.
und
Im Fall "Schüler nimmt teil an Kurs" wird ein Entitätstyp "Teilnahme" eingefügt, dessen
Entitäten zum Ausdruck bringen, welcher Schüler an welchem Kurs teilnimmt. In einem
weiteren Attribut dieses Entitätstyps können beispielsweise die aktuellen Notenpunkte des
jeweiligen Schülers im jeweiligen Fach festgehalten werden.
Daraus folgen zwei neue Beziehungstypen:
"Schueler erklärt seine Teilnahme"
Ein Schüler erklärt keine, eine oder mehrerer Teilnahme/en
eine Teilnahme wird genau von einem Schüler erklärt.
"Teilnahme
bezieht sich auf Kurs"
In einem Kurs liegt keine, eine oder mehrerer Teilnahme/en vor
eine Teilnahme bezieht sich genau auf einen Kurs.
e)
und
und
Attribute und ihre Wertebereiche (Domänen) bestimmen
Für die fünf Entitätstypen sind folgende Attribute mit den entsprechenden Datentypen anzulegen:
Schueler:
Fach:
Kurs:
Vorname CHAR(20), Name CHAR(30), Gebtag DATE
Bezeichnung CHAR(20), Kontaktlehrer CHAR(30), Dauer INT
Bezeichnung CHAR(50), Beginn DATE, Wochentag CHAR(10), Uhrzeit TIME,
Kosten DOUBLE
Qualifikation: Notenpunkte INT
Teilnahme:
Notenpunkte INT
(Da der Leiter eines Förderkurses in diesem Fach mindestens 13 Notenpunkte
vorweisen muss, können als Wertebereich des Attributs Notenpunkte im Entitätstyp Qualifikation die Werte "13, 14, und 15" festgelegt werden.)
118
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
f)
Entity-Relationship-Diagramm (ERD) für Entitäts- und Beziehungsmengen zeichnen
N
1
Schueler
1
erzielt im
1
meldet
Fach
1
leitet
N
N
N
Teilnahme
g)
1
N
Qualifikation
erwirbt
bezieht
sich auf
N
1
wird geschult im
Kurs
Definieren von Primär- und Fremdschlüssel
Für die Entitätstypen des Projekts "Förderkurse" ergeben sich folgende Festlegungen:
Entitätstyp Schueler:
Attribut
Schuelernr
Vorname
Name
Gebtag
Datentyp
Character
Character
Character
Date
Länge/Format
5
20
30
Primärschlüssel: Schuelernr
Entitätstyp Fach:
Attribut
Fachnr
Bezeichnung
Kontaktlehrer
Dauer
Datentyp
Character
Character
Character
Integer
Länge/Format
5
20
30
Primärschlüssel: Fachnr
119
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Entitätstyp Kurs:
Attribut
Kursnr
Bezeichnung
Beginn
Wochentag
Uhrzeit
Kosten
Schuelernr
Fachnr
Datentyp
Character
Character
Date
Character
Time
Double
Character
Character
Primärschlüssel: Kursnr
Entitätstyp Teilnahme:
Attribut
Teilnahmenr
Notenpunkte
Schuelernr
Kursnr
Datentyp
Character
Integer
Character
Character
Länge/Format
5
50
10
5
5
Fremdschlüssel: Schuelernr
Fremdschlüssel: Fachnr
Länge/Format
5
5
5
Primärschlüssel: Teilnahmenr
Fremdschlüssel: Schuelernr
Fremdschlüssel: Kursnr
(Unter der zusätzlichen Annahme, dass sich Schülerinnen und Schüler nur dann zu einem
Kurs anmelden können, wenn ihre Notenpunkte in diesem Fach nicht über 7 Punkte liegt,
können als Wertebereich des Attributs Notenpunkte die Werte "0, 1, 2, 3, 4, 5, 6, und 7"
festgelegt werden.)
Entitätstyp Qualifikation:
Attribut
Datentyp
Qualinr
Character
Notenpunkte
Integer
Schuelernr
Character
Fachnr
Character
Primärschlüssel: Qualinr
Länge/Format
5
5
5
Fremdschlüssel: Schuelernr
Fremdschlüssel: Fachnr
Relationenmodell zum Projekt "Förderkurse"
SCHUELER (Schuelernr, Vorname, Name, Gebtag)
QUALIFIKATIONEN (Qualinr, Notenpunkte, ÇSchuelernr, ÇFachnr)
FAECHER (Fachnr, Bezeichnung, Kontaktlehrer, Dauer)
KURSE (Kursnr, Bezeichnung, Beginn, Wochentag, Uhrzeit, Kosten, ÇSchuelernr,
ÇFachnr)
TEILNAHMEN (TeilnahmeNr, Notenpunkte, ÇSchuelernr, ÇKursnr)
(Datenbankname: kurse)
120
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.6.2
Projekt "chemisches Labor"
Die Süddeutsche Molkerei GmbH ist ein mittelständisches Unternehmen der milchverarbeitenden Industrie. Das Unternehmen hat seinen Hauptsitz in 70599 Stuttgart. Die Produktionsstätten befinden sich in den Werken Hohenlohe (74603 Öhringen), Allgäu (88230 Wangen)
und Breisgau (79400 Kandern). Das Werk Hohenlohe wird von Herrn Huber ([email protected])
geleitet, das Werk Breisgau von Frau Maier ([email protected]) und das Werk Allgäu von Herrn
Schulze ([email protected]).
Zur Sicherung der Produktqualität betreibt die Süddeutsche Molkerei GmbH ein zentrales
Labor. Hier werden von jeder Produktionscharge mikrobiologische Proben durchgeführt. In
Zukunft soll zur Unterstützung der Abläufe im Labor eine relationale Datenbank eingesetzt
werden. In einer ersten Entwicklungsphase sollen die Standardabläufe erfasst werden können.
Sie erhalten den Auftrag, für diese Datenbank ein Datenmodell zu entwickeln. Hierzu liegt
Ihnen das Ergebnis einer Befragung der Laborleiterin vor:
In den Werken wird aus jeder Produktions-Charge eine Probe entnommen und sofort zu uns
nach Stuttgart geschickt. Wir kennzeichnen diese Probe, damit wir später nachvollziehen können,
an welchem Termin sie bei uns einging, aus welchem Werk sie kam und zu welcher Charge sie
gehörte. So hat uns beispielsweise das Werk Hohenlohe am 05.10. eine "Butter"-Probe der Marke "Weideglück", die der Charge "ZAC-99-7759" entnommen wurde, sowie eine Probe "H-Milch,
1,5 % Fett" aus der Charge "ZAP-45-9054" geschickt. Aus dem Allgäu kam am 06.10. eine Probe
"Joghurt-natur, 1,5% Fett" aus der Charge "CPP-87-D-876" und eine Probe "Allgäuer Emmentaler" aus der Charge "RCC-76-4e45". Am 07.10. gab das Werk Breisgau aus der Charge "XP-10334" eine Probe "H-Milch, 3,5 % Fett" ab.
Die Werke teilen uns jeweils mit, auf welche Parameter die Proben zu untersuchen sind. So
mussten wir die Butter aus Öhringen auf Salmonellen und Escherichia coli und die H-Milch auf
Salmonellen, Escherichia coli und Fettgehalt untersuchen. Diese Analyse haben wir am 07.10.
durchgeführt. Das Werk Allgäu wollte, dass der Joghurt auf Fetthalt und Schimmelpilze und der
Käse auf Hefen, Schimmelpilze und Fettgehalt in Trockenmasse analysiert wird. Diese Untersuchung erfolgte am 10.10. Die Breisgauer wollten ihre H-Milch nur auf den Fettgehalt hin analysieren lassen, was am 11.10.geschah.
Wir untersuchen die Proben mit Methoden, die auf der Methodensammlung des Bundesamts für
Verbraucherschutz und Lebensmittelsicherheit und der Amtlichen Sammlung von Untersuchungsverfahren nach § 64 Lebensmittel- und Futtermittelgesetzbuch beruhen. So werden
beispielsweise Salmonellen in Lebensmittel mit der Methode "BVL L 00.00-52" und Salmonellen
in Butter mit der Methode "BVL L 02.00-11" getestet. Den Fettgehalt von Käse bestimmen wir mit
der Methode "BVL L 03.00-10", den von Milchprodukten mit der Methode "BVL L 02.00-7". Die
Methode "BVL L 02.00-10" setzen wir zur Untersuchung von Milchprodukten auf Hefen und
Schimmelpilze und die Methode "BVL L 02.00-15" zur Bestimmung vom Escherichia coli in
Milchprodukten ein.
Standardmäßig wird jeder Parameter mit einer Methode getestet. Von jeder Methode muss deren
Kurzbezeichnung und Kurzbeschreibung gespeichert sein. Darüber hinaus muss ein KostenVerrechnungssatz für jede Methode festgehalten werden, damit wir den Werken die uns entstandenen Kosten in Rechnung stellen können.
Von den durchgeführten Analysen halten wir das Untersuchungsdatum und die ermittelten
Messwerte fest.
Wenn es bei den Proben irgendwelche Auffälligkeiten gibt, informieren wir sofort die Leitung der
entsprechenden Produktionsstätte per E-Mail.
Aufgabe
Entwickeln Sie auf Grundlage der Befragungsergebnisse für die Firma "Süddeutsche Molkerei GmbH" und unter Berücksichtigung der Regeln für die Entity-Relationship-Modellierung
nach Peter Chen (siehe oben, Seite 5) ein Datenmodell.
121
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Phasen der Datenmodellierung
a)
Beteiligte Objekte und deren Beziehungen erkennen
Im vorliegenden Projekt sind dies die Objekte:
Werk "Hohenlohe" geleitet von "Herr Huber" mit der E-Mail-Adresse "[email protected]".
Werk "Breisgau" geleitet von "Frau Maier" mit der E-Mail-Adresse "r.maier@smg".
Werk "Allgäu" geleitet von "Herr Schulze" mit der E-Mail-Adresse "a.schulze@smg".
Erzeugnis "Butter" der Marke "Weideglück".
Erzeugnis "H-Milch" mit "1,5 %" Fett.
Erzeugnis "Naturjoghurt" mit "1,5 %" Fett.
Erzeugnis "Käse" der Marke "Allgäuer Emmentaler".
Erzeugnis "H-Milch" mit "3,5 %" Fett.
Probe vom 05.10. (aus dem Werk Hohenlohe - Butter).
Probe vom 05.10. (aus dem Werk Hohenlohe - H-Milch, 1,5 %).
Probe vom 06.10. (aus dem Werk Allgäu - Joghurt-natur).
Probe vom 06.10. (aus dem Werk Allgäu - Allgäuer Emmentaler).
Probe vom 07.10. (aus dem Werk Breisgau - H-Milch, 3,5 %).
Parameter "Salmonellen".
Parameter "Escherichia coli".
Parameter "Fett".
Parameter "Hefe".
Parameter "Schimmelpilze".
Untersuchungsmethode "BVL L 00.00-52", "Verfahren zum Nachweis von Salmonellen in
Lebensmittel mit der Polymerase-Kettenreaktion".
Untersuchungsmethode "BVL L 02.00-11", "Nachweis von Salmonellen in Butter".
Untersuchungsmethode "BVL L 02.00-15", "Bestimmung der Escherichia coli in Milchprodukten; Verfahren mit flüssigem Nährmedium".
Untersuchungsmethode "BVL L 03.00-10", "Bestimmung des Fettgehaltes von Käse; Weibull-Verfahren".
Untersuchungsmethode "BVL L 02.00-7, "Bestimmung des Fettgehaltes von Milchprodukten; Röse-Gottlieb-Verfahren".
Untersuchungsmethode "BVL L 02.00-10", "Bestimmung der Anzahl von Hefen und
Schimmelpilzen in Milchprodukten; Referenzverfahren".
Erster Standardtest (prüft "Salmonellen" mit der Methode "L 02.00-11").
Zweiter Standardtest (prüft "Salmonellen" mit der Methode "L 00.00-52").
Dritter Standardtest (prüft " Escherichia coli " mit der Methode "L 04.00-15").
Vierter Standardtest (prüft " Fettgehalt" mit der Methode "L 03.00-10").
Fünfter Standardtest (prüft "Fettgehalt" mit der Methode "L 02.00-7").
Sechster Standardtest (prüft "Schimmelpilz" mit der Methode "L 02.00-10").
Siebter Standardtest (prüft "Hefe" mit der Methode "L 02.00-10").
Erste Analyse am 07.10 (für "Probe vom 05.10" - Butter - Salmonellen - Hohenlohe).
Zweite Analyse am 07.10 (für "Probe vom 05.10" - Butter - Escherichia coli - Hohenlohe).
Dritte Analyse am 07.10 (für "Probe vom 05.10" - H-Milch - Salomellen - Hohenlohe).
Vierte Analyse am 07.10 (für "Probe vom 05.10" - H-Milch - Escherichia coli - Hohenlohe).
Fünfte Analyse am 07.10 (für "Probe vom 05.10" - H-Milch - Fettgehalt - Hohenlohe).
Sechste Analyse am 10.10 (für "Probe vom 06.10" - Naturjoghurt - Fettgehalt - Allgäu).
Siebte Analyse am 10.10 (für "Probe vom 06.10" - Naturjoghurt - Schimmelpilze - Allgäu).
......
122
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Im zweiten Schritt müssen die Beziehungen, die zwischen je zwei Objekten (Entitäten) bestehen, identifiziert werden. Bei der Analyse des Interviews lassen sich folgende Beziehungen erkennen:
Werk "Hohenlohe" gibt am 05.10. eine Probe ab (Produktionscharge "ZAC-99-7759").
Werk "Hohenlohe" gibt am 05.10. eine Probe ab (Produktionscharge "ZAP-45-9054").
Werk "Allgäu" gibt am 06.10. eine Probe ab (Produktionscharge "CPP-87-D-876").
Werk "Allgäu" gibt am 06.10. eine Probe ab (Produktionscharge "RCC-76-4e45").
Werk "Breisgau" gibt am 07.10. eine Probe ab (Produktionscharge "XP-10-334").
Probe_eins vom 05.10. (Hohenlohe) enthält das Erzeugnis "Butter" der Marke "Weideglück".
Probe_zwei vom 05.10. (Hohenlohe) enthält das Erzeugnis "H-Milch" "1,5 % Fett".
Probe_drei vom 06.10. (Allgäu) enthält das Erzeugnis "Joghurt natur" "1,5 % Fett".
Probe_vier vom 06.10. (Allgäu) enthält das Erzeugnis "Käse" "Allgäuer Emmentaler".
Probe_fünf vom 07.10. (Breisgau) enthält das Erzeugnis "H-Milch" "3,5 % Fett".
Erster Standardtest bezieht sich auf Parameter "Salmonellen".
Zweiter Standardtest bezieht sich auf Parameter "Salmonellen ".
Dritter Standardtest bezieht sich auf Parameter "Escherichia coli ".
Vierter Standardtest bezieht sich auf Parameter " Fettgehalt".
Fünfter Standardtest bezieht sich auf Parameter "Fettgehalt".
Sechster Standardtest bezieht sich auf Parameter "Schimmelpilz".
Siebter Standardtest bezieht sich auf Parameter "Hefe".
Erster Standardtest wird getestet mit der Methode "BVL L 02.00-11".
Zweiter Standardtest wird getestet mit der Methode "BVL L 00.00-52".
Dritter Standardtest wird getestet mit der Methode "BVL L 04.00-15".
Vierter Standardtest wird getestet mit der Methode "BVL L 03.00-10".
Fünfter Standardtest wird getestet mit der Methode "BVL 02.00-7".
Sechster Standardtest wird getestet mit der Methode "BVL L 02.00-10".
Siebter Standardtest wird getestet mit der Methode "BVL L 02.00-10".
"Probe_eins" (Hohenlohe) wird mit der "ersten Analyse" analysiert.
"Probe_eins" (Hohenlohe) wird mit der "zweiten Analyse" analysiert.
"Probe_zwei " (Hohenlohe) wird mit der "dritten Analyse" analysiert.
"Probe_zwei" (Hohenlohe) wird mit der "vierten Analyse" analysiert.
"Probe_zwei" (Hohenlohe) wird mit der "fünften Analyse" analysiert.
"Probe_drei " (Breisgau) wird mit der "sechsten Analyse" analysiert.
"Probe_drei " (Breisgau) wird mit der "siebten Analyse" analysiert.
.......
"Erste Analyse" erfolgt durch "ersten Standardtest".
"Zweite Analyse" erfolgt durch "dritten Standardtest".
"Dritte Analyse" erfolgt durch "zweiten Standardtest".
"Vierte Analyse" erfolgt durch "dritten Standardtest".
"Fünfte Analyse" erfolgt durch "fünften Standardtest".
"Sechste Analyse" erfolgt durch "fünften Standardtest".
"Siebte Untersuchung" erfolgt durch "sechsten Standardtest".
123
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
b)
Identitätsschlüssel für Entitäten bestimmen
Jede Entität muss durch ein Merkmal (Attribut) oder durch eine Kombination von Merkmalen
(Attributkombination) eindeutig identifizierbar sein.
Für die identifizierten Entitäten des Projektes "chemisches Labor" können folgenden Identitätsschlüssel bestimmt werden:
Entität:
Werk "Hohenlohe" geleitet von "Herr Huber"…
Werk "Breisgau" geleitet von "Frau Maier" …
Werk "Allgäu" geleitet von "Herr Schulze" …
Identitätsschlüssel:
Æ Kombination aus allen Attributen
Æ Kombination aus allen Attributen
Æ Kombination aus allen Attributen
Erzeugnis "Butter" der Marke "Weideglück"
Erzeugnis "H-Milch" mit "1,5 %" Fett
Erzeugnis "H-Milch" mit "3,5 %" Fett
………
Æ Kombination aus allen Attributen
Æ Kombination aus allen Attributen
Æ Kombination aus allen Attributen
Probe vom 05.10. aus dem Werk Hohenlohe
Probe vom 06.10. aus dem Werk Allgäu
Probe vom 07.10. aus dem Werk Breisgau
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
Untersuchungsmethode "BVL L 00.00-52" …
Untersuchungsmethode "BVL L 02.00-11" …
Untersuchungsmethode "BVL L 02.00-15" …
………
Æ Kurzbezeichnung der Methode
Æ Kurzbezeichnung der Methode
Æ Kurzbezeichnung der Methode
Parameter "Salmonellen".
Parameter "Escherichia coli".
Parameter "Fett".
Parameter "Hefe".
Parameter "Schimmelpilze".
Æ
Æ
Æ
Æ
Æ
"Erster Standardtest"
"Zweiter Standardtest"
"Dritter Standardtest"
………
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
"Erste Analyse"
"Zweite Analyse"
"Dritte Analyse"
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
Æ künstliches Schlüsselattribut
(wegen fehlender Eindeutigkeit)
Name des Parameters
Name des Parameters
Name des Parameters
Name des Parameters
Name des Parameters
Aufgrund mangelnder Eindeutigkeit ist bei allen Entitäten die Wahl eines künstlichen Schlüsselattributs vorzuziehen.
124
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
c)
Festlegen der Entitäts- und Beziehungstypen
In einer weiteren Phase der Datenmodellierung werden alle Objekte, die eine gleiche Struktur aufweisen und gleich beschrieben werden können, zu Gruppen (Entitätstypen) zusammengefasst. Im relationalen Datenbanksystem wird jeder Entitätstyp durch eine Datenbanktabelle abgebildet.
Aus der Identifizierung der Entitäten lassen sich folgende Entitätstypen ableiten:
Werk "Hohenlohe" geleitet von "Herr Huber"
Werk "Breisgau" geleitet von "Frau Maier"
Werk "Allgäu" geleitet von "Herr Schulze"
Æ Entitätstyp Werk
Erzeugnis "H-Milch" mit "3,5 %" Fett
Erzeugnis "H-Milch" mit "1,5 %" Fett
Erzeugnis "Butter" der Marke "Weideglück"
………
Æ Entitätstyp Erzeugnis
Probe vom 05.10. aus dem Werk Hohenlohe
Probe vom 06.10. aus dem Werk Allgäu
Probe vom 05.10. aus dem Werk Breisgau
Æ Entitätstyp Probe
Untersuchungsmethode "BVL L 00.00-52"
Untersuchungsmethode "BVL L 02.00-11"
Untersuchungsmethode "BVL L 02.00-15"
………
Æ Entitätstyp Methode
Parameter "Salmonellen".
Parameter "Escherichia coli".
Parameter "Fett".
………
Æ Entitätstyp Parameter
"Erster Standardtest"
"Zweiter Standardtest"
"Dritter Standardtest"
………
Æ Entitätstyp Standardtest
"Erste Analyse"
"Zweite Analyse"
"Dritte Analyse "
...........
Æ Entitätstyp Analyse
Ebenso wie die einzelnen Objekte zu Gruppen zusammengefasst werden, sind die ermittelten
Beziehungen, die zwischen je zwei Objekten bestehen, gemäß der gebildeten Entitätstypen zu
Beziehungstypen zusammenzufassen.
Aus den aufgeführten Beziehungen zwischen den Objekten lassen sich folgende Beziehungstypen ableiten:
"Werk liefert Probe"
"Probe enthält Erzeugnis"
"Standardtest bezieht sich auf Parameter"
"Standardtest wird durchgeführt mit Methode"
"Probe wird überprüft mit Analyse"
"Analyse erfolgt durch Standardtest"
125
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
d)
Festlegen der Beziehungskardinalitäten
In der nächsten Phase des Modellierungsprozesses muss für jeden Beziehungstyp die mögliche Anzahl der beteiligten Objekte (Kardinalität) festgestellt werden. Die Kardinalität eines
Beziehungstyps gibt dabei an, mit wie viel anderen Entitäten eine Entität eines bestimmten
Entitätstyps in einer konkreten Beziehung stehen muss bzw. kann
Für den Beziehungstyp " Werk gibt ab Probe " gilt:
Ein Werk liefert keine, eine oder mehrere Probe/n
eine Probe wird von genau einem Werk geliefert.
In diesem Fall spricht man von einer 1:N–Beziehung.
Für den Beziehungstyp "Erzeugnis ist enthalten in Probe " gilt:
Ein Erzeugnis ist in keiner, einer oder mehreren Probe/n enthalten
eine Probe enthält genau ein Erzeugnis.
In diesem Fall spricht man ebenfalls von einer 1:N–Beziehung.
und
und
Für den Beziehungstyp "Parameter wird überprüft durch Standardtest" gilt:
Ein Parameter wird durch einen oder mehrere Standardtest/s überprüft
und
ein Standardtest überprüft genau einen Parameter.
In diesem Fall spricht man ebenfalls von einer 1:N–Beziehung.
Für den Beziehungstyp "Methode ist Basis für Standardtest" gilt:
Eine Methode ist Basis für einen oder mehrere Standardtest/s
in einem Standarttest wird genau eine Methode angewendet.
In diesem Fall spricht man ebenfalls von einer 1:N–Beziehung.
Für den Beziehungstyp "Probe wird getestet mit Standardtest" gilt:
Eine Probe wird mit einem oder mehreren Standardtest/s getestet
ein Standardtest testet keine, eine oder mehrere Probe/n.
In diesem Fall spricht man von einer M:N–Beziehung.
und
und
M:N-Beziehungen können in einem relationalen Datenbanksystem nicht abgebildet werden
und müssen in zwei 1 : N - Beziehungen aufgelöst werden. Im vorliegenden Fall geschieht
dies mit dem Entitätstyp Analyse.
Für den Beziehungstyp "Probe erfährt eine Analyse" gilt:
Eine Probe wird in einer oder mehrerer Untersuchungen überprüft
eine Untersuchung bezieht sich auf genau eine Probe.
In diesem Fall spricht man von einer 1:N–Beziehung.
Für den Beziehungstyp "Standardtest erfolgt durch Analyse" gilt:
Ein Standardtest erfolgt durch eine oder mehrere Untersuchungen
eine Untersuchung erfolgt in genau einem Standardtest
In diesem Fall spricht man ebenfalls von einer 1:N-Beziehung.
126
und
und
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
e)
Attribute und ihre Wertebereiche (Domänen) bestimmen
Für die sieben Entitätstypen sind folgende Attribute mit den entsprechenden Datentypen
anzulegen:
Werk:
Probe:
Erzeugnis:
Analyse:
Standardtest:
Parameter:
Methode:
f)
Leitung CHAR(30), Email CHAR(50)
Bezeichnung_1 CHAR(50), Bezeichnung_2 CHAR(50)
Charge CHAR(30), Datum DATE
Messwert DOUBLE, Datum DATE
(besteht nur aus Schlüsselattributen; dient ausschließlich der Auflösung einer M:NBeziehung)
Name CHAR (50)
Kurzbez CHAR(15), Bezeichnung CHAR(50), Verrechnungssatz DOUBLE
Entity-Relationship-Diagramm (ERD) für Entitäts- und Beziehungsmengen zeichnen
1
Werk
N
gibt ab
1
N
Probe
Erzeugnis
enthält
1
erfährt
eine
N
N
Analyse
1
erfolgt
durch
Standardtest
N
überprüft
1
Parameter
N
wird getestet
mit
1
Methode
127
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
g) Definieren von Primär- und Fremdschlüsseln.
Für die Entitätstypen des Projekts "chemisches Labor" ergeben sich folgende Festlegungen:
Attribut
EntitätstypWerk:
WerkNr
Leitung
Email
Datentyp
Länge/Format
Character
Character
Character
5
30
50
Primärschlüssel: WerkNr
Entitätstyp Erzeugnis:
ErzeugnisNr
Bezeichnung_1
Bezeichnung_2
Character
Character
Character
5
50
50
Primärschlüssel: ErzeugnisNr
Entitätstyp Probe:
ProbenNr
Charge
Datum
WerkNr
ErzeugnisNr
Character
Character
Date
Character
Character
5
30
Entitätstyp Analyse:
AnalyseNr
Messwert
Datum
ProbenNr
TestNr
Character
Double
Date
Character
Character
5
5
Primärschlüssel: ProbenNr
Fremdschlüssel: WerkNr
Fremdschlüssel: ErzeugnisNr
5
5
5
Primärschlüssel: AnalyseNr
Fremdschlüssel: ProbenNr
Fremdschlüssel: TestNr
Da zwischen den Entitätstypen Analyse und Parameter sowie Methode M:N-Beziehungen
vorliegen, muss für das relationale Datenbanksystem ein weiterer, verbindender Entitätstyp
(Standardtest) eingefügt werden:
Entitätstyp Standardtest:
TestNr
Character
ErzeugnisNr
Character
ParaNr
Character
MethodenNr
Character
5
5
5
5
Entitätstyp Parameter:
ParaNr
Character
Name
Character
5
50
Entitätstyp Methoden:
MethodenNr
Kurzbez
Bezeichnung
Verrechnungssatz
5
15
50
128
Character
Character
Character
Double
Primärschlüssel: TestNr
Fremdschlüssel: ErzeugnisNr
Fremdschlüssel: ParaNr
Fremdschlüssel: MethodenNr
Primärschlüssel: ParaNr
Primärschlüssel: MethodenNr
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Relationenmodell zum Projekt "chemisches Labor"
WERKE (WerkNr, Leitung, Email)
ERZEUGNISSE (ErzeugnisNr, Bezeichnung_1, Bezeichnung_2)
PROBEN (ProbenNr, Charge, Datum, ÇErzeugnisNr, ÇWerkNr)
STANDARDTESTS (TestNr, ÇErzeugnisNr, ÇParaNr, ÇMethodenNr)
PARAMETER (ParaNr, Name)
METHODEN (MethodenNr, Kurzbez, Bezeichnung, Verrechnungssatz)
ANALYSEN (AnalyseNr, Messwert, Datum, ÇProbenNr, ÇTestNr)
Übungsaufgabe:
Um bei den Analysen der Erzeugnisse kritische Messwerte sofort zu erkennen, sollen zusätzlich auch Grenzwerte für die verschiedenen Parameter erfasst werden. Für jedes Erzeugnis sind dabei je Parameter eine Obergrenze und eine Untergrenze festzuhalten.
Es ist davon auszugehen, dass für jedes Erzeugnis die zu testenden Parameter mit verschiedenen Methoden getestet werden können.
So liegen beispielsweise für den Parameter "Fettgehalt" bei dem Erzeugnis "H-Milch - 1,5 %
Fett" die Grenzwerte "GrenzMax" bei 1,5 und "GrenzMin" bei 1,3, unabhängig von der Methode, mit der dieser Parameter gestestet wird.
Ergänzen Sie das vorliegende Datenmodell. (Labor-erweitert)
Entity-Relationship-Diagramm zum Projekt "chemisches Labor - erweitert"
1
Werk
N
gibt ab
1
N
Probe
Erzeugnis
enthält
1
1
erfährt
eine
enthält
N
N
N
Analyse
1
erfolgt
durch
Standardtest
N
wird getestet
mit
Grenzwert
N
N
überprüft
bezieht
sich auf
1
1
1
Methode
Parameter
129
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Relationenmodell zum Projekt "chemisches Labor - erweitert"
WERKE (WerkNr, Leitung, Email)
ERZEUGNISSE (ErzeugnisNr, Bezeichnung_1, Bezeichnung_2)
PROBEN (ProbenNr, Charge, Datum, ÇErzeugnisNr, ÇWerkNr)
STANDARDTESTS (TestNr, ÇErzeugnisNr, ÇParaNr, ÇMethodenNr)
PARAMETER (ParaNr, Name)
METHODEN (MethodenNr, Kurzbez, Bezeichnung, Verrechnungssatz)
ANALYSEN (AnalyseNr, Messwert, Datum, ÇProbenNr, ÇTestNr)
GRENZWERTE (GrenzNr, GrenzMin, GrenzMax, ÇErzeugnisNr, ÇParaNr)
5.6.3
Projekt "Auftragserfassung - Mücke"
Die MÜCKE & PARTNER OHG, Hohe Straße 1, 73720 Esslingen, ist ein mittelständisches
Unternehmen der Möbelindustrie. Das Unternehmen wurde 1958 von dem gelernten Schreinermeister Fritz Mücke gegründet und spezialisierte sich sehr schnell auf die Herstellung
von qualitativ hochwertigen Wohnmöbeln, die bis heute vor allem an Möbelhäuser im Süddeutschen Raum vertrieben werden.
Sie sind Mitarbeiter/-in der Mücke & Partner OHG und dort für die informationstechnische
Unterstützung der betrieblichen Abläufe verantwortlich.
Ihnen liegen die in der Anlage abgebildeten Informationen zur Verfügung, um nachfolgende
Arbeitsaufträge zu bearbeiten:
Arbeitsaufträge:
1
Der Geschäftsprozess "Auftragserfassung" soll mit Hilfe einer relationalen Datenbank abgebildet werden. Analysieren Sie die beigefügten Belege hinsichtlich der Informationen,
die in der Datenbank erfasst werden müssen. Erstellen Sie eine Liste der Informationen,
die gespeichert werden sollen.
2
Entwickeln Sie auf Grundlage Ihrer Analyseergebnisse ein Datenmodell.
Wandregal INTENDO
Anlage 1
Auszug aus dem Verkaufskatalog
Sideboard NOBILE
130
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anlage 2
HENNING GmbH, Am Kamerunkai. 55, 20457 Hamburg
HENNING – Haus der Möbel
Gesellschaft mit beschränkter Haftung
Firma
Mücke & Partner OHG
Hohe Str. 1
73720 Esslingen
Am Kamerunkai 55
20457 Hamburg
Tel.: 040 4545450
Fax: 040 45454598
E-Mail: [email protected]
Bankverbindung:
Commerzbank Hamburg
(20040099) Konto: 558751771
Steuer-Nr. 52587/25475
USt-IDNr: DE 557896705
Hamburg, den 11.09.xx
Sehr geehrte Damen und Herren,
auf der letztjährigen Kölner Möbelmesse wurden wir auf Ihr Haus und Ihre Produkte aufmerksam.
Wir sind seit Jahrzehnten eines der führenden Möbelhäuser unserer Stadt und würden uns
freuen auch Erzeugnisse Ihrer Produktion anbieten zu dürfen.
Auf der Grundlage des uns vorliegenden Katalogs bestellen wir zur bald möglichen Lieferung:
5 Stück Wandregal UNO – Listenpreis 462,00 €
3 Stück Esstisch NOIR – Listenpreis 1.297,73 €
1 Stück Sideboard MENOS – Listenpreis 1.935,05 €.
Bitte teilen Sie uns einen möglichst genauen Liefertermin mit. Daneben bitten wir um Mitteilung Ihrer Zahlungs- und Lieferungsbedingungen.
Außerdem bitten wir Sie zu prüfen, ob angesichts der von uns in Aussicht zu stellenden hohen Abnahmezahlen ein Rabatt gewährt werden kann.
Wir bitten Sie unseren Auftrag zu bestätigen und verbleiben
mit freundlichen Grüßen
Susi Henning
131
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anlage 3:
FIRENCE Möbel & Leuchten GmbH
Handelsregister: Stuttgart HRB 12345254
Steuernummer: 52787-21547
Deutsche Bank
Königstraße 12
70173 Stuttgart
Tel: 0711- 23321
Fax: 0711 123322
Mail: [email protected]
Konto: 6874356 . BLZ: 600700700
FIRENCE Möbel & Leuchten GmbH - Königsstraße 12 - 70173 Stuttgart
Firma
Mücke & Partner OHG
Hohe Straße 1
73720 Esslingen
Stuttgart, 12.09.xx
Sehr geehrter Herr Mainzer,
hiermit bestellen wir
15
8
3
5
Stück 200028 Mitnahmetische ALPHA; Listenpreis 58,50 €
Stück 200015 Sideboard NOBILE; Listenpreis 1.099,15 €
Stück 200008 Schrankwand VETRO; Listenpreis 1.217,70
Stück 200020 Wandreal INTENDO; Listenpreis 774,80€
Wir erwarten die Lieferung bis zum 01.10.xx an unsere Lieferadresse:
Firence-Möbel
Zentrallager
Industriestraße 11
73760 Ostfildern
Bitte bestätigen Sie uns nochmals Ihre Zahlungsbedingung (10 % Rabatt auf den Listenpreis; Zahlungsziel 30 Tage; 3 % Skonto bei Zahlung innerhalb 14 Tagen) sowie den gewünschten Liefertermin.
Mit freundlichen Grüßen
i.A. F. Glück
Franz Glück
132
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anlage 4
Mücke & Partner OHG
Das Haus der guten Form
MÜCKE & PARTNER OHG, HOHE STR. 1, 73720 ESSLINGEN
Fritz Mücke & Partner OHG
Hohe Straße 1
73720 Esslingen
Tel.: 0711 45665-0
Henning GmbH
Am Kamerunkai 55
20457 Hamburg
Fax: 0711 45665-20
URL: http://www.muecke.de
Email: [email protected]
Bank: Landesbank Baden-Württemberg
(BLZ 600 501 01) 111 222 33
Deutsche Bank
(BLZ 600 700 70) 123 456 78
USt.-IdNr.: DE 146127688
Steuer-Nr.: 25755-44556
Registergericht: Esslingen HRA 4788/776
Kundennummer:
270056
Auftragsdatum:
16.09.xx
Auftragsnummer:
040382
Ansprechpartner: Fr. Toppmöller
Durchwahl:
-43
Auftragsbestätigung
Sehr geehrte Damen und Herren,
wir freuen uns, Sie als neuen Kunden begrüßen zu dürfen. Als Ihre persönliche Kundenbetreuerin werde ich mich stets bemühen, Ihren Wünschen gerecht zu werden.
Folgende Auftragspositionen habe ich für Sie vorgemerkt. Die Lieferung wird am 02.10.xx erfolgen.
Artikelnr.
200021
200022
200014
Artikelbezeichnung
Menge
Einzelpreis in €
Wandregal UNO
Esstisch NOIR
Sideboard MENOS
5
3
1
462,00
1.297,73
1.935,05
Als Zahlungsbedingung biete ich Ihnen ein Zahlungsziel von 30 Tagen oder 2 % Skonto bei
Zahlung innerhalb von 14 Tagen
Lieferungen innerhalb der Bundesrepublik erfolgen grundsätzlich frei Haus.
Leider muss ich Ihnen mitteilen, dass wir mit unseren Kunden erst nach einschlägigen Vertragsabschlüssen über zusätzliche Preisnachlässe verhandeln.
Ich hoffe unsere Lieferungs- und Zahlungskonditionen finden Ihre Zustimmung.
Mit freundlichen Grüßen
Vanessa Toppmöller
133
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anlage 5
Mücke & Partner OHG
Das Haus der guten Form
MÜCKE & PARTNER OHG, HOHE STR. 1, 73720 ESSLINGEN
Fritz Mücke & Partner OHG
Hohe Straße 1
73720 Esslingen
Tel.: 0711 45665-0
FIRENCE Möbel & Leuchten GmbH
Königstraße 12
70173 Stuttgart
Fax: 0711 45665-20
URL: http://www.muecke.de
Email: [email protected]
Bank: Landesbank Baden-Württemberg
(BLZ 600 501 01) 111 222 33
Deutsche Bank
(BLZ 600 700 70) 123 456 78
USt.-IdNr.: DE 146127688
Steuer-Nr.: 25755-44556
Registergericht: Esslingen HRA 4788/776
Kundennummer:
Auftragsdatum:
Auftragsnummer:
Ansprechpartner:
Durchwahl:
270002
16.09.xx
040381
Hr. Mainzer
-51
Auftragsbestätigung
Sehr geehrte Damen und Herren,
vielen Dank für Ihre Bestellung vom 10.09.xx. Wir werden nachfolgenden Auftrag für Sie ausführen:
Artikelnr. Artikelbezeichnung
200028
200015
200008
200020
Mitnahmetische ALPHA
Sideboard NOBILE
Schrankwand VETRO
Wandregal INTENDO
Menge
Listenpreis
in €
Rabatt
in €
15
8
3
5
58,50
1.099,15
1.217,70
774,80
5,85
109,92
121,77
77,48
Nettopreis
in €
52,65
989,23
1.095,93
697,32
Gerne bestätigen wir Ihnen nochmals unsere Zahlungsbedingungen von 3 % Skonto bei
Zahlung innerhalb 14 Tagen bzw. 30 Tage Ziel für den Rechnungsbetrag.
Die gewünschte Ware werden wir am 01.10.xx frei Haus an Ihre Lieferadresse:
Industriestraße 11
73760 Ostfildern
senden.
Mit freundlichen Grüßen
Heinz Mainzer
134
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anlage 6
Auszug aus der Bestandsliste Fertigerzeugnislager:
Erzeugnisnummer
200008
200009
200011
200014
200015
200016
200019
200020
200021
200022
200023
200028
200029
200031
200032
200033
200034
200035
200036
Produktgruppe
Schrankwand VETRO II
Schrank GAMMA
III
Sideboard GEMINI
II
Sideboard MENOS
II
Sideboard NOBILE
II
Sideboard ULTIMO
II
Wandregal DUO
II
Wandregal INTENTO
II
Wandregal UNO
II
Esstisch NOIR
II
Wandregal BETA
III
Tisch ALPHA
III
Stuhl COMBRA
II
Stuhl LEGGERA
II
Stuhl TAUNUS
I
Stuhl TIMBA
II
Rollcontainer UNIT
II
Hochcontainer WENDY II
Schrank GAMMA
III
Erzeugnisbezeichnung
Lagerbestand
19 Stück
0 Stück
15 Stück
19 Stück
18 Stück
13 Stück
25 Stück
14 Stück
23 Stück
27 Stück
0 Stück
35 Stück
16 Stück
22 Stück
183 Stück
20 Stück
28 Stück
18 Stück
0 Stück
Herstellkosten
990,00 €
225,50 €
755,00 €
1.488,50 €
845,50 €
1.223,00 €
495,00 €
596,00 €
385,00 €
998,25 €
175,00 €
50,43 €
275,25 €
322,50 €
197,50 €
185,50 €
175,50 €
298,00 €
385,00 €
Ergebnis der Dokumentenanalyse
Kundendaten
Kundenauftrag
Firma
Adresse
(Bankverbindung)
Telefon
Fax
E-Mail
Ansprechpartner
(USt-IDNr.)
Lieferanschrift
Konditionen
Bestellmenge
Artikel
Einzelpreis
Auftragsdatum
gewünschter Liefertermin
Sachbearbeiter
Artikeldaten
Auftragsbestätigung
Lagerbestand
Herstellkosten
Artikelnummer
Artikelname
Produktgruppe
Liefertermin
Nachlässe
(Gesamtpreis)
Liefermenge
135
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
ER-Diagramm zum Prozess "Auftragserfassung"
hat
Sitz in
1
Personal
N
betreut
1
Ort
N
Kunde
N
1
1
Kondition
erhält
erteilt
N
N
1
Auftrag
enthält
Auftragsposition
N
beinhaltet
1
Artikel
N
erhält
Relationenmodell zum Prozess
"Auftragserfassung"
Personal (PNr, Name, Vorname, Telefon)
Kunden (KdNr, Firma, Strasse, OrtNr, Telefon,
Fax, Email, ÇPNr, ÇKondNr)
Auftraege (AufNr, ÇKdNr, AufDat)
AufPos (AufPosNr, ÇAufNr, Posnr, ÇFENr, Menge, Status)
FE (FENr, FEBez, PGruppe, LBest, Einh, HK, ÇZNr)
Konditionen (KondNr, Skonto, Tage, Rabatt)
Zuschlaege (ZNr, Z-Satz)
Orte (OrtNr, PLZ, OrtName)
(Datenbankname: muecke)
136
1
Kalkulationszuschlag
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.6.4
Zusammenfassende Übungsaufgaben
5.6.4.1 Übungsaufgabe: Projekt "Kinocenter"
Das neu eröffnete Kinocenter "MoritzZ" in Esslingen zeigt Filme in sechs verschiedenen Sälen, die jeweils unterschiedlich viele Sitzplätze haben. Die Filme werden in drei Vorstellungen
(mittags, abends, nachts) vorgeführt. Für die Kontrolle der Eintrittskarten werden Schülerinnen
und Schüler als Aushilfskräfte beschäftigt. Für ihre Tätigkeit erhalten sie 5,00 € bei Nachmittagsvorführung, 5,50 € bei der Abendvorführung und 7,00 € bei der Nachtvorführung.
Das Arbeitsentgeld wird den Schülerinnen/Schülern monatlich auf ihr Girokonto überwiesen.
Die Verwaltung des Aushilfskräfteeinsatzes soll mit Hilfe einer relationalen Datenbank erfolgen. Dabei soll auch festgehalten werden, welche Filme von welchem Regisseur jeweils gezeigt werden.
Entwickeln Sie ein Datenmodell nach den Regeln für die Entity-Relationship-Modellierung
(siehe oben, Seite 5 ff.).
5.6.4.2
1
Übungsaufgabe: Projekt "Sportverein"
Der Spiel- und Sportverein Splieningen e.V. (SSV) ist ein von jungen Freizeitsportlern
aus Stuttgart und Umgebung vor sechs Jahren gegründeter Sportverein. Zur Zeit bietet
er folgende Sportarten an:
Fußball
Handball
Leichtathletik
Volleyball
Basketball
Badminton
Tennis
Fechten
Ski-Alpin
Judo
Karate
Tischtennis
Turnen
Tanzen
Gymnastik
Der Vereinsvorstand des SSV hat damit begonnen, die Mitgliederdaten mit Hilfe einer
relationalen Datenbank zu verwalten. Den Entwicklern dieser Datenbank lag das in der
Anlage abgebildete Entity-Relationship-Modell vor. Zu beachten ist hierbei, dass sich
der Mitgliedsbeitrag nach Familienstand und Alter ergibt, nicht aber aus der ausgeübten Sportart oder der Anzahl der ausgeübten Sportarten.
Der Vereinsvorstand wünscht für die Organisation von Wettkämpfen und Turnieren die
Realisierung weiterer Funktionen unter Beachtung der folgenden Bedingungen:
- Die verschiedenen Abteilungen veranstalten eigenverantwortlich Wettkämpfe bzw.
Turniere, zu denen befreundete Vereine eingeladen werden.
Die Daten dieser Vereine wurden bereits in der Tabelle FREMDVEREIN erfasst
(siehe Anlage 1). Diese Tabelle ist in das Gesamt-ERM zu integrieren.
- Es kommt häufig vor, dass befreundete Vereine zu verschiedenen Veranstaltungen
eingeladen werden.
- Der Vorstand des SSV möchte diese Veranstaltungen mit jeweiligem Titel (z.B. Ottenbruch-Cup), betreffender Sportart (z.B. Fußball), Veranstaltungsdatum, den teilnehmenden Vereinen sowie dem jeweils verantwortlichen Leiter erfassen können.
- Der verantwortliche Leiter einer Veranstaltung kann immer nur ein Mitglied des SSV
Splieningen sein.
Ergänzen Sie das Entity-Relationship-Modell unter Berücksichtigung der angeführten
Bedingungen.
137
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
2
Der SSV Splieningen betreibt in den Vereinsräumen ein Cafe im Rahmen eines Gewerbebetriebes. In diesem Zusammenhang konnten folgende Sachverhalte beobachtet
werden:
Vorgang 1:
Die Firma Getränkemarkt Altkauf GmbH, Grüner Hof 5, 70360 Stuttgart lieferte am
10.05.d.J. 10 Kisten Mineralwasser der Marke Naturquell zum Preis von je 3,99 € netto
und 5 Kisten Apfelsaft der Marke Filderglück natur zum Preis von je 6,95 € netto.
Vorgang 2:
Die Bestandsaufnahme der Getränke ergab einen Bestand an Apfelsaft der Marke Filderglück natur von 2 Kisten und einen Bestand an Mineralwasser der Marke Prickel von 4
Kisten.
Vorgang 3:
Bestellung am 28.05.d.J. bei der Firma Getränkemarkt GmbH, Hofweg 4,
73720 Esslingen:
12 Kisten Apfelsaft der Marke Filderglück natur zum Preis von je 6,45 € netto.
18 Kisten Mineralwasser der Marke Prickel zum Preis von je 3,19 € netto
Es soll möglich sein, die in den beschriebenen Vorgängen anfallenden Daten ebenfalls
mit Hilfe einer relationalen Datenbank zu verwalten.
Entwickeln Sie hierzu ein Relationenmodell.
Anlage 1
ER-Modell SSV Splieningen
n
n
Mitglied
1
n
wohnt in
1
Ort
übt aus
bezahlt
hat Konto bei
n
1
1
Sportaktivität
Beitrag
Bank
n
ist organisiert in
1
Sportabteilung
Fremdverein
138
(Datenbankname: verein)
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.6.4.3
Übungsaufgabe: Projekt "Schulbibliothek"
Problemstellung
Die Schulbibliothek der Louis-Leitz-Schule Stuttgart verleiht aus dem umfangreichen Bestand an Fachliteratur und Belletristik Bücher an ihre Schülerinnen und Schüler.
Die betreuenden Lehrer beschließen, die Bibliotheksverwaltung in Zukunft Computer unterstützt zu organisieren. Vorgesehen ist eine relationale Datenbank, mit der zunächst die
Buchausleihe abgewickelt werden kann. Bei der Abwicklung der Ausleihe sind zwei Arbeitsbereiche zu unterscheiden:
Die Ausleihe:
Hier werden die Personalien der Schülerinnen und Schüler, die ausgegebenen Bücher und das Ausleihdatum erfasst.
Die Rückgabe: Hierbei wird das Rückgabedatum erfasst.
Vereinfachend ist davon auszugehen, dass von jedem Buch nur ein Exemplar für die Ausleihe zur Verfügung steht.
Als Daten der Ausleiher werden verpflichtend Vorname, Name und Anschrift gespeichert. Die
Bücher sind mit Autor, Titel, Erscheinungsort, Erscheinungsjahr und Verlag zu speichern.
In einer ersten Analysephase wurden in der Schulbibliothek folgende Beobachtungen gemacht:
20. Mai:
Hans Dampf, Rosenweg 44, 70599 Stuttgart leiht die Bücher
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag)
- "Die Räuber" von F.v. Schiller (Reclam-Verlag)
- "Die Tore der Welt" von Ken Follett (Lübbe)
10. Juni
Hans Dampf gibt Bücher zurück
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag )
- "Die Räuber" von F.v. Schiller (Reclam-Verlag)
15 Juni:
Heidi Husch, Hauptstraße 11, 73740 Ostfildern leiht ein Buch
- "Der Chinese" von Henning Mankell (Zsolnay-Verlag)
Aufgabe
Entwickeln Sie für die Schulbibliothek unter Berücksichtigung der Regeln für die EntityRelationship-Modellierung nach Peter Chen (siehe oben, Seite 5 ff.) ein Datenmodell.
139
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungsvorschlag zum Projekt "Sportverein"
Aufgabe 1 - ER-Diagramm
1
n
n
Mitglied
1
n
wohnt in
übt aus
bezahlt
hat Konto bei
n
1
1
Ort
Sportaktivität
Beitrag
Bank
1
n
ist Heimat von
ist organisiert in
1
1
n
Sportabteilung
1
organisiert
eine
Fremdverein
n
Veranstaltung
1
1
gehört zu
n
teilnehmende
Verenie
n
hat
Aufgabe 2 - Relationenmodell
Lieferer (Liefnr, Liefbez, Liefstrasse, ÇOrtnr)
Angebote (Angebotsnr, Preis, ÇLiefnr, ÇArtikelnr)
Artikel (Artikelnr, Artikelbez, Lagerbestand)
Bestellungen (Bestnr, ÇLiefnr, Bestdatum)
Bestell_Pos (Best_ID, Bestmenge, Bestpreis, ÇBestnr, ÇArtikelnr)
Orte (Ortnr, …) existiert bereits
140
n
leitet
eine
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungsvorschlag zum Projekt "Kinocenter"
ER-Diagramm
1
1
läuft zur
dient
Saal
N
Vorfuehrzeit
N
Vorfuehrung
N
1
Person
kontrolliert
N
1
zeigt
Film
N
hat
Konto
bei
1
Bank
Relationenmodell
Personen (Pnr, Vorname, Name, Ktonr, ÇBanknr)
Saele (Saalnr, Saalbezeichnung, Sitzplaetze)
Banken (Banknr, BLZ, Bankname)
Filme (Filmnr, Filmtitel, Regisseur)
Vorfuehrzeiten (Vznr, Bezeichnung, Entgelt)
Vorfuehrungen (Vorfuehrnr, Datum, ÇPnr, ÇSaalnr, ÇFilmnr, ÇVznr)
141
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungsvorschlag zum Projekt "Schulbibliothek"
ER-Diagramm
1
Schueler
nimmt
vor
N
N
Ausleihe
besteht
aus
N
wohnt
in
1
Ort
Relationenmodell
Schueler (Schuelernr, Vorname, Name, Strasse, ÇOrtnr)
Ausleihen (Ausleihnr, A_datum, R_datum, ÇSchuelernr, ÇBuchnr)
Buecher (Buchnr, Autor, Titel, E_Jahr, ÇVerlagnr)
Verlage (Verlagnr, Verlagname)
Orte (Ortnr, PLZ, Ortname)
(Datenbankname: Schulbibliothek)
142
1
Buch
N
herausgegeben
von
1
Verlag
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.7
Übungsaufgaben zu SQL
5.7.1
Auswahlabfragen am Beispiel der Tabelle Personal
(Datenbank muecke_1)
Ausgabe einer ausgewählten Anzahl von Attributen
1)
Von allen Mitarbeitern sollen Vor- und Nachname, Geburtstag und das Gehalt angezeigt
werden. Als erstes sollen die Mitarbeiter mit dem höchsten Gehalt aufgelistet werden.
Selektion mit einer Bedingung (einfacher Textvergleich)
2)
Die Attribute Personalnummer, Name, Vorname aller Mitarbeiterinnen sollen aufgelistet
werden.
3)
Es sollen alle Beschäftigten der Kostenstelle 02 mit Name und Vorname alphabetisch aufgelistet werden. (Bei gleichen Nachnamen soll nach dem Vornamen geordnet werden.)
Selektion mit einer Bedingung (numerischer Vergleich)
4)
Gewünscht wird eine Auflistung aller Beschäftigten (Vorname, Name, Gehalt), deren
Gehalt über 4.000,00 Euro liegt.
Selektion mit einer Bedingung (Vergleich mit Datumswert)
5)
Alle Beschäftigten, die vor dem 1.1.1980 geboren sind, sollen nach ihrem Geburtstag
absteigend sortiert aufgelistet werden (Personalnummer, Name, Geburtstag).
Abfrage mit berechnetem Feld
6)
Es soll eine Liste erstellt werden, in der die Jahresgehälter der Beschäftigten ausgewiesen wird. Jeder Beschäftigte erhält 13 Monatsgehälter. (Name, Vorname, Gehalt, und
Jahresgehalt)
7)
Mit dem Betriebsrat wird über eine Gehaltserhöhung für alle Mitarbeiterinnen (weiblich)
verhandelt. Mit Hilfe einer Abfrage soll aufgelistet werden, wie hoch das jeweilige Gehalt
bei einer 3,5%igen Gehaltserhöhung sein wird. (Name, Vorname, bisheriges Gehalt, erhöhtes Gehalt).
Selektion mit mehreren Bedingungen (UND-Verknüpfung)
8)
Es sollen alle Mitarbeiter (männlich) aufgelistet werden, die der Steuerklasse II zugeordnet sind. (Name, Vorname, Geschlecht, und Steuerklasse)
9)
Von allen Mitarbeitern (männliche) aus Stuttgart-Plieningen (Stuttgart-Plieningen hat die
Ortsnummer 29675), die nach dem 31.12.1969 geboren sind, sollen Vorname, Nachname, Ortsnummer und Geburtstag aufgelistet werden.
Selektion mit mehreren Bedingungen (ODER-Verknüpfung)
10) Von allen Beschäftigten aus Filderstadt (Ortsnummer 29740) und Plochingen (Ortsnummer 29003) sollen Vorname, Nachname und Ortsnummer aufgelistet werden.
11) Alle Beschäftigten der Steuerklasse III und V sollen alphabetisch mit Name, Gehalt und
Steuerklasse angezeigt werden.
143
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Selektion mit der "Nicht"-Bedingung (Verneinung)
12) Von allen Beschäftigten, außer denen, die in der Abteilung mit der Kostenstellennummer 03 eingesetzt sind, sollen Personalnummer, Vorname, Name und Kostenstellennummer aufgelistet werden. Die Liste soll nach den Kostenstellennummern aufsteigend und innerhalb der Kostenstellen alphabetisch geordnet sein.
Selektion mit der "Zwischen"-Bedingung
13) Aufzulisten sind alle Mitarbeiter, deren Gehalt zwischen 2.000,00 und 3.000,00 Euro
liegt. (Attribute: Personalnummer, Nachname, Gehalt)
Selektion mit dem Vergleich "Like"
14) Von allen Mitarbeitern, deren Name mit "Sch" beginnt sollen Personalnummer, Name,
Geburtstag und Eintrittsdatum angezeigt werden. Die Liste ist so zu ordnen, dass die
Mitarbeiter, die am längsten im Unternehmen sind, zuerst angezeigt werden.
Selektion mit der YEAR-Funktion
15) Alle Mitarbeiter, die im Jahr 2005 eingestellt wurden, sollen mit allen Daten aufgelistet
werden.
Selektion mit der MONTH-Funktion
16) Alle Mitarbeiter, die im August Geburtstag haben, sollen mit Name und Geburtstag aufgelistet werden. Die Liste soll aufsteigend nach dem Geburtstag und bei gleichem Geburtstag alphabetische nach dem Namen sortiert sein.
Selektion mit der NOW-Funktion
17) Die Personalabteilung möchte wissen, welche Mitarbeiter im aktuellen Jahr die Volljährigkeit erlangen. (Attribute: Name, Vorname, Geburtstag)
Selektion mit der Aggregatfunktion
18) Zu ermitteln sind die Summe aller Gehälter, das Durchschnittsgehalt aller Mitarbeiter,
das höchste sowie das niedrigste Gehalt.
Selektion mit der Gruppierfunktion
19) Wie viele Mitarbeiterinnen und wie viele Mitarbeiter sind im Unternehmen beschäftigt?
20) Mit Hilfe einer Abfrage soll die Anzahl der Mitarbeiter jeder Kostenstelle ermittelt werden.
21) Für die Kostenstelle 03 soll die monatliche Gehaltssumme berechnet werden.
22) Ermitteln Sie die Mitarbeiter mit gleichem Nachnamen. Angezeigt werden sollen der
jeweilige Name und die Anzahl der Mitarbeiter mit diesem Namen.
144
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungshinweise zu Kapitel 5.7.1
1)
SELECT vorname, name, gebtag, gehalt
FROM personal
ORDER BY gehalt DESC;
2)
SELECT pnr, name, vorname
FROM personal
WHERE geschl = "w";
3)
SELECT name, vorname, kostnr
FROM personal
WHERE kostnr = "02"
ORDER BY name, vorname DESC;
4)
SELECT vorname, name, gehalt
FROM personal
WHERE gehalt > 4000;
5)
SELECT pnr, name, gebtag
FROM personal
WHERE gebtag < "1980-01-01"
ORDER BY gebtag DESC;
6)
SELECT name, vorname, gehalt, gehalt * 13 AS jahresgehalt
FROM personal
7)
SELECT name, vorname, gehalt, gehalt * 1.035 AS erhoetes_Gehalt
FROM personal
WHERE geschl = "w";
8)
SELECT name, vorname, geschl, stkl
FROM personal
WHERE geschl = "m"
AND stkl = "II";
9)
SELECT vorname, name, ortnr, gebtag
FROM personal
WHERE geschl = "m"
AND ortnr = "29675"
AND gebtag > "1969-12-31";
10)
SELECT vorname, name, ortnr
FROM personal
WHERE ortnr = "29740"
OR ortnr = "29003";
11)
SELECT name, gehalt, stkl
FROM personal
WHERE stkl = "III"
OR stkl ="V"
ORDER BY name;
12)
SELECT pnr, vorname, name, kostnr
FROM personal
WHERE NOT kostnr ="03"
ORDER BY kostnr, name;
145
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
13)
SELECT pnr, name, gehalt
FROM personal
WHERE gehalt BETWEEN 2000 AND 3000;
14)
SELECT pnr, name, gebtag, eintritt
FROM personal
WHERE name LIKE "Sch%"
ORDER BY eintritt DESC;
15)
SELECT *
FROM personal
WHERE YEAR(eintritt) = 2005;
16)
SELECT name, gebtag
FROM personal
WHERE MONTH(gebtag) = 8;
17)
SELECT name, vorname, gebtag
FROM personal
WHERE YEAR(gebtag) = YEAR(NOW()) - 18;
18)
SELECT SUM(gehalt) AS Gesamtgehalt,
AVG(gehalt) AS Durchschnittsgehalt,
MAX(gehalt) AS hoechstes_Gehalt,
MIN(gehalt) AS geringstes_Gehalt
FROM personal
19)
SELECT geschl, COUNT(pnr) AS Anzahl
FROM personal
GROUP BY geschl;
20)
SELECT kostnr, COUNT(pnr) AS Anzahl
FROM personal
GROUP BY kostnr;
21)
SELECT kostnr, SUM(gehalt) AS Gehaltssumme
FROM personal
GROUP BY kostnr
HAVING kostnr = "03";
22)
SELECT name, COUNT(pnr) AS Anzahl
FROM personal
GROUP BY name
HAVING COUNT(pnr) > 1;
146
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.7.2
Übungen zu Auswahlabfragen mit einer Tabelle
Formulieren Sie die SQL-Anweisungen zur Lösung der nachfolgenden Aufgabenstellungen.
Basis dieser Aufgaben ist die Datenbank muecke_1.
Übung 1:
Listen Sie die Felder Firma und Ortnummer aller Münchener Kunden (Ortnummer 33019) aufsteigend sortiert nach Firma auf.
Übung 2:
Alle Kunden aus dem Vorwahlbereich 0711 und einem Rabattsatz von 5%
(= KondNr.: N3) sollen mit den Feldern Kundennummer, Firma und Telefon
aufgelistet werden.
Übung 3:
Zeigen Sie die Daten aller Kunden, von denen noch keine E-Mail-Adresse bekannt ist.
Übung 4:
Alle Kunden des Ortsnummernbereichs 3, die einen Umsatz zwischen
100.000 € und 200.000 € haben, sollen mit den Feldern Firma, Ortnr, Telefon
und Umsatz angezeigt werden.
Übung 5:
Ermitteln Sie die Anzahl der Kunden, die jeweils gleiche Rabattbedingungen
erhalten.
Übung 6:
Wie hoch ist der Gesamtumsatz des erfassten Abrechnungszeitraums?
Übung 7:
Benötigt werden die Informationen Kundennummer, Firma und Email-Adresse
der Kunden, von denen die Email-Adresse bekannt und in der Datenbank hinterlegt ist.
Übung 8:
Listen Sie Kundennummer, Firma und Datum der ersten Lieferung für die
Kunden auf, die im Jahr 1988 erstmals einen Auftrag erteilten.
Übung 9:
Aufzulisten sind die Kunden (Kundennummer, Firma, E-Mail und Datum der
ersten Lieferung), die im Jahr 2008 ihr 20jähriges Kundenjubiläum haben. Die
Liste soll nach Monaten geordnet sein.
Übung 10:
Wie viel Euro Rabatt haben die Kunden jeweils erhalten, denen die Kondition
N4 (8 % Rabatt) gewährt wurde?
Übung 11:
Wie hoch waren jeweils die Umsatzsteuerbeträge (USt-Satz: 19%) für die Umsätze, die mit den Kunden getätigt wurden, die erst seit dem 01.01.2000 beliefert wurden?
Übung 12:
Wie viel Euro Rabatt haben die Kunden insgesamt erhalten, denen die Kondition N3 (5% Rabatt) gewährt wurde?
Übung 13:
Wie hoch ist der Umsatzsteuerbetrag, der auf alle bisherigen Umsätze entfiel?
Übung 14:
Wie viele Kunden erhalten die Kondition N1?
Übung 15:
Wie hoch ist der durchschnittliche Umsatz je Konditionsgruppe?
Übung 16:
Wie hoch war der höchste, wie hoch der niedrigste Umsatz?
147
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungen zu Kapitel 5.7.2
Übung 1
SELECT firma, ortnr
FROM kunden
WHERE ortnr = "33019"
ORDER BY firma;
Übung 2
SELECT kdnr, firma, telefon, kondnr
FROM kunden
WHERE telefon LIKE "0711%" AND kondnr = "N3";
Übung 3
SELECT *
FROM kunden
WHERE Email IS NULL;
Übung 4
SELECT firma, ortnr, telefon, umsatz
FROM kunden
WHERE ortnr Like "3%"
AND (umsatz > 100000 AND umsatz < 200000);
oder:
WHERE plz Like "7%" AND umsatz BETWEEN 100000 AND 200000;
Übung 5
SELECT kondnr, COUNT(kondnr) AS Anzahl_Lieferer
FROM kunden
GROUP BY kondNr;
Übung 6
SELECT SUM(umsatz) AS Summe_aller_Umsätze
FROM kunden;
Übung 7
SELECT kdnr, firma, email
FROM kunden
WHERE email Is Not Null;
Übung 8
SELECT kdnr, firma, erstlief
FROM kunden
WHERE YEAR(erstlief) = 1988;
Übung 9
SELECT kdnr, firma, Email, erstlief
FROM kunden
WHERE YEAR(erstlief) = YEAR(NOW()) -20
ORDER BY MONTH (erstlief);
Übung 10
SELECT firma, umsatz * 0.08 AS rabatt
FROM kunden
WHERE kondnr ="N4";
Übung 11
SELECT firma, umsatz * 0.19 AS USt
FROM kunden
WHERE erstlief > "2000-01-01";
Übung 12
SELECT SUM(umsatz) * 0.05 AS Gesamtrabatt
FROM kunden
GROUP BY kondnr
HAVING kondnr = "N3";
Übung 13
SELECT SUM(umsatz) * 0.19 AS Gesamt_USt
FROM kunden;
148
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Übung 14
SELECT kondnr,COUNT(kdnr) AS Anzahl
FROM kunden
GROUP BY kondnr
HAVING kondnr = "N1";
Übung 15
SELECT kondnr, AVG(umsatz) AS durchschnittlicher_Umsatz
FROM kunden
GROUP BY kondnr;
Übung 16
SELECT MIN(umsatz) AS niedrigster_Umsatz,
MAX(umsatz) AS höchster_Umsatz
FROM kunden;
5.7.3
Übungen zu Auswahlabfragen mit mehreren Tabellen
Formulieren Sie die SQL-Anweisungen zur Lösung der nachfolgenden Aufgabenstellungen.
Basis dieser Aufgaben ist die Datenbank muecke_1.
Übung 1: Für eine Verkaufsaktion sollen alle Kunden, die vom Mitarbeiter Toppmöller betreut werden, mit den Attributen Firma, Telefonnummer, Umsatz sowie Kostenstellennummer und Name des betreuenden Mitarbeiters aufgelistet werden. Die
Liste soll alphabetisch nach der Firma geordnet sein.
Übung 2: Alle Mitarbeiter, die in Stuttgart wohnen, sollen mit Vorname, Name, Straße, Postleitzahl und Wohnort in alphabetischer Reihenfolge aufgelistet werden.
Übung 3: Alle Kunden aus München und Esslingen am Neckar sollen mit den Attributen
Kundennummer, Firma, Umsatz, Postleitzahl und Ort der Niederlassung aufgelistet werden. Die Auflistung soll so geordnet sein, dass zuerst die Esslinger und
dann die Münchener Kunden in alphabetischer Reihenfolge angezeigt werden.
Übung 4: Es soll der Gesamtumsatz ermittelt werden, der mit den Kunden getätigt wurde,
die vom Mitarbeiter Harr betreut werden.
Übung 5: Wie viele Kunden werden vom Mitarbeiter Mainzer betreut?
Übung 6: Wie viel Provision (in Euro) haben die Außendienstmitarbeiter erhalten?
(Provision: 5% vom Umsatz)
Übung 7: Wie viele Mitarbeiter aus Esslingen am Neckar arbeiten in der Kostenstelle 04?
149
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungen zu Kapitel 5.7.3
Übung 1
SELECT firma, telefon, umsatz, kostnr, name
FROM kunden, personal
WHERE kunden.pnr = personal.pnr
AND name = "Toppmöller"
ORDER BY firma;
Übung 2
SELECT vorname, name, strasse, plz, ortname
FROM orte, personal
WHERE orte.ortnr=personal.ortnr
AND ortname = "Stuttgart"
ORDER BY name;
Übung 3
SELECT KdNr, Firma, Umsatz, PLZ, OrtName
FROM orte, kunden
WHERE orte.ortnr = kunden.ortnr
AND (ortname LIKE "Esslingen%" OR ortname = "München")
ORDER BY ortname, firma;
Übung 4
SELECT name, SUM(umsatz) AS Gesamtumsatz
FROM kunden, personal
WHERE kunden.pnr = personal.pnr
AND name = "Harr"
GROUP BY name;
Übung 5
SELECT COUNT(kunden.pnr) AS Anzahl_Kunden
FROM kunden, personal
WHERE kunden.pnr = personal.pnr
AND name = "Mainzer";
Übung 6
SELECT name, SUM(umsatz * 0.05) AS provision
FROM kunden, personal
WHERE kunden.pnr = personal.pnr
GROUP BY name;
Übung 7
SELECT COUNT(pnr) AS Anzahl_Mitarbeiter
FROM orte, personal
WHERE orte.ortnr = personal.ortnr
AND kostnr = "04"
AND ortname LIKE "Esslingen%"
ORDER BY ortname;
150
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
5.7.4
Zusammenfassende Übungen zu Auswahlabfragen
(Datenbank muecke_2)
Übung 1
Die Geschäftsleitung der Mücke & Partner OHG wünscht die Auflistung von Name, Vorname (Tabelle personal) und Gehalt (Tabelle gehaelter) der Angestellten.
Formulieren Sie die SQL-Anweisung und testen Sie diese.
Übung 2
Die Vertriebsleiterin Frau Angelika Schlauch wünscht von der Produktgruppe I
eine Auflistung von Erzeugnisnummer, Erzeugnisbezeichnung, Herstellkosten
(Tabelle FE) sowie Zuschlagssatznummer und Kalkulationszuschlagssatz (Tabelle ZUSCHLAEGE)
Formulieren Sie die SELECT-Anweisung.
Übung 3
Die Arbeiterinnen und Arbeiter, die nicht mehr als 15,00 € je Stunde verdienen,
sollen eine Lohnerhöhung von 5% erhalten. Stellen Sie in einer Abfrage fest, wie
sich der Stundenlohn der Begünstigten ändert und wie hoch die monatliche
Lohnerhöhung jeweils sein wird, wenn wir von einer durchschnittlichen Arbeitszeit von 145 Stunden/Monat ausgehen. Die Abfrage ist absteigend nach dem
Stundenlohn zu sortieren.
PNr
400082
400087
400129
400114
400047
Name
Egeler
Erikson
Schettler
Pessoa
König
Stundenlohn erhöhter Stundenlohn Monatl.Lohnerhöhung
15,00 €
15,75 €
108,75 €
15,00 €
15,75 €
108,75 €
15,00 €
15,75 €
108,75 €
12,00 €
12,60 €
87,00 €
12,00 €
12,60 €
87,00 €
Hinweis: Da in Aufgabe 4 auf das Ergebnis dieser Abfrage zurückgegriffen werden soll, ist diese Abfrage unter dem Namen "lohnerhoehung" zu speichern
Syntax: CREATE VIEW <abfragename> AS <selectanweisung>
Übung 4
In einer weiteren Abfrage soll die monatliche Gesamtbelastung für das Unternehmen ermittelt werden.
(Hier dienen keine Tabellen als Datenquellen, sondern die unter 3 erstellte Abfrage "lohnerhoehung".)
Übung 5
Wie hoch ist das Jahresgehalt unserer Angestellten (13 Monatsgehälter)? Entwerfen Sie die Abfrage in SQL, so dass Name, Vorname, Monatsgehalt sowie
Jahresgehalt in absteigender Reihenfolge des Jahresgehalts aufgelistet werden.
Name
Vorname
Gehalt
Jahresgehalt
Branduardi Francesco
Hauffe
Johanna
6.150,00 €
6.100,00 €
79.950,00 €
79.300,00 €
Gössler
Schlauch
5.950,00 €
5.900,00 €
77.350,00 €
76.700,00 €
Rainer
Angelika
Übung 6
Aus der Tabelle Kunden sollen Kundennummer, Kundenname sowie die jeweils
zugehörigen Skonto- und Rabattsätze aus der Tabelle Konditionen aufgelistet
werden, sofern diese größer Null sind.
Übung 7
Die Kunden, die von Herrn Mainzer betreut werden, sollen mit Kundennummer,
Kundenname und Telefonnummer aus der Tabelle Personal aufgelistet werden.
151
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Lösungen zu Kapitel 5.7.4
Übung 1: SELECT name, vorname, gehalt
FROM personal, gehaelter
WHERE personal.pnr = gehaelter.pnr;
Übung 2
SELECT fenr, febez, hk, fe.znr, Z_Satz
FROM fe, zuschlaege
WHERE fe.znr = zuschlaege.znr
AND pgruppe = "I";
Ist ein Datenfeld in verschiedenen Tabellen
erfasst (Primär-/Fremdschlüssel), so muss der
Tabellenname durch einen Punkt getrennt vorangesetzt werden.
Übung 3: Da die Abfrageergebnis später Basis
für Aufgabe 4 sein soll, muss die Abfrage in der Datenbank gespeichert werden:
CREATE VIEW lohnerhoehung AS
SELECT personal.pnr, name, stundenlohn, stundenlohn * 1.05 AS LohnNeu,
((stundenlohn * 1.05) - stundenlohn) * 145 AS Erhoehung
FROM personal, loehne
WHERE personal.pnr = loehne.pnr
AND stundenlohn <= 15
ORDER BY stundenlohn DESC;
Übung 4: SELECT sum(erhoehung ) AS Ergebnis
FROM lohnerhoehung
Übung 5: SELECT name, vorname, gehalt, gehalt*13 AS Jahresgehalt
FROM personal, gehaelter
WHERE personal.pnr = gehaelter.pnr
ORDER BY gehalt * 13 DESC;
Übung 6: SELECT kdnr, firma, skonto, rabatt
FROM konditionen, kunden
WHERE konditionen.kondnr = kunden.kondnr
AND skonto > 0
AND rabatt > 0;
Übung 7: SELECT kdnr, firma, telefon
FROM personal, kunden
WHERE personal.pnr = kunden.pnr
AND Name = "Mainzer";
152
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anhang 1
Anlagen zum SQL-Teil
Die Bestandteile (Aufbau) einer Datenbanktabelle
Die Fahrräder der Rent A Bike GmbH sollen in der Tabelle Fahrraeder_1 in der Datenbank
Fahrrad gespeichert werden. (Siehe oben, Seite 31)
Elemente einer Tabelle
⇒ Eine Tabelle besteht aus Zeilen und Spalten.
⇒ Eine Zeile (= ein Datensatz / Tupel) enthält die Daten eines Kunden. Alle Zeilen sind
gleich aufgebaut.
⇒ Die Identifizierung eines Datensatzes erfolgt über einen eindeutigen Primärschlüssel
(Zeilenname, hier die Fahrradnr)
⇒ Die Identifizierung einer Spalte erfolgt über einen eindeutigen Spaltennamen
(= Attributname). Jede Spalte enthält einen bestimmten Typ von Attributen (z. B. Zahlen,
Text, Datum).
Die Bedeutung des Primärschlüssels
Wird für ein Datenfeld (=Attribut) die Eigenschaft des Primärschlüssels festgelegt, kann
mit Hilfe dieses Datenfeldes der einzelne Datensatz eindeutig identifiziert werden.
Was bedeutet dies für die Attributswerte von Fahrradnr?
•
Jede Fahrradnummer kann nur einmal vorkommen.
Nach welchem Attribut sind die Datensätze sortiert?
•
Die Datensätze sind nach dem Primärschlüsselfeld (Fahrradnr) sortiert.
Anhang 1 - 1
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Beziehungen zwischen den Tabellen der Datenbank Fahrrad
(Siehe oben, Seite 50)
Der abgebildete Bildschirmausschnitt zeigt alle Tabellen
der Datenbank Fahrrad:
Übersicht über die Beziehungen zwischen den Tabellen der Datenbank Fahrrad.
gemeinsames Datenfeld
Parent-Tabelle
(Primärschlüssel)
Child-Tabelle
(Fremdschlüssel)
Beziehung
Erläuterung der Beziehungen zwischen den Tabellen der Datenbank Fahrrad:
Tabelle
KUNDEN
WOHNORTE
VERMIETUNGEN
FAHRRAEDER
HERSTELLER
FAHRRADTYPEN
Anhang 1 - 2
Beschreibung der Beziehung
Auswirkung der referentiellen Integrität
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die Beziehungen zwischen den Tabellen der Datenbank Schulbibliothek
(Siehe oben, Seite 70)
Im nachfolgenden Bildschirmausschnitt sind alle Tabellen der Datenbank Schulbibliothek abgebildet:
Übersicht über die Beziehungen zwischen den Tabellen der Datenbank Schulbibliothek:
gemeinsames Datenfeld
Parent-Tabelle
(Primärschlüssel)
Child-Tabelle
(Fremdschlüssel)
Beziehung
Erläuterung der Beziehungen zwischen den Tabellen der Datenbank Schulbibliothek:
Tabelle
Beschreibung der Beziehung
Auswirkung der referentiellen Integrität
SCHUELER
WOHNORTE
AUSLEIHEN
BUECHER
VERLAGE
Anhang 1 - 3
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Datenbank mit mehreren Tabellen
(Siehe oben, Seite 43)
Problemstellung
Nachdem die Daten der Fahrräder in der Tabelle Fahrraeder erfasst sind, sollen nun auch
die Daten über die Hersteller aufgenommen werden. In der nachfolgenden Aufstellung sind
die Fahrräder mit den Herstellerangaben aufgelistet:
Angenommen, die Tabelle Fahrraeder wird um die Attribute Herstellernr und Herstellername
erweitert und die Herstellerinformationen werden wie in der Abbildung dargestellt erfasst.
Beschreiben Sie, welche Schwierigkeiten auftreten können, wenn
-
ein neues Fahrrad mit der Herstellerangabe Maxcycles US erfasst werden soll.
-
der Herstellername für alle Fahrräder des Herstellers "Scott" in "Scott Ltd." geändert
werden muss.
-
die Fahrräder des Herstellers "Koga-Miyata" aus der Tabelle gelöscht werden sollen.
Anhang 1 - 4
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Die relationale Datenbank am Beispiel zweier Tabellen
(Siehe oben, Seite 44)
In relationalen Datenbanken arbeitet man mit mehreren Datenbanktabellen. Zum Auswerten
und Arbeiten mit mehreren Tabellen der Datenbank können über gemeinsame Schlüsselfelder Verknüpfungen zwischen den Tabellen hergestellt werden.
Gemeinsames Feld:
Gemeinsames Feld:
Gemeinsames Feld:
Gemeinsames Feld:
Begriff
Erklärung
•
Datenbanksystem (DBS)
Setzt sich aus einer konkreten Datenbank und einem DatenbankManagementsystem (DBMS) zusammen.
•
Managementsystem (DBMS)
Ist ein Softwaresystem zur Definition, Administration und Manipulation von Daten.
Es stellt die Schnittstelle zwischen Benutzer und Datenbank dar und dient der effizienten Speicherung und Abfrage der strukturierten Daten.
•
Datenbank
Enthält neben den reinen Nutzdaten auch die zur Verwaltung des gesamten Systems nötigen Metadaten.
•
Parent-Tabelle und
•
Child-Tabelle
Beim Verknüpfen von Tabellen wird/werden jedem Datensatz der Parent-Tabelle
(= Mastertabelle) je nach Beziehungsart ein oder mehrere Datensätze der ChildTabelle (= Detailtabelle) zugeordnet.
Das für die Verknüpfung erforderliche Verbindungsfeld (= Schlüsselfeld) in der Parent-Tabelle muss beim Planen der Tabellenstruktur immer als Primärschlüssel
festgelegt werden.
•
Primärschlüssel
In einer Tabelle muss ein Datenfeld (Attribut) als Primärschlüssel festgelegt werden, wenn eine Beziehung zu anderen Tabellen hergestellt werden soll. Durch die
Festlegung als Primärschlüssel können sich in den Zeilen dieses Feldes Eintragungen nicht wiederholen.
•
Fremdschlüssel
Verbindungsfeld in der Child-Tabelle.
•
referentielle Integrität
•
Beziehungsarten:
1:N-Beziehung
1:1-Beziehung
Feste Verknüpfung zwischen zwei Tabellen, die bewirkt, dass
− ein Datensatz nur dann in die Child-Tabelle aufgenommen werden kann, wenn
der Fremdschlüsselwert auch als Primärschlüsselwert in der Parent-Tabelle vorkommt.
− ein Datensatz aus der Parent-Tabelle, nicht gelöscht werden kann, wenn Datensätze mit demselben Fremdschlüsselwert in der Child-Tabelle enthalten sind.
(Ausnahme: Referentielle Integrität mit Löschweitergabe wurde festgelegt.)
Wenn für jeden Datensatz aus der Mastertabelle mehrere Datensätze in der verknüpften Detailtabelle existieren.
Wenn zu jedem Datensatz aus der Haupttabelle nur ein Datensatz aus der Detailtabelle zugeordnet werden kann.
Anhang 1 - 5
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Das Aktualisieren von Daten in Tabellen – die Aktualisierungsabfrage
(siehe oben, Seite 54)
Situation:
Wegen gestiegener Kosten sollen bei allen Fahrrädern die Tagesmietpreise um
5 % erhöht werden. In der Tabelle FAHRRAEDER sind die Tagesmietpreise
durch die erhöhten Mietpreise zu ersetzen.
In der nachfolgenden Aufstellung sind (auszugsweise) die Tagesmietpreise der Fahrräder
aufgelistet.
1.
Tragen Sie die Tagesmietpreise der Fahrräder nach der Erhöhung in die Tabelle ein.
2.
Tragen Sie den Ausdruck ein, mit dem Sie die erhöhten Mietpreise ermitteln.
3.
Führen Sie die Aktualisierung der Tagesmietpreise für alle Fahrräder durch.
Hinweis:
Damit der Verlauf der Aktualisierung verfolgt werden kann, wird eine Preisliste der Fahrräder (Schritt 1) erzeugt. Danach folgt die Aktualisierungsabfrage
(Schritt 2 + 3). Abschließend wird durch nochmaligen Aufruf der Preisliste
überprüft, ob die Aktualisierung erfolgreich war.
(1) Die zu aktualisierenden Datensätze mit einer Auswahlabfrage
auswählen
(2) SQL-Anweisung
(3) Auswahlabfrage (siehe Schritt 1)
ausführen und das aktualisierte
Ergebnis überprüfen.
Anhang 1 - 6
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Das Löschen von Datensätzen mit SQL
Situation:
Die Fahrräder 'Steel Lite Lady GT' und 'Comus Einräder XM (Fahrradnr 1 und
Fahrradnr 8) wurde noch nie oder selten vermietet und sollen deshalb aus der
Tabelle Fahrraeder gelöscht werden.
(siehe oben, Seite 55)
Tabelle FAHRRAEDER
Syntax:
DELETE FROM <tabellenname> WHERE <bedingung>;
1. Geben Sie die SQL-Befehle zum Löschen der Fahrräder mit den Fahrradnummern 8 und 1
an.
2. Erklären Sie mit Hilfe der referentiellen
Integrität, warum das Löschen des Fahrrads mit der Fahrradnummer 8 möglich
ist, beim Löschen des Fahrrads mit der
Fahrradnummer 1 die nebenstehende
Fehlermeldung erzeugt wird.
Anhang 1 - 7
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Abfragen mit Hilfe der der Datenbanksprache SQL
(Siehe oben, Seite 36)
SQL (Structured Query Language) ist eine universelle Datenbanksprache. Mit SQL kann
man auf einen Datenbestand in Datenbanktabellen zugreifen, um Datensätze auszuwählen,
zu ändern, zu löschen oder anzufügen (Datenmanipulation).
Tabelle FAHRRAEDER
Backend:
Tabelle(n) der
Datenbank
SQL-Abfrage
SELECT Fahrradnr, Bezeichnung, Tagesmietpreis
FROM Fahrraeder
WHERE Tagesmietpreis < 15;
Ergebnis:
Frontend
Anwendungssicht des Benutzers
Anhang 1 - 8
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Einführende Aufgaben zu Auswahlabfragen
Wählen Sie die Daten der nachfolgenden Arbeitsaufträge mit Hilfe von SQL-Anweisungen aus der Datenbank Fahrrad aus. Tragen Sie die SQLBefehel jeweils in das Lösungsblatt ein oder speichern Sie die SQL-Befehle unter den jeweils unterstrichenen Bezeichnungen in einem Textdokument ab. (Vgl. oben, Seite 39 f.)
Nr Abfragebedingung
1.
Projektion
Beispiel
SQL1:
Fahrradnummer, Bezeichnung und der Kaufpreis aller
Fahrräder, nach dem Kaufpreis aufsteigend sortiert auflisten
2.
Textvergleich
SQL2a
Fahrradnr, Bezeichnung,
Wert und Kaufdatum aller
Fahrräder mit der Bezeichnung „Scott Scale 70“, nach
dem Kaufdatum absteigend
sortiert auflisten.
3.
Abfrageentwurf (SQL)
Bemerkung
Attribute werden durch
Komma getrennt angegeben.
Zu vergleichende Texte erscheinen zwischen Anführungszeichen.
Vergleich mit LI- SQL2b
KE und „JokerAlle Fahrräder auflisten, dezeichen“
ren Bezeichnung mit ‚Scott‘
beginnt.
MySQL verwendet als
Platzhalter für beliebige
Zeichen innerhalb einer Zeichenkette das "%"-Symbol.
Mit Zahlenvergleich
Zu vergleichende Zahlen
ohne Anführungszeichen.
SQL3
Alle Fahrräder, deren Tagesmietpreis unter 15,00 €
liegt, auflisten.
(Attribute: Fahrradnr, Bezeichnung, Tagesmietpreis)
Anhang 1 - 9
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
4.
5.
Mit Datumsvergleich
SQL4
Rechenfelder
SQL5
Alle Fahrräder, die vor dem
01.01.2009 angeschafft wurden, sind nach dem Kaufdatum sortiert aufzulisten (Fahrradnr, Bezeichnung, Rahmennummer, Kaufdatum)
Für alle Fahrräder soll der
Wochenpreis (Tagespreis*6)
ausgewiesen werden.
Datumseingabe
im Format ‘jjjj/mm/tt‘
Rechenfeld. Die Spaltenüberschrift wird hinter AS
angegeben.
6.
Zwei Kriterien mit SQL6
UND verknüpfen
Alle Fahrrader mit der Bezeichnung 'Scott', deren
Kaufdatum vor 2009 liegt,
sortiert nach dem Kaufdatum
fallend, anzeigen (Fahrradnr,
Bezeichnung, Kaufdatum)
Kriterien, die mit UND verknüpft sind, werden im
SQL-Code mit AND verbunden.
Beide verknüpfte Teilbedingungen müssen zutreffen,
damit der Datensatz ausgewählt wird.
7.
Zwei Kriterien mit SQL7
ODER verknüpfen
Alle Fahrräder anzeigen, deren Tagesmietpreise unter
10,00 EURO oder über
20,00 EURO liegt (Fahrradnr, Bezeichnung, Tagesmietpreis).
ODER-Kriterien
werden im SQL-Code mit
OR verknüpft.
Anhang 1 - 10
Der Datensatz wird ausgewählt, wenn eine Teilbedingung oder beide zutreffen.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
8.
9.
Der NICHTOperator
SQL8
Alle Fahrräder (Attribute:
Fahrradnr, Bezeichnung)
außer dem mit der Bezeichnung Scott Speedster anzeigen, alphabetisch fallend
nach Bezeichnungen sortiert.
Die Bedingung
SQL9
BETWEEN .. AND
Alle Fahrräder auflisten, deren Tagesmietpreis zwischen
15,00 EUR und
20,00 EUR liegt (Attribute
Fahrradnr, Bezeichnung und
Tagesmietpreis).
10 Datumsvergleich
mit YEARFunktion
SQL10
11 Datumsvergleich
mit MONTHFunktion
SQL11
Ermitteln Sie, welche Fahrräder im Jahr 2007 gekauft
wurden.
Welche Fahrräder wurden im
Monat Mai gekauft?
Anhang 1 - 11
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
12 Datumsvergleich SQL12
mit dem SystemWelche Fahrräder werden im
datum NOW()
laufenden Jahr noch zwei
Jahre alt?
13 Aggregatsfunktionen
SUM
SQL13
Den Gesamtwert aller Fahrräder ermitteln.
14 AVERAGE
Den durchschnittlichen Tagesmietpreis aller Fahrräder
ermitteln und anzeigen.
15 MAX
Den Kaufpreis (Attribut wert)
des teuersten bzw. des
preisgünstigsten Fahrrad
ermitteln und anzeigen.
MIN
Anhang 1 - 12
Die Spaltenüberschrift wird
mit AS Gesamtwert
Ausgewiesen.
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Abfragen mit verbundenen Tabellen
(Siehe oben, Seite 60)
Situation:
Für eine Werbeaktion wird eine Adressliste aller Kunden aus Leverkusen (Plz 51333) und
Köln (Plz 51153) mit den Attributen Kundennummer, Name, Plz, Straße und Ort benötigt. In
der Auflistung sollen zuerst die Kunden aus Leverkusen und dann die Kunden aus Köln angezeigt werden. Innerhalb des jeweiligen Ortes sind die Kunden alphabetisch nach ihrem
Namen zu sortieren:
1.
Aus welchen Tabellen der Datenbank Fahrrad benötigen Sie Informationen?
2.
Beschreiben Sie die Verbindung der beiden ausgewählten Tabellen.
Hinweis: Benutzen Sie dazu das Entity Relationship Diagramm.
3.
Geben Sie den SQL-Auswahlbefehl an. Erfassen Sie den Befehl über ein DatenbankFrontend und führen Sie die Abfrage aus.
Anhang 1 - 13
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Das Gruppieren von Daten in einer Tabelle
(Siehe oben, Seite 57)
Situation:
Kai Carlsson, Inhaber der Fahrradvermietung "Rent A Bike e.K." möchte eine Aufstellung
darüber, wie viele Tage insgesamt seine Fahrräder von männlichen beziehungsweise weiblichen Kunden im Ferienmonat August 2009 gemietet werden.
1. Ermitteln Sie in der nachstehenden Aufstellung gruppenweise die Summe der Tage für
die Kundinnen beziehungsweise Kunden. Die Anzahl der Tage wird mit der Funktion
DATEDIFF(enddatum, anfangsdatum) errechnet.
Gruppierung
Anzahl der Miettage
Geschlecht
Summe der Miettage
M
W
2. Nach welchem Attribut wurde die Aufstellung gruppiert?
3. Welches Datenfeld wurde aufsummiert?
4. Welche Datensätze (Zeilen) wurden ausgewählt?
5. Geben Sie den SQL-Befehl an.
Anhang 1 - 14
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Erfassen von Daten in die Datenbank
(Siehe oben, Seite 102)
Situation:
Die Kundin Alina Kesser aus 89584 Ehingen, Schulgasse 10 möchte das Fahrrad Lady Lite
Comfort vom 10.08.2009 bis 22.08.2009 mieten.
Mark Spenn aus Blaubeuren, Karlstraße 10 hat angerufen und möchte in den nächsten Tagen vorbei kommen und sich ein Fahrrad für eine Wochenendtour aussuchen.
Hinweis:
Der Wohnort Ehingen ist in der Tabelle Wohnorte unter der Ortnr 36262, Blaubeuren unter der Ortnr 30267, das Fahrrad Lady Lite Comfort in der Tabelle
Fahrraeder unter der Fahradnr 30 gespeichert.
Sie beginnen mit dem Erfassen der Daten.
Während die Eingabe der Daten für Alina
Kesser problemlos verläuft, erscheint beim
Speichern der Eingabedaten für Mark Spenn
das nebenstehende Meldefenster.
1. Erklären Sie den Inhalt des Meldefensters.
2. Welche Konsequenz hat diese Meldung für die Reihenfolge der Erfassung der Daten?
3. Tragen Sie in der nachfolgenden Tabelle ein, wie die Tabellen der Datenbank Fahrrad zueinander in Beziehung stehen und in welcher Reihenfolge die Daten in den Tabellen erfasst werden, so dass keine Probleme mit der Datenintegrität auftreten (siehe Seite 51).
Parent-Tabelle
Primärschlüssel
Child-Tabelle
Fremdschlüssel
1.
Anhang 1 - 15
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Anhang 2
Nutzen vorhandener Access-Datenbanken
Sofern beim Einsatz von MySQL vorhandene Access-Datenbanken verwendet werden sollen,
so können diese mit dem MySQL Migration Tool in MySQL importiert werden.
(Die Migration vorhandener Datenbanken ist nicht als Gegenstand des Unterrichts gedacht. Vielmehr
soll mit den folgenden Erläuterungen der Umstieg auf des Datenbanksystem MySQL erleichtert werden,
da Unterlagen und Daten weiterhin verwendbar sind.)
Bevor mit der Migration von Access-Datenbanken begonnen werden kann, sind an verschiedenen Stellen einige Einstellungen und Eingaben vorzunehmen:
Einstellungen in Access:
Bei Access-Datenbanken, die zur Migration vorbereitet werden sollen, müssen unter
Extras Æ Optionen Æ Ansicht
die Optionen "Ausgeblendete Objekte" und "Systemobjekte" aktiviert werden.
Diese Einstellung führt dazu, dass in der
Datenbankansicht die Tabellen
MSysAccessObjects,
MSysACEs,
MSysIMEXColumns,
MSysIMEXSpecs,
MSysObjects,
MSysQueries,
MSysRelationships
sichtbar werden und genutzt werden
können.
Weiterhin ist zu beachten, dass bei den Beziehungseigenschaften in Access die Optionen "Aktualisierungsweitergabe an verwandte Felder" und "Löschweitergabe an verwandte Datensätze" nicht aktiviert sind.
Damit die in einer Access-Datenbank festgelegten Fremdschlüsselinformationen gelesen werden können, muss für die Systemtabellen "MSysObjects", "MSysQueries" und "MSysRelationships" die Berechtigung "Verwalten" aktiviert werden. Diese Einstellung erfolgt im Menü:
Extras Æ Sicherheit Æ Benutzer- und Gruppenberechtigungen
Die beschriebenen Einstellungen bleiben
erhalten. Sie sollten daher nach der
Migration wieder zurückgesetzt werden,
wenn die Daten sensitiv sind.
Anhang 2 - 1
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Migration von Access-Datenbanken mit dem MySQL Migration Toolkit
MySQL Migration Toolkit ist Bestandteil der
von MySQL angebotenen "MySQL GUI Tools".
(Siehe oben, Seite 23)
Das MySQL Migration Toolkit startet mit nebenstehendem Bildschirm. Die Migration der
Access-Datenbanken erfolgt in 17 Schritten,
bei denen folgende Einstellungen vorzunehmen sind:
Beachten Sie, dass vor dem Start des MySQL
Migration Toolkit der WAMP-Server
(xampp_start.exe) gestartet sein muss.
(Siehe oben, Seite 22)
z Die ersten beiden Schritte des Migration
Toolkit können ohne Veränderung bzw.
Eingabe mit "Next" bestätigt werden.
z Dritter Schritt des Migration Toolkit:
Database System: MS Access
Database File:Pfadangabe zur
gewünschten
Access-Datenbank
alle übrigen Felder bleiben leer.
z Vierter Schritt des Migration Toolkit:
Hostname:
localhost
Username:
root
Alle übrigen Felder werden
übernommen.
Anhang 2 - 2
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
z Beim sechsten Schritt des Migration Toolkit muss die angezeigte Datenbank ausgewählt
(markiert) werden.
z Neunter Schritt des Migration Toolkit:
Über die Befehlsschaltflächen "Set
Parameter>>" und
"Advanced>>"
müssen die Optionen entsprechend der nebenstehenden Abbildung ausgewählt
werden.
z Die weiteren Schritte werden ohne Änderung mit "Next" bestätigt.
z Auf die Schritte 12 und 15 wird auf der Seite Anhang 2-5 näher eingegangen.
Anschließend existiert im MySQL-Datenbank-Pfad (.../xampplite/mysql/data - siehe oben,
Seite 23) ein Order "Fahrrad", in dem die MySQL-Datenbankdateien abgelegt sind. Daneben
wurde die Datei "ibdata1" in den Ordner ../data geschrieben. Sie enthält die Indexeinträge,
über welche die referentielle Integrität der Datenbank gesteuert wird.
Wichtig: Soll eine MySQL-Datenbank von einem PC auf einen anderen kopiert werden,
so muss neben dem entsprechenden Datenbankordner auch die Datei "ibdata1" kopiert werden. Bereits vorhandene Eintragungen sind danach jedoch
nicht mehr vorhanden!
Auf die Datenbank kann nun
beispielsweise mit Hilfe von
phpMyAdmin zugegriffen werden.
(Siehe oben, Seite 108 ff.)
Anhang 2 - 3
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Zur Sicherheit sollten anschließend noch die Datentypen und Feldgrößen der einzelnen Attribute kontrolliert werden. Das MySQL Migration Toolkit weist standardmäßig jedem Datumsfeld
den Typ "DATETIME" zu. Außerdem wird bei Zahlen, die ohne Dezimalstellenangabe importiert wurden, eine fünfstellige Dezimalstelleneinstellung festgelegt.
Diese Angaben können in phpMyAdmin bequem geändert werden.
Am Beispiel der Tabelle "Fahrraeder"
kann dieser Sachverhalt verdeutlicht
werden. Die Attribute
"Tagesmietpreis" und
"Wert" weisen nach
der Migration 5 Dezimalstellen auf, das
Attribut "Kaufdatum"
hat den Datentyp
"DATETIME".
Nachdem das gewünschte Attribut "Kaufdatum" markiert wurde, können die Eigenschaften mit
Hilfe der "Ändern"-Aktion (
) abgeändert werden:
Als Datentyp kann beispielsweise der
Typ "DATE" gewählt werden.
Entsprechend ist bei der Festlegung von
Dezimalstellen vorzugehen. Hier bedeutet 6,2, dass die Zahl maximal 6 Zeichen
(ohne Dezimaltrennzeichen) haben
kann. Die Länge 5,2 ist damit zu klein
um Tausenderzahlen zu speichern.
Anhang 2 - 4
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Skriptdateien zum Erstellen vom MySQL-Datenbanken erzeugen
In der Unterrichtspraxis werden leistungsstarke Schülerinnen und Schüler mit Hilfe von SQLBefehlen an einigen wenigen Beispielen Datenbanken, Tabellen und deren Beziehungen
selbst erstellen. Die vorliegenden Tabelleninhalte und/oder die Tabellenstruktur für Übungsdatenbanken sollten jedoch bequem importiert werden können (siehe Folgeseiten).
Solche Skriptdateien für den Import von Datenbanken stehen auf dem Server des Landesinstituts zur Verfügung (URL siehe Vorwort dieser Handreichung).
Bei vorhandenen eigenen Access-Datenbanken bietet sich wiederum das oben beschriebenen
MySQL Migration Toolkit an:
Bei der Migration einer
Access-Datenbank mit Hilfe
des MySQL Migration Toolkit kann im 12. Schritt (siehe
nebenstehende Abb.) die
Option "Create Script File for
Create Statements" aktiviert
werden. Diese Skriptdatei
wird in einem anzugebenden Pfad als .sql-Datei
gespeichert. Sie enthält
sämtliche Create-Anweisungen zum Erstellen der
migrierten Tabellen.
Mit dem 15. Schritt des
MySQL Migration Toolkit
(siehe nebenstehende Abb.)
kann mit der Option "Create
Script File for Insert
Statements" eine Skriptdatei
erzeugt werden, die sämtliche Insert-Befehle für alle
migrierte Tabellen enthält.
Auch diese Skriptdatei wird
in einem anzugebenden
Pfad als .sql-Datei gespeichert.
Diese Skriptdatei zum Import vorhandener Daten
kann in eine bestehende
MySQL-Datenbank importiert werden.
Anhang 2 - 5
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufig Version)
Datenimport erstellter Skriptdateien
Auf dem Server des Landesinstituts für Schulentwicklung stehen die Datenbanken, die in dieser Handreichung angesprochen werden, als Skriptdateien zum Download zur Verfügung.
Diese Dateien wurden mit dem MySQL Migration Toolkit erzeugt. Sie lassen sich als MySQLDatenbanken auf einen XAMPP-Server importieren.
Am Beispiel des Frontends MySQL Query Browsers (siehe oben, Seite 23ff) sind dabei folgende Schritt notwendig:
Nach dem Starten des MySQL Query Browsers muss die entsprechende Skriptdatei über die
Befehlsfolge
Datei Æ Skript öffnen…
geöffnet und mit der Schaltfläche
aktiviert werden.
Nach dem Ausführen der Skriptdateien wird die
importierte Datenbank mit den
Tabellen angezeigt.
Bevor die Skriptdateien importiert werden,
sollte überprüft werden, welche Daten die
Dateien beinhalten. Dies kann auch zuvor mit
einem einfachen Texteditor erfolgen.
Bei den vom Landesinstitut für Schulentwicklung zur Verfügung gestellten Datenbanken sind die Skripte für die Datenbankstruktur und die Tabelleninhalte in verschiedene Dateien getrennt.
Beispiel: fahrrad_struktur.sql (siehe Abb.).
Anhang 2 - 6
Informatik an beruflichen Gymnasien - Jahrgangstufe 1 (vorläufige Version)
Beispiel: fahrrad_daten.sql (siehe Abb.):
Beim Import der Tabelleninhalte ist darauf zu achten,
dass zunächst die Daten der
Parent-Tabellen eingelesen
werden und dann erst die
der Child-Tabellen.
Im anderen Falle käme es
zu einem Verstoß gegen die
Regeln der referentiellen
Integrität.
Es können auch Skriptdateien angelegt werden, in
denen zunächst die Tabellenstruktur erzeugt wird und
im Anschluss sofort die entsprechenden Tabellendaten
eingelesen werden
(siehe Abb.).
Sofern in einer Skriptdatei
mehrere Tabellen erzeugt
werden sollen, ist auch hier
auf die Reihenfolge (Parent-/
Child-Tabelle) zu achten.
Hinweis:
Damit die Beziehungen, die in einer Access-Datenbank mit Hilfe von Fremdschlüsseln hergestellt wurden, in die MySQL-Datenbank implementiert werden können, müssen in der Konfigurationsdatei "my.cnf" des MySQL Migration Toolkit gegebenenfalls einige Änderungen vorgenommen werden. Die Datei "my.cnf" befindet sich im Pfad "…/xampp/mysql/bin" und kann mit
einem Textedior (WordPad) geöffnet und verändert werden. Zu beachten ist , dass diese Datei
eine Verlinkung darstellt. Man kann sie ändern, aber keine neue Datei darüber kopieren.
Im [mysqld]-Abschnitt der Konfigurationsdatei müssen folgenden Einstellungen vorhanden sein:
...
#skip-innodb
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = C:/xamp/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
das Kommentierungszeichen # ist bei allen weiteren innodb_...-Anweisungen zu entfernen!
Anhang 2 - 7
Herunterladen
Study collections