From 6e6c4db219da3c0592b9f5e1782a456ae535aaef Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Thu, 9 Oct 2014 07:51:16 +0200
Subject: [PATCH] Airline example

---
 Doc/P/Relational/schema.sql |  29 ++++++++++
 Doc/course.xml              | 106 +++++++++++++++++++++++++++++++++++-
 2 files changed, 133 insertions(+), 2 deletions(-)
 create mode 100644 Doc/P/Relational/schema.sql

diff --git a/Doc/P/Relational/schema.sql b/Doc/P/Relational/schema.sql
new file mode 100644
index 000000000..df7b69f21
--- /dev/null
+++ b/Doc/P/Relational/schema.sql
@@ -0,0 +1,29 @@
+
+DROP TABLE IF EXISTS Flight;
+DROP TABLE IF EXISTS Destination;
+DROP TABLE IF EXISTS Airline;
+
+
+CREATE Table Airline (
+   id INT NOT NULL PRIMARY KEY
+  ,name CHAR(20) NOT NULL UNIQUE
+  ,airlineCode CHAR(5)NOT NULL UNIQUE
+);
+
+CREATE TABLE Destination (
+     id INT NOT NULL PRIMARY KEY
+    ,fullName CHAR(20) NOT NULL
+    ,airportCode CHAR(20) NOT NULL UNIQUE
+);
+
+
+CREATE TABLE Flight (
+   id INT NOT NULL PRIMARY KEY
+  ,flightNumber CHAR(10) NOT NULL UNIQUE
+  ,airline INT NOT NULL REFERENCES Airline
+  ,origin int NOT NULL REFERENCES Destination
+  ,destination int NOT NULL REFERENCES Destination
+);
+
+
+
diff --git a/Doc/course.xml b/Doc/course.xml
index f89cc64e8..28f87edf5 100644
--- a/Doc/course.xml
+++ b/Doc/course.xml
@@ -594,9 +594,111 @@ drwxr-xr-x 4 goik fb1prof 4096 Nov  8 22:04 ..
         connection.</para>
       </section>
 
-      <section xml:id="toolingConfigJdbc">
-        <titleabbrev>Tooling</titleabbrev>
+      <section xml:id="repeatRelational">
+        <title>Some notes on relational databases</title>
+
+        <qandaset defaultlabel="qanda" xml:id="airlineRelationalSchema">
+          <title>Airlines, airports and flights </title>
+
+          <qandadiv>
+            <qandaentry>
+              <question>
+                <para>Implement a relational schema describing airlines,
+                flights, airports and their respective relationships:</para>
+
+                <itemizedlist>
+                  <listitem>
+                    <para>Airline:</para>
 
+                    <itemizedlist>
+                      <listitem>
+                        <para>An informal unique name like e.g.
+                        <quote>Lufthansa</quote>.</para>
+                      </listitem>
+
+                      <listitem>
+                        <para>A unique <link
+                        xlink:href="http://en.wikipedia.org/wiki/List_of_airline_codes">ICAO
+                        abbreviation</link>. </para>
+                      </listitem>
+                    </itemizedlist>
+                  </listitem>
+
+                  <listitem>
+                    <para>Destination</para>
+
+                    <itemizedlist>
+                      <listitem>
+                        <para>Full name like <quote>Frankfurt am Main
+                        International</quote></para>
+                      </listitem>
+
+                      <listitem>
+                        <para>World airport code like
+                        <quote>FRA</quote>.</para>
+                      </listitem>
+                    </itemizedlist>
+                  </listitem>
+
+                  <listitem>
+                    <para>Flight</para>
+
+                    <itemizedlist>
+                      <listitem>
+                        <para>A unique flight number e.g. LH 4234</para>
+                      </listitem>
+
+                      <listitem>
+                        <para>The <quote>owning</quote> airline.</para>
+                      </listitem>
+
+                      <listitem>
+                        <para>originating airport</para>
+                      </listitem>
+
+                      <listitem>
+                        <para>destination airport</para>
+                      </listitem>
+                    </itemizedlist>
+                  </listitem>
+                </itemizedlist>
+
+                <para>Provide surrogate keys for all entities.</para>
+              </question>
+
+              <answer>
+                <programlisting language="sql">DROP TABLE IF EXISTS Flight;
+DROP TABLE IF EXISTS Destination;
+DROP TABLE IF EXISTS Airline;
+
+
+CREATE Table Airline (
+   id INT NOT NULL PRIMARY KEY
+  ,name CHAR(20) NOT NULL UNIQUE
+  ,airlineCode CHAR(5)NOT NULL UNIQUE
+);
+
+CREATE TABLE Destination (
+     id INT NOT NULL PRIMARY KEY
+    ,fullName CHAR(20) NOT NULL
+    ,airportCode CHAR(20) NOT NULL UNIQUE
+);
+
+
+CREATE TABLE Flight (
+   id INT NOT NULL PRIMARY KEY
+  ,flightNumber CHAR(10) NOT NULL UNIQUE
+  ,airline INT NOT NULL REFERENCES Airline
+  ,origin int NOT NULL REFERENCES Destination
+  ,destination int NOT NULL REFERENCES Destination
+);</programlisting>
+              </answer>
+            </qandaentry>
+          </qandadiv>
+        </qandaset>
+      </section>
+
+      <section xml:id="toolingConfigJdbc">
         <title>Tooling: Configuring and using the <link
         xlink:href="http://www.eclipse.org/datatools">Eclipse database
         development</link> plugin</title>
-- 
GitLab