<
>
swopdoc logo
Download
a) trade for free
b) buy for 3.75 $
Document category

Protocol
Information Technology / Computer S

University, School

Wilhelm-Ostwaldgymnasium Leipzig

Author / Copyright
Text by Rita K. ©
Format: PDF
Size: 0.28 Mb
Without copy protection
Rating [details]

Rating 5.0 of 5.0 (3)
Live Chat
Chat Room
Networking:
0/0|0[-1.0]|1/4







More documents
Bevölkerung 2050- Sollte man sich Sorgen machen? Was hat die Geburtenrate, die Lebenserwartung und die Migration gemeinsam? Auf den ersten Blick scheinbar nur die deutsche Herkunft des Wortes, doch auf den zweiten Blick stellen sie sich als die wichtigsten Faktoren für die Bevölkerungszah­l eines Landes heraus. Tatsächlich ist es mit der Bevölkerung schon so weit gekommen, dass man angefangen hat sich darüber Gedanken zu machen, ob es noch in 20-30 Jahren die Gemütlichkeit der Lebensqualität geben wird. Doch ist diese Vorsorge…

Informatik-Projekt - Datenbank-Praktikum


Tierdatenbank mit XAMP

Inhaltsverzeichnis

1. Einleitung

2. Entwicklung

            2. 1 Verbale Beschreibung

            2. 2 Zielstellung

            2. 3 Entity-Relationship-Diagramm

            2. 4 Transformation

            2. 5 Tabelleninstanzdiagramme

3. Implementierung

            3. 1 SQL-Anweisungen für das Erstellen der Tabellen

            3. 2 SQL-Abfragen

4. Schluss

5. Anhang

6. Quellen


  1. Einleitung

Im Rahmen unseres Informatikunterrichts bekamen wir die Aufgabe, eine Datenbank für einen uns bekannten Ausschnitt der realen Welt zu erstellen. Da ich mich besonders für Tiere interessiere und auch gerne in den Leipziger Zoo gehe, entschied ich mich, eine Datenbank über die Tierarten im Leipziger Zoo zu entwickeln. In dieser sollte man einzelne Arten leicht vergleichen und einiges an Informationen über diese Arten speichern können.

Im Zoo findet man auch oft Schilder auf denen beschrieben ist, wo das jeweilige Tier vorkommt und welche Feinde es hat. Auch diese Informationen sollten in der Datenbank abgespeichert werden.


2.   Entwicklung

            2. 1 Verbale Beschreibung

Im Leipziger Zoo sind Daten über die verschiedenen Tierarten abzuspeichern. Über die Tierarten sind verschiedenste Merkmale bekannt, wie z.B. die durchschnittliche Größe, die Lebenserwartung und das Gewicht eines ausgewachsenen männlichen Tieres.

Die Tierarten kommen freilebend in verschiedenen Ländern vor, über welche man die Hauptstadt, Fläche, Einwohnerzahl und Bevölkerungsdichte weiß. Da die Tiere im Zoo nach ihren Kontinenten angeordnet sind, sind auch Informationen über die Kontinente (Name, Fläche, Einwohnerzahl, Bevölkerungsdichte) interessant.


            2. 2 Zielstellung

Mit der Datenbank sollte man verschiedenste Dinge erfahren können.

Beispiele für Fragestellungen:


1. Wie groß ist ein Tier?

2. Wie schwer wird das Tier durchschnittlich?

3. Welchen lateinischen Namen hat das Tier?

4. In welchen Ländern kommt das Tier vor?

5. Welche Tiere kommen in dem jeweiligen Land vor?

6. Wie heißen die Hauptstädte der Länder , in denen das Tier vorkommt?

7. Welche Tiere kommen in dem jeweiligen Kontinent vor?

8. Welche Tiere kommen in dem Land mit der jeweiligen Einwohnerzahl/Bevölkerungsdichte/ Fläche vor?

9. Welche Tiere kommen in dem Kontinent mir der jeweiligen Einwohnerzahl/ Bevölkerungsdichte/ Fläche vor?

10. Welche anderen Tiere sind natürliche Feinde des Tieres?


            2. 3 Entity-Relationship-Diagramm

Im Entity-Relationship-Modell werden die vorkommenden real existierenden Gegenstände in Bezug zueinander dargestellt.  Man kann die Entitäten Tier, Land und Kontinent festlegen. Um die Feindbeziehung im ER-Diagramm darzustellen, wird die Entität Tier zweimal dargestellt.

Jedes Tier kann mehrere Feinde haben und der Feind mehrerer Tiere sein, demnach  ist dies eine m:n Beziehung.

Download Datenbank-Praktikum: Tierdatenbank mit XAMP - Implementierung mittels SQL Anweisungen und Abfragen
Click on download to get complete and readable text
• This is a free of charge document sharing network
Upload a document and get this one for free
• No registration necessary, gratis

In einem Land kommen viele Tiere vor und ein Tier kann in mehreren Ländern vorkommen, deswegen liegt auch hier eine m:n Beziehung vor. Jedem Land kann man jedoch genau einen Kontinent zuordnen, so dass man eine n:1 Beziehung zwischen Land und Kontinent hat.


            2. 4. Transformation

Da für jede Entität im ER-Diagramm eine Relation erstellt wird, erhält man zunächst folgende Relationen (ohne Betrachtung der Beziehungen)

TIER (t-id, name, latein, groesse, lebenserwartung, gewicht)

LAND (l-id,name,  flaeche, einwohnerzahl, bevoelkerungsdichte)

KONTINENT(k-id, name, flaeche, einwohnerzahl, bevoelkerungsdichte)


Die erste Normalform trifft zu, da alle Attributwerte atomar sind, also nicht aus mehreren Werten zusammen gesetzt sind. Die Eigennamen werden dabei nicht in mehrere Attribute aufgeteilt.


Nun betrachtet man die Beziehungen der Entitäten untereinander.

Im ER-Diagramm wurde bereits für jede Tierart, jedes Land und jeden Kontinent eine ID eingeführt, welche als Primärschlüssel dient.  Da zwei m:n Beziehungen vorliegen  müssen noch zwei Zuordnungstabellen (Tier zu Land → TLAND und Tier zu Feind → FEIND) erstellt werden. Durch die 1:n Beziehung zwischen Kontinent und Land, wird die Kontinent-ID als Fremdschlüssel in die LAND-Relation eingeführt. Man erhält folgende Relationsschemata:


TIER (tid, name, latein, groesse, lebenserwartung, gewicht)

LAND (lid,name,  flaeche, einwohnerzahl, bevoelkerungsdichte, kid)

KONTINENT(kid, name, flaeche, einwohnerzahl, bevoelkerungsdichte)

FEIND( tid, tid)

TLAND( tid, lid)


Die zweiten Normalform ist erfüllt. Dazu müssen alle Nicht-Schlüssel-Attribute von jedem Primärschlüssel vollständig funktional abhängig sein, d.h. dass es man jedem Primärschlüssel genau einen Wert für jedes Nicht-Schlüssel-Attribut zuordnen kann. Bei zusammengesetzten Primärschlüsseln ist zu überprüfen, ob die Attribute von allen Teilen des Primärschlüssels abhängig sind.

FEIND(bezid, tid, tid)

TLAND(tlid, tid, lid)

In der dritten Normalform darf ein Nicht-Schlüssel-Attribut nicht transitiv von einem Schlüssel abhängig sein. Transitiv abhängig ist ein Attribut, wenn es indirekt über  ein anders Attribut vom Schlüssel-Kandidaten abhängig ist.

Dies ist nicht der Fall, so dass die dritte Normalform erfüllt ist.


TIER (tid, name, latein, groesse, lebenserwartung, gewicht)

FEIND( bezid, tid, tid)

LAND (lid,name,  flaeche, einwohnerzahl, bevoelkerungsdichte, k-id)

KONTINENT(kid, name, flaeche, einwohnerzahl, bevoelkerungsdichte)

TLAND(tlid, tid, lid)

            2. 5 Tabelleninstanzdiagramme

Die Tabelleninstanzdiagramme für jede Relation findet man im Anhang. Exemplarisch ausgewählt wurde das TIC der Tabelle Tier, da diese Tabelle die wichtigste ist.


TIER

tid

name

latein

groesse

lebenserwartung

gewicht

Schlüsseltyp

PK

-

-

-

-

-

Optionen

NN,U, AI

-

-

-

-

-

Datentyp

INT

VARCHAR

VARCHAR

INT

INT

INT

Maximale Länge

4

60

60

3

3

4

Beispieldaten

1

'Afrikanischer Löwe'

'Panthera leo'

170

30

200

In der Tabelle Tier wurde die Tier- ID als Primärschlüssel ausgewählt, diese sollte automatisch jedem Tier zugewiesen werden, damit die ID eindeutig ist und nicht den Wert NULL enthält. Alle anderen Attribute können unbekannt sein und daher müssen sie auch keine Werte enthalten.

Ein Tier wird dabei nicht über 10m groß oder über 1000 Jahre alt, wodurch man die Länge begrenzt auf drei Stellen. Da es Tiere gibt die über eine Tonne wiegen, wird hier die Länge des Gewichts auf vier Stellen begrenzt.

Der Name und der lateinische Name bestehen aus jeweils einer Zeichenkette mit maximal 60 Zeichen.  Um Speicherplatz zu sparen wird der Datentyp VARCHAR statt CHAR benutzt.


  1. Implementierung

            3. 1 SQL-Anweisungen für das Erstellen der Tabellen

Zunächst wurde die Tabelle Tier und die Tabelle Kontinent erstellt.

Erst dann können die Tabellen Land und Feind erstellt werden, da sie sich mit Fremdschlüssen auf die Tabelle Kontinent bzw. auf die Tabelle Tier beziehen.


Exemplarisch ausgewählt wurde auch hier die Tabelle Tier:

CREATE TABLE tier

Eine Tabelle mit dem Namen Tier wird erstellt.

(tid  INT(4) primary key auto_increment,

In der ersten Spalte soll sich der Primärschlüssel Tier- ID befinden. In dieses werden automatisch natürliche Zahlen von 1 bis 9999 beim hinzufügen von Datensätzen eingefügt.

name VARCHAR (60),

In der zweiten Spalte soll sich das Attribut Name befinden. Dieses Attribut enthält Strings mit variabler Zeichenlänge, darf jedoch nicht über 60 Zeichen enthalten.

latein VARCHAR (60),

Erfolgt analog zum Namen.

groesse INT (3),

In der vierten Spalte soll sich das Attribut Größe befinden. Dieses enthält natürliche Zahlen von 1-999.

gewicht INT(4);

Erfolgt analog zur Größe. Das Gewicht darf Werte von 1 bis 9999 enthalten. Das Semikolon beendet die Anweisung.


Die Erstellung der anderen Tabellen erfolgt analog. In die Tabellen Land, Feind und die Tier-Land-Zuordnung müssen jedoch noch Fremdschlüssel gekennzeichnet werden. Exemplarisch wird dies an der Tabelle Land gezeigt.


ALTER TABLE land

Die bereits existierende Tabelle Land wird geändert.

ADD foreign key (kid)

Das Attribut Kontinent-ID wird als Fremdschlüssel festgelegt.

REFERENCES kontinent (kid)

Dieser bezieht sich auf die Tabelle Kontinent in der die Spalte Kontinent-ID gibt.

ON DELETE RESTRICT

ON UPDATE RESTRICT;

Wenn der Datensatz mit Fremdschlüssel gelöscht  oder der Fremdschlüssel geändert wird, wird der Primärschlüssel (Kontinent-ID in der Tabelle Kontinent)  nicht verändert.



INSERT INTO tier

In die Tiertabelle wird ein Datensatz eingefügt.

(tname, latein, groesse, lebenserwartung, gewicht)

Dabei sollen in diese Spalten folgende Werte eingefügt werden.

VALUES

('Afrikanischer Löwe', 'Panthera leo',170,30,200);

Das Einfügen weiterer Datensätze erfolgt analog. In Tabellen mit Fremdschlüssel muss auch dem Fremdschlüssel ein Wert zugewiesen werden.

            3. 2 SQL-Abfragen

Zu den ausgesuchten Fragestellungen werden nun die Abfragen erläutert.

1. Wie viel groß wird das Tier 'Afrikanischer Löwe'?

SELECT name 'Tier', SUM( groesse ) 'Größe in cm'

Es wird die Spalte Name, welche als Tier bezeichnet wird, und die Spalte Größe Name, welche als Größe in cm bezeichnet wird

aus der Tabelle Tier ausgewählt,
WHERE name = 'Afrikanischer Löwe'
;

in allen Zeilen wo der Name Afrikanischer Löwe ist.

(Die Summe wurde nur ausgeführt damit die Formatierung etwas schöner aussieht.)


2. Wie schwer wird das Tier 'Amurtiger' (erfolgt analog zu 1.)

SELECT name 'Tier', gewicht 'Gewicht in kg'
FROM tier
WHERE name = 'Amurtiger'
;


3. Welchen lateinischen Namen hat das Tier 'Grevy Zebra'? (analog zu 1.)

SELECT name 'Tier', latein 'Lateinischer Name'
FROM tier
WHERE name = 'Grevy Zebra'
;


4. In welchen Ländern kommt das Tier 'Thomsongazelle' vor?

CREATE VIEW tierland AS

Es wird beim ersten Ausführen der Abfrage ein View namens tierland erzeugt.

In diesen View wird der Name und die zugehörigen Land-IDs angezeigt, welche man aus einem Join von der Tier-Land-Zuordnungstabelle und der Tiertabelle erhält (die Tier-ID der Tabelle Tier und die Tier- ID der Tier-Land-Zuordnungstabelle müssen gleich sein) .

SELECT name 'Tier', lname 'Land' FROM tierland INNER JOIN land ON

Nun kann man den View tierland mit der Tabelle joinen, so dass man sich den Tiernamen und die zugehörigen Landnamen anzeigen lassen kann.

 tierland.lid=land.lid  WHERE name='Thomsongazelle';


5. Welche Tiere kommen in 'Äthiopien' vor?

CREATE VIEW landtier AS

SELECT tid,lname,lflaeche, lezahl, kid FROM land INNER JOIN tland ON land.lid=tland.lid;

SELECT lname 'Land', name 'Tier'

FROM landtier

INNER JOIN tier ON tier.tid = landtier.tid WHERE lname='Äthiopien';


6. Wie heißen die Hauptstädte der Länder in denen das Tier 'Ocelot' vorkommt?

SELECT name 'Tier', lname 'Land', lstadt 'Hauptstadt' FROM tierland INNER JOIN land ON tierland.lid=land.lid  WHERE name='Ocelot';


7.Welche Tiere kommen in Afrika vor?

CREATE VIEW kontinentland AS

SELECT lid, lname,lstadt, lflaeche, lezahl, ledichte, kname, kflaeche, kezahl, kedichte, klander

FROM land INNER JOIN kontinent ON land.kid = kontinent.kid;

//nur beim ersten Ausführen der Abfrage notwendig

SELECT DISTINCT kname 'Kontinent', name 'Tier'

FROM tierland

INNER JOIN kontinentland ON tierland.lid = kontinentland.lid WHERE kname='Afrika';


SELECT name 'Tier', lname 'Land', lezahl 'Einwohnerzahl'

FROM landtier

INNER JOIN tier ON tier.tid = landtier.tid WHERE lezahl>1000000;


9. Welche Tiere kommen in einem Kontinent mit einer Bevölkerungsdichte von unter 30 Menschen pro Quadratkilometer vor?

SELECT DISTINCT name 'Tier', kname 'Kontinent', kezahl 'Einwohnerzahl'

FROM tierland

INNER JOIN kontinentland ON tierland.lid = kontinentland.lid WHERE kedichte<30;


10. Welche Feinde hat die Thomsongazelle? (mit allen Eigenschaften der Tiere)

CREATE VIEW tierfeind AS

SELECT tid1, name , latein , groesse , lebenserwartung , gewicht , tid2

FROM tier INNER JOIN feind ON tier.tid = feind.tid1;


SELECT tid1,tierfeind.name 'Tier',tierfeind.latein 'lateinischer Name des Tieres', tierfeind.groesse 'Größe des Tieres', tierfeind.lebenserwartung 'Lebenserwartung des Tieres', tierfeind.gewicht 'Gewicht des Tieres', tid2, tier.name 'Feind', tier.latein 'lateinischer Name des Feindes', tier.groesse 'Größe des Feindes', tier.lebenserwartung 'Lebenserwartung des Feindes', tier.gewicht 'Gewicht des Feindes' FROM tierfeind Inner Join tier On tierfeind.tid2=tier.tid WHERE tierfeind.name='Thomsongazelle';

Man sollte die Datenbank jedoch um viele weitere Datensätze erweitern, um einen wirklichen Nutzen zu haben. Außerdem wäre es vielleicht noch nötig die Tiere in ihre Ordnungen/Gattungen usw. einzuteilen. Und man könnte die Datenbank z.B. auf die Vögel oder Fische erweitern.

Für mich war die „Tierdatenbank“ eine gute Möglichkeit, meine Kenntnisse aus dem Informatikunterricht  anzuwenden und eine ganz eigene Datenbank zu planen, sowie zu erstellen.

1313

5. Anhang

            Tabelleninstanzdiagramme

TIER

tid

name

latein

groesse

lebenserwartung

gewicht

Schlüsseltyp

PK

-

-

-

-

-

Optionen

NN,U, AI

-

-

-

-

-

Datentyp

INT

VARCHAR

VARCHAR

INT

INT

INT

Maximale Länge

4

60

60

3

3

4

Beispieldaten

1

'Afrikanischer Löwe'

'Panthera leo'

170

30

200

FEIND

bezid

tid1

tid2

Schlüsseltyp

PK

FK

FK

Optionen

NN, U, AI

NN,U

NN,U

Referenzierte Tabelle des Fremdschlüssel

-

TIER

TIER

Referenzierte Spalte des Fremdschlüssels

-

t-id

t-id

Datentyp

INT

INT

INT

Maximale Länge

4

4

4

Beispieldaten

1

2

3

TLAND

tlid

tid

lid

Schlüsseltyp

PK

FK

FK

Referenzierte Tabelle des Fremdschlüssels

-

TIER

LAND

Referenzierte Spalte des Fremdschlüssels

-

tid

lid

Datentyp

INT

INT

INT

Maximale Länge

4

4

4

Beispieldaten

1

1

11

LAND

lid

name

stadt

flaeche

ezahl

edichte

kid

Schlüsseltyp

PK

-

-

-

-

-

FK

Optionen

NN, U, AI

-

-

-

-

-

NN, U

Referenzierte Tabelle des Fremdschlüssel

-

-

-

-

-

-

KONTINENTE

Referenzierte Spalte des Fremdschlüssels

-

-

-

-

-

-

k-id

Datentyp

INT

VARCHAR

VARCHAR

INT

BIGINT

INT

INT

Maximale Länge

4

20

20

10

10

4

4

Beispieldaten

1

'Äthiopien'

'Addis Abeba'

1104300

88013500

72

1

KONTINENT

kid

name

flaeche

ezahl

edichte

länder

Schlüsseltyp

PK

-

-

-

-

-

Optionen

NN, U, AI

-

-

-

-

-

Datentyp

INT

VARCHAT

INT

BIGINT

INT

INT

Maximale Länge

1

20

10

10

4

3

Beispieldaten

1

'Afrika'

30221500

1000000000

30

54

           

SQL-Anweisungen zum Erstellen der Tabellen:

CREATE TABLE tier

(tid  INT(4) primary key auto_increment,

name VARCHAR (60),

latein VARCHAR (60),

groesse INT (3),

lebenserwartung INT (3),


Legal info - Data privacy - Contact - Terms-Authors - Terms-Customers -
Swap+your+documents