Lea Sophie

Aus ProgrammingWiki
Archivierte Version vom 2019-01-29T21:09:24+00:00. Aktuelle Version

Inhaltsverzeichnis

Tierheim-Datenbank

! ICH BRAUCHE NOCH ZEIT ! (Abgabe bis 30.01.2019, 23:59)

Begründung der Themenwahl

Man sagt es nicht umsonst: Der Hund ist der beste Freund des Menschen. Denn die Nachfrage, sich einen Vierbeiner oder ein anderes Haustier anzuschaffen ist hoch. Doch viele Interessierte orientieren sich beim Kauf im Internet oder gehen zu bestimmten Züchtern. Dabei könnte der Traumhund gleich im lokalen Tierheim sitzen! Das Tierheim bietet die einzigartige Möglichkeit als Vermittler zwischen den Parteien zu agieren. Die Mitarbeiter kennen sowohl ihr Tiere mit ihren guten und schlechten Seiten und bemühen sich die interessierten Käufer zu analysieren. Es werden viele Informationen gesammelt und Schnittstellen gefunden. Wenn der Kunde eine Familie mit kleinen Kindern hat, so ist es von Bedeutung, ob das Tier für Familien geeignet ist. Wenn so viele Daten aufeinander treffen macht es sich gut, diese zu digitalisieren, um sich möglichst schnell einen Überblick verschaffen zu können.


Nichts liegt da näher als die Erstellung einer benutzerfreundlichen, effizienten und zuverlässigen Datenbank. Die Interessenten können sich informieren über die Öffnungszeiten oder das Tierheim allgemein, die Mitarbeiter des Tierheims haben eine Übersicht über alle wichtigen Daten der Kunden und Tiere. Somit können die Tiere schnell in ein schönes neues Zuhause vermittelt werden.

Ziel dieses DB-Beleg ist es das erlernte Wissen über Datenbanken und ERM nun praktisch anzuwenden und kreativ umzusetzen. Dabei ist mir wichtig einen Bezug zur Wirklichkeit herzustellen. Auch wenn die gewählten Datensätze frei erfunden sind, ist eine Datenbank für ein Tierheim durchaus eine realistische Investition.

Lea Sophie_Dog-house.png


Modellierung eines ERM

Lea Sophie_ERM_(2).png


1. Allgemeine Struktur

Ein ERM ist ein "Entity-Relationship-Modell", welcher der Vereinfachung einer großen Menge dient. Dabei werden diese auf ihre Grundlegendsten Bestandteile und Beziehungen zueinander heruntergebrochen. Man verschafft sich somit einen Überblick über die nötigen Tabellen und den allgemeinen Umfang. Da eine Datenbank später übersichtlich und benutzerfreundlich sein soll ist besonders auf die Anwenderfreundlichkeit zu achten. Um diesen komplexen Sachverhalt nun vereinfacht dazustellen nutzt man in der Modellierung verschiedene geometrische Formen:

 Alle Objekte (bzw. Entitäten) werden in Rechtecken dargestellt. Sie werden später als Tabellen implementiert.
 Alle Eigenschaften (bzw. Attribute) der Objekte werden in Ellipsen gefasst und mit dem zugehörigen Objekt verbunden.
 Alle Relationen (bzw. Relationships) der Objekte werden durch Rhomben verkörpert. Sie müssen nicht immer zu Tabellen werden.

2. Die Kardinalitäten

Doch nicht jede Verbindung zwischen den Objekten ist gleich zu werten. Es gibt verschiedene Beziehungstypen - auch Kardinalität genannt.

Die 1:1 Beziehung besagt, dass sich 2 Attribute GENAU einander zuordnen lassen. Somit können sie auch in EINE Tabelle gefasst werden.

Die 1:n Beziehung besagt, dass der einen Objektklasse viele Objekte zugeschrieben werden können, aber nicht umgekehrt. Ein Beispiel aus diesem Beleg ist, dass ein Interessierter sich für mehrere Hunde interessieren kann aber nicht umgekehrt. Der Hund wird später nur an eine Person vermittelt. Diese Beziehungen können hergestellt werden in dem der Primärschlüssel in Form eines Fremdschlüssels in die andere Tabelle eingesetzt wird. An unserem Beispiel kann man dies daran erkennen, dass ein Interessent sich ein Tier reservieren kann ihn dem in der Tabelle `Tiere` der Fremdschlüssel I_Nr (Interessenten Nummer) einsetzt wird und somit eine eindeutige Beziehung herstellt ist.

Die n:m Beziehung besagt, dass viele Objekte mit vielen anderen Objekten in Verbindung stehen. So können sich beliebig viele Menschen in beliebig vielen Tierheimen informieren. Diese komplexe Art der Beziehung wird in Form von einer Tabelle, welche beide Primärschlüssel enthält umgesetzt. Diese eigenständige Tabelle kann zusätzlich auch eigene Attribute enthalten.


Erstellen eines RM

Lea Sophie_RM_(3).png

1. Die Normalisierung

Die erste Normalform (1NF) verlangt, dass nicht mehrere Informationen in einen Datenfeld geschrieben werden dürfen. Dieses Problem wurde gelöst.Es gibt kein Feld in dem mehr als eine Information steht.

Die zweite Normalform (2NF) verlangt, das Änderungen einheitlich vorgenommen werden können. Dies wird durch Primärschlüssel und die Aufsplatung großer Datensätze in kleinere Tabellen gewährleistet.

Die dritte Normalform (3NF) verlangt, dass die Primärschlüssel bei komplexen Beziehungen zwischen zwei Daten Typen in eine extra Tabelle geschrieben werden müssen (in Form von Fremdschlüsseln). Auch dies wurde gelöst (Bsp. TH_Nr in Tabelle Tierheim)


Übertragung in ein Datenbanksystem

1. Schritt: Tabellen erstellen

2. Schritt: Tabellen mit Datensätzen, also "Leben" füllen

Abfragen

1.Stufe - leichte Abfragen

1. Aufgabe:

Zeige alle Tiere.
Lösung
 SELECT * FROM Tiere; 

2. Aufgabe:

Sortiere die Tiere nach ihrem Lebensalter (aufsteigend).
Lösung
 SELECT Name, Art, Lebensalter FROM Tiere ORDER BY Lebensalter; 

2.Stufe - umfänglichere Abfragen

3. Aufgabe:

Zeige alle Tiere die im Tierheim "4 Pfoten" leben.
Lösung
 SELECT Tiere.art, Tiere.Name FROM Tiere, Tierheim WHERE Tierheim.Name = 'Tierheim 4 Pfoten' AND Tiere.TH_Nr = Tierheim.TH_Nr;

4. Aufgabe:

Der Wellensittich hat ein neues Zuhause gefunden. Ändere dies in seinem Datensatz (Status).
Lösung
UPDATE Tiere set Status = 'schon vermittelt' WHERE Art = 'Wellensittich'; SELECT Status FROM Tiere WHERE Tiere.Art = 'Wellensittich';

3.Stufe - komplexe Abfragen

5. Aufgabe:

Olivia Heidelbaum sucht einen geeigneten Hund für sich, der nicht älter als 2 Jahre ist.

Suche einen passenden Hund heraus und beachte dabei die geforderten Faktoren.

Lösung
SELECT Tiere.Art, Tiere.Name, Tiere.familienfreundlich, Tiere.anfaengergeeignet, Tiere.Lebensalter FROM Tiere, Interessenten WHERE Tiere.Art = 'Hund' AND Tiere.Lebensalter <= 2 AND 
Interessenten.Name = 'Heidelbaum' AND Interessenten.Vorname = 'Olivia'  AND Interessenten.Familie = Tiere.familienfreundlich AND Interessenten.Erfahrung = Tiere.anfaengergeeignet;


6. Aufgabe:

Reserviere nun einen geeigneten Hund für Olivia Heidelbaum.
Hinweis
Ihre Interessenten-Nummer beachten (I_Nr = 1)
Lösung
UPDATE Tiere set Status = 'reserviert', Interessent = 1 WHERE Name = 'Lexie'; SELECT Status, Interessent FROM Tiere WHERE Name = 'Lexie';


7. Aufgabe:

Welches Tierheim hat am Mittwoch um 14:00 Uhr offen?
Lösung
SELECT Tierheim.Name, Oeffnungszeiten.Wochentag, Oeffnungszeiten.oeffnet, Oeffnungszeiten.schliesst FROM Tierheim, Oeffnungszeiten WHERE Oeffnungszeiten.Wochentag = 'Mittwoch' AND Oeffnungszeiten.schliesst >= '14:00:00' AND Tierheim.TH_Nr = Oeffnungszeiten.TH_Nr;

Kritische Reflektion

Ich bin der Meinung, dass diese Datenbank ein guter Beleg dafür ist, wie praktisch die Nutzung in verschiedensten Bereichen sein kann.