Daten verwalten mit einer relationalen Datenbank

Werbung
Verwaltung und Analyse digitaler Daten in der Wissenschaft
Daten verwalten mit einer relationalen
Datenbank
Projektaufgabe
Inhaltsverzeichnis
1 Einführung
3
2 Vorbereitendes
2.1 Einlesen der relationalen Nährwertdatenbank . . . . . . . . . . . . . . . .
3
3
3 Aufgaben
3.1 Aufbau der relationalen Datenbank . . . . . . . .
3.2 Abfragen . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Liste aller Nahrungsmittel . . . . . . . . .
3.2.2 Ein Nahrungsmittel finden . . . . . . . . .
3.2.3 SQL-Abfrage erstellen . . . . . . . . . . .
3.2.4 Lebensmittel für Wettkampfsportler finden
3.3 Änderung und Erweiterung der Datenbank . . . .
3.3.1 Änderung in der Datenbank . . . . . . . .
3.3.2 Erweiterung der Datenbank . . . . . . . .
3.3.3 Testen der Erweiterung . . . . . . . . . . .
4
4
4
4
5
5
5
5
6
6
6
4 Bedingungen für die Präsentation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
Begriffe
Datenliste
Beziehung
Referentielle Integrität
Datenbank
Beziehungstyp
Redundanz
Relation
Primärschlüssel
Relationale Operatoren
Attribut
Fremdschlüssel
Logische Operatoren
Tupel
Normalisierung
SQL
Autoren:
Markus Dahinden, Lukas Fässler, Hans Hinterberger, David Sichau
E-Mail:
[email protected]
Datum:
09 May, 2017
Version: 2.0
Hash: ac523b2
Trotz sorgfältiger Arbeit schleichen sich manchmal Fehler ein. Die Autoren sind Ihnen
für Anregungen und Hinweise dankbar!
Dieses Material steht unter der Creative-Commons-Lizenz
Namensnennung - Nicht kommerziell - Keine Bearbeitungen 4.0 International.
Um eine Kopie dieser Lizenz zu sehen, besuchen Sie
http://creativecommons.org/licenses/by-nc-nd/4.0/deed.de
2
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 Projektaufgabe gibt Ihnen die Möglichkeit, diese Fähigkeiten zu festigen und flexibel
anzuwenden. Als Datenquelle dient die im Kurs „Daten verwalten mit Listen und Tabellenëingeführte Nährwerttabelle, welche für diese Aufgabe in eine relationale Datenbank
überführt wurde. Informationen über die Schweizerische Nährwertdatenbank finden Sie
unter http://www.naehrwertdaten.ch. 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.
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.
2 Vorbereitendes
2.1 Einlesen der relationalen Nährwertdatenbank
• Laden Sie die Datenbank nwdb_ms.mdb (Microsoft Office) oder nwdb_oo.odb
(OpenOffice) auf Ihren Rechner.
3
• Öffnen Sie die Datenbank mit dem entsprechenden Programm (Microsoft Access
oder OpenOffice Base).
3 Aufgaben
3.1 Aufbau der relationalen Datenbank
Diskutieren Sie folgende Fragen zum Aufbau der relationalen Nährwertdatenbank:
• Wieso ist das Attribut id der Relation komponenten in der Beziehungs-Darstellung
mit einem Schlüssel markiert?
• Gibt es Fremdschlüssel in dieser Datenbank. Wenn ja, welche und wozu dienen
diese?
• Welche Beziehungstypen werden in der Datenbank verwendet?
• In der Datenbank gibt es eine Zwischentabelle. Wie heisst sie und wozu dient
sie?
• Angenommen Sie müssten eine neue kategorie „Hilfsstoffeërstellen. Wieso wird
dieser Gruppe der Primärschlüssel = 8 vergeben?
3.2 Abfragen
Formulieren Sie folgende Abfragen an die Datenbank. Benutzen Sie den Abfrage-Assistenten
und versuchen Sie die so generierte SQL-Abfrage zu verstehen. In Klammern stehen zur
Selbstkontrolle die Anzahl Treffer, die Sie bei der Abfrage erreichen sollten.
3.2.1 Liste aller Nahrungsmittel
Erstellen Sie eine Liste aller Nahrungsmittel (48).
SELECT __________________________________________________
FROM
__________________________________________________
4
3.2.2 Ein Nahrungsmittel finden
Finden Sie das Nahrungsmittel mit der id = 1000826. Nur der Lebensmittelname (name)
soll angezeigt werden (1).
SELECT __________________________________________________
FROM
__________________________________________________
WHERE
__________________________________________________
3.2.3 SQL-Abfrage erstellen
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;
3.2.4 Lebensmittel für Wettkampfsportler finden
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?
Welche Lebensmittel erfüllen die Vorgaben des Kugelstössers und wie lautet die Abfrage?
3.3 Änderung und Erweiterung der Datenbank
5
3.3.1 Ä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ßondern nach „Teilentrahmtßortiert.
• Ändern Sie diesen Nahrungsmittelnamen in „Milch, teilentrahmt, pasteurisiert“.
3.3.2 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
Geisser
Angela
Ernährungsberaterin
4
Brügger
Tamara
Kantonschemikerin
1
Müller
Philipp
Biologe
2
Bühler
Toni
Käsermeister
3
Betschart
Benjamin
Metzgermeister
5
Valser
Antoinetta
Lebensmittelchemikerin
6
Stadler
Clemens
Immunologe
• Erstellen Sie die Tabelle und geben Sie die Daten ein.
• 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.
3.3.3 Testen der Erweiterung
• Wie viele Lebensmittel werden von Herrn Stadler betreut?
• Wie heisst die zuständige Kontaktperson für das Nahrungsmittel „Spargel“?
• 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?
6
• Erstellen Sie eine Liste, welche alle in der Datenbank enthaltenen Wasserarten
auflistet (Seewasser, Grundwasser, usw.)
Tipp: Für diese „offeneÄbfrage 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.). Beachten Sie, dass das WildcardZeichen 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 folgende Fragen erklären würden:
•
•
•
•
•
•
•
•
•
Wie werden Daten in einer relationalen Datenbank organisiert?
Was ist der Unterschied zwischen Datenlisten und einer Datenbankrelation?
Welche Datenbank-Schlüssel gibt es und wozu dienen sie?
Was versteht man unter referentieller Integrität?
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?
Wieso benötigt man in SQL-Abfragen relationale und logische Operatoren? Erkären
Sie anhand eines Beispiels.
Wozu dient das JOIN...ON?
Zeigen Sie anhand eines Beispiels, wie JOIN...ON-Abfragen in WHERE-Abfragen
umgewandelt werden können.
Die Begriffe dieses Kursmoduls sollten Sie mit einfachen Worten erklären können.
7
Herunterladen