Praxismodul Daten verwalten mit einer relationalen Datenbank

Werbung
Departement Informatik
Praxismodul
Daten verwalten
mit einer relationalen Datenbank
Copyright © 1996-2013 Departement Informatik, ETH Zürich.
Gruppe Informationstechnologie und Ausbildung
Prof. Dr. Juraj Hromkovic
Praxismodul – Daten verwalten (2)
Autoren: Lukas Fässler, Markus Dahinden, Hans Hinterberger, Christian Rohrer, Marcel Schöngens
Die Entwicklung der E.Tutorials® für die Praxismodule wurde vom Fonds Filep des Rektorats der ETH
Zürich unterstützt.
http://www.filep.ethz.ch
Trotz sorgfältiger Arbeit schleichen sich manchmal Fehler ein. Die Autoren sind Ihnen für Anregungen und Hinweise dankbar!
E.Tutorial® ist ein eingetragenes Warenzeichen der ETH Zürich
E-Mail: [email protected]
Projekt Homepage: http://www.cta.ethz.ch
Der Inhalt der einzelnen Module von "ICT im digitalen Datenlabor" sowie der E.Tutorials® unterliegt dem Urheberrecht. Die
Dokumente dürfen nur im Internet und ausschliesslich in der im Internet vorliegenden Form und Fassung kopiert weitergegeben und verwendet werden. Veränderungen, Kürzungen, Erweiterungen sind untersagt. Ausdrucken und jede andere
Vervielfältigung ist nur zum persönlichen Gebrauch gestattet und nur unter der Bedingung, dass der Urheberrechtsvermerk
mit dem Dokument selbst mit ausgedruckt wird, resp. beim Vervielfältigen auf dem Dokument selbst erhalten bleibt. Jede
Veröffentlichung in anderen Medien als dem Internet oder jede Übersetzung bedarf der schriftlichen Einwilligung durch das
Departement Informatik der ETH Zürich. Gewerbliche Nutzung oder Nutzung zu Schulungszwecken durch Dritte bedarf
ebenfalls der schriftlichen Einwilligung durch das Departement Informatik der ETH Zürich.
Die in diesem Text behandelten Hard- und Software-Bezeichnungen sind zugleich eingetragene Warenzeichen und sollten
als solche behandelt werden.
2
Praxismodul – Daten verwalten (2)
Wie bearbeite ich dieses Modul?
Dieses Praxismodul bearbeiten Sie am effizientesten, wenn Sie die folgenden drei Teile in angegebener Reihenfolge angehen:
Teil A: Einführung.......................................................................................................Seite 5
In diesem zweiten Teil zum Thema Datenverwaltung lernen Sie mit Hilfe einer Datenbank grössere Datenmengen zu verwalten. Hier finden Sie eine kurze Einführung aus der Sicht der Anwender.
Teil B: E.Tutorial® …………………...................................................................................Seite 13
Das E.Tutorial® vermittelt Ihnen in 10 Lektionen, wie Sie mit Hilfe eines Datenbanksystems
(Microsoft Access oder OpenOffice Base) drei wichtige Aufgaben lösen können:

Strukturiertes Speichern von Daten

Erstellen von Abfragen

Ein- und Ausgabe von Daten
Zeitaufwand: 2 bis 3 Stunden
Teil C: Testaufgabe...................................................................................................Seite 15
Bei der Testaufgabe wenden Sie die im E.Tutorial® angeeigneten Fähigkeiten selbständig auf
Daten der Nährwertdatenbank an
Zeitaufwand: ca. 1.5 Stunden
Hinweis: Auf der Vorlesungswebseite finden Sie eine alternative Testaufgabe mit Daten des Landesforstinventars. Beide Aufgaben sind gleichwertig.
Begriffe:
Datenbanksystem
Attribut
Referentielle Integrität
Relationenmodell
Tupel
Redundanz
Relation
Beziehung
Relationale Operatoren
Abfrage
Beziehungstyp
Abfragesprache
Formular
Primärschlüssel
SQL
3
Praxismodul – Daten verwalten (2)
4
Praxismodul – Daten verwalten (2)
Teil A - Einführung
Sinn und Zweck von Datenbanksystemen in der Wissenschaft
Bei der wissenschaftlichen Tätigkeit werden digitale Daten produziert, archiviert, modifiziert mit
dem Ziel, mit Hilfe der Daten eine wissenschaftliche Fragestellung beantworten zu können. Die
einzelnen Elemente des Datenflusses entnehmen Sie der folgenden Abb. 1:
Abb. 1: Datenbanksysteme helfen beim Ablegen und Wiederfinden von Daten
Bei der Datenarchivierung und -Verwaltung kommen häufig Datenbanksysteme zum Einsatz.
Diese ermöglichen nicht nur ein Strukturieren, Ablegen und Wiederfinden der Daten, sondern
helfen auch bei der Organisation all dieser Aufgaben. Charakteristisch für eine Datenbank ist das
ihr zu Grunde liegende Datenbankmodell.
Was bringen uns Datenbankmodelle?
Im letzten Praxismodul haben Sie recht grosse Datenlisten mit den Datenverwaltungsfunktionen von Excel bearbeitet. Der Nachteil dabei war, dass Sie alle Daten in eine einzige Tabelle packen mussten. Sie haben sicherlich gemerkt, dass die Tabelle ab einer gewissen Grösse ziemlich
unübersichtlich wird. Darüber hinaus brauchen Sie viel unnötigen Speicherplatz für leere Felder
und Datenwiederholungen (so genannte Redundanzen). Bei der Nährwerttabelle der letzten
Testaufgabe waren etliche Werte einer gegebenen Tabelle mehrfach eingetragen. Beispielweise
war jeder Nahrungsmittelname jeweils 25 Mal identisch eingetragen und die Inhaltsstoffnamen
sogar 48 Mal. Eine solch grosse Anzahl Redundanzen verunmöglicht somit eine effiziente Arbeitsweise (stellen Sie sich vor, Sie müssten an 48 Orten in der Tabelle einen Inhaltsstoffnamen
5
Praxismodul – Daten verwalten (2)
6
abändern…). Einfacher wäre es, wenn statt der Namen ein Verweis in eine separate Tabelle, in
der nur die verschiedenen Inhaltsstoffe einzeln aufgelistet sind, gespeichert würde. Genau das
erlauben Datenbanksysteme, die das Relationenmodell anwenden (Abb. 2).
 Redundante Datentabelle
 Relationales Datenmodell
Lebensmittel
Kategorien
Lebensmittel
Kategorie
Birnensaft
Getränke
Name
kategorie_id
id
Name
Gummibonbon
Süssspeisen
Birnensaft
1
1
Getränke
Apfelsaft
Getränke
Gummibonbon
2
2
Süssspeisen
Lagerbier
Getränke
Apfelsaft
1
Schokolade
Süssspeisen
Lagerbier
1
Schokolade
2
Beziehungen
Abb. 2: Mit dem Relationenmodell lassen sich Daten der realen Welt übersichtlich strukturieren.
Daten einer relationalen Datenbank sind in Relationen unterteilt, die logische Einheiten der zu
repräsentierenden Welt darstellen (hier Lebensmittel und Kategorien). Relationen haben die
Form von Tabellen, welche wie die Listen in der Tabellenkalkulation in ihren Spalten Überschriften (Bezeichner für Attribute) tragen und Daten enthalten. Diese Relationen sind über identische
Attribute verknüpft (kategorie_id der Tabelle Lebensmittel entspricht id der Tabelle Kategorien).
Von den drei Beziehungstypen 1:1, 1:n und n:m ist unter  die n:1 Beziehung abgebildet.
Was ist das Relationenmodell?
Nach dem Aufteilen einer grossen Datentabelle auf verschiedene kleinere Tabellen (Relationen)
können in einem relationalen Datenbanksystem Untermengen der Daten separat behandelt und
so Redundanzen vermieden werden. Damit aber alle ursprünglichen Informationen wieder hergestellt werden können („Welches Nahrungsmittel enthält nun schon wieder 23.6g Kohlenhydrate?“), muss es möglich sein, die einzelnen Relationen miteinander zu verknüpfen. Dabei werden Tabellen immer über identische Attribute, d.h. Attribute, welche die gleiche Eigenschaft der
gespeicherten Daten beschreiben, miteinander verbunden (vgl. Abb. 2), also zueinander in Beziehung (engl. Relation) gebracht.
Die Datenbanksysteme, mit denen Sie hier arbeiten, unterscheiden zwischen 3 Beziehungstypen:
1:1, 1:n und n:m. Die Zahl 1 deutet darauf hin, dass in der entsprechenden Tabelle nur genau ein
Eintrag mit diesem Wert vorhanden ist. Der Bezeichner „n“ bedeutet hingegen, dass mehrere
Zeilen mit dem gleichen Attributwert in der Tabelle vorhanden sein können (manchmal wird an
Stelle von „n“ das Symbol „∞“ oder auch "m" verwendet). Es gilt zu beachten, dass n:m Beziehungen in relationalen Datenbanken nicht direkt, sondern nur mittels einer Zwischentabelle, die
zwei 1:n Beziehungen herstellt, erstellt werden können. Die Eigenschaften einer Verknüpfung
zwischen Tabellen sind dann von Bedeutung, wenn wir Abfragen definieren, in denen verknüpfte Tabellen ausgewertet werden.
Praxismodul – Daten verwalten (2)
Datenbank-Abfragen: Das System hilft beim Suchen
Um Daten aus relationalen Datenbanksystemen herauszuholen, stellen diese zu diesem Zweck
so genannte Abfragesprachen zur Verfügung. Die verbreitetste Abfragesprache für relationale
Datenbanken ist SQL (Structured Query Language). Mit SQL können Nutzer Fragen formulieren,
welche unter Verwendung relationaler Operatoren (z.B. "=", "<>", ">=" etc.) in für das Datenbankverwaltungssystem verständliche Instruktionen umgesetzt werden. Kennt man sich in SQL ein
wenig aus, kann man relativ effizient auch komplexe Abfragen durchführen. SQL kann sowohl
für Abfragen über eine einzelne Tabelle (Abb. 3/4), als auch für Abfragen über mehrere, per Primärschlüssel verknüpfte Tabellen verwendet werden (Abb. 5/6/7).
Wichtig: Voraussetzung für eine erfolgreiche Abfrage ist die genaue Kenntnis der Datenbankstruktur ("Welches Attribut ist ein Primärschlüssel?", "Wie sind die Tabellen miteinander verknüpft?" etc. ).
Abb. 3: Beispiel einer Tabelle in Access zur Erfassung von Farbe und Ablageort eines Objekts.
Abb. 4: Abfrage einer Datenbank mit dem grafisch orientierten Assistenten von Access und der
Abfrage-Sprache SQL. Die Abfrage lautet in beiden Fällen: Nenne die Zeilen der Tabelle A, die im
Feld "Farbe" das Wort "rot" enthalten. Die SQL-Abfragen enthalten die Grundelemente
SELECT...FROM...WHERE...;. Der SELECT-Bereich gibt die Attribute (Felder) an, die im Resultat angezeigt werden sollen, der FROM-Bereich die Tabellen, die abgefragt werden und auf WHERE
folgen die Auswahlkriterien.
7
Praxismodul – Daten verwalten (2)
Datenbank-Abfragen über mehrere Tabellen: Wie macht das der Computer?
Im folgenden Abschnitt wollen wir uns darauf konzentrieren, wie man Tabellen mit SQL verknüpft. Wir haben oben erfahren, dass die Stärke von relationalen Datenbanksystemen das Aufteilen grosser Tabellen in kleinere ist. Um nun an Informationen zu gelangen, die sich über zwei
oder mehr Tabellen erstrecken, müssen diese entsprechend verknüpft werden. Damit ist die Verknüpfung von Tabellen einer der wichtigsten Operation in relationalen Datenbanksystemen. In
SQL werden solche Verknüpfungen mit dem JOIN-Befehl realisiert1. Diesen wollen wir jetzt
Schritt für Schritt kennenlernen. Wir betrachten als Beispiel folgende zwei Tabellen die in einer
1:n Beziehung stehen:
Id
1
2
3
Lml (Lebensmittel)
Bezeichnung
kat_id
Apfel
2
Banane
2
Blumenkohl
1
Id
1
2
Kat (Kategorien)
Kategorie
Gemuese
Obst
Beide Tabellen sind im Datenbanksystem abgespeichert. Eine mögliche Verknüpfung dieser Tabellen sieht in SQL so aus:
SELECT * FROM (Lml JOIN Kat ON Lml.kat_id=Kat.id);
Um die Funktionsweise dieser Anweisungen zu verstehen, wollen wir die Anfrage Stück für Stück
betrachten. Wir schauen uns erst den „eigentlichen“ Join an:
Lml JOIN Kat
Dieser Befehl lässt das Datenbanksystem eine temporäre Tabelle erstellen, die aus dem
Kreuzprodukt der Tabellen Lml und Kat besteht (siehe Abb. 5). Kreuzprodukt bedeutet einfach,
dass jeder Eintrag der Tabelle Lml mit jedem Eintrag der Tabelle Kat verbunden wird. Die Tabelle
in Abb. 5 hat also 5 Spalten (drei aus der Tabelle Lml und zwei aus der Tabelle Kat) und 3 * 2 = 6
Zeilen (#Zeilen aus Lml * #Zeilen aus Kat).
Abb. 5: Das Kreuzprodukt der Tabellen Lml und Kat: Lml JOIN Kat
1
Verknüpfungen mittels der WHERE-Anweisung sind auch möglich (vgl. Seite 10).
8
Praxismodul – Daten verwalten (2)
Es ist noch wichtig zu erwähnen, dass diese Tabelle nicht im Datenbanksystem abgespeichert
wird, sondern nur temporär im Arbeitsspeicher liegt. Das heisst, sobald die komplette Anweisung (SELECT * FROM ...) abgearbeitet ist, wird die Tabelle wieder aus dem Arbeitsspeicher entfernt.
Die Tabelle in Abb. 5 beinhaltet viele Einträge, die semantisch keinen Sinn machen. Dennoch ist
sie das Beste, was das Datenbanksystem aus der Information „Lml JOIN Kat“ machen kann:
Nämlich, jede Zeile der einen Tabelle mit jeder Zeile der anderen Tabelle verbinden (Kreuzprodukt). Wollen wir eine an die Bedeutung der Tabellen angepasste Verknüpfung erreichen, so
müssen wir dem Datenbanksystem mehr Information zur Verfügung stellen. Dies geschieht
über die ON Anweisung:
Lml JOIN Kat ON Lml.kat_id = Kat.id
Mit diesem Befehl ist das Datenbanksystem in der Lage, die Tabelle in Abb. 6 (rechts) zu liefern:
Nach dem Erstellen der Tabelle aus Abb. 5 wird diese Zeile für Zeile durchlaufen, und alle Einträge, die die Bedingung Lml.kat_id = Kat.id nicht erfüllen werden entfernt (Abb. 6). Daraus ergibt
sich die gewollte, „sinnvoll“ verknüpfte Tabelle.
Abb. 6: Durch die Anweisung ON Lml.kat_id=Kat.id werden alle Einträge, welche die Bedingungen nicht erfüllen, aus der Kreuzprodukttabelle (links) entfernt.
Wie wir oben angemerkt haben, existiert die resultierende Tabelle nur temporär im Arbeitsspeicher und auch nur solange, wie das Datenbanksystem sie braucht. Das heisst, wenn wir dem
Datenbanksystem nur den Befehl
Lml JOIN Kat ON Lml.kat_id = Kat.id
geben, dann wird die Tabelle aus Abb. 6 (rechts) im Arbeitsspeicher erstellt, aber direkt danach
wieder gelöscht: Wir „befehlen“ dem Datenbanksystem sozusagen nur das Erstellen der Tabelle.
Damit macht der obige Befehl so keinen Sinn. Was wir eigentlich möchten, ist eine Abfrage der
Tabelle. Wir wissen, dass Tabellen mittels der SELECT-Anweisung abgefragt werden können.
Verbinden wir also die SELECT-Anweisung mit dem obigen Befehl, erhalten wir
SELECT * FROM (Lml JOIN Kat ON Lml.kat_id = Kat.id);
9
Praxismodul – Daten verwalten (2)
Der fett gedruckte Teil erstellt die Tabelle aus Abb. 6 (rechts) im Arbeitsspeicher. Die SELECTAnweisung angewand auf diese Tabelle gibt den Inhalt auf dem Bildschirm aus. Wir verstehen
jetzt also vollständig die Bedeutung unserer SQL-Anfrage. Erweiterungen der SELECTAnweisungen sind natürlich möglich, wie z.B. die Auswahl von bestimmten Spalten:
SELECT Lml.Bezeichnung, Kat.Kategorie FROM (Lml JOIN Kat ON
Lml.kat_id = Kat.id);
Abb. 7: Durch entsprechende Modifikation des SELECT-Befehls kann eine Untermenge aller Spalten abgefragt werden. Die Ausgangstabelle ist dabei immer die von Abb. 6 (rechts).
Wie auch oben erstellt das Datenbanksystem erst die Tabelle aus Abb. 6 (rechts), stellt aber dann
nur die Spalten Lml.Bezeichnung und Kat.Kategorie dar (siehe Abb. 7).
Will man nur gewisse Zeilen aus der Tabelle auswählen, so benutzt man die WHERE-Anweisung:
SELECT Lml.Bezeichnung, Kat.Kategorie FROM (Lml JOIN Kat ON
Lml.kat_id = Kat.id) WHERE Kat.id=2;
Das liefert die Tabelle aus Abb. 8:
Abb. 8: Mit Hilfe der WHERE-Anweisung können spezielle Zeilen herausgefiltert werden. Die
Ausgangstabelle ist auch hier die von Abb. 6 (rechts).
Alternative Darstellung des JOIN…ON-Konstrukts
Wie die Benutzerinnen und Benutzer von OpenOffice merken werden, gibt es noch eine alternative Form der Verknüpfung von Tabellen. Anstelle des JOIN..ON kann dieselbe Verknüpfungen
auch in der WHERE-Anweisung dargestellt werden. Folgende beiden SQL-Abfragen liefern exakt
das gleiche Ergebnis:
SELECT * FROM (Lml JOIN Kat ON Lml.kat_id = Kat.id) WHERE Kat.id=2;
SELECT * FROM Lml, Kat WHERE Lml.kat_id = Kat.id AND Kat.id=2;
10
Praxismodul – Daten verwalten (2)
Was gehört zu diesem Praxismodul und was nicht?
Das Erstellen einer Datenbank erfordert viel Wissen und Praxiserfahrung. Erwarten Sie deshalb
nicht, dass Sie bereits nach diesem Praxismodul zum Datenbank-Experten werden. Der Einsatz
von MS Access/OO Base als Beispiel eines Datenbanksystems hat den Vorteil, dass Sie auch ohne
Programmierkenntnisse an Probleme beim Erstellen und im Umgang mit Datenbanken herangeführt werden. Im Wesentlichen besteht Access/Base aus den drei Bausteinen Tabelle, Beziehungsansicht und Abfrage. Diese lernen Sie nun im E.Tutorial® Schritt für Schritt kennen.
11
Praxismodul – Daten verwalten (2)
12
Praxismodul – Daten verwalten (2)
Teil B - E.Tutorial®
Arbeiten Sie das E.Tutorial® „Daten verwalten mit einer relationalen Datenbank“ durch!
Sie finden das E.Tutorial® auf Ihrem USB-Memory-Stick oder auf der Vorlesungswebseite.
Im E.Tutorial® lernen Sie...

...den Aufbau einer relationalen Datenbank mit Access/Base kennen (Lektionen 1 bis 5)

...Abfragen an eine bestehende Datenbank zu stellen, um Daten aus verschiedenen Tabellen in einer einzigen Tabelle darzustellen (Lektionen 6 und 7)

...die Grundelemente der Abfragesprache SQL kennen (Lektionen 6 und 7)

...Formulare erstellen (Lektion 8)

...eine Datenbank zu erweitern, in dem Sie neue Tabellen erstellen und diese mit den
schon bestehenden verknüpfen (Lektionen 9 und 10)
System-Voraussetzungen
Windows
Mac
Linux
Access, OO Base
OO Base
OO Base
Vorsicht Sicherheitswarnung
Beim Öffnen von heruntergeladenen Access-Dateien muss die Sicherheitseinstellung auf "niedrig" eingestellt werden: Extras > Makro > Sicherheit > Niedrig (engl. Tools > Macro > Security >
Low).
Hinweis zur Version von MS Access
Das E.Tutorial® bezieht sich auf die deutsche Version von MS Access 2003/2007/2010 und Base
2.0.3 oder höher.
Die meisten beschriebenen Funktionen sind auch mit älteren Access-Versionen durchführbar,
allerdings treten Unterschiede im Fensteraufbau und in der Struktur der Menüs und Befehle auf.
13
Praxismodul – Daten verwalten (2)
14
Praxismodul – Daten verwalten (2)
Teil C - Testaufgabe
1. Einführung
Sie haben im E.Tutorial® anhand einer einfachen Datenbank einige wichtige Grundlagen kennen
gelernt, die beim Umgang mit Datenbanken von Bedeutung sind:

Aufbau einer relationalen Datenbank

Abfragen an eine Datenbank erstellen

Grundelemente der Abfragesprache SQL

Erweitern einer bestehenden Datenbankstruktur
Die Testaufgabe gibt Ihnen die Möglichkeit, diese Fähigkeiten zu festigen und flexibel anzuwenden. Als Datenquelle dient die im Praxismodul 4 eingeführte Nährwerttabelle, welche für diese
Aufgabe in eine relationale Datenbank überführt wurde. In der nachfolgenden Abbildung sehen
Sie die Relationen und Beziehungen dieser relationalen Nährwertdatenbank:
Die meisten Attribute wurden ohne Änderungen aus der Nährwerttabelle übernommen (vgl.
Praxismodul 4). Die Aufteilung der Nährwerttabelle in eine relationale Datenbank machte es
jedoch notwendig, dass einige zusätzliche Attribute eingefügt werden mussten. Der Primärschlüssel jeder Tabelle, also ein Attributwert, welcher einen Tabelleneintrag (Tupel) eindeutig
identifiziert, ist jeweils als id bezeichnet. Er kann in anderen Relationen als Verweis auf diese
Tabelleneinträge verwendet werden. Wenn ein Attribut auf ein Attribut einer anderen Tabelle
verweist (Fremdschlüssel), wird dies mit einem nachgestellten _id gekennzeichnet.
Beispiel: Das Attribut kategorie_id der Relation lebensmittel verweist auf den Primärschlüssel
id der Relation kategorien und definiert für jedes Nahrungsmittel eine Nahrungsmittel-Gruppe.
15
Praxismodul – Daten verwalten (2)
2. Vorbereitendes zur Testaufgabe
Einlesen der relationalen Nährwertdatenbank

Laden Sie die Datenbank nwdb_ms.mdb (Microsoft Office) oder nwdb_oo.odb (OpenOffice) auf Ihren Rechner

Öffnen Sie die Datenbank mit dem entsprechenden Programm (Microsoft Access oder
OpenOffice Base)
3. Aufgaben
Teil 1: Aufbau der relationalen Datenbank
Diskutieren Sie folgende Fragen zum Aufbau der relationalen Nährwertdatenbank:
1)
Wieso ist das Attribut id der Relation komponenten in der Beziehungs-Darstellung
in MS Access fett (im OpenOffice mit einem Schlüssel) markiert?
2) Welche Beziehungstypen werden in der Datenbank verwendet?
3) In der Datenbank gibt es eine Zwischentabelle. Wie heisst sie und wozu dient sie?
4) Angenommen Sie müssten eine neue kategorie „Hilfsstoffe“ erstellen. Wieso wird
dieser Gruppe der Primärschlüssel = 8 vergeben?
Teil 2: Abfragen stellen
Formulieren Sie folgende Abfragen an die Datenbank sowohl als SQL-Anweisung als auch mittels des Abfrage-Assistenten. In Klammern stehen zur Selbstkontrolle die Anzahl Treffer, die Sie
bei der Abfrage erreichen sollten.
a) Erstellen Sie eine Liste aller Nahrungsmittel (48)
SELECT
FROM
b) Finden Sie das Nahrungsmittel mit der id = 1000826. Nur der Lebensmittelname
(name) soll angezeigt werden (1)
SELECT
FROM
WHERE
16
Praxismodul – Daten verwalten (2)
c) Erstellen Sie die folgende Abfrage. Wie lautet die Frage? (13)
SELECT lebensmittel.name, komponenten.name,
komponenten_lebensmittel.menge
FROM lebensmittel
INNER JOIN
(komponenten INNER JOIN komponenten_lebensmittel
ON komponenten.id =
komponenten_lebensmittel.komponente_id)
ON lebensmittel.id =
komponenten_lebensmittel.lebensmittel_id
WHERE (((komponenten.name)="Zucker (in g)")
AND ((komponenten_lebensmittel.menge) > 10))
ORDER BY lebensmittel.name;
Ein Sportler hat in der Vorbereitung für einen Kugelstosswettkampf erfahren, dass Sie bereits
mit der Nährwertdatenbank gearbeitet haben und gelangt deshalb mit folgender Frage an Sie:
„Um meine Schnellkraft und die Muskelmasse zu erhöhen, suche ich Nahrungsmittel, die viel
Protein (>20g) enthalten. Welche Nahrungsmittel können Sie mir empfehlen?
d) Welche Lebensmittel erfüllen die Vorgaben des Kugelstössers und wie lautet die Abfrage?
Teil 3: Änderung und Erweiterung der Datenbank
Änderung in der Datenbank
Bei ersten Testabfragen der Nährwertdatenbank wurde bemängelt, dass der Eintrag „Teilentrahmte Milch, pasteurisiert“ nur ungenügend sortiert werden kann. So wird er nicht nach
„Milch“ sondern nach „Teilentrahmt“ sortiert.
a) Ändern Sie diesen Nahrungsmittelnamen in „Milch, teilentrahmt, pasteurisiert“
Erweiterung der Datenbank
Als Zusatz für die Online-Version der Nährwertdatenbank sollen Kontaktinformationen in die
Datenbank eingefügt werden. So wird es den Anwendern ermöglicht, zu jeder Nahrungsmittelgruppe mit einem oder mehreren Experten oder Expertinnen in Verbindung zu treten.
Ihre Aufgabe besteht nun darin, eine zusätzliche Tabelle (experten) zu erstellen, welche folgende Informationen über diese Personen enthält (Sie können bei Bedarf die Tabelle mit weiteren Attributen ergänzen).
kategorie_id
nachname
vorname
ausbildung
4
4
1
2
3
5
6
Geisser
Brügger
Müller
Bühler
Betschart
Valser
Stadler
Angela
Tamara
Philipp
Toni
Benjamin
Antoinetta
Clemens
Ernährungsberaterin
Kantonschemikerin
Biologe
Käsermeister
Metzgermeister
Lebensmittelchemikerin
Immunologe
17
Praxismodul – Daten verwalten (2)
b) Erstellen Sie die Tabelle und geben Sie die Daten ein.
c) Gibt es eine Nahrungsmittelgruppe, der keine Kontaktperson zugeordnet ist? Sie
brauchen keine Abfrage zu erstellen. Es reicht, wenn Sie Ihre Antwort anhand der Tabellen aufzeigen.
Testen der Erweiterung
d) Wie viele Lebensmittel werden von Herrn Stadler betreut?
e) Wie heisst die zuständige Kontaktperson für das Nahrungsmittel „Spargel“?
f) Ihre Kollegin interessiert sich für die Auswirkungen von Nitrat auf unser Trinkwasser.
Da Nitrat nicht in der Datenbank enthalten ist, möchten Sie gerne direkt mit der für
Trinkwasser zuständigen Person Kontakt aufnehmen. Welche Ansprechperson können Sie Ihr gemäss unserer Datenbank empfehlen?
g) Erstellen Sie eine Liste, welche alle in der Datenbank enthaltenen Wasserarten auflistet (Seewasser, Grundwasser, usw)
Tipp: Für diese „offene“ Abfrage eignet sich ein Wildcard-Zeichen: * (Access) resp. % (OpenOffice)
(Das Wildcard-Zeichen steht dabei für kein oder mehrere Zeichen: Beispiel: *dach* -> liefert die Datensätze
z.B. für Dachstock, überdacht etc.). Bitte beachten Sie, dass das Wildcard-Zeichen nur in Kombination mit
LIKE verwendet werden kann (anstelle des Gleichheitszeichens =).
4. Bedingungen für die Präsentation
Zeigen Sie einer Assistentin oder einem Assistenten Ihre Abfragen und Datenbankerweiterungen am Bildschirm. Überlegen Sie sich, wie Sie einem Laien erklären würden, wie eine relationale
Datenbank funktioniert. Auf folgende Fragen sollten Sie vorbereitet sein:

Wie werden Daten in einer relationalen Datenbank organisiert?

Die vorliegende Datenbank ermöglicht es, dass mehrere Kontaktpersonen für eine Nahrungsmittelgruppe (kategorie) zuständig sein können. Was müssten Sie an der Datenbank ändern, damit es in Zukunft auch möglich ist, dass jede Kontaktperson verschiedenen Kategorien zugeteilt werden kann?

Welches sind die Grundelemente einer SQL-Abfrage?
5. Literatur
Informationen über die Schweizerische Nährwertdatenbank: http:// www.swissfir.ethz.ch
18
Herunterladen