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