<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>visualDependencies</title>
	<atom:link href="http://www.visualdependencies.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.visualdependencies.de</link>
	<description>visualize dependencies of your database</description>
	<lastBuildDate>Wed, 11 May 2011 14:01:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>FYI: Absolventenpreis 2011</title>
		<link>http://www.visualdependencies.de/2011/05/fyi-absolventenpreis-2011/</link>
		<comments>http://www.visualdependencies.de/2011/05/fyi-absolventenpreis-2011/#comments</comments>
		<pubDate>Wed, 11 May 2011 14:01:03 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=167</guid>
		<description><![CDATA[FYI: Es wurde wieder der Absolventenpreis in der Version 2011 verliehen. Einen herzlichen Glückwunsch an diesjährigen Preisträger!]]></description>
			<content:encoded><![CDATA[<p>FYI: Es wurde wieder der <a href="http://www.heise.de/open/meldung/LinuxTag-Univention-Absolventenpreis-verliehen-1241571.html">Absolventenpreis in der Version 2011 verliehen</a>. Einen herzlichen Glückwunsch an diesjährigen Preisträger!</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2011/05/fyi-absolventenpreis-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Folien zum Vortrag auf der DOAG</title>
		<link>http://www.visualdependencies.de/2010/11/folien-zum-vortrag-auf-der-doag/</link>
		<comments>http://www.visualdependencies.de/2010/11/folien-zum-vortrag-auf-der-doag/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 11:35:36 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Downloads]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=163</guid>
		<description><![CDATA[Der Vortrag auf der DOAG 2010 ist nun als PDF verfügbar]]></description>
			<content:encoded><![CDATA[<p>Der Vortrag auf der <a href="http://www.visualdependencies.de/wp-content/uploads/2010/11/visdep_doag2010.pdf">DOAG 2010</a> ist nun als PDF verfügbar.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/11/folien-zum-vortrag-auf-der-doag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL-Unterstützung</title>
		<link>http://www.visualdependencies.de/2010/11/mysql-unterstutzung/</link>
		<comments>http://www.visualdependencies.de/2010/11/mysql-unterstutzung/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 19:04:23 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Hauptseite]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=151</guid>
		<description><![CDATA[Mit Version 1.3 verfügt visualDependencies nun endlich über eine Unterstützung von MySQL-Datenbanken]]></description>
			<content:encoded><![CDATA[<p>Mit Version 1.3 verfügt <em>visualDependencies</em> nun endlich über eine Unterstützung von MySQL-Datenbanken. Diese Ergänzung stammt von Marc Kastleiner, der im Rahmen seiner Praxis- und Bachelorarbeit <em>visualDependencies</em> weiterentwickelt hat.</p>
<p>Außerdem wurde die Anwendung um die Fähigkeit von Prozeduren (nur Oracle) und dem Feature &#8220;Einzelansicht&#8221; erweitert. Desweiteren wurden einige Fehler im Zusammenhang mit Trigger-SQL-Parsen behoben.</p>
<p>Sowohl die Anwendung als auch die Bachelorarbeit ist zum <a href="http://www.visualdependencies.de/downloads/">Download verfügbar</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/11/mysql-unterstutzung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kurz notiert</title>
		<link>http://www.visualdependencies.de/2010/11/kurz-notiert/</link>
		<comments>http://www.visualdependencies.de/2010/11/kurz-notiert/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 19:21:34 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=147</guid>
		<description><![CDATA[Der Bereich &#8220;Downloads&#8221; wurde um die Bachelorarbeit und die Softwareergänzung von Marc Kastleiner erweitert. Detaillierte Informationen folgen hier demnächst]]></description>
			<content:encoded><![CDATA[<p>Der Bereich &#8220;Downloads&#8221; wurde um die Bachelorarbeit und die Softwareergänzung von Marc Kastleiner erweitert. Detaillierte Informationen folgen hier demnächst.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/11/kurz-notiert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DOAG 2010</title>
		<link>http://www.visualdependencies.de/2010/11/doag-2010/</link>
		<comments>http://www.visualdependencies.de/2010/11/doag-2010/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 23:01:59 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Hauptseite]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=128</guid>
		<description><![CDATA[Prof. Dr. Heide Faeskorn-Woyke wird nächste Woche auf der DOAG 2010 Konferenz als Dozentin im Themenbereich Hochschulprojekte "visualDependencies" vorstellen]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-129 alignnone" title="DOAG" src="http://www.visualdependencies.de/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-01-um-20.14.42-300x106.png" alt="" width="300" height="106" /></p>
<p><a href="http://faeskorn-woyke.de/">Prof. Dr. Heide Faeskorn-Woyke</a> wird nächste Woche auf der <a href="http://www.doag.org/">DOAG 2010 Konferenz</a> als Dozentin im Themenbereich Hochschulprojekte &#8220;visualDependencies&#8221; <a href="http://mydoag.doag.org/konferenz/konferenzplan.php?tag=3">vorstellen</a>.</p>
<p>Raum: Singapur, Zeit: 15:00</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/11/doag-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Downloadlinks angepasst</title>
		<link>http://www.visualdependencies.de/2010/10/downloadlinks-angepasst/</link>
		<comments>http://www.visualdependencies.de/2010/10/downloadlinks-angepasst/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 14:37:05 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=124</guid>
		<description><![CDATA[Aufgrund der baldigen <a href="http://www.golem.de/1010/79028.html">Schließung</a> des Dienstes Drop.io wurden die Downloads verschoben]]></description>
			<content:encoded><![CDATA[<p>Aufgrund der baldigen <a href="http://www.golem.de/1010/79028.html">Schließung</a> des Dienstes Drop.io wurden die Downloads verschoben.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/10/downloadlinks-angepasst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausblick</title>
		<link>http://www.visualdependencies.de/2010/08/ausblick/</link>
		<comments>http://www.visualdependencies.de/2010/08/ausblick/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 16:48:05 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=85</guid>
		<description><![CDATA[Bereits bei der Formulierung der konkreten Aufgabenstellung ergaben sich stets neue mögliche Ideen und Vorschläge, die nicht nur maßgeblich den Umfang, sondern auch die Richtung der Software bestimmt haben. Natürlich konnten nicht alle Ideen oder Fragen aufgegriffen werden. Es ist aber wichtig darauf hinzuweisen, dass die erreichte Visualisierung der strukturellen Zusammenhänge der unterschiedlichen Datenbankobjekte noch ]]></description>
			<content:encoded><![CDATA[<p>Bereits bei der Formulierung der konkreten Aufgabenstellung ergaben sich stets neue mögliche Ideen und Vorschläge, die nicht nur maßgeblich den Umfang, sondern auch die Richtung der Software bestimmt haben. Natürlich konnten nicht alle Ideen oder Fragen aufgegriffen werden. <span id="more-85"></span>Es ist aber wichtig darauf hinzuweisen, dass die erreichte Visualisierung der strukturellen Zusammenhänge der unterschiedlichen Datenbankobjekte noch weiter ausbaufähig ist. Je nach Kontext ist eine anderer Grad der Komplexität und der darzustellenden Dynamik der Daten von Bedeutung.</p>
<p style="text-align: center;"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/800px-Sydney_Harbour_Bridge_night.jpg"><img class="size-medium wp-image-99 aligncenter" title="Ausblick" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/800px-Sydney_Harbour_Bridge_night-300x67.jpg" alt="Quelle: http://en.wikipedia.org/wiki/File:Sydney_Harbour_Bridge_night.jpg" width="300" height="67" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">Die erstellte Anwendung beschränkt sich in der vorliegenden Version auf die Schemaanalyse der Datenbanksysteme Oracle und MySQL. Dabei werden die Oracle-Versionen 9i, 10g und 11g für die Zwecke der Anwendung vollständig unterstützt. Das Plugin für eine MySQL-Datenbank ist in einem <span style="text-decoration: underline;">experimentellen</span> Zustand und daher nicht vollstän- dig. Durch ein geeignetes Abstraktionslevel lassen sich jederzeit weitere Datenbanksysteme unterstützen. Auch eine individuelle Implementierung aufgrund verschiedener Da- tenbankdialekte oder spezieller Features ist möglich. Prinzipiell ist jedoch ein JDBC- Treiberplugin für ein entsprechendes Datenbanksystem notwendig.</p>
<p>Für eine geeignete Darstellung der Knoten und Kanten eines Graphen sind weitere <strong>Alternativlayouts</strong> möglich. Insbesondere die Problematik der sich überschneidenden Kanten kann durch effizientere Algorithmen gelöst werden. Ein Beispiel für solche Algorithmen ist der Algorithmus von Sugiyama zur Minimierung von Kantenschnitten<sup>[<a href="#ausblick-n-1" class="footnoted" id="to-ausblick-n-1">1</a>]</sup>. Für eine optimalere Darstellung ist auch die Bildung von Clustern, also zusammenhängenden Untermengen, eine mögliche Option.</p>
<p>Das dargestellte Entity-Relationship-Diagramm beinhaltet keine zusätzlichen Informationen wie die Kardinalität, die Optionalität und identifizierende Beziehungen. Die da- für notwendigen Informationen sind bereits durch die Analyse ermittelt worden. Dabei werden die Zwischentabellen von m:n-Beziehungen zu zwei 1:n-Beziehungen aufge- schlüsselt. Nur durch Interpretationen lassen sich echte m:n-Beziehungen nachweisen und anzeigen.</p>
<p>Im Zusammenhang mit der Analyse und Visualisierung der View-Hierarchien sind auch die <strong>rekursiven Views</strong> interessant. Diese sind zwar als <em>RECURSIVE VIEW</em> bereits im SQL- Standard SQL:1999 vorhanden, allerdings werden sie noch nicht von allen Datenbankherstellern unterstützt. Im Gegensatz zu DB2 von IBM bietet Oracle bisher nur die <em>CONNECT BY</em>-Klausel<sup>[<a href="#ausblick-n-2" class="footnoted" id="to-ausblick-n-2">2</a>]</sup> an, die mit komplett anderer Vorangehensweise ähnliche Er- gebnisse liefert. Als Grundlage für die Darstellung rekursiver Viewabhängigkeiten kann die visuelle Veranschaulichung der Triggeraktivitäten dienen.</p>
<p>Bei der Visualisierung der Abhängigkeiten in einer Datenbank gibt es weitere, für diese Anwendung interessante Objekte: <strong>Integritätsbedingungen, Assertions, Funktionen, Prozeduren</strong> und Typen. Ähnlich wie Trigger enthalten Funktionen und Prozeduren SQL- Code, der sowohl vordefinierte als auch dynamisch zusammengesetzte SQL-Anwei- sungen enthalten kann. Damit ergeben sich weitere direkte oder indirekte Abhängigkeiten auf andere Objekte in der Datenbank. Auch die Aufschlüsselung einer objektrelationalen Typhierarchie kann in Erwägung gezogen werden.</p>
<p>Im Rahmen dieser Arbeit wird nur eine statische Analyse der Objekte und deren Abhängigkeiten verfolgt. Eine tiefergehende Untersuchtung der Abhängigkeiten kann durch die Betrachtung der spaltenbezogenen <em>ON</em>-Klausel oder der Bedingungsklausel <em>WHEN</em> in PL/SQL-Triggern ermöglicht werden.</p>
<p>Eine andere visuelle Darstellungsmöglichkeit, eventuell auch <strong>dreidimensional</strong>, wäre, die Tabellen mehr in das Zentrum der Betrachtung zu stellen. Dabei würden alle drei Ansichten der Anwendung – Views, Trigger und das ERD mit Fremdschlüsseln – vereinigt und bei Bedarf im Graphen jeweils zu den Tabellenobjekten auf unterschiedliche Weise angezeigt.</p>
<div id="attachment_51" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/06/Bild-6.png"><img class="size-medium wp-image-51" title="vdb: Mutating-Table-Trigger" src="http://www.visualdependencies.de/wp-content/uploads/2010/06/Bild-6-300x223.png" alt="vdb: Mutating-Table-Trigger" width="300" height="223" /></a><p class="wp-caption-text">vdb: Mutating-Table-Trigger</p></div>
<p>Als einen zusätzlichen Ansatz zur Visualisierung könnte die Darstellung eines <strong>dynamischen Kontrollflusses</strong> dienen. Ähnlich wie in einem UML-Aktivitätsdiagramm zeigt das Kontrollflussdiagramm einzelne Aktivitäten und Kontrollflüsse an. Dabei sind die Aktivitäten die einzelnen Objekte der Datenbank und die Kontrollflüsse resultieren aus den Abhängigkeiten. Damit ergibt sich ein weiteres und interessantes Anwendungsszenario. Nach der Spezifizierung einer DML-Anweisung durch den Benutzer zeigt die Visualisierung die einzelnen Kontrollflüsse durch alle benutzten und verwendeten Datenbankobjekte mit den entsprechend konkreten Daten und Entscheidungen an. Diese teils indirekten Implikationen, beispielsweise auch kaskadierendes Löschen bei Integritätsbedingungen, können somit ebenfalls in einem Graphen dargestellt werden. Dafür ist es allerdings notwendig, dass der Parser den Inhalt des Triggerkörpers komplett einliest und verarbeitet. Für dynamische Kontrollflüsse sind alle Blöcke (Compoundtrigger, Bedingungen, Schleifen) notwendig zu betrachten und bei Ausführung auszuwerten.</p>
<p>Mit Hilfe dieser Software – und unter Berücksichtigung der möglichen Erweiterungen – gibt es nun ein hilfreiches Werkzeug, um die direkten und indirekten Abhängigkeiten von Objekten in einem Datenbanksystem sowohl zu erkennen als auch grafisch darzustellen. Durch eine flexible und erweiterbare Architektur ist das Softwareprodukt auch für neue Anforderungen gut einzusetzen.</p>
<p><em>Dieser Text entstammt aus der abgegebenen Diplomarbeit, Kapitel “Ausblick”, und wurde für das Web link-technisch aufgewertet.</em></p>

<ol class="footnotes">
	<li class="footnote" id="ausblick-n-1"><strong><sup>[1]</sup></strong> Für weitere Informationen zu Graphenlayouts: http://ftp.informatik.uni-stuttgart.de/iste/ps/Lehre/S_Graphen/kopp.pdf (ebenfalls im Literaturverzeichnis). <a class="note-return" href="#to-ausblick-n-1">&#x21A9;</a></li>
	<li class="footnote" id="ausblick-n-2"><strong><sup>[2]</sup></strong> In Oracle nur in Verbindung mit einer rekursiven Select-Abfrage möglich. <a class="note-return" href="#to-ausblick-n-2">&#x21A9;</a></li></ol>
]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/08/ausblick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unser Fazit</title>
		<link>http://www.visualdependencies.de/2010/08/unser-fazit/</link>
		<comments>http://www.visualdependencies.de/2010/08/unser-fazit/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 16:40:51 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=83</guid>
		<description><![CDATA[Die Diplomarbeit beschäftigt sich thematisch mit der Untersuchung und Darstellung unterschiedlicher Abhängigkeiten der einzelnen Datenbankobjekte. Die Motivation war die Visualisierung dieser ermittelten Abhängigkeiten aus einem Datenbankschema in einer geeigneten Art und Weise. Dies sollte als Softwareanwendung mit der Sprache Java und zunächst primär für das Datenbanksystem Oracle in der Version 11g entwickelt werden. Eine Analyse ]]></description>
			<content:encoded><![CDATA[<p>Die Diplomarbeit beschäftigt sich thematisch mit der Untersuchung und Darstellung unterschiedlicher Abhängigkeiten der einzelnen Datenbankobjekte. Die Motivation war die Visualisierung dieser ermittelten Abhängigkeiten aus einem Datenbankschema in einer geeigneten Art und Weise. Dies sollte als Softwareanwendung mit der Sprache Java und zunächst primär für das Datenbanksystem Oracle in der Version 11g entwickelt werden.</p>
<p>Eine Analyse der Aufgaben und Funktionen an die Anwendung ergab, dass drei verschiedene Ansichten implementiert werden müssen: die View-Hierarchie, die Triggerakti- vitäten und das Entity-Relationship-Diagramm. Die View-Hierarchie beinhaltet alle Views und deren Beziehungen untereinander. Dabei wird zwischen positiven und negativen Abhängigkeiten unterschieden. Potenzielle Triggerrekursionen und -anomalien werden in der Triggeransicht dargestellt. Schließlich werden die einzelnen Fremdschlüsselbeziehungen in dem ER-Diagramm visualisiert.</p>
<div id="attachment_90" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/sqldev-diagram-overview.png"><img class="size-medium wp-image-90" title="SQLDeveloper Übersicht" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/sqldev-diagram-overview-300x217.png" alt="SQLDeveloper Übersicht" width="300" height="217" /></a><p class="wp-caption-text">SQLDeveloper Übersicht</p></div>
<p>Eine Evaluation bestehender Werkzeuge im Bereich des Datenbankmanagements ergab, dass nahezu keine Anwendung derartige Funktionalitäten<sup>[<a href="#unser-fazit-n-1" class="footnoted" id="to-unser-fazit-n-1">1</a>]</sup> aufweist. Zwar können die meisten Anwendungen die Informationen über die Abhängigkeiten der Views ermitteln und (tabellarisch) anzeigen, aber keine Anwendung bietet eine visuelle und anspruchsvolle Darstellung an. Der SQL Developer bietet eine „Diagramm“-Funktion mit integrierter Anzeige der Viewabhängigkeiten an, jedoch nicht im Kontext der hierarchischen Abhängigkeitsstruktur. Des Weiteren schweigt sich der SQL Developer sowohl über die Details einer View-Abhängigkeit als auch Trigger im Allgemeinen aus.</p>
<div id="attachment_91" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/view-dependencies-all.png"><img class="size-medium wp-image-91" title="TOAD View-Abhängigkeiten" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/view-dependencies-all-300x196.png" alt="TOAD View-Abhängigkeiten" width="300" height="196" /></a><p class="wp-caption-text">TOAD View-Abhängigkeiten</p></div>
<p>Zur Ermittlung eines geeigneten SQL Parsers wurden verschiedene Parser miteinander verglichen und auf die Tauglichkeit in Bezug zur Aufgabenstellung hin bewertet. Dabei hat sich herausgestellt, dass ein Großteil der untersuchten Parser Probleme mit verschachtelten Abfragen (Unterabfragen) hat. Da der Parser <em><a href="http://sqljep.sourceforge.net/">Sqljep</a></em> rein tokenbasiert und für eine Integration in Java verfügbar ist, haben wir uns für dessen Verwendung entschieden. Zwar reicht <em>Sqljep</em> einerseits für das reine syntaktische Analysieren (Lesen) von SQL-Anweisungen aus. Spezielle Herstellererweiterungen wie PL/SQL machen jedoch individuelle Anpassungen nötig. Leider gibt es dafür bisher<sup>[<a href="#unser-fazit-n-2" class="footnoted" id="to-unser-fazit-n-2">2</a>]</sup> keine vernünftige und universell einsatzfähige Lösung, die uns bekannt ist. Daher war es in Teilen notwendig, individuelle und meist datenbankherstellerabhängige Workarounds in die Analyse und das Parsen zu integrieren.</p>
<div id="attachment_93" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/043_graph_satellit.png"><img class="size-medium wp-image-93" title="Mockup: View-Hierarchie mit Satellit" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/043_graph_satellit-300x267.png" alt="Mockup: View-Hierarchie mit Satellit" width="300" height="267" /></a><p class="wp-caption-text">Mockup: View-Hierarchie mit Satellit</p></div>
<p>Bei der Evaluation eines brauchbaren Graphenframeworks war es unter Anderem von Bedeutung, dass es sich gut in Komponenten der grafischen Swing-Bibliothek von Java integrieren ließ. Die Betrachtung der unterschiedlichen Frameworks, Dokumentationen und Beispiele zeigte, dass einige Frameworks nur eine mäßig gute Dokumentation vorweisen können. Wir stellten fest, dass die Frameworks <a href="http://jung.sourceforge.net/">JUNG</a> und <a href="http://www.jgraph.com/">JGraph</a> die für unsere Zwecke nützlichsten Voraussetzungen und Funktionalitäten anbieten. Die Wahl auf JUNG wurde schließlich auf Basis der internen API-Struktur, dem Informationsgehalt vorhandener Dokumentationsquellen und dem Vorhandensein fertiger Layouts getroffen. Alle Frameworks besitzen eine teils breit gefächerte Auswahl an Layoutvarianten. Die kommerziellen Produkte bieten als Mehrwerte in Teilen eine bessere Optik des Graphen verbunden mit leistungsfähigeren Layoutalgorithmen.</p>
<p>Die Analyse der Metadaten konnte in Teilen zügig mit Hilfe des JDBC-Pakets von Java umgesetzt werden. Mittels einem herstellerabhängigen Datenbanktreiber, der die Spezifikationen und Konzepte von <a href="http://download-llnw.oracle.com/javase/6/docs/api/java/sql/package-summary.html">JDBC</a> realisiert, werden die Abfragen an das Data Dictionary in einzelnen Methodenaufrufe und Ergebnismengen gekapselt. Allerdings wurde bei der Implementierung des universellen Analysecodes festgestellt, dass der aktuelle Datenbanktreiber<sup>[<a href="#unser-fazit-n-3" class="footnoted" id="to-unser-fazit-n-3">3</a>]</sup> von Oracle falsche Ergebnisse oder sogar Fehlermeldungen wirft: im konkreten Fall bei der Abfrage der Indexe und Unique-Bedingungen für Tabellen. Aber auch die fehlermeldungsfreien Ergebnisse sind ungenügend, da neben den einfachen Unique-Bedingungen ebenfalls die Primärschlüssel angezeigt werden. Daher wird anstelle der dafür im JDBC-Paket vorgesehen Methoden zum Laden der Indexe und Primärschlüssel eine eigene Anfrage an das Data Dictionary geschrieben.<sup>[<a href="#unser-fazit-n-4" class="footnoted" id="to-unser-fazit-n-4">4</a>]</sup></p>
<p>Nach kleineren Anpassungen für das Auslesen eines Triggerrumpfes in PL/SQL konnte der SQL-Parser <em>Sqljep</em> ohne weitere Probleme in die Anwendung integriert werden. Durch eine tokenbasierte Arbeitsweise kann dieser Parser für jedes Datenbanksystem eingesetzt werden. Es wird für jedes Datenbanksystem durch die verschiedenen Datenbankdialekte eine entsprechende Grammatik benötigt. Die Datenbankobjekte in Oracle werden zuerst formal in einer <a href="http://de.wikipedia.org/wiki/Backus-Naur-Form">Backus-Naur-Form</a> beschrieben und die Grammatik wird hiervon abgeleitet. Durch die Implementierung dieser Grammatik kann der Parser, und daher auch die Anwendung, jeder Zeit für andere Datenbanksysteme erweitert werden.</p>
<div id="attachment_94" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/mit_negative.png"><img class="size-medium wp-image-94" title="vdb: Negative View-Abhängigkeit" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/mit_negative-300x196.png" alt="vdb: Negative View-Abhängigkeit" width="300" height="196" /></a><p class="wp-caption-text">vdb: Negative View-Abhängigkeit</p></div>
<p>Die Implementierung der Graphenvisualisierung mit JUNG war überschaubar und durch Beispiele und eigene Prototypen gut lösbar. Mangels technischer Unterstützung von zusätzlichen Events<sup>[<a href="#unser-fazit-n-5" class="footnoted" id="to-unser-fazit-n-5">5</a>]</sup> konnten leider bereits früher erstellte Prototypen nicht verwendet werden. Dennoch bietet die nun implementierte Darstellung neben Zoom- &amp; Verschiebemöglichkeiten auch filterbare Darstellungen sowie kontextsensitive Popupmenüs.</p>
<p><em>Dieser Text entstammt aus der abgegebenen Diplomarbeit, Kapitel “Fazit”, und wurde für das Web link-technisch aufgewertet.</em></p>

<ol class="footnotes">
	<li class="footnote" id="unser-fazit-n-1"><strong><sup>[1]</sup></strong> Ausgenommen sind davon die ER-Diagramme. <a class="note-return" href="#to-unser-fazit-n-1">&#x21A9;</a></li>
	<li class="footnote" id="unser-fazit-n-2"><strong><sup>[2]</sup></strong> Stand Juli 2009 <a class="note-return" href="#to-unser-fazit-n-2">&#x21A9;</a></li>
	<li class="footnote" id="unser-fazit-n-3"><strong><sup>[3]</sup></strong> Oracle Database 11g Release 1 (11.1.0.7.0) JDBC Drivers, Stand Juli 2009 <a class="note-return" href="#to-unser-fazit-n-3">&#x21A9;</a></li>
	<li class="footnote" id="unser-fazit-n-4"><strong><sup>[4]</sup></strong> Ergänzung: Mittlerweile hat sich ebenfalls herausgestellt, dass die Abfrage nach Indexspalten über Oracles JDBC-Metadata-Implementierung zu impliziten, ungewollten und nicht performanten Statements führt. <a class="note-return" href="#to-unser-fazit-n-4">&#x21A9;</a></li>
	<li class="footnote" id="unser-fazit-n-5"><strong><sup>[5]</sup></strong> An dieser Stelle sind damit die abfragbaren Mausklicks für zusätzliche Popups oder Buttons eines Graphenknotens gemeint. <a class="note-return" href="#to-unser-fazit-n-5">&#x21A9;</a></li></ol>
]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/08/unser-fazit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abstract</title>
		<link>http://www.visualdependencies.de/2010/08/abstract/</link>
		<comments>http://www.visualdependencies.de/2010/08/abstract/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 16:23:03 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=79</guid>
		<description><![CDATA[In der heutigen Zeit ist Software in allen Lebenssituationen präsent. Mit dem Einzug der digitalen Welt werden auch die Softwaresysteme immer komplexer; sie leisten, kontrollieren und speichern immer mehr. Mit der Funktionsvielfalt und der Komplexität steigen auch die Anforderungen an die Speicherstrukturen. Es müssen nicht nur viele Daten gespeichert werden – die abgelegten Daten müssen ]]></description>
			<content:encoded><![CDATA[<p>In der heutigen Zeit ist Software in allen Lebenssituationen präsent. Mit dem Einzug der digitalen Welt werden auch die Softwaresysteme immer komplexer; sie leisten, kontrollieren und speichern immer mehr. Mit der Funktionsvielfalt und der Komplexität steigen auch die Anforderungen an die Speicherstrukturen. Es müssen nicht nur viele Daten gespeichert werden – die abgelegten Daten müssen auch wiedergefunden, aggregiert, umsortiert, gefiltert oder in Teilen verändert werden. Seit über 30 Jahren werden dafür vorwiegend relationale Datenbanksysteme verwendet<sup>[<a href="#abstract-n-1" class="footnoted" id="to-abstract-n-1">1</a>]</sup>.</p>
<p>Bereits heute sind viele der Softwarelösungen mit integrierten Datenbanken ausgestattet. Von den offensichtlichen Datenbanken in Webanwendungen oder der Literaturfunktion im Textverarbeitungsprogramm abgesehen, besitzen sogar vereinzelte Anwendungen wie Internet-Browser, E-Mail-Clients oder Hardwaregeräte wie Handys und Smartphones eigene, autonome Datenbanksysteme. Zurzeit sind dies oft rein speicherorientierte Da- tenbanklösungen auf der Basis von <a href="http://hsqldb.org/">HSQLDB</a> oder <a href="http://www.sqlite.org/">SQLite</a>. Mit neuen funktionalen Erweiterungen und fortschreitender Technik werden diese Systeme künftig immer komplexer.</p>
<p>Schon in den 90er Jahren wurden vermehrt die so genannten <a href="http://de.wikipedia.org/wiki/Data-Warehouse">Data-Warehouses</a> entwickelt, welche je nach Unternehmen eine oft unvorstellbare Menge an Daten vorhalten. Da diese Daten per Definition aus unterschiedlichen Quellen stammen, müssen sie bei der späteren Verwendung häufig mehrfach gefiltert, aggregiert, reorganisiert und verändert werden: So müssen etwa bestimmte Daten wechselseitig ergänzt werden; manche Daten dürfen aus rechtlichen, persönlichen oder sonstigen speziellen Interessen nur bestimmten Abteilungen eines Unternehmens zugänglich gemacht werden; wieder andere Daten hängen unter genau spezifizierten Bedingungen voneinander ab. Die Datenbanksysteme lösen diese Probleme, indem sie virtuelle Sichten (sprich: Views) auf die Datenbestände (sprich: Tabellen) bereitstellen. Diese werden durch Datenbankanwender angelegt und je nach Einsatzziel mit entsprechenden Benutzerrechten verknüpft. Bei hoch komplexen Strukturen werden diese Sichten wiederum miteinander verknüpft und verschachtelt. Das Endresultat ist eine komplexe Vermischung von Verknüpfungen, Vermengung, Sortierung und Filterung der Daten. Dies sind die Grundfunktionalitäten der <a href="http://de.wikipedia.org/wiki/SQL">Structured Query Language</a> (SQL) und damit auch die Basis der Views.</p>
<p>Zur Optimierung der Abfrageperformanz und des Datenaufkommens können zwischengespeicherte Sichten auch für oft angeforderte Anfragen dienen. Je nach Komplexität der unterliegenden Daten kann eine geeignete Projektion und Selektion die Geschwindigkeit zulasten der redundanten Speicherung optimieren<sup>[<a href="#abstract-n-2" class="footnoted" id="to-abstract-n-2">2</a>]</sup>.</p>
<p>Welche konkrete Relevanz hat nun aber das Hinzufügen, Löschen oder Ändern eines Datums in einer Tabelle? Wann und wo treten Veränderungen welcher Art auf?</p>
<p>Um der steigenden Komplexität der Datenbanken gerecht zu werden, helfen oft automatische, interne Aufträge (<a href="http://de.wikipedia.org/wiki/Trigger">Trigger</a>) im Datenbanksystem. Die Trigger definieren ein Stück Programmcode und führen ihn zu einem bestimmten Zeitpunkt und unter einer bestimmten Bedingung aus. Der Zweck eines Triggers ist es, die Datenintegrität aufrecht zu erhalten oder in Verknüpfung mit materialisierten Views für konsistente Daten zu sorgen. Allerdings ist es nicht so ohne Weiteres ersichtlich, ob die Ausführung eines Triggers erfolgreich sein kann, wenn dadurch weitere Trigger ebenfalls aktiv werden. Erst zur Laufzeit, also nach dem statischen Analysieren und gegebenenfalls auch Parsen des Triggers, kann ein Fehler auftreten. Damit stößt man jedoch schnell an die Grenzen des Machbaren. Dies ist auch ein Grund, warum beispielsweise Oracle trotz der beschriebenen Problematik anstandslos das Anlegen von Triggern akzeptiert, welche aber zu rekursiven Abläufen führen oder das <a href="http://wikis.gm.fh-koeln.de/wiki_db/Datenbanken/Mutating-Table-Problem,Loesung">Mutating Table-Problem</a> auslösen könnten.</p>
<p>In der Regel behilft man sich mit einer Umgehung der Problematik. Beispielsweise kann man das Mutating-Table-Problem durch das Aufteilen in zwei Triggereinheiten mit einer temporären Tabelle lösen. Allerdings wird dadurch die Komplexität der Abhängigkeitsstruktur nochmals verstärkt: Was passiert konkret, wenn man ein Datum einer Tabelle oder View ändert? Kann man das Auftreten des Fehlers vorher schon erkennen? Lassen sich potenzielle Zyklen und Rekursionen im Ablauf im Vorfeld erkennen?</p>
<p>Es gibt eine Reihe von visuellen Werkzeugen für Datenbanksysteme oder Anwendungen, die einige grafische Zusatzfunktionen anbieten. Nahezu alle beschränken sich dabei auf die Darstellung der Fremdschlüsselbeziehungen und zielen daher auf die referentielle Integrität. Für die Entwicklung eines Datenbankmodells und auch für das Verständnis des Modells ist eine solche Darstellung oft hilfreich und deshalb auch sehr sinnvoll. Hingegen verschafft es dem Datenbankadministrator oder einem interessierten Anwender nicht die gewünschte Transparenz, um die komplexen, wechselseitigen Abhängigkeiten der Views und Tabellen nachvollziehen zu können.</p>
<p>Im Rahmen dieser Diplomarbeit wird eine Software entwickelt, welche die Abhängigkeiten von Objekten einer Datenbank transparent für den Anwender darstellt. Die Tabellen, Trigger und Views werden dazu zunächst analysiert und anschließend mittels Graphen visualisiert. Eine Software, welche hilfreich bei der Erkennung komplexer Viewabhängigkeiten und rekursiver Triggeraktivitäten ist, gibt es weder mit der analytischen noch der grafischen Komponente.</p>
<p>Ein Teil der Arbeit beschäftigt sich zusätzlich mit einer Evaluation und Bewertung verschiedener vorhandener Frameworks und Werkzeuge, die für die Entstehung der Softwa- re von Bedeutung sind. Außerdem wird bewertet, inwieweit die Software erweiterungsfähig ist.</p>
<p>Die Diplomarbeit entstand aus einer Idee von Dr. Andreas Behrend und wurde in Zu- sammenarbeit mit der Universität Bonn erstellt. Die Autoren Andre Kasper und Jan Philipp haben diese Arbeit zusammen an der Fachhochschule Köln, Campus Gummersbach, erstellt.</p>
<p><em>Dieser Text entstammt aus der abgegebenen Diplomarbeit, Kapitel &#8220;Einleitung&#8221;, und wurde für das Web link-technisch aufgewertet.</em></p>

<ol class="footnotes">
	<li class="footnote" id="abstract-n-1"><strong><sup>[1]</sup></strong> Nur relationale Datenbanksysteme sind im Rahmen dieser Diplomarbeit von Bedeutung. <a class="note-return" href="#to-abstract-n-1">&#x21A9;</a></li>
	<li class="footnote" id="abstract-n-2"><strong><sup>[2]</sup></strong> In der Informatik wird ein derartiges Speicherverfahren für temporäre Daten „Caching“ genannt. Der Umfang eines Caches ist abhängig vom Datenbanksystem, Hardware und speziellen Anforderungen. <a class="note-return" href="#to-abstract-n-2">&#x21A9;</a></li></ol>
]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/08/abstract/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die Grundidee</title>
		<link>http://www.visualdependencies.de/2010/08/die-grundidee/</link>
		<comments>http://www.visualdependencies.de/2010/08/die-grundidee/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 16:06:01 +0000</pubDate>
		<dc:creator>Jan Philipp</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.visualdependencies.de/?p=74</guid>
		<description><![CDATA[Die Grundidee zu der Diplomarbeit lieferte Dr. Andres Behrend von der Universität Bonn. Er beschäftigte sich damals mit der Frage, ob man die Abhängigkeiten zwischen einzelnen Datenbank-Views nicht auch grafisch anzeigen lassen könnte. Aus diesem Grund entstand spontan ein mögliches Abschlussarbeitsthema, welches Prof. Dr. Heide Faeskorn-Woyke der Fachhochschule Köln auch auf ihrem Blog veröffentlichte. Obwohl ]]></description>
			<content:encoded><![CDATA[<p>Die Grundidee zu der Diplomarbeit lieferte <a href="http://www.iai.uni-bonn.de/~behrend/">Dr. Andres Behrend</a> von der Universität Bonn. Er beschäftigte sich damals mit der Frage, ob man die Abhängigkeiten zwischen einzelnen Datenbank-Views nicht auch grafisch anzeigen lassen könnte. Aus diesem Grund entstand spontan ein mögliches Abschlussarbeitsthema, welches <a href="http://faeskorn-woyke.de/">Prof. Dr. Heide Faeskorn-Woyke</a> der Fachhochschule Köln auch auf ihrem Blog <a href="http://faeskorn-woyke.de/index.php/2008-10-06/diplomarbeiten-zu-vergeben/">veröffentlichte</a>.</p>
<p>Obwohl  &#8211; oder vielleicht auch gerade weil? &#8211; das Thema sehr abstrakt formuliert war, klang es für uns beide sehr interessant. In den ersten Gesprächen konnten wir das Thema weiter eingrenzen: Wir stellten fest, dass auch Evaluationen von möglichen Analysen, Darstellungen sowie vorhandener Software Bestandteil der Arbeit werden würden.</p>
<p>Als &#8220;Abhängigkeiten&#8221; bezeichneten wir damit:</p>
<ul>
<li>Beziehungen unter Views und Tabellen (Grafisch: Anfangs- und Endknoten) sowie die Bewertung jeder Beziehung (grafisch: Kante) anhand der Abhängigkeitsbenutzung (reduziert, erweitert, verändert die Abhängigkeit die ursprüngliche Menge?)</li>
<li>rekursive Abhängigkeiten einer View</li>
<li>(rekursive) Abhängigkeiten zwischen Triggern und ihre Auswirkungen. Hierbei ist bei Oracle das <a href="http://wikis.gm.fh-koeln.de/wiki_db/Datenbanken/Mutating-Table-Problem,Loesung">Mutating-Table</a> das Beispiel schlechthin.</li>
</ul>
<div id="attachment_92" class="wp-caption alignnone" style="width: 310px"><a href="http://www.visualdependencies.de/wp-content/uploads/2010/08/001_aufgabe_graph.png"><img class="size-medium wp-image-92" title="Mockup: View-Hierarchie" src="http://www.visualdependencies.de/wp-content/uploads/2010/08/001_aufgabe_graph-300x266.png" alt="Mockup: View-Hierarchie" width="300" height="266" /></a><p class="wp-caption-text">Mockup: View-Hierarchie</p></div>
<p>Damit würde die Diplomarbeit im Wesentlichen aus drei Teilen bestehen:</p>
<ol>
<li>Die Evaluation vorhandener Software oder Verfahren hinsichtlich der Erkennung oder Darstellung von Abhängigkeiten zwischen Views, Triggern oder Tabellen;</li>
<li>die Entwicklung eines SQL-Parsers am Beispiel von Oracle zur Bestimmung eben solcher Abhängigkeiten;</li>
<li>die Entwicklung einer geeigneten, grafischen und wohlmöglich interaktiv bedienbaren Präsentation der ermittelten Abhängigkeiten am Bildschirm.</li>
</ol>
<p>Es stand von vorne herein fest, dass die Arbeit auch ein Endprodukt in Form eines Java-Programmes beinhalten würde.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.visualdependencies.de/2010/08/die-grundidee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

