<?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>BVA-System</title>
	<atom:link href="http://dev.bvasystem.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.bvasystem.de</link>
	<description>Bildverwaltung mal anders</description>
	<lastBuildDate>Tue, 15 May 2012 18:40:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Metadatenelement: Belichtungsbewertung</title>
		<link>http://dev.bvasystem.de/2012/05/metadatenelement-belichtungsbewertung/</link>
		<comments>http://dev.bvasystem.de/2012/05/metadatenelement-belichtungsbewertung/#comments</comments>
		<pubDate>Tue, 15 May 2012 18:40:48 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[Bildinformationen]]></category>
		<category><![CDATA[Fotoalbum]]></category>
		<category><![CDATA[Metadaten]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1966</guid>
		<description><![CDATA[So langsam mag es etwas langweilig klingen, aber das BVASystem hat heute wieder ein weiteres Metadatenelement erhalten. Für mich ist es allerdings gerade eine spannende Zeit: Mit jedem neuen Metadatenelement wächst die Anzahl der Kombinationen, mit der die einzelnen Elemente verknüpft werden können. Das spannende daran ist, das es aktuell noch nicht absehbar ist, welche [...]]]></description>
			<content:encoded><![CDATA[<p>So langsam mag es etwas langweilig klingen, aber das BVASystem hat heute wieder ein weiteres Metadatenelement erhalten. Für mich ist es allerdings gerade eine spannende Zeit: Mit jedem neuen Metadatenelement wächst die Anzahl der Kombinationen, mit der die einzelnen Elemente verknüpft werden können. Das spannende daran ist, das es aktuell noch nicht absehbar ist, welche der Kombinationen genutzt werden kann, um thematisch zusammengehörige Fotos vom Rest der Bilder zu trennen.</p>
<p>Aber auch diesmal muss ich das Metadatenelement ein wenig erklären, da es wieder ein Element ist, welches vom Programm errechnet wird.</p>
<p><strong>Wie definiert sich die Belichtungsbewertung?</strong></p>
<p>Wie auch der Tonwertumfang basiert die Belichtungsbewertung auf dem Histogramm des Fotos. Im letzen Blog habe ich versucht zu erklären, das ein perfektes Bild alle möglichen Tonwerte nutzt. Es dürfen allerdings keine Farbwerte außerhalb des möglichen Tonwertumfangs liegen. Alle Bildpunkte, die dunkler als der kleinstmögliche Tonwert sind, werden von der Kamera ebenfalls auf den kleinstmöglichen Tonwert gesetzt. Analog gilt das gleiche für Bildbereiche die heller sind, als der größtmögliche Tonwert. Im Bild äußert sich das dadurch, das größere Flächen entstehen, die komplett schwarz bzw. komplett weiß sind. Im Histogramm erkennt man ebenfalls eine Häufung beim kleinstmöglichen bzw. größtmöglichen Tonwert. Für die Belichtungsbewertung zählt das BVASystem nun die weißen bzw. die schwarzen Bildpunkte und setzt sie im Verhältnis zur Gesamtbildgröße. Je mehr Prozent der Bildfläche komplett weiß bzw. schwarz sind, desto größer ist der fehlbelichtete Bildbereich.</p>
<p><strong>Wozu kann sie genutzt werden?</strong></p>
<p>In erster Linie ist die Belichtungsbewertung dazu gedacht, damit fehlbelichtete Bilder erst garnicht in das jeweilige Fotoalbum eingefügt werden. Aber auch der umgekehrte Fall, das nur fehlbelichtete Bilder einem Album zugeordnet werden, erscheint mir sinnvoll, da man beispielsweise so gezielt alle fehlbelichteten Bilder betrachten kann.  So kann man schnell entscheiden, ob das Bild mit Photoshop noch zu &#8220;retten&#8221; ist oder ob es besser gelöscht werden sollte. Natürlich kann man die Belichtungsbewertung auch nutzen, um Fotos die bewusst unter- oder überbelichtete Bildbereiche (z.B Sternenhimmel) besitzen von anderen Fotos zu trennen.</p>
<p>Um möglichst viele verschiedene Definitions-Möglichkeiten zu bieten, können auch nur unterbelichtete oder nur überbelichtete Bildbereiche ausgewertet werden. Gerade im Fall des Sternenhimmels wird einem wahrscheinlich nur der unterbelichtete Bildbereich interessieren. Standardmäßig sind bei der Definition des Metadatenelements Belichtungsbewertung unter- und überbelichtete Bildbereich ausgewählt.</p>
<div id="attachment_1972" class="wp-caption aligncenter" style="width: 647px"><a href="http://dev.bvasystem.de/wp-content/uploads/2012/05/Metadatenelement-Belichtungsbewertung.jpg"><img class=" wp-image-1972" title="Metadatenelement Belichtungsbewertung" src="http://dev.bvasystem.de/wp-content/uploads/2012/05/Metadatenelement-Belichtungsbewertung.jpg" alt="Metadatenelement Belichtungsbewertung" width="637" height="114" /></a><p class="wp-caption-text">Metadatenelement Belichtungsbewertung</p></div>
<p><strong>Welche weiteren Änderungen wurden am Programm umgesetzt?</strong></p>
<p>In der Bildinformationen-Ansicht hat sich auch einiges getan. Auffällig sollte sein, das sich nun nicht mehr 2 sondern 3 kleine Fensterchen auf der Ansicht befinden. Außerdem sollte auffallen, das jedes dieser 3 Fenster auch eine Funktion hat. Das erste der Fenster dient zur Navigation innerhalb der aktiven Bildliste. Das Foto-Fenster zeigt logischerweise das aktuell aktive Bild an und das Kamera-Fenster zeigt aktuell die EXIF-Daten des Bildes an, wie es auf dem Bildinformationspopup bekannt sein sollte.</p>
<p>Des weiteren habe ich  daran gearbeitet, das alle Funktionen zur Bildveränderung in der ImgFkt.dll ausgelagert sind. Neu ist diesmal, das die Funktion zur Umwandlung eines Bildes in ein Graustufenbild ausgelagert wurde. Scheinbar mag dies zu keiner Änderung für den Anwender führen, aber intern erhalte ich dadurch eine viel klarere Struktur. Und vielleicht ergibt sich auch einmal die Gelegenheit die Funktionsbibliotek für ein anderes Projekt zu verwenden.</p>
<p><strong>Wie geht es weiter?</strong></p>
<p>Weiterarbeiten werde ich nun an 2 weiteren Metadatenelementen, deren Umsetzung sich einfacher gestalten dürfte. Es geht dabei um die Blende und die Belichtungszeit, die von der Kamera in der Bilddatei abgelegt wurde. Mein Ziel ist es dabei, zu ermöglichen, Fotos, bei deren Aufnahme ähnliche Lichtbedingungen herschten, zu filtern.</p>
<p>Die Schwierigkeit bei der Entwicklung der beiden Metadatenelemente liegt ganz klar in der Benutzeroberfläche. Sowohl Blende als auch Belichtungszeit werden in der Bilddatei als reine Gleitkommazahl gespeichert. Angezeigt wird die Belichtungszeit aber  beispielsweise als  &#8220;1/250 sec&#8221; und nicht als  &#8220;0,004 sec&#8221;. Ich muss also einen Weg finden, wie die Belichtungszeit für den Anwender bequem eingstellt werden kann,.</p>
<p>Außerdem werde ich wieder an der Bildinformationsansicht weiterarbeiten. Diesmal wird es darum gehen, das der Anwender zwischen verschiedenen Ansichten wechseln kann. Außerdem möchte ich die Funktion zur Definition eigenener Ansichten vorbereiten.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/05/metadatenelement-belichtungsbewertung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metadatenelement: Tonwertumfang</title>
		<link>http://dev.bvasystem.de/2012/05/metadatenelement-tonwertumfang/</link>
		<comments>http://dev.bvasystem.de/2012/05/metadatenelement-tonwertumfang/#comments</comments>
		<pubDate>Tue, 01 May 2012 12:59:28 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[Bildinformationen]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Fotoalbum]]></category>
		<category><![CDATA[Metadaten]]></category>
		<category><![CDATA[Tonwertumfang]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1958</guid>
		<description><![CDATA[Aktuell fühlt es sich so an als wenn die Zeit rast, denn schon wieder ist es an der Zeit, eine weitere Entwicklerversion des BVASystems zu veröffentlichen.  Auch diesmal gibt es wieder ein ganz besonderes neues Metadatenelement, denn mit dem Tonwertumfang können Bilder nun auch erstmals bewertet werden. Bevor ich darauf aber weiter eingehe, werde ich kurz [...]]]></description>
			<content:encoded><![CDATA[<p>Aktuell fühlt es sich so an als wenn die Zeit rast, denn schon wieder ist es an der Zeit, eine weitere Entwicklerversion des BVASystems zu veröffentlichen.  Auch diesmal gibt es wieder ein ganz besonderes neues Metadatenelement, denn mit dem Tonwertumfang können Bilder nun auch erstmals bewertet werden. Bevor ich darauf aber weiter eingehe, werde ich kurz erläutern, was der Tonwertumfang überhaupt ist.</p>
<p><strong>Was ist der Tonwertumfang eines Bildes?</strong></p>
<p>Der Tonwertumfang eines Bildes gibt an, wieviele Farbinformationen (Tonwerte) ein Bild besitzt. Ein Graustufenbild mit einer Farbtiefe von 8bit besitzt beispielsweise 2^8 = 256 mögliche Grautöne. Werden von diesen 256 möglichen Grautönen nur die Hälfte (128) im Bild genutzt, so beträgt der Tonwertumfang 50%.</p>
<p>Ein ideales Bild nutzt alle möglichen Tonwerte. Generell ist es so, das je weniger Tonwerte ein Bild nutzt, desto kontrastärmer bzw. flauer wirkt es. Daraus folgt nun auch der bewertende Charakter des Tonwertumfangs. Je kleiner der Tonwertumfang eines Bildes ist, desto weiter ist das Foto von einem idealen Bild entfernt und desto &#8220;schlechter&#8221; ist das Bild. Aber Vorsicht: Eine generelle Aussage, ob das Bild schlecht ist, ist nicht möglich, da ein reduzierter Tonwertumfang auch als gestalterisches Mittel eingesetzt werden kann.</p>
<p><strong>Wie wird der Tonwertumfang innerhalb der Metadaten umgesetzt?</strong></p>
<p>In der Metadatendefinition gibt man für den Tonwertumfang eine untere und obere Grenze an. Liegt der Tonwertumfang des Fotos zwischen den beiden Grenzen, so wird das Bild dem Album zugeorndet. Damit wird ein recht guter Freiheitsgrad erreicht, da sowohl gute Bilder (Beispielsweise Tonwertumfang zwischen 80% und 100%) als auch schlechte Bilder (Beispielsweise Tonwertumgang zwischen 0% und 25%) zugeordnet werden können. Wie immer lassen sich weitere Elemente mit dem Tonwertumfang kombinieren, so dass dann alle Elemente erfüllt sein müssen. Auch kann das Metadatenelement Tonwertumfang mehrfach genutzt werden, um mehrere Tonwertbereiche abzudecken.</p>
<div id="attachment_1960" class="wp-caption aligncenter" style="width: 647px"><a href="http://dev.bvasystem.de/wp-content/uploads/2012/05/Metadatenelement-Tonwertumfang.jpg"><img class="size-full wp-image-1960" title="Metadatenelement Tonwertumfang" src="http://dev.bvasystem.de/wp-content/uploads/2012/05/Metadatenelement-Tonwertumfang.jpg" alt="Metadatenelement Tonwertumfang" width="637" height="74" /></a><p class="wp-caption-text">Metadatenelement Tonwertumfang</p></div>
<p><strong>Welche Änderungen gibt es außerdem an der Bilddatenbank?</strong></p>
<p>Neben dem neuen Metadatenelement habe ich damit begonnen, einen vierten Ansichtsmodi in das Programm zu integrieren. Der neue Modus soll dazu genutzt werden, um die erfassten Informationen zu einem Bild anzuzeigen. Aktuell stört es mich schon sehr, das nicht einsehbar ist, wie groß beispielsweise der Tonwertumfang eines Fotos ist. Ein überprüfen, ob die Zuordnung zu einem Fotoalbum formal korrekt gewesen ist, ist also leider noch nicht möglich. Aktuell ist ein Stand erreicht, in dem 2 kleine Bildinformationsfenster ein- und auch wieder ausgeblendet werden können. Da noch keinerlei Informationen in diesen Fenstern stehen, ist der Nutzen des ganzen quasi noch nicht vorhanden.</p>
<p><strong>Wie gehts weiter?</strong></p>
<p>Heute abend werde ich daher gleich an dieser Ansicht weiterentwickeln. Ziel ist es, das zumindest ein Teil der aktuell erfassten Informationen visualisiert werden können. Sobald die Ansicht für den Anwender einen Nutzen hat, werde ich mein Konzept hinter dieser Ansicht näher erläutern. Außerdem werde ich in den nächsten Wochen wieder ein neues Metadatenelement implementieren. Auch dieses wird wieder einen bewertenden Charakter haben.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/05/metadatenelement-tonwertumfang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fokus Hauptfunktionalität</title>
		<link>http://dev.bvasystem.de/2012/04/fokus-hauptfunktionalitat/</link>
		<comments>http://dev.bvasystem.de/2012/04/fokus-hauptfunktionalitat/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 20:40:15 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[Bildinformationen]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Fotoalbum]]></category>
		<category><![CDATA[Metadaten]]></category>
		<category><![CDATA[Roadmap]]></category>
		<category><![CDATA[Schlagwörter]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1943</guid>
		<description><![CDATA[Meiner Roadmap ist seit einigen Wochen zu entnehmen, das ich mich nun, nachdem ich mich die letzten Monate viel mit Datenbanksystemen rumgeärgert habe, wieder verstärkt der Hauptfunktionalität des BVASystems, den Metadaten, widmen werde. Dies erscheint mir sinnvoll, da sich das BVASystem gerade in diesem Punkt von anderen Bildverwaltungsprogrammen unterscheidet. Geplant ist, die automatische Zuordnung von [...]]]></description>
			<content:encoded><![CDATA[<p>Meiner <a title="Roadmap" href="http://dev.bvasystem.de/own/bt/roadmap_page.php">Roadmap</a> ist seit einigen Wochen zu entnehmen, das ich mich nun, nachdem ich mich die letzten Monate viel mit Datenbanksystemen rumgeärgert habe, wieder verstärkt der Hauptfunktionalität des BVASystems, den Metadaten, widmen werde. Dies erscheint mir sinnvoll, da sich das BVASystem gerade in diesem Punkt von anderen Bildverwaltungsprogrammen unterscheidet. Geplant ist, die automatische Zuordnung von Bildern zu Fotoalben soweit auszubauen, dass auch komplexere Bedingungen definiert und genutzt werden können. Die bereits vorhandenen Elemente &#8220;Aufnahmedatum&#8221;, &#8220;Besitzer des Bildes&#8221; und &#8220;Verwendete Kamera&#8221; funktionieren zwar schon ganz gut, lassen aber eben nur simple Entscheidungen zu, da sie sich kaum kombinieren lassen.</p>
<p>Aktuell ist mein Ziel zu demonstrieren, was mit dem Metadatensystem alles erreicht werden kann. Dafür ist es natürlich am wichtigsten, weitere Metadatenelemente zu schaffen, die beliebig mit den bereits vorhandenen Elementen kombiniert werden können. Langfristig möchte ich die Metadaten noch an andere Verwaltungselemente, wie zum Beispiel die Schlagworte, binden.</p>
<p>Den ersten abgesteckten Entwicklungsschritt habe ich nun auch bereits erreicht. Das Metadatenelement „Mittlere Helligkeit“ ist in der Version 2.1.1.41 nun zum ersten Mal enthalten. Das Besondere dabei ist, dass der Helligkeitswert nicht aus dem Header des Fotos ausgelesen werden kann. Es handelt sich vielmehr um einen Wert, der direkt aus dem Foto errechnet wird. Das BVASystem ist damit also in der Lage, helle und dunkle Fotos zu unterscheiden.</p>
<p>Weiterhin habe ich das Metadatenelement &#8220;Aufnahmedatum&#8221; verbessert, in welchem nun auch die Uhrzeit eingestellt werden kann. Bisher war es so, das man nur tageweise definieren konnte. War man beispielsweise vormittags wandern und nachmittags auf einer Familienfeier, waren die Fotos automatisch nicht voneinander trennbar. Nun können auch beliebig viele Fotoalben angelegt werden, welche alle Fotos enthalten, die an dem gleichen Tag aufgenommen wurden.</p>
<div id="attachment_1952" class="wp-caption aligncenter" style="width: 561px"><a href="http://dev.bvasystem.de/wp-content/uploads/2012/04/Veränderte-Metadatenelemente-der-Version-2.1.1.41-dev.jpg"><img class=" wp-image-1952" title="Veränderte Metadatenelemente der Version 2.1.1.41-dev" src="http://dev.bvasystem.de/wp-content/uploads/2012/04/Veränderte-Metadatenelemente-der-Version-2.1.1.41-dev.jpg" alt="Veränderte Metadatenelemente der Version 2.1.1.41-dev" width="551" height="231" /></a><p class="wp-caption-text">Veränderte Metadatenelemente der Version 2.1.1.41-dev</p></div>
<p>Als dritte kleine Verbesserung habe ich die Metadatenelemente in der Auswahlliste gruppiert. Damit sollte es, auch wenn es mal mehrere Dutzend Metadatenelemente werden, trotzdem übersichtlich bleiben. Die 3 nun verwendeten Gruppen lauten:</p>
<ul>
<li>EXIF: Hier werden alle Elemente zusammengefasst, die auf dem EXIF-Header eines Fotos basieren</li>
<li>DB: Hier werden alle Elemente zusammengefasst, die sich direkt aus der Datenbank ableiten lassen</li>
<li>BV: Hier werden alle Elemente zusammengefasst, die mittels Bildverarbeitung direkt am Foto errechnet werden</li>
</ul>
<p>Auch in der nächsten Version werde ich mich um die Metadaten kümmern. Ziel ist es das erste bildbewertende Metadatenelement zu schaffen. Damit soll es dann möglich sein, das nur gelungene Bilder den Weg in ein Fotoalbum finden. Außerdem werde ich damit beginnen, einen vierten Ansichtsmodi „Bildinformationen“ in das Programm zu integrieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/04/fokus-hauptfunktionalitat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4 Monate</title>
		<link>http://dev.bvasystem.de/2012/03/4-monate/</link>
		<comments>http://dev.bvasystem.de/2012/03/4-monate/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 20:12:19 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[Ausblick]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Stabile Version]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1937</guid>
		<description><![CDATA[Etwa 4 Monate nach der Mission accomplished habe ich es, allen störrischen Datenbanksystemen zum Trotz geschafft, heute die zweite stabile Softwareversion vom BVASystem fertigzustellen. Aufmerksame Leser des Blogs werden sicher wissen, mit was ich mich die letzten Monate beschäftigt habe. Für alle anderen fasse ich es trotzdem noch einmal kurz zusammen: Neuerungen am Programm Die größte [...]]]></description>
			<content:encoded><![CDATA[<p>Etwa 4 Monate nach der <a title="Mission accomplished" href="http://dev.bvasystem.de/2011/12/mission-accomplished/">Mission accomplished</a> habe ich es, allen <a title="Störrische Datenbanksysteme" href="http://dev.bvasystem.de/2012/03/storrische-datenbanksysteme/">störrischen Datenbanksystemen</a> zum Trotz geschafft, heute die zweite stabile Softwareversion vom BVASystem fertigzustellen. Aufmerksame Leser des Blogs werden sicher wissen, mit was ich mich die letzten Monate beschäftigt habe. Für alle anderen fasse ich es trotzdem noch einmal kurz zusammen:</p>
<p><strong>Neuerungen am Programm</strong></p>
<p>Die größte Veränderung am Programm ist sicher die Unterstützung von den Datenbanksystemen MySQL, Firebird und Oracle. Bisher war es nur möglich, MySQL als Datenbanksystem zu verwenden. Die Installation war aufwendig und wahrscheinlich nicht immer leicht. Hier konnte ich definitiv eine Verbesserung erreichen, indem die notwendige Datenbankstruktur nun durch ein <a title="Das neue BVASystem Administrationstool" href="http://dev.bvasystem.de/2012/01/das-neue-bvasystem-administrationstool/">Administrationstool erstellt </a>werden kann. Es sind hier weit weniger Benutzereingaben bzw. -aktionen notwendig um ans Ziel zu gelangen.</p>
<p>Aber auch am Hauptprogramm gab es Veränderungen. Das Modul zum Auslesen der <a title="Erweiterung des Exif-Moduls" href="http://dev.bvasystem.de/2011/12/erweiterung-des-exif-moduls/">EXIF-Bildinformationen wurde erweitert</a>, die neu erfassten Daten werden beim Bildimport  in der Datenbank gespeichert und sie können in einem <a title="Das Bildinformations-Popupfenster" href="http://dev.bvasystem.de/2012/02/das-bildinformations-popupfenster/">Bildinformationspopup-Fenster</a> jederzeit angezeigt werden.</p>
<p><a href="http://dev.bvasystem.de/wp-content/uploads/2012/03/BVASystem-2.1.1-Miniaturbilder.jpg"><img class="aligncenter  wp-image-1938" title="BVASystem 2.1.1 - Miniaturbilder" src="http://dev.bvasystem.de/wp-content/uploads/2012/03/BVASystem-2.1.1-Miniaturbilder.jpg" alt="" width="476" height="322" /></a></p>
<p><strong>Ausblick</strong></p>
<p>Ich hoffe, das ich bis zur nächsten stabilen Softwareversion wieder einen ähnlichen Zeitrahmen benötigen werde. Vorgenommen habe ich mir, das ich die Metadaten-Funktionalität verstärkt erweitere. Ich denke, das diese Funktionalität das BVASystem am stärksten von anderen Bildverwaltungssystemen unterscheidet. Darum denke ich, das die Entwicklungszeit hier gut investiert ist.</p>
<p>Als erstes möchte ich ein neues Metadatenelement implementieren, welches nicht auf dem EXIF-Header basiert. Dieses Metadatenelement wird die mittlere Bildhelligkeit sein. Damit wird es dann beispielsweise möglich sein, Nachtaufnahmen von Tagaufnahmen zu unterscheiden, auch wenn sie am gleichen Tag aufgenommen wurden. Mehr dazu werde ich hier berichten, sobald die neue Funktionalität in einer Entwicklerversion getestet werden kann.</p>
<p>Außerdem habe ich mir vorgenommen, einen vierten Anzeigemodi zu schaffen, auf dem alle Bildinformationen zusammenhängend angezeigt und später auch editiert werden können. Und auch am Administrationstool werde ich weiterarbeiten. Wichtig ist zum Beispiel die Möglichkeit zur Aktualisierung einer veralterten BVASystem Datenbankstruktur.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/4-monate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbanksystem-Unterschiede 4</title>
		<link>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-4/</link>
		<comments>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-4/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 11:24:31 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Firebird]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Unterschiede]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1933</guid>
		<description><![CDATA[Heute möchte ich meine kleine Datenbanksystem-Unterschied-Serie zum Abschluss bringen.  Als letztes geht es um einen kleinen SQL-Befehl, der im Gegensatz zu den anderen Unterschieden, im alltäglichen Betrieb benötigt wird. Es geht um die Frage: Wie kann ich die Datensatz-ID des zuletzt gespeicherten Datensatzes erhalten? Fügt man in eine beliebige Tabelle mit Hilfe eines &#8220;INSERT INTO [...]]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich meine kleine Datenbanksystem-Unterschied-Serie zum Abschluss bringen.  Als letztes geht es um einen kleinen SQL-Befehl, der im Gegensatz zu den anderen Unterschieden, im alltäglichen Betrieb benötigt wird. Es geht um die Frage:</p>
<p><strong>Wie kann ich die Datensatz-ID des zuletzt gespeicherten Datensatzes erhalten?</strong></p>
<p>Fügt man in eine beliebige Tabelle mit Hilfe eines &#8220;INSERT INTO &#8230;&#8221;-Befehls einen Datensatz hinzu, so weiß man im Normalfall nicht, welcher Wert per Autoincrement/Trigger für das ID-Feld generiert wurde. Diesen Wert benötigt man allerdings, wenn weitere Daten in einer abhängigen Tabelle (foreign keys) gespeichert werden sollen.</p>
<p>Eine Lösung wäre, das man den gerade eingefügten Datensatz wieder selektiert und das ID-Feld ausliest. Dies ist aber nicht notwendig, da alle 3 Datenbanksysteme für diesen Fall eine einfachere Lösung bieten.</p>
<p><strong>MySQL</strong></p>
<p>MySQL besitzt eine Funktion, mit der man die zuletzt hinzugefügte ID erfragen kann. Der Funktionsaufruf ist per SELECT-Befehl möglich und sieht wie folgt aus:</p>
<pre>SELECT LAST_INSERT_ID() AS ID</pre>
<p>Wichtig ist hier, das der Befehl gleich nach dem INSERT aufgerufen wird, da sich der Wert bei einem weiteren INSERT ändert.</p>
<p><strong>Firebird</strong></p>
<p>Bei Firebird kann man den zur Datenbanktabelle gehörenden Generatorwert erfragen. Es ist ein wenig aufwendiger als bei MySQL, da man für unterschiedliche Tabellen unterschiedliche Generatoren abfragen muss. Die Abfrage sieht wie folgt aus:</p>
<pre>SELECT gen_id(GEN_BVA_CREATIONTREE, 0) AS ID from rdb$Database</pre>
<p>Vorteil ist hier, das der Generatorwert jederzeit abgefragt werden kann. Auch ohne INSERT kann der aktuelle Wert des Generators abgefragt werden.</p>
<p><strong>Oracle</strong></p>
<p>Mit einer ähnlichen Abfrage kommt man bei Oracle zu seinem ID Wert.  Sie sieht wie folgt aus:</p>
<pre>SELECT GEN_BVA_CREATIONTREE.CURRVAL AS ID FROM DUAL</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbanksystem-Unterschiede 3</title>
		<link>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-3/</link>
		<comments>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-3/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 14:01:00 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Firebird]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Unterschiede]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1929</guid>
		<description><![CDATA[Im letzten Teil war bereits für Firebird und Oracle ein Datenbanktrigger enthalten, der die Aufgabe hatte, das Auto-ID Feld zu füllen. Der Vollständigkeit halber möchte ich heute einen einfachen Trigger für alle 3 Datenbanksysteme vorstellen. Da die syntaktischen Unterschiede zwischen den Triggern nicht größer sein könnten, werde ich die 3 SQL-Befehle relativ unkommentiert im Raum [...]]]></description>
			<content:encoded><![CDATA[<p>Im letzten Teil war bereits für Firebird und Oracle ein Datenbanktrigger enthalten, der die Aufgabe hatte, das Auto-ID Feld zu füllen. Der Vollständigkeit halber möchte ich heute einen einfachen Trigger für alle 3 Datenbanksysteme vorstellen. Da die syntaktischen Unterschiede zwischen den Triggern nicht größer sein könnten, werde ich die 3 SQL-Befehle relativ unkommentiert im Raum stehen lassen. Die Möglichkeiten des einzelnen Datenbanksystems sind in den jeweiligen Dokumentationen besser erfasst. Bevor ich jetzt auf die 3 Datenbanksysteme eingehe, möchte ich aber kurz erläutern was ein Trigger ist.</p>
<p><strong>Was ist ein Trigger?</strong></p>
<p>Ein Datenbanktrigger ist eine Datenbankfunktionalität, die in eigentlich jedem größeren Datenbanksystem integiert ist. Man kann sich einen Trigger wie ein kleines Programm vorstellen, das bei bestimmten Datenbankaktionen ausgeführt wird. Beispielsweise kann vor dem Einfügen eines Datensatzes geprüft werden, ob die Daten valide sind. Oder es wird ein Trigger erstellt, der das Erstellungsdatum des Datensatzes speichert.</p>
<p>Genau so ein Trigger soll mein Beispiel für den Vergleich zwischen MySQL,Firebird und Oracle sein. In der Tabelle bva_image speichert der Trigger in dem Feld mod_date das aktuelle Systemdatum ab, sobald ein Datensatz in der Tabelle hinzugefügt wird.</p>
<p><strong>Trigger unter MySQL</strong></p>
<pre>CREATE TRIGGER  bva_image_insert_timestamp
 BEFORE INSERT on bva_image
 FOR EACH ROW
  SET NEW.mod_date = NOW();</pre>
<p><strong>Trigger unter Firebird</strong></p>
<pre>CREATE TRIGGER bva_image_insert_timestamp FOR bva_image
 BEFORE INSERT
 AS
 BEGIN
  NEW.mod_date = CURRENT_TIMESTAMP;
 END</pre>
<p><strong>Trigger unter Oracle</strong></p>
<pre>CREATE OR REPLACE TRIGGER IMAGE_INSERT_TIMESTAMP
 BEFORE INSERT ON BVA_IMAGE
 FOR EACH ROW
 BEGIN
  :new.mod_date := SYSDATE;        
 END;</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Störrische Datenbanksysteme</title>
		<link>http://dev.bvasystem.de/2012/03/storrische-datenbanksysteme/</link>
		<comments>http://dev.bvasystem.de/2012/03/storrische-datenbanksysteme/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 16:11:21 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Firebird]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ODBC]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1926</guid>
		<description><![CDATA[Eigentlich wollte ich heute hier berichten, das das BVASystem 2.1.0.39-dev nun 3 verschiedene Datenbankmanagementsysteme unterstützt. Leider gab es in den letzten Tagen eine Reihe von Problemen, so das es aktuell nur 2 Datenbanksysteme (MySQL und Firebird) sind. In der nächsten Version werde ich Oracle als drittes Datenbanksystem nachreichen. Probleme mit Firebird Schon zu Beginn der Arbeiten [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich wollte ich heute hier berichten, das das BVASystem 2.1.0.39-dev nun 3 verschiedene Datenbankmanagementsysteme unterstützt. Leider gab es in den letzten Tagen eine Reihe von Problemen, so das es aktuell nur 2 Datenbanksysteme (MySQL und Firebird) sind. In der nächsten Version werde ich Oracle als drittes Datenbanksystem nachreichen.</p>
<p><strong>Probleme mit Firebird</strong></p>
<p>Schon zu Beginn der Arbeiten zur neuen Version des BVASystems gab es die ersten Probleme. Firebird nutzt ein komplett anderes System um eine Datenbankverbindung aufzubauen als MySQL oder Oracle. Firebird benötigt den Pfad und Dateinamen der Datenbankdatei, um eine Verbindung herzustellen. Da ich Pfad und Dateiname im Administrationstool nicht erfasst habe, war es mir nicht möglich, für alle 3 Datenbanksysteme den gleichen Einstellungsdialog zu verwenden. Also musste ich in den sauren Apfel beißen und einen weiteren Einstellungsdialog entwickeln.</p>
<p>Das zweite Problem war, das auch später im BVASystem immer wieder der Pfad und der Dateiname der Datenbank benötigt wird. Da ich dies absolut nicht wollte, habe ich recht lange nach einer Lösung gesucht und auch eine gefunden. Die Lösung heißt: &#8220;aliases.conf&#8221; Im Programmverzeichnis von Firebird liegt eine aliases.conf, in der ein Alias für eine Kombination aus Pfad und Dateiname angelegt werden kann. Das BVASystem Administrationstool legt den benötigten Alias, bei der Erstellung der Datenbankstruktur, mit an. Die einzige Aufgabe, die manuell ausgeführt werden muss, ist ein Neustart des Datenbankservers. Ohne Neustart steht der neue Alias noch nicht zur Verfügung und die Datenbankverbindung schlägt fehl.</p>
<p><strong>Probleme mit Oracle</strong></p>
<p>Auch Oracle erwies sich als nicht weniger störrisch. Die notwendigen Datenbankscripte waren relativ schnell entwickelt, aber bei der von mit genutzten Version 9 lassen sich absolut keine Trigger erzeugen. Per SQLPlus funktionieren die einzelnen Befehle der Scripte wunderbar, aber beim Administrationstool werden vom ODBC-Treiber die Zeilenwechsel durch einen doppelten Wagenrücklauf (#13) ersetzt. Oracle schimpft dann bei der Übersetzung der Trigger, das ein ungültiges Zeichen gefunden wurde. Tests mit der Version 10 funktionierten dagegen einwandfrei. Daher habe ich mich entschlossen, die Unterstützung von Oracle 9 wieder zu entfernen bzw. sie durch Version 11 zu ersetzten. Da ich dafür allerdings mindestens 1 Woche benötige, habe ich entschieden, Oracle auf die nächste Programmversion zu verschieben. Ich hoffe, das dies dann das letzte Problem war, auf dem Weg zur Unterstützung von 3 Datenbanksystemen.</p>
<p><strong>Ausblick</strong></p>
<p>Neben der Oracle Unterstützung habe ich vor, noch einen Programmfehler aus dem BVASystem zu entfernen. Zum Beispiel stürzt das Programm leider ab, wenn ein Bild mit fehlerhaften Exif-Header geladen wird. Außerdem habe ich vor, die Installationsanleitung anzupassen, da nun die Erstellung der Datenbank mit dem Administrationstool einfacher geworden ist.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/storrische-datenbanksysteme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbanksystem-Unterschiede 2</title>
		<link>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-2/</link>
		<comments>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-2/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 12:59:50 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Firebird]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Unterschiede]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1916</guid>
		<description><![CDATA[Im zweiten Teil meiner kleinen Serie soll es nun um die Definition eines Auto-ID Feldes gehen. Ein Auto-ID Feld ist ein Datenbankfeld, welches automatisch, beim Einfügen eines neuen Datensatzes, gefüllt wird. Meist wird für diese Zwecke ein Zahlenfeld genutzt. Der erste Datensatz erhält die ID 1, der zweite die 2, der dritte die 3 usw. [...]]]></description>
			<content:encoded><![CDATA[<p>Im zweiten Teil meiner kleinen Serie soll es nun um die Definition eines Auto-ID Feldes gehen. Ein Auto-ID Feld ist ein Datenbankfeld, welches automatisch, beim Einfügen eines neuen Datensatzes, gefüllt wird. Meist wird für diese Zwecke ein Zahlenfeld genutzt. Der erste Datensatz erhält die ID 1, der zweite die 2, der dritte die 3 usw. Benötigt werden die Auto-ID Felder recht häufig, da mit ihnen Verknüpfungen zu anderen Datenbanktabellen, so genannte &#8220;Foreign Keys&#8221;, hergestellt werden können.</p>
<p><strong>Auto-ID Feld unter MySQL</strong></p>
<p>Wie einfach es ist, unter MySQL ein Auto-ID Feld zu erzeugen, hatte ich bereits im <a title="Datenbanksystem-Unterschiede 1" href="http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-1/">Teil 1 </a>erwähnt. Man muss nur bei der Erzeugung einer Tabelle beim gewünschten Feld das Schlüsselwort AUTO_INCREMENT hinzufügen. Als Datenbankentwickler freut man sich sicher, das man so schnell fertig ist.  Aber man stößt sehr schnell an eine Grenze, wenn man komplexere Sachen umsetzen möchte. Zum Beispiel ist es nicht ohne weiteres möglich, eine eindeutige ID über mehrere Tabellen zu definieren.</p>
<p><strong>Auto-ID Feld unter Firebird</strong></p>
<p>Unter Firebird sind mehrere Einzelschritte notwendig, um ein Auto-ID Feld zu definieren. Als erstes wird logischerweise wie in <a title="Datenbanksystem-Unterschiede 1" href="http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-1/">Teil 1</a> bereits beschrieben die Tabelle angelegt. Als zweiten Schritt erzeugt man sich einen sogenannten Generator, der die jeweils zuletzt genutzte ID speichert. Die Erzeugung eines Generators erfolgt mit folgendem SQL-Befehl:</p>
<pre>CREATE GENERATOR GEN_BVA_CREATIONTREE</pre>
<p>Als nächstes muss der Generator mit einem Wert initialisiert werden. Im Beispiel wird der Generator mit dem Wert 0 initialisiert.</p>
<pre>SET GENERATOR GEN_BVA_CREATIONTREE TO 0</pre>
<p>Als letztes und wichtigstes Element wird ein Trigger benötigt, der vor dem Einfügen eines Datensatzes ausgeführt wird. Der Trigger erhöht den Generatorwert um 1 und trägt den Wert in das gewünsche Auto-ID-Feld der Tabelle ein.</p>
<pre>CREATE TRIGGER ID_TRIGGER_BVA_CREATIONTREE FOR BVA_CREATIONTREE
 BEFORE INSERT
 AS
 BEGIN
  NEW.ID = GEN_ID(GEN_BVA_CREATIONTREE,1);
 END</pre>
<p>Hier ist es möglich über mehrere Tabellen einen eindeutigen Index zu erzeugen. Dafür muss man in den jeweiligen Triggern den gleichen Generator nutzen.</p>
<p><strong>Auto-ID Feld unter Oracle</strong></p>
<p>Oracle arbeitet prinzipiell nach dem gleichen Konzept wie Firebird. Allerdings heißt der Generator bei Oracle Sequenz. Außerdem entfällt der Initialisierungsschritt, da die Initialisierung bereits bei der Erstellung der Sequenz erfolgt. Die Befehlsfolge für Oracle sieht wie folgt aus:</p>
<pre>CREATE SEQUENCE GEN_BVA_CREATIONTREE
 START WITH 1
 INCREMENT BY 1
 NOMAXVALUE
 NOCACHE
 ORDER;</pre>
<pre>CREATE OR REPLACE TRIGGER ID_TRIGGER_BVA_CREATIONTREE
 BEFORE INSERT ON BVA_CREATIONTREE
 FOR EACH ROW
 BEGIN
  SELECT GEN_BVA_CREATIONTREE.nextval INTO :new.id FROM DUAL;
 END;
/</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbanksystem-Unterschiede 1</title>
		<link>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-1/</link>
		<comments>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-1/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 12:25:31 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Firebird]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Unterschiede]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1904</guid>
		<description><![CDATA[Vor einiger Zeit schrieb ich, das eine Datenbankverbindung per ODBC den Vorteil hat, das sie für jedes Datenbanksystem funktioniert, welches ODBC unterstützt. Aktuell, nach der Entwicklung des Administrationstools, muss ich diese Aussage leicht korrigieren. Richtig ist, das die Standard SQL-Befehle, wie SELECT, INSERT, UPDATE usw, mit jedem Datenbanksystem genutzt werden können. Nutzt man allerdings speziellere [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit schrieb ich, das eine <a title="Große Veränderungen" href="http://dev.bvasystem.de/2012/01/grose-veranderungen/">Datenbankverbindung per ODBC</a> den Vorteil hat, das sie für jedes Datenbanksystem funktioniert, welches ODBC unterstützt. Aktuell, nach der Entwicklung des Administrationstools, muss ich diese Aussage leicht korrigieren. Richtig ist, das die Standard SQL-Befehle, wie SELECT, INSERT, UPDATE usw, mit jedem Datenbanksystem genutzt werden können. Nutzt man allerdings speziellere Dinge wie zum Beispiel SQL-Befehle zum Anlegen von Datenbanktabellen, dann unterscheidet sich die Syntax von Datenbanksystem zu Datenbanksystem.</p>
<p>Da ich gerade beim Schreiben der Scripte zum Erstellen der BVASystem-Datenbankstruktur für MySQL, Firebird und Oracle bin, möchte ich heute eine kleine Serie starten, welche die Unterschiede zwischen diesen 3 Datenbanksystemen zusammenfasst. Dabei werde ich allerdings nur auf die Unterschiede eingehen, die mir im Zusammenhang mit dem BVASystem aufgefallen sind.</p>
<p>Starten möchte ich heute mit den unterschiedlichen Syntax des SQL-Befehls &#8220;CREATE TABLE&#8221;. Im folgendem werde ich an der Tabelle &#8220;bva_creationtree&#8221; zeigen, wo die  Unterschiede zwischen den Datenbanksystemen liegen.</p>
<p><strong>CREATE TABLE unter MySQL</strong></p>
<p>Richtig bequem finde ich bei MySQL die Möglichkeit ein Auto-ID Feld zu generieren. Hierfür muss einfach neben das gewünschte Feld das Schlüsselwort &#8220;AUTO_INCREMENT&#8221; geschrieben werden. Bei Firebird und Oracle werden die Auto-ID Felder über eine Kombination aus Generator/Sequenz und Trigger gelöst. Damit dieser Blog nicht zu unübersichtlich wird, werde ich im nächsten Teil noch einmal ausführlich auf das Thema eingehen.</p>
<p>Als zweite Besonderheit bei MySQL fällt auf, das am Ende des Befehles eine &#8220;Engine&#8221; ausgewählt werden kann. MySQL unterstützt unterschiedliche Speicherengines. Je nach Einsatzzweck unterscheiden sich die Speicherengines in ihrer Performance. Da mir die Transaktionssicherheit recht wichtig ist, nutze ich die langsamere InnoDB-Engine.</p>
<p>Der komplette SQL-Befehl für die bva_creationtree Tabelle sieht wie folgt aus:</p>
<pre>CREATE TABLE bva_creationtree (
 id INT NOT NULL AUTO_INCREMENT,
 parent_id INT ,
 caption VARCHAR(10)  NOT NULL,
 PRIMARY KEY (id),
 INDEX fk_bva_creationtree (parent_id ASC),
 CONSTRAINT fk_bva_creationtree
   FOREIGN KEY (parent_id)
   REFERENCES bva_creationtree (id)
) ENGINE = InnoDB</pre>
<p><strong>CREATE TABLE unter</strong> <strong>Firebird</strong></p>
<p>Schaut man sich den gleichen SQL-Befehl für Firebird an, so sieht er auf dem ersten Blick relativ ähnlich aus.</p>
<pre>CREATE TABLE bva_creationtree (
 id INT NOT NULL,
 parent_id INT,
 caption VARCHAR(10) NOT NULL,
 PRIMARY KEY (id),
 CONSTRAINT fk_creationtree
   FOREIGN KEY (parent_id)
   REFERENCES bva_creationtree (id)
 )</pre>
<p>Auf dem zweiten Blick fällt dann auf, das für den Fremdschlüssel &#8220;fk_creationtree&#8221; kein zusätzlicher Index definiert wurde. Der zusätzliche Index ist bei Firebird nicht notwendig, da er mit dem Constraint zusammen anglegt wird. Das Auto-ID Feld &#8220;id&#8221; muss wie bereits beschrieben manuell angelegt werden. Ansonsten gibt es keine weiteren Unterschiede.</p>
<p><strong>CREATE TABLE unter</strong> <strong>Oracle</strong></p>
<p>Größere syntaktische Unterschiede gibt es bei Oracle. Als erstes fällt auf, das sich die Datentypbezeichnungen unterscheiden: NUMBER(38) anstelle von INT, VARCHAR2() anstelle von VARCHAR() und INT anstelle von FLOAT. Bequem ist, das einfache Primärschlüssel oder auch Constraints direkt hinter der Felddefinition angegeben werden können. Alternativ können sie aber  beispielsweise auch per &#8220;CONSTRAINT pk_creationtree PRIMARY KEY (id)&#8221; angelegt werden.</p>
<p>Nach dem Ende des eigentlichen Create Table SQL-Befehlt gibt man bei Oracle an, in welchem Tablespace die Daten der Tabelle gespeichert werden sollen und wie die Tabelle sich verhalten soll, wenn sie zusätzlichen Speicher benötigt. Die dort getätigten Einstellungen haben Auswirkungen auf die Performance. Speichert man große Datenmengen in einer Tabelle, ist es sinnvoll sie in größeren Schritten zu vergrößern, da die Vergrößerung dann nicht mit jedem neuen Datensatz durchgeführt werden muss.</p>
<p>Der vollständige SQL Befehl für die Beispieltabelle sieht wie folgt aus:</p>
<pre>CREATE TABLE bva_creationtree (
 id NUMBER(38) NOT NULL PRIMARY KEY,
 parent_id NUMBER(38),    
 caption VARCHAR2(10) NOT NULL,
 CONSTRAINT fk_creationtree
   FOREIGN KEY (parent_id)
   REFERENCES bva_creationtree (id)  
 )
 TABLESPACE bva
 STORAGE
  ( INITIAL     1M
    NEXT         1M
    PCTINCREASE 0
    MINEXTENTS     1
    MAXEXTENTS     UNLIMITED
  )</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/03/datenbanksystem-unterschiede-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eine Hürde weniger</title>
		<link>http://dev.bvasystem.de/2012/02/eine-hurde-weniger/</link>
		<comments>http://dev.bvasystem.de/2012/02/eine-hurde-weniger/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 12:00:50 +0000</pubDate>
		<dc:creator>Marc Alinski</dc:creator>
				<category><![CDATA[Neue Programmversion]]></category>
		<category><![CDATA[Administrationstool]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Datenbankstruktur erzeugen]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://dev.bvasystem.de/?p=1895</guid>
		<description><![CDATA[Ich freue mich gerade, da wieder ein sehr wichtiger Punkt auf meiner Todo-Liste abgeschlossen werden konnte. Das Administrationstool, welches sich seit einigen Versionen mit im Installationspaket befindet, ist nun in der Lage, die für das BVASystem notwendige Datenbankstruktur zu erzeugen. Die manuelle Einrichtung der Datenbank, mit Hilfe der MySQL-Workbench entfällt nun. Dadurch sollte es für [...]]]></description>
			<content:encoded><![CDATA[<p>Ich freue mich gerade, da wieder ein sehr wichtiger Punkt auf meiner Todo-Liste abgeschlossen werden konnte. Das Administrationstool, welches sich seit einigen Versionen mit im Installationspaket befindet, ist nun in der Lage, die für das BVASystem notwendige Datenbankstruktur zu erzeugen. Die manuelle Einrichtung der Datenbank, mit Hilfe der MySQL-Workbench entfällt nun. Dadurch sollte es für technisch nicht so erfahrene Anwender einfacher sein, das BVASystem einzurichten.</p>
<p><strong>Ausblick</strong></p>
<p>Mein aktueller Zeitplan sieht so aus, das es noch eine weitere Zwischenversion vor der Veröffentlichung der nächsten stabilen Softwareversion geben wird. In dieser Zwischenversion werde ich die Datenbankscripte, die dem Administrationstool hinterlegt sind so erweitern, das 2 weitere Datenbankmanagementsysteme vom BVASystem verwendet werden können. Wahrscheinlich werden es Oracle und Firebird werden. Aber ganz sicher bin ich mir bei der Auswahl noch nicht. Nach der Zwischenversion heißt es dann noch einmal intensives Testen und wahrscheinlich auch intensives Fehlerbeseitigen.</p>
<p><strong>Wie funktioniert das Anlegen der Datenbankstruktur mit dem Administrationstool?</strong></p>
<p>Das Anlegen der Datenbankstruktur ist recht einfach. Im Administrationstool wählt man dafür im Hauptmenü den Eintrag &#8220;Datenbankstruktur erstellen&#8221; aus. Es öffnet sich dann folgender Dialog:</p>
<div id="attachment_1900" class="wp-caption aligncenter" style="width: 510px"><a href="http://dev.bvasystem.de/wp-content/uploads/2012/02/Administrationstool-Datenbankstruktur-erzeugen.jpg"><img class=" wp-image-1900" title="Administrationstool: Datenbankstruktur erzeugen" src="http://dev.bvasystem.de/wp-content/uploads/2012/02/Administrationstool-Datenbankstruktur-erzeugen.jpg" alt="Administrationstool: Datenbankstruktur erzeugen" width="500" height="325" /></a><p class="wp-caption-text">Administrationstool: Datenbankstruktur erzeugen</p></div>
<p>In diesem Dialog muss man als erstes die Verbindungsdaten zum Datenbankserver eintragen und anschließend auf &#8220;Verbinden&#8221; klicken. Wenn die Verbidnung hergestellt wurde, aktiviert sich die untere Hälfte des Dialoges. Hier wählt man nun aus, ob das BVASystem in ein bestehendes Datenbankschema integriert oder ob ein neues Datenbankschema angelegt werden soll. In beiden Fällen muss der Name für das Datenbankschema festgelegt werden. Als letztes hat man noch die Wahl, wer der Besitzer der Datenbanktabellen sein soll und ob ein Standardbenutzer angelegt werden soll. Wenn alle Einstellungen ausgewählt wurden, schließt man die Auswahl mit Druck auf den Knopf &#8220;Struktur erstellen&#8221; ab. Anschließend wird die Datenbankstruktur automatisch erstellt. In der Log-Ansicht wird der Anwender über Erfolg bzw. Misserfolg der einzelnen Arbeitsschritte informiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.bvasystem.de/2012/02/eine-hurde-weniger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

