PMG1719/DB Beleg/Lea Sophie

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>

== '''Tierheim-Datenbank''' ==

== 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 und vor allem die Tiere können schnell in ein schönes neues Zuhause vermittelt werden. 

[[Bild:Lea Sophie_Dog-house.png|100px]]





== Modellierung eines ERM ==

[[Bild:Lea Sophie_ERM_(2).png|1400px]]

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. Diese müssen nicht immer zu Tabellen werden (s. Kardinalitäten).

2. Die Kardinalitäten:

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

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

  Die '''1:n Kardinalität''' besagt, das 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` den 
  Fremdschlüssel I_Nr (Interessenten Nummer) einsetzt und somit eine eindeutige Beziehung herstellt.

Ein

== Erstellen eines RM ==

[[Bild:Lea Sophie_RM(2).png|1400px]]

== Übertragung in ein Datenbanksystem ==

1. Schritt: Tabellen erstellen

<code id="5c38475e0015d"> 
CREATE TABLE Tierheim (
  TH_Nr INTEGER,
  Name VARCHAR (30),
  Straßenname VARCHAR(25),
  Straßennummer INTEGER,
  PLZ INTEGER,
  PRIMARY KEY(TH_Nr)
);

CREATE TABLE Interessenten (
  I_Nr INTEGER,
  Name VARCHAR(255),
  Vorname VARCHAR(255),
  Familie VARCHAR(5),
  Erfahrung VARCHAR(5),
  Telefon VARCHAR(255),
  PRIMARY KEY(I_Nr)
);

CREATE TABLE Tiere (
  TH_Nr INTEGER,
  T_Nr INTEGER,
  Art VARCHAR(255),
  Name VARCHAR(255),
  Lebensalter INTEGER,
  familienfreundlich VARCHAR(5),
  anfaengergeeignet VARCHAR(5),
  Status VARCHAR(255),
  Interessent INTEGER,
  PRIMARY KEY(T_NR)
);

CREATE TABLE Oeffnungszeiten (
  TH_Nr INTEGER,
  Wochentag VARCHAR(255),
  oeffnet TIME,
  schliesst TIME,
  Status VARCHAR(255)
);

CREATE TABLE infomiert_sich (
  TH_Nr INTEGER,
  I_Nr INTEGER
);
</code>

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

<code id="5c4a366dbfcf5">

INSERT INTO Tierheim VALUES
  (1,'Tierheim Sonnenschein', 'Hauptstraße', 32, 12345);
INSERT INTO Tierheim VALUES
  (2,'Tierheim 4 Pfoten','Friedensweg', 4, 34679);


INSERT INTO Interessenten VALUES
   (1, 'Heidelbaum', 'Olivia', 'Nein', 'Ja', 0234680);

</code>

<run id="5c4a382642d1c">
</run>

== Abfragen ==

----

== Kritische Reflektion ==

----