Skip to content
Snippets Groups Projects
Commit 08fe6b16 authored by Goik Martin's avatar Goik Martin
Browse files

Rdbms export/import project description

parent e26d1a82
No related branches found
No related tags found
No related merge requests found
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
<listitem> <listitem>
<para>Your team is expected to use the <link <para>Your team is expected to use the <link
xlink:href="https://gitlab.mi.hdm-stuttgart.de">MI Gitlab server</link>. xlink:href="https://gitlab.mi.hdm-stuttgart.de">MI Gitlab
You should commit regularly rather than e.g. one big chunk at the server</link>. You should commit regularly rather than e.g. one big
project's end so that your project's progress and the individual chunk at the project's end so that your project's progress and the
participant's contributions become reasonable.</para> individual participant's contributions become reasonable.</para>
<para>Choose a combination of year, sda1 and your alphabetically <para>Choose a combination of year, sda1 and your alphabetically
sorted login names as base name for the git repository e.g.:</para> sorted login names as base name for the git repository e.g.:</para>
...@@ -108,6 +108,116 @@ ...@@ -108,6 +108,116 @@
</orderedlist> </orderedlist>
</section> </section>
<section xml:id="sda1SectDbXmlExportImport">
<title>Exporting and importing relational data</title>
<para>Design and implement a <xref linkend="glo_Java"/> application which
allows for:</para>
<itemizedlist>
<listitem>
<para>Exporting relational data to <xref linkend="glo_XML"/> using
<xref linkend="glo_JDBC"/>.</para>
</listitem>
<listitem>
<para>Insert <xref linkend="glo_XML"/> data into a relational
database.</para>
</listitem>
</itemizedlist>
<para>Your application shall make no assumptions whatsoever regarding a
relational database's state. Records from all tables shall be dumped into
one or more XML files. In addition the relational schema shall be
transformed into a corresponding <xref linkend="glo_XSD"/> schema
containing the following meta information:</para>
<itemizedlist>
<listitem>
<para>Table names among with their corresponding column names and data
types.</para>
</listitem>
<listitem>
<para>Nullability of attributes</para>
</listitem>
<listitem>
<para>Primary / unique key definitions</para>
</listitem>
<listitem>
<para>Foreign key definitions</para>
</listitem>
</itemizedlist>
<para>Testing your application may be effected by:</para>
<itemizedlist>
<listitem>
<para>Starting from an arbitrary database state containing records in
a given set of tables. As your application matures choose a database
of sufficient complexity including ~5 tables with one to many and many
to many relationships.</para>
</listitem>
<listitem>
<para>Export your database to <xref linkend="glo_XML"/> (e.g.
<filename>dump.xml</filename>) and <xref linkend="glo_XSD"/> (e.g.
<filename>schema.xsd</filename>) based on the <xref
linkend="glo_JDBC"/> <link linkend="jdbcUrlComponents">connection
URI</link> , user name and password parameters being provided by a
properties file.</para>
</listitem>
<listitem>
<para>Drop all database tables.</para>
</listitem>
<listitem>
<para>Import from <filename>dump.xml</filename> and the implicitly
referenced <filename>schema.xsd</filename> required for recreating the
relational schema and subsequently insert all corresponding records.
</para>
</listitem>
</itemizedlist>
<para>If your application works correctly you should end up with the
initial database state.</para>
<tip>
<orderedlist>
<listitem>
<para>You may limit your work to <xref linkend="glo_Soft_Mysql"/>
using <productname>Innodb</productname> tables.</para>
</listitem>
<listitem>
<para>Reading a database's schema requires <xref
linkend="glo_JDBC"/> meta data support e.g. <interfacename
xlink:href="https://docs.oracle.com/javase/8/docs/api/java/sql/ResultSetMetaData.html">ResultSetMetaData</interfacename>
and possibly <interfacename
xlink:href="https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html">DatabaseMetaData</interfacename>.</para>
</listitem>
<listitem>
<para>You may want to create database tables beforehand supplying
foreign key constraints later by issuing appropriate <code>ALTER
TABLE Xyz ADD CONSTRAINT ...</code><emphasis
role="bold">after</emphasis> inserting your data records. This way
you avoid topological sorting of foreign key constraint induced
table creation dependency problems.</para>
</listitem>
<listitem>
<para>You may start by exporting a <filename>schema.xsd</filename>
file. Then implement relational schema recreation. This schoud work
not yet bothering about actual data.</para>
</listitem>
</orderedlist>
</tip>
</section>
<section xml:id="sda1SectPrjDocbookCms"> <section xml:id="sda1SectPrjDocbookCms">
<title>Project <productname>Docbook</productname> <title>Project <productname>Docbook</productname>
<acronym>CMS</acronym>.</title> <acronym>CMS</acronym>.</title>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment