% (c) Andreas Hofmeier
% http://www.lgut.uni-bremen.de/an-h/
% http://an-h.de/ oder http://an-h.de.vu/ (ohne Werbung)
\documentclass[11pt]{article}
\usepackage{a4,german}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{ngerman}
\usepackage[dvips]{graphics}
\usepackage{latexsym}
\usepackage{exscale}
\usepackage{amssymb,amsmath}
%\documentclass[11pt]{report}
%\usepackage{isolatin1}
%\usepackage{german}
\usepackage{epsf}
\usepackage[dvips]{rotating}

\usepackage{longtable}
\usepackage{dcolumn}

\usepackage{listings}

%\usepackage{eurosym}
%\EUR{300}

\usepackage{multicol}
%\usepackage[dvips]{rotating}

%ENDHEAD

\parindent=0pt
\parskip=\baselineskip

%\setcounter{tocdepth}{4}
%\setcounter{secnumdepth}{4}

\pagestyle{plain}
%\pagestyle{myheadings}
%\markright{\mbox{\bf A. Hofmeier, Datenbanken Laborversuch}}
%\markboth{\mbox{\bf A. Hofmeier, EMT Laborversuch FS}}{\mbox{\bf A. Hofmeier, EMT Laborversuch FM}}

\begin{titlepage}
\title{Datenbanken Laborbericht}
\author{Raimund Rothammel -- Andreas Hofmeier}
%\date{12. Mai 2003}
\date{}
\end{titlepage}


\begin{document}
\maketitle

\begin{center}
\begin{tabular}{rl}

Auftraggeber: & Prof. Dr.-Ing. Uwe Meyer,\\
 & Fachhochschule Bremen \\
Abgabe am: & 17.05.2004\\
\end{tabular}

\begin{tabular}{rcll}
Andreas Hofmeier  & & & \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\
 & & &\\
Raimund Rothammel & & & \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\
 & & &\\

\end{tabular}
\end{center}



\begin{abstract}
  .  \\Dieser Bericht dokumentiert die Erstellung einer Datenbank durch
  Andreas Hofmeier und Raimund Rothammel im Zuge des Labors zur
  Datenbankvorlesung von Prof. Dr.-Ing. Meyer.\\\\Das Szenario:
  \\\\
  Sinn und Zweck dieser Datenbank soll es sein, den
  Erdkunde-Unterricht an allgemeinbildenden Schulen zu
  unterstützen. Dies soll erreicht werden, in dem viele allgemeine
  Informationen (z.B. Währung, Religion) und spezielle Informationen
  (z.B. Landkarte, Planquadrat) über Länder abgespeichert werden. Des
  weiteren sollen Namen (z.B. Flüssen, besonderen Gebäuden) mit einem
  Land in Verbindung gebracht werden können, bzw. umgekehrt.
  
\end{abstract}
\newpage

\tableofcontents
\newpage


\section{Das Szenario}

\subsection{Hintergrund}

Im Erdkundeunterricht ist es ein ständiges Ärgernis die richtige
Karte zu finden. Ist es möglich ein Land, eine Stadt oder einen Fluss
auf der Karte zu Zeigen, ohne 20 Karten durchsuchen zu müssen und dann
das Objekt der Begierde nur halb und im unteren rechten Eck der Karte
zu sehen?

Sehr Hilfreich wäre ein Assistent, der einem nach Eingabe eines Namens
(z.B. eines Berges) wichtige Daten, die Lage und die Nummer einer
passenden Karte ausgibt.


\subsection{Konkrete Anforderungen}

Die Datenbank soll Länder und Informationen über diese
verwalten. Lehrer, Schüler und allgemein Interessierte sollen in die
Lage versetzt werden Informationen über ein bestimmtes Land abzurufen:

\begin{itemize}

\item[-] Wo liegt das Land? (Geographisch und Kartenbezogen)
\item[-] Welche Nachbarn hat das Land?
\item[-] Was liegt in dem Land? (Flüsse, Berge, Städte, etc)
\item[-] Was zeichnet das Land aus?

\begin{itemize}

\item[-] Welche Sprachen werden in diesem Land gesprochen?
\item[-] Womit wird bezahlt?
\item[-] Lebenserwartung?

\end{itemize}
\end{itemize}



\section{Realisierung}

Um diesen Ansprüchen gerecht zu werden, müssen eine ganze Reihe von
Realweltobjekten in der Datenbank abgebildet werden:


\subsection{Objekte}

\begin{enumerate}

\item Kontinente, Ozeane, Länder
\item Berge, Flüsse, Seen, Städte, Wälder, Wüsten
\item besondere Bauwerke / Sehenswürdigkeiten

\end{enumerate}


\subsubsection{Beziehungen}

\begin{enumerate}

\item Länder liegen auf Kontinenten.
\item Länder liegen an Ländern oder Ozeanen
\item Flüsse, Berge, Seen, Wüsten, Wälder, Städte liegen in Ländern
\item besondere Bauwerke liegen in Städten

\end{enumerate}


\subsubsection{Eigenschaften}

\begin{enumerate}

\item 
Alle diese Objekte haben zwei Namen (einen deutschen und einen
englischen, falls einer existiert und vom deutschen abweicht), eine
Position (Ausdehnung/Fläche) und sind auf mindestens einer Karte
abgebildet.

\item Länder haben folgende Eigenschaften:

\begin{itemize}

\item[-] (Amts-)Sprache(n)
\item[-] Arbeitslosigkeit
\item[-] Bevölkerung
\item[-] Bevölkerungswachstum
\item[-] Bruttosozialprodukt
\item[-] Einwohner pro Arzt
\item[-] Fläche
\item[-] Hauptstadt
\item[-] Infrastruktur
\item[-] Inflation
\item[-] Länderdomain (Top-Level-Domain im Internet)
\item[-] Ländervorwahl
\item[-] Lebenserwartung
\item[-] Mitgliedschaft in Bündnissen
\item[-] Präsident
\item[-] Religion(en)
\item[-] Wirtschaftsform(en)
\item[-] Währung(en)
\item[-] Zeitzone(n)

\end{itemize}

\newpage
\item Flüsse

\begin{itemize}

\item[-] durchschnittliche Tiefe
\item[-] durchschnittliche Breite
\item[-] Durchfluss in Liter pro Tag
\item[-] Länge
\item[-] Mündet in Meer

\end{itemize}


\item Berge

\begin{itemize}

\item[-] max Höhe
\item[-] Typ [Vulkan, aktiver Vulkan]

\end{itemize}


\item Seen

\begin{itemize}

\item[-] max Tiefe
\item[-] durchschnittliche Tiefe
\item[-] Salz-/Süßwasser

\end{itemize}


\item Wüsten

\begin{itemize}

\item[-] Wüstenart [Sandwüsten entstehen durch Erosion von Kieswüsten,
Kieswüsten entstehen durch Erosion von Stein- und Felswüsten,
Stein- und Felswüsten (Hammada),
Salzwüsten (Salztonebene)]
\item[-] Temperatur Tag Durchschnitt
\item[-] Temperatur Tag min
\item[-] Temperatur Tag max
\item[-] Temperatur Nacht Durchschnitt
\item[-] Temperatur Nacht min
\item[-] Temperatur Nacht max
\item[-] Regenwahrscheinlichkeit

\end{itemize}


\item Wälder

\begin{itemize}

\item[-] Waldart [tropischer Regenwald, regengrüner tropischer und subtropischer Trockenwald, 
subtropischer Hartlaubgehölzwald, Monsunwald, Auwald, winterkahler
Laubwald und Mischwald der gemäßigten Zone, immergrüner borealer
Nadelwald, Bergwald, Nebelwald]
\item[-] Temperatur Tag Durchschnitt
\item[-] Temperatur Tag min
\item[-] Temperatur Tag max
\item[-] Temperatur Nacht Durchschnitt
\item[-] Temperatur Nacht min
\item[-] Temperatur Nacht max
\item[-] Regenwahrscheinlichkeit

\end{itemize}


\item Städte

\begin{itemize}

\item[-] Einwohner
\item[-] Infrastruktur
\item[-] Alter

\end{itemize}


\item besondere Bauwerke / Sehenswürdigkeiten

\begin{itemize}

\item[-] Alter
\item[-] max Höhe

\end{itemize}

\end{enumerate}


\subsection{Konventionen}

In den folgenden Tabellen werden folgende Abkürzungen und Zeichen
verwenden:

\begin{tabular}{rl}
NW & Nullwert \\
D. & Default \\
Con. & Constraint Bemerkung \\
$\rightarrow$ & Feld verweist auf vorhandenen Eintrag in Tabelle \\
$\leftarrow$ & ... wird von Tabelle verwiesen \\
PK & Primary Key \\
FK & Foreign Key \\
STRING & Steht für CHARACTER VARYING in der Datenbank \\
NUM & Steht für NUMERIC in der Datenbank \\
SERIAL & Automatisches wählen einer neuen Nummer (letzte plus eins) beim \\
       & Einfügen eines neuen Datensatzes. \\
%-	&  alle Prozent- und Temperaturangaben in der Datenbank wurden als \\
%        & NUMERIC(3,2) abgelegt \\

\end{tabular}


\subsubsection{Ein Wort zu Positionen}

Der im folgenden zur Positionsangabe eines Objektes verwendete String
enthält eine approximierte Abbildung des Objektes in Form eines Kreises
oder Rechtecks. Zu diesem Zweck wird auf eine externe Bibliothek
zugegriffen. Die Angaben werden entweder als Punkt mit Radius oder als
``links oben''-Punkt und ``rechts unter''-Punkt eines Rechtecks
gespeichert.

Das Feld {\tt winfo} ist vorgesehen um weiterführende Verweise
anzugeben. Zum Beispiel Internetadressen oder Buchnamen.


\newpage
\subsection{Tabellen/Entitys}

\subsubsection{laender}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderkontinente\\
$\leftarrow$ vlaenderozeane\\
$\leftarrow$ vlaenderberge\_gebirge\\
$\leftarrow$ vlaenderfluesse\\
$\leftarrow$ vlaenderseen\\
$\leftarrow$ vlaenderstaedte\\
$\leftarrow$ vlaenderwaelder\\
$\leftarrow$ vlaenderwuesten\\
$\leftarrow$ vlaenderbuendnisse\\
$\leftarrow$ vlaenderexportgueter\\
$\leftarrow$ vlaenderklimatypen\\
$\leftarrow$ vlaenderreligionen\\
$\leftarrow$ vlaenderrohstoffe\\
$\leftarrow$ vlaendersprachen\\
$\leftarrow$ vlaenderwaehrungen\\
$\leftarrow$ vlaenderwirtschaftformen\\
$\leftarrow$ vlaenderzeitzohnen\\
$\leftarrow$ vlaenderzfalaender\\
$\leftarrow$ nachbarlaender\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\

kennzeichen & STRING & Nein & - & - & <= 3 Zeichen \\
domain & STRING & Ja & - & - & <= 3 Zeichen, INet \\
vorwahl & STRING & Ja & - & - & Telefon \\

bevoelkerung & BIG INT & Ja & - & - & Einwohnerzahl \\
bevoelkerungswachstum & NUM & Ja & - & - & in Prozent \\
bruttosozialprodukt & NUM & Ja & - & - & in Euro \\

amtssprache & INT & Nein & - & FK & $\rightarrow$ sprachen \\
arbeitslosigkeit & NUM & Ja & - & - & in Prozent \\
einwohner\_pro\_arzt & NUM & Ja & - & - & - \\
hauptstadt & INT & Nein & - & FK & $\rightarrow$ staedte \\
infrastruktur & STRING & Ja & - & - & Kommentar \\
inflation & NUM & Ja & - & - & in Prozent \\
lebenserwartung & NUM & Ja & - & - & in Jahren\\
% Mitgliedschaft in Buendnissen & NUM & Ja & - & - & - \\
% Religion(en) & NUM & Ja & - & - & - \\
% Wirtschaftsform & NUM & Ja & - & - & - \\
% Waehrung(en) & NUM & Ja & - & - & - \\
% Zeitzone(n) & NUM & Ja & - & - & - \\
staatschef & STRING & Ja & - & - & - \\

\hline
\end{tabular}


\newpage
\subsubsection{kontinent, vlaenderkontinente}

Ein Land liegt normalerweise auf einem Kontinent, kann aber auch über
mehrere Kontinente verteilt sein. Auf einem Kontinent können mehrere
Länder liegen.

{\bf kontinente:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderkontinente\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderkontinente: kontinent $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
kontinent\_nr & INT & Nein & - & FK & $\rightarrow$ kontinente \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{ozeane, vlaenderozeane}

Ein Land kann an einem oder mehreren Ozean liegen. Es können mehrere
Länder an ein und demselben Ozean liegen.

{\bf ozeane:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderozeane\\
$\leftarrow$ zufindenauf

\end{multicols}


\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
max\_tiefe & NUM & Ja & - & - & in Metern \\
ds\_tiefe & NUM & Ja & - & - & in Metern  \\
\hline
\end{tabular}

{\bf vlaenderozeane: ozeane $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
ozean\_nr & INT & Nein & - & FK & $\rightarrow$ ozeane \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{berge\_gebirge, vlaenderberge\_gebirge, vberge\_gebirge}

Ein Berg oder ein Gebirge liegt in/an einem Land, kann sich allerdings
auch über Landesgrenzen erstrecken. Berge und Gebirge werden mit Hilfe
des Feldes Typ unterschieden. Ein Berg oder ein Gebirge kann an oder
in einem Gebirge liegen, was durch eine extra Verknüpfungstabelle
(vbergegebirge) abgebildet wird.

{\bf berge\_gebirge:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vberge\_gebirge\\
$\leftarrow$ vlaenderberge\_gebirge\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
typ & STRING & Nein & - & - & Berg/Gebirge \\
vtyp & STRING & Nein & - & - & aktiver Vulkan? \\
max\_hoehe & NUM & Ja & - & - & in Metern \\
\hline
\end{tabular}

{\bf vlaenderberge\_gebirge: berge\_gebirge $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
bg\_nr & INT & Nein & - & FK & $\rightarrow$ berge\_gebirge \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.

\newpage
{\bf vberge\_gebirge: berge\_gebirge $\stackrel{n:m}{- \lozenge -}$ berge\_gebirge}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
bg1\_nr & INT & Nein & - & FK & $\rightarrow$ berge\_gebirge \\
bg2\_nr & INT & Nein & - & FK & $\rightarrow$ berge\_gebirge \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{fluesse, vlaenderfluesse}

Ein Fluss fließt durch ein oder mehrere Länder. In einem Land können
beliebig viele Flüsse fließen. Ein Fluss kann ein Land allerdings auch
nur tangieren, das heißt, dass Land wird durch den Fluss begrenzt.

{\bf fluesse:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderfluesse\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
ds\_tiefe & NUM & Ja & - & - & in Metern \\
ds\_breite & NUM & Ja & - & - & in Metern \\
durchfluss & NUM & Ja & - & - & in Liter pro Tag \\
laenge & NUM & Ja & - & - & in Metern \\
muendet\_in\_meer & STRING & Nein & - & - & Ja/Nein \\
\hline
\end{tabular}

{\bf vlaenderfluesse: fluesse $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
fluss\_nr & INT & Nein & - & FK & $\rightarrow$ fluesse \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{seen, vlaenderseen}

Ein See kann in oder an einem Land liegen oder die Landesgrenzen
überschreiten. In einem Land kann mehr als einen See liegen.

{\bf seen:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderseen\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
wasserart & STRING & Ja & - & - & Salz/Süßwasser \\
max\_tiefe & NUM & Ja & - & - & in Metern \\
ds\_tiefe & NUM & Ja & - & - & in Metern  \\
\hline
\end{tabular}

{\bf vlaenderseen: seen $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
see\_nr & INT & Nein & - & FK & $\rightarrow$ seen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{staedte, vlaenderstaedte, bbauwerke}

Eine Stadt liegt normalerweise nur in einem Land und wird auch zu
diesem zugeordnet. Ausnahmen werden nicht berücksichtigt. Einem Land
können mehrere Städte zugeordnet sein.

Die Hauptstadt eines Landes wird vom Datensatz des jeweiligen Landes
direkt verwiesen. Zusätzlich muss die Stadt allerdings auch über die
Verknüpfungstabelle {\tt vlaenderstaedte} zugeordnet
sein. (Andernfalls wäre eine Zuordnung der Stadt zu einem Land mit der
{\tt get\_l()}-Funktion nicht möglich.

Das Gründungsjahr bezieht sich auf Christus -- also unserer
``normalen'' Zeitrechnung. Wurde die Stadt vor Christus gegründet, so
wird dies durch einen negativen Wert zum Ausdruck gebracht. 

\newpage
{\bf staedte:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderstaedte\\
$\leftarrow$ bbauwerke\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
infrastruktur & STRING & Ja & - & - & Kommentar \\
gruendungsjahr & INT & Ja & - & - & Jahr der Gründung \\
\hline
\end{tabular}

{\bf vlaenderstaedte: staedte $\stackrel{n:1}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
stadt\_nr & INT & Nein & - & FK & $\rightarrow$ staedte \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.

{\bf bbauwerke}

Es wird angenommen, dass Sehenswürdigkeiten oder ``besondere
Bauwerke'' jeweils in einer Stadt liegen oder zumindest einer Stadt
zugeordnet werden können. Es wird fernen davon ausgegangen, dass
Bauwerke keine Länder- oder Städtegrenzen überschreiten. Bauwerke können nur über
den Umweg über die Stadt einem Land zugeordnet werden.

Das Entstehungsjahr bezieht sich auf Christus -- also unserer
``normalen'' Zeitrechnung. Wurde das Objekt vor Christus gebaut, so
wird dies durch einen negativen Wert zum Ausdruck gebracht.

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
max\_hoehe & NUM & Ja & - & - & Höhe des Bauwerkes \\
entstehungsjahr & NUM & Ja & - & - & Jahr der Entstehung \\
stadt\_nr & INT & Nein & - & FK & $\rightarrow$ staedte \\

\hline
\end{tabular}



\subsubsection{waelder, vlaenderwaelder, waldtypen}

Ein Wald kann sich über mehrere Länder erstrecken oder nur in oder an
einem liegen. Ein Land kann mehr als einen Wald beheimaten.

{\bf waelder:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderwaelder\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
typ & INT & Nein & - & FK & $\rightarrow$ waldtypen \\
temp\_tag\_ds & NUM & Ja & - & - & in °C \\
temp\_tag\_max & NUM & Ja & - & - & in °C \\
temp\_tag\_min & NUM & Ja & - & - & in °C \\
temp\_nac\_ds & NUM & Ja & - & - & in °C \\
temp\_nac\_max & NUM & Ja & - & - & in °C \\
temp\_nac\_min & NUM & Ja & - & - & in °C \\
regenwahrscheinlichkeit & NUM & Ja & - & - & in \% \\
\hline
\end{tabular}

{\bf vlaenderwaelder: waelder $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
wald\_nr & INT & Nein & - & FK & $\rightarrow$ waelder \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.

{\bf waldtypen:}

$\leftarrow$ waelder

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
beschreibung & STRING & Nein & - & - & - \\
\hline
\end{tabular}




\subsubsection{wuesten, vlaenderwuesten, wuestentypen}

Eine Wüste kann sich über mehrere Länder erstrecken oder nur in oder
an einem liegen. Ein Land kann mehr als eine Wüste beheimaten.

{\bf wuesten:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderwuesten\\
$\leftarrow$ zufindenauf

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
position & STRING & Nein & - & - & - \\
flaeche & NUM & Ja & - & - & in Quadratmetern \\
winfo & STRING & Ja & - & - & - \\
typ & INT & Nein & - & FK & $\rightarrow$ wuestentypen \\
temp\_tag\_ds & NUM & Ja & - & - & in °C \\
temp\_tag\_max & NUM & Ja & - & - & in °C \\
temp\_tag\_min & NUM & Ja & - & - & in °C \\
temp\_nac\_ds & NUM & Ja & - & - & in °C \\
temp\_nac\_max & NUM & Ja & - & - & in °C \\
temp\_nac\_min & NUM & Ja & - & - & in °C \\
regenwahrscheinlichkeit & NUM & Ja & - & - & in \% \\
\hline
\end{tabular}

{\bf vlaenderwuesten: wuesten $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
wueste\_nr & INT & Nein & - & FK & $\rightarrow$ wuesten \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.

{\bf wuestentypen:}

$\leftarrow$ wuesten

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
beschreibung & STRING & Nein & - & - & - \\
\hline
\end{tabular}





\subsubsection{buendnisse, vlaenderbuendnisse}

Jedes Land kann beliebig vielen Bündnissen (EU, NATO, etc) zugeordnet
werden. Ein Bündnis enthält mehrere Länder.

{\bf buendnisse:}

$\leftarrow$ vlaenderbuendnisse

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderbuendnisse: buendniss $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
buendnissname\_nr & INT & Nein & - & FK & $\rightarrow$ buendnisse \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{exportgueter}

Wenn ein Land nennenswert exportiert, wird dies hier aufgeführt.

{\bf exportgueter:}

$\leftarrow$ vlaenderexportgueter

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderexportgueter: exportgueter $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
exportgut\_nr & INT & Nein & - & FK & $\rightarrow$ exportgueter \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}
\\\\Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{klimatyp, vlaenderklimatypen, klimazonen, vklimatypenzonen}

Das Klima eines Landes wird beschrieben durch den Klimatyp. Der
Klimatyp wiederrum setzt sich aus mehreren Klimazonen zusammen.

{\bf kimatypen:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ vlaenderklimatypen\\
$\leftarrow$ vklimatypenzonen

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
\hline
\end{tabular}

{\bf vlaenderklimatypen: klimatypen $\stackrel{1:n}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
klimatyp\_nr & INT & Nein & - & FK & $\rightarrow$ klimatypen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.

{\bf klimazonen:}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
beschreibung & STRING & Nein & - & - & - \\
\hline
\end{tabular}

{\bf vklimatypenzonen: klimatypen $\stackrel{n:m}{- \lozenge -}$ klimazonen}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
klimatyp\_nr & INT & Nein & - & FK & $\rightarrow$ klimatypen \\
klimazone\_nr & INT & Nein & - & FK & $\rightarrow$ klimazonen \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.


\subsubsection{religion, vlaenderreligionen}

In einem Land können beliebig viele Religionen ausgeübt werden. Ein
Religion kann aber auch in mehr als einem Land vorkommen.

{\bf religionen:}

$\leftarrow$ vlaenderreligionen

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderreligionen: religion $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
religion\_nr & INT & Nein & - & FK & $\rightarrow$ religionen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{rohstoffe, vlaenderrohstoffe}

In einem Land sind möglicherweise Rohstoffe zu finden. Nennenswerte
Rohstoffe werden hier aufgelistet und mit den jeweiligen Ländern
verknüpft.

{\bf rohstoffe:}

$\leftarrow$ vlaenderrohstoffe

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderrohstoffe: rohstoffe $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
rohstoff\_nr & INT & Nein & - & FK & $\rightarrow$ rohstoffe \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{sprachen, vlaendersprachen}

Es wird unterschieden zwischen der landesweiten Amtssprache, welche
direkt von der Land-Tabelle auf die Sprache-Tabelle zeigt und den in
einem Land gesprochenden Sprachen, welche über die Verknüpfungstabelle
{\tt vlaendersprachen} zugeordnet werden. Die Amtssprache muss
zusätzlich in der Verknüpfungstabelle aufgeführt sein, damit eine
Zuordnung mit Hilfe von {\tt get\_l()} möglich ist.


{\bf sprachen:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ laender\\
$\leftarrow$ vlaendersprachen

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Nein & - & - & UNIQ \\
winfo & STRING & Nein & - & - & - \\
\hline
\end{tabular}

{\bf vlaendersprachen: sprache $\stackrel{n:m}{- \lozenge -}$ laender:}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
sprache\_nr & INT & Nein & - & FK & $\rightarrow$ sprachen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{waehrungen, vlaenderwaehrungen}

Gezahlt wird in einem Land mit einer oder beliebig vielen
Währungen. Ein und die selbe Währung kann in mehr als einem Land
vorkommen.

{\bf waehrungen:}

$\leftarrow$ vlaenderwaehrungen

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

\newpage
{\bf vlaenderwaehrungen: waehrungen $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
waehrung\_nr & INT & Nein & - & FK & $\rightarrow$ waerungen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{wirtschaftsform, vlaenderwirtschaftformen}

In einem Land können beliebig viele Wirtschaftsformen aufweisen. Eine
Wirtschaftsform kann in mehr als einem Land vorkommen.

{\bf wirtschaftsformen:}

$\leftarrow$ vlaenderwirtschaftformen

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
winfo & STRING & Ja & - & - & - \\
\hline
\end{tabular}

{\bf vlaenderwirtschaftformen: wirtschaftsform $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
wirtschaftsform\_nr & INT & Nein & - & FK & $\rightarrow$ {wirtschaftsformen} \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.



\subsubsection{zeitzonen, vlaenderzeitzonen}

Ein Land kann sich über mehr als eine Zeitzone erstrecken. In einer
Zeitzone sind allerdings meinst mehrere Länder beheimatet.


\newpage
{\bf zeitzonen:}

$\leftarrow$ vlaenderzeitzonen

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
abkuerzung & STRING & Ja & - & - & Offizielle \\
zeitverschiebung & NUM & Nein & - & - & in Stunden \\
\hline
\end{tabular}

{\bf vlaenderzeitzonen: zeitzonen $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
zeitzone\_nr & INT & Nein & - & FK & $\rightarrow$ zeitzonen \\
land\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.






\subsubsection{nachbarlaender}

Ein Land kann an beliebig viele andere Länder grenzen.

{\bf nachbarlaender: laender $\stackrel{n:m}{- \lozenge -}$ laender}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
land1\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
land2\_nr & INT & Nein & - & FK & $\rightarrow$ laender \\
\hline
\end{tabular}

Die beiden FKs werden in dieser Tabelle zum PK zusammengefasst.






\subsubsection{zufindenauf, karten, kartentyp, kartenhersteller, tabellen}

In diesen Tabellen sollen alle nötigen Informationen abgelegt werden,
welche das wiederfinden des Objektes auf verschiedenen Karten
ermöglichen. Ein Objekt kann auf mehreren Karten abgebildet
sein. Eine Karte kann auch in Form eines Buches (Atlasses) vorliegen,
daher ist die Seite zu nennen. Auf eine Seite bzw. Karte können
mehrere Teilabschnitte enthalten sein, was es notwendig macht die
Abbildungsnummer (abbnr) der Karte mit abzuspeichern.

Des weiteren ist es hilfreich zu wissen, ob das Objekt der Begierde
ganz oder nur halb auf der Karte abgebildet ist und welches Teil
abgeschnitten ist. Um dies zu bewerkstelligen und um sich ein Bild von
der Lage des Objektes auf der Karte machen zu können, stellt das
Klientprogramm eine kleine Übersichtskarte (Kreis/Rechteck=Objekt in
Rechteck=Karte) da:

\centerline{\epsffile{DABL-Klient.eps}}

Um diese Darstellung zu generieren werden Lageinformationen
(Mittelpunkt und Radius des approximierenden Kreises ODER obere linke
und untere rechte Ecke des approximierenden Rechtecks) des Objektes
und die Position der oberen rechten und der unteren linken Ecke der
Karte ausgelesen. Die Angabe Darstellung in Prozent wird aus der
Datenbank entnommen. Sie kann aus den approximativen Lageinformationen
nicht genau genug gerechnet werden.

{\bf zufindenauf:}

\begin{multicols}{2}[][1cm]

$\leftarrow$ kontinente\\
$\leftarrow$ ozeane\\
$\leftarrow$ berge\_gebirge\\
$\leftarrow$ fluesse\\
$\leftarrow$ seen\\
$\leftarrow$ staedte\\
$\leftarrow$ bbauwerke\\
$\leftarrow$ waelder\\
$\leftarrow$ wuesten

\end{multicols}

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
karte & INT & Nein & - & FK & $\rightarrow$ karten \\
planquadrat & STRING & Nein & - & - & 5 Zeichen (158AZ) \\
darstellung & INT & Nein & - & - & in Prozent (100=ganzes Objekt) \\
tabellen\_nr & INT & Nein & - & FK & $\rightarrow$ intabelle \\
objekt\_nr & INT & Nein & - & FK & $\rightarrow$ (tabellen\_nr $\rightarrow$ intabelle) \\
\hline
\end{tabular}

Im Feld {\tt tabellen\_nr} wird auf den Namen der Tabelle verwiesen,
in welcher zu diesem Datensatz gehörige Objekt zu finden ist. {\tt
object\_nr} verweist auf das Objekt selber, in der eben verwiesenen
Tabelle. Es handelt sich so zu sagen um einen Doppelverweiß.

\newpage
{\bf intabelle:}

$\leftarrow$ zufindenauf

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
tabellenname & STRING & Nein & - & - & UNIQ \\
\hline
\end{tabular}


{\bf karten:}

$\leftarrow$ zufindenauf

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
hersteller\_nr & INT & Nein & - & FK & $\rightarrow$ kartenhersteller \\
typ & INT & Nein & - & FK & $\rightarrow$ kartentyp \\
version & INT & Nein & - & - & - \\
seite & INT & Nein & - & - & - \\
abbnr & INT & Ja & - & - & - \\
massstab & INT & Nein & - & - & 1:X \\
erscheinungsdatum & DATE & Nein & - & - & - \\
\hline
\end{tabular}

{\bf kartentyp}

$\leftarrow$ karten

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
beschreibung & STRING & Nein & - & - & - \\
zu finden & STRING & Nein & - & - & z.B. Raumnummer \\
\hline
\end{tabular}


{\bf kartenhersteller}

$\leftarrow$ karten

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & Def & Con. & Bemerkung \\
\hline
\hline
nr & INT & Nein & - & PK & SERIAL \\
name & STRING & Nein & - & - & UNIQ \\
\hline
\end{tabular}



\subsection{ER-Diagramm}

\centerline{\epsffile{DABL_ERDiagramm.eps}}
%\includegraphics[width=13.3cm]{DABL_ERDiagramm.eps}

\subsection{Implementierung, Normalisierung}

Im Zuge der Normalisierung, welche wir bereits im Verlauf des
Entwurfes berücksichtigt haben, haben wir zum Beispiel die Wald- und
Wüstentypen aus den entsprechenden Tabellen herausgelöst um eine
Redundanz zu vermeiden.

Die für weiterführende Informationen vorgesehenden Felder {\tt winfo}
stellen eine Schwachstelle der Normalisierung dar. Eine
Informationsquelle könnte zum Beispiel zweimal auftreten, was zu
Redundanzen führt. Des weiteren ist nicht richtig berücksichtigt, dass
auch mehrere Informationsquelle angegeben werden können. (Gut, man
könnte mit Semikolon trennen, aber sauber ist das natürlich nicht.)

Die {\tt 1:n}-Beziehungen zu Städten und Klimatypen wurden genau wie
fast alle Verknüpfungen in extra Verknüpfungstabellen gespeichert, um
eine einfacherere Verarbeitung zu ermöglichen.

Die Eingrenzung der Zahlen, zum Beispiel auf 3 Vorkomma- und 2
Nachkommastellen bei Prozentangaben mussten wir wegen Problemen mit den
Funktionen entfernen.


\subsection{Funktionen zum Zugriff auf die Datenbank}

\subsubsection{search\_all(suchstring)}

Die Funktion {\tt search\_all(suchstring)} durchsucht alle Tabellen der
Datenbank nach einem Vorkommen von {\tt suchstring} und gibt Treffer
folgendermaßen zurück:

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
tabellenname & STRING & Nein & - & - & in welcher gefunden \\
\hline
\end{tabular}

Es werden die englischen sowie die deutschen Namen mittels der {\tt
LIKE}-Anweisung untersucht. Es ist daher möglich reguläre Ausdrücke zu
verwenden:

\begin{tabular}{|r|p{9.14cm}|}
\hline
Regulärer Ausdruck & Bedeutung \\
\hline
\hline
\% & Steht für kein oder beliebig viele beliebige Zeichen \\
\hline
\end{tabular}


\subsubsection{search\_table\_<tabellenname>(suchstr)}

Die Funktion(en) {\tt search\_table\_<tabellenname>(suchstr)} durchsucht
die Tabelle {\tt tabellenname} nach einem Vorkommen von {\tt suchstr}
in den Feldern {\tt name} und {\tt name\_egl} ab. Zum Verglichen wird
die {\tt LIKE}-Anweisung verwendet, daher sind auch hier reguläre
Ausdrücke (siehe bei Funktion {\tt search\_all}) zugelassen.

Die Funktion gibt die passenden Datensätze aus {\tt tabellenname}
komplett zurück, wobei direkte {\tt n:1}-Beziehungen aufgelöst
werden. So würden zum Beispiel die Felder {\tt amptssprache} und {\tt
hauptstadt} in der Tabelle {\tt laender} automatisch eingesetzt.

Im Parameter {\tt tabellenname} erlaubte Werte:

\begin{multicols}{2}[][1cm]

\begin{itemize}

\item[-] laender
\item[-] kontinent
\item[-] ozeane
\item[-] berge\_gebirge
\item[-] fluesse
\item[-] seen
\item[-] staedte
\item[-] waelder
\item[-] wuesten
\item[-] buendnisse
\item[-] exportgueter
\item[-] klimatyp
\item[-] religion
\item[-] rohstoffe
\item[-] sprachen
\item[-] waehrungen
\item[-] wirtschaftsform
\item[-] zeitzonen
\item[-] nachbarlaender

\end{itemize}

\end{multicols}

\subsubsection{get\_l(tabellenname, suchstr)}

Die Funktion {\tt get\_l(tabellenname, suchstr)} gibt alle Länder
zurück, welche über die Tabelle {\tt vlaender<tabellenname>} mit dem
auf {\tt suchstr} passtenden Eintrag in der Tabelle {\tt tabellenname}
verknüpft sind.

Beispiel: {\tt get\_l(``religionen'', ``Buddismus'')} würde eine Liste
mit den Namen (Deutsch und Englisch) der Ländern ausgeben, in denen
der Buddismus praktiziert wird. Reguläre Ausdrücke sind hier nicht
zugelassen. Es kann also nur nach einer Religion zur Zeit gesucht
werden.

\newpage
Im Parameter {\tt tabellenname} erlaubte Werte:

\begin{tabular}{|r|p{9.86cm}|}
\hline
Wert & Verknüpfung \\
\hline
\hline

laender & Nachbar(land) zu Land \\
kontinent & Land liegt auf Kontinent \\
ozeane & Land liegt an Ozean \\
berge\_gebirge & Berge oder Gebirge liegt in/an Land \\
fluesse & Durch/an Land fließt Fluss \\
seen & In/an Land liegt See \\
staedte & Städte liegen in/an Land \\
waelder & Wälder liegen in/an Land \\
wuesten & Wüsten liegen in/an Land \\
buendnisse & Land ist Mitglied in Bündnis \\
exportgueter & Land exportiert ... \\
klimatyp & Land weißt Klimatyp auf \\
religion & In Land tritt  Religion auf \\
rohstoffe & In Land ist Rohstoff zu finden \\
sprachen & In Land wird Sprache gesprochen (nicht Amtssprache)\\
waehrungen & In Land wird mit Währung bezahlt \\
wirtschaftsform & Wirtschaftsform herrscht in Land \\
zeitzonen & Land liegt in Zeitzone \\

\hline
\end{tabular}


Rückgabetabelle:

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
\hline
\end{tabular}


\subsubsection{get\_v(tabellenname, suchstr)}

Die Funktion {\tt get\_v(tabellenname, suchstr)} macht das gleicht wie
{\tt get\_l}, nur anders herum. Sie gibt alle Namen (Englisch und
Deutsch) aus Tabelle {\tt tabellennamen} zurück, welche über die
Tabelle {\tt vlaender<tabellenname>} mit den auf {\tt suchstr} passtenden
Eintrag in der Tabelle {\tt laender} verknüpft sind.

Beispiel: {\tt get\_l(``religionen'', ``Deutschland'')} würde eine
Liste mit den Namen (Deutsch und Englisch) aller Religionen
zurückgeben, welche in Deutschland praktiziert werden (Falls diese in
der Datenbank eingetragen sind). Reguläre Ausdrücke sind hier nicht
zugelassen. Es kann also nur nach den Religionen in einem
Land zur Zeit gesucht werden.

Im Parameter {\tt tabellenname} erlaubte Werte:

Siehe Funktion {\tt get\_l()}.

Rückgabetabelle:

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
\hline
\end{tabular}


\subsubsection{get\_berge\_in\_gebirgen(name)}

Die Funktion {\tt get\_berge\_in\_gebirgen(name)} liefert eine Tabelle mit
den Namen (Deutsch, Englisch) aller Berge/Gebirge in/an dem
Berg/Gebirge {\tt name} liegt.

Rückgabetabelle:

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
name & STRING & Nein & - & - & UNIQ \\
name\_egl & STRING & Ja & - & - & UNIQ \\
\hline
\end{tabular}


\subsubsection{get\_liegtauf(tabellenname, name)}

Die Funktion {\tt get\_liegtauf(tabellenname, name)} sucht alle
Informationen heraus, die zum Wiederfinden eines Objektes (z.B. Land,
Stadt, Fluss) notwendig sind. Das Objekt wird beschirieben durch seinen
Namen {\tt name} und dem Namen {\tt tabellenname} der Tabelle in dem
es liegt. Reguläre Ausdrücke sind nicht erlaubt.

Die Funktion sucht zu erst die zu dem Objekt (z.B. Land, Fluss) mit
dem Namen {\tt name} gehörige ID in der Tabelle {\tt
tabellenname}. Dann wird die zu der Tabelle {\tt tabellenname}
gehörige ID in {\tt intabelle} gesucht. Diese beiden IDs werden dann
mit den Feldern {\tt tabellen\_nr} und {\tt objekt\_nr} jedes
Datensatzes in Tabelle {\tt zufindenauf} verglichen. In passenden
Datensätzen werden die Verseise auf diese vier Tabellen {\tt
zufindenauf}, {\tt karten}, {\tt kartentyp} und {\tt kartenhersteller}
weiter aufgelöst und dann zurückgegeben.

\newpage
Rückgabetabelle:

\begin{tabular}{|p{3.8cm}|l|l|l|l|p{3.4cm}|}
\hline
Feldname & Datentyp & NW & D. & Con. & Bemerkung \\
\hline
\hline
karten\_nr & INT & Nein & - & PK & SERIAL \\
hersteller & STRING & Nein & - & - & - \\
typ & STRING & Nein & - & - & - \\
version & INT & Nein & - & - & - \\
seite & INT & Nein & - & - & - \\
abbnr & INT & Ja & - & - & - \\
massstab & INT & Nein & - & - & 1:X \\
erscheinungsdatum & DATE & Nein & - & - & - \\
planquadrat & STRING & Nein & - & - & 5 Zeichen (158AZ) \\
darstellung & INT & Nein & - & - & in Prozent (100=ganzes Objekt) \\
\hline
\end{tabular}


Im Parameter {\tt tabellenname} erlaubte Werte:

\begin{multicols}{2}[][1cm]

\begin{itemize}

\item[-] laender
\item[-] kontinent
\item[-] ozeane
\item[-] berge\_gebirge
\item[-] fluesse
\item[-] seen
\item[-] staedte
\item[-] waelder
\item[-] wuesten

\end{itemize}

\end{multicols}



\subsubsection{get\_bbauwerke(suchstr)}

Die Funktion {\tt get\_bbauwerke(suchstr)} liefert eine Liste mit den
Namen (Deutsch, Englisch) von besonderen Bauwerken, welche in der
Stadt Namens {\tt sname} liegen.

Beispiel:

Suche alle in der Datenbank verzeichneten Sehenswürdigkeiten
(besondere Bauwerke, auch ein Wasserfall kann in diesem Fall ein
``besonderes Bauwerk sein'') welche in Deutschland liegen.

\begin{enumerate}

\item Schritt: Suche alle Städte in Deutschland: {\tt
result = get\_v(``staedte'', ``Deutschland'')}

\item Schritt: Suche alle Sehenswürdigkeiten in den gefundenen
Städten. Jede Stadt muss einzeln abgefragt werden. {\tt for i in
result: res2[i] = get\_bbauwerke(result[i]);}

\item Schritt: Weitere Informationen zu den gefundenen
Sehenswürdigkeiten abrufen. {\tt for i in result: for j in res2[i]:
searchtable(``bbauwerke'', res[i][j])}

\end{enumerate}



%\subsubsection{put\_table\_line(tablennenname, <datensatz>)}
%
%Die Funktion {\tt put\_table\_line(tablennenname, <datensatz>)} speichert den
%Datensatz {\tt <datensatz>} in Tabelle {\tt tabellenname}.
%
%
%
%\subsubsection{remove\_table\_line(tablennenname, suchstr)}
%
%Die Funktion {\tt remove\_table\_line(tablennenname, suchstr)} entfernt
%den zu {\tt suchstring} passenden Datensatz aus Tabelle {\tt
%tabellenname}.


\subsection{Sicherheitskonzept}

Das Sicherheitskonzept ist hier relativ simpel: Jeder darf alles
lesen, dazu dienen diese Funktionen:

{\tt
\begin{itemize}
\item[-] search\_all()
\item[-] search\_table()
\item[-] get\_l()
\item[-] get\_v()
\item[-] get\_berge\_in\_gebirgen()
\item[-] get\_liegtauf()
\item[-] get\_bbauwerke()
\end{itemize}
}

Und die Systemverwalter können etwas verändern, dazu wurden folgende
Funktionen vorgesehen:

{\tt
\begin{itemize}
\item[-] put\_table\_line(),
\item[-] remove\_table\_line()
\end{itemize}
}


\section{Quellangaben}

\begin{itemize}

\item[-] Das Wissen um die Datenbank erstellen zu können bezogen wir
aus der Vorlesung Datenbanken von Prof. Dr.-Ing. U. Meyer und der
dazugehörigen Laborveranstaltung an der Hochschule Bremen.

\item[-] Als Hilfsmittel dienten uns {\tt Das offizielle PostgreSQL-Handbuch}
von {\tt Peter Eisentraut} (1. Auflage 2003) sowie {\tt SQL} {\tt --}
{\tt Der} {\tt Schlüssel} {\tt zu} {\tt rela-} {\tt tionalen} {\tt
Datenbanken} von {\tt Gregor Kuhlmann} und {\tt Friedrich
Müllmer-} {\tt stadt} (Auflage 2001).

\item[-] {\tt www.erdkunde-online.de} lieferte einige Anregungen und
beantwortete Fragen rund um das Thema Erdkunde.

\item[-] Unter {\tt http://www.m-forkel.de/klima/koeppen.html} fanden
wir Informationen zur Katerlogisierung vom Klima.

\end{itemize}

\end{document}


laender
kontinent, vlaenderkontinente
ozeane, vlaenderozeane
berge\_gebirge, vlaenderberge\_gebirge, vberge\_gebirge
fluesse, vlaenderfluesse
seen, vlaenderseen
staedte, vlaenderstaedte, bbauwerke
waelder, vlaenderwaelder, waldtypen
wuesten, vlaenderwuesten, wuestentypen
buendnisse, vlaenderbuendnisse
exportgueter
klimatyp, vlaenderklimatypen, klimazonen, vklimatypenzonen
religion, vlaenderreligionen
rohstoffe, vlaenderrohstoffe
sprachen, vlaendersprachen
waehrungen, vlaenderwaehrungen
wirtschaftsform, vlaenderwirtschaftformen
zeitzonen, vlaenderzeitzonen
nachbarlaender
zufindenauf, karten, kartentyp, kartenhersteller, tabellen
