## 4.1
### Primärkey Kollision
Entfernen der Duplikate
### Fehlen des ersten Eintrags
sqlDeveloper Option für keinen Header anwählen
### Fehlende, referenzierte Länder
recherchieren der betreffenden codes und nachtragen via insert
## 4.2 Funktional Abhaengigkeit
### 4.2.1 {Schiff.IMO-Nr, Schiff.Name} → {Schiff.Name, Schiff.TEU}
Diese funktionale Abhängigkeit ergibt sich aus den Anforderungen und lässt sich auch durch das Armstrong-Axiom der Erweiterung beweisen, da Schiff.TEU von Schiff.IMO-Nr funktional abhängig ist.
### 4.2.2 {Hafen.LOCODE} → {Land.Name}
Diese funktionale Abhängigkeit ergibt sich aus den Anforderungen und lässt sich auch durch das Armstrong-Axiom der Transition beweisen.
Land.Name ist funktional abhängig von Land.LänderCode, Land.LänderCode ist funktional abhängig von Hafen.LOCODE. Also ist Land.NAME funktional abhängig von Hafen.LOCODE.
### 4.2.3 {Schiff.IMO-Nr } {Land.Name}
Diese funktionale Abhängigkeit ergibt sich, nur dann wenn ein Schiff einen Heimathafen hat.
Da Hafen.LOCODE funktional abhängig von Schiff.IMO-Nr ist kann und Land.Name von Hafen.LOCODE(4.2.2) ergibt sich mit dem Armstrong-Axiom der Transition funktionale abhängigkeit die besagte funktionale abhängigkeit.
### 4.2.4 {Land.Ländercode} → {Hafen.LOCODE}
Es ergibt sich keine funktionale Abhängigkeit.
Ein Landescode kann mehreren Hafen-LOCODE zugeordnet sein. Daher handelt es sich um keine volle funktionale Abhängigkeit.
### 4.2.5 {Reisestart, Reiseplan} → {Schiff.IMO-Nr}
Diese funktionale Abhängigkeit lässt sich nicht aus den Anforderungen ableiten und auch fachlich ist sie nicht sinnvoll, da mehrere Schiffe zurgleichen zeit die gleiche Reise antreten könnten.
### 4.2.6 {Schiff.IMO-Nr, Reisestart} → {Reiseplan, Reiserichtung}
Diese funktionale Abhängigkeit ergibt nicht direkt aus den Anforderungen, lässt aber fachlich begründen.
Ein Schiff kann zu gegebenem Zeitpunk nur eine Reise antreten. Wenn also Schiff.IMO-Nr & Reise.Reisestart bekannt sind, sind Reiseplan und Reiserichtung impliziet. Reiseplan ist direkt Funktional abhängig von IMO-Nr & Reisestart, Reiserichtung transitiv über den Reiseplan.
Daher handelt es sich um eine volle funktionale Abhängigkeit.
<!---
# Aufgabe 2.2 - Integritätsbedingungen
Die MitarbeiterInnen des Schiffsmaklers stehen in regen Austausch mit KollegInnen aus anderen
Maklerfirmen, um möglichst viel Informationen über das aktuelle Marktgeschehen zu erhalten. Diese Informationen werden bisher lose in einer Exceltabelle festgehalten, sollen aber in Zukunft in einer Datenbank gespeichert werden.
Im Kern sind vor allem die erzielten Tagesmieten für Containerschiffe interessant. Dazu werden im System Container-)Schiffe erfasst und welche Reederei welches Schiff von wann bis wann zu welchem Preis gemietet hat. Relevante Informationen für Schiffe sind die **IMO-Nr zur eindeutigen Identifikation**, der aktuelle Schiffsname, das Baujahr, die Anzahl der möglichen 20-Fuß Container (TEU), Brutto- und Nettoraumzahl.
Bei den Reedereien interessieren nur Name und Hauptsitz der Reederei. Schiffen kann ein **(soweit bekannt) ein Heimathafen** zugeordnet werden. Die Häfen sind mit einem **eindeutigen Code**, dem Namen und dem Land in dem sie liegen hinterlegt. **Länder werden mit dem eindeutigen ISO-Code** und ihrem **eindeutigen Namen** gespeichert. Einige nette Nebeninformationen, die auch gespeichert werden sollen, sind die von Schiffen durchgeführten Reisen. Eine Reise startet an einem Datum und geht entweder nach Osten (Eastbound - EB) oder nach Westen (Westbound - WB). Während einer Reise läuft ein Schiff Häfen in einer bestimmten Reihenfolge an. **Zu jeden Hafen wir die erwartete Ankunftszeit** (estimated time of arrival – ETA)gespeichert. Die **ETAs müssen natürlich zur Anlaufreihenfolge** der Häfen passen.
## Mitgeteilt
- IMO-Nr zur eindeutigen Identifikation von Schiffen (Eindeutige Integritätsbedingung/Primärschlüssel Integritätsbedingung)
- Ein schiff hat (soweit bekannt) ein Heimathafen
- Eindeutiger Code von Häfen (Eindeutige Integritätsbedingung)
- Länder werden mit dem eindeutigen ISO-Code (Eindeutige Integritätsbedingung)
- Eindeutigen Namen von Ländern (Eindeutige Integritätsbedingung)
- Zu jeden Hafen wir die erwartete Ankunftszeit gespeichert (NOT NULL Integritätsbedingung)
- ETAs müssen natürlich zur Anlaufreihenfolge der Häfen passen (Informative Integritätsbedingung)
## Eigene
- Jede Firma,Angebot,Auftrag und Reise soll einen einzigartigen Name/Identifier haben. (Eindeutige Integritätsbedingung/Primärschlüssel Integritätsbedingung)
- Der Preis einer Vermietung kann nicht negativ oder 0 sein (Informative Integritätsbedingung)
- Für jede Vermietung muss ein Mieter angegeben werden (NOT NULL Integritätsbedingung)
- Für jeden Teil der Reise muss ein gültiger Hafen agegeben werden (Integritätsbedingungen über Fremdschlüssel)
--->