PDF file

Werbung
Visualisierung und interaktive Manipulation
genealogischer Daten
Diplomarbeit
vorgelegt von
Marijan Gjoreski
Institut für Informatik III
Rheinische Friedrich-Wilhelms-Universität Bonn
Professor Dr. Rainer Manthey
April 2004
Danksagung
Bei Herrn Prof. Dr. Rainer Manthey bedanke ich mich besonders für die Möglichkeit, meine
Arbeit an diesem Institut durchführen zu können. Außerdem danke ich ihm für die intensive
und freundliche Betreuung.
Ein großes Dankeschön möchte ich den fleißigen Korrekturleserinnen Ma. Isabel Conejo y
Dahm, Manuela Gjoreski und Kathrin Obrusnik aussprechen.
Mein besonderer Dank geht an meine Familie, die mir diese Ausbildung ermöglicht und mich
während des gesamten Studiums uneingeschränkt unterstützt hat.
Inhaltsverzeichnis
1. Einleitung
2. Genealogie
2.1 Begriffsbildung und Fachterminologie
2.2 Formate für genealogische Daten
2.2.1 Klassische Formate
2.2.2 Computergenealogische Formate
2.3 Datenbanken mit genealogischem Hintergrund
2.4 Visualisierungsmöglichkeiten
1
3
5
10
10
13
16
20
3. Datenbank und Java Grundlagen
3.1 Grundlagen von Datenbanken
3.1.1 Das relationale Modell und SQL
3.2 Access
3.3 JDBC/ODBC
3.4 Java AWT und Swing
24
24
25
30
30
32
4. Graphisch Visualisierung genealogischer Daten
4.1 Klassifizierung
4.2 Rechnergestützte Methoden zur Stammbaumausgabe
4.2.1 GFAhnen Version 5.0
4.2.2 Ursprung
4.2.3 Famtree Version 2.3
4.2.4 Fzip Family Tree S1.7d
4.2.5 WinAhnen V6.02
4.2.6 DYNASS-TREE V300
4.2.7 GEN-Master V3.1.4
4.2.8 GeneWeb 4.09
4.2.9 StaBa Der Stammbaumgenerator
36
36
37
37
40
41
42
43
45
47
48
49
5. Konzepte zur Stammbaumvisualisierung
5.1 Diskussionen von Alternativen und Kritik
5.2 Vorstellungen der eigenen Methoden
50
50
55
6. Implementierung des Systems ViMaGe
6.1 Architektur und Komponenten
6.2 Vorstellung des Datenbankschemas
6.3 Ausgewählte Aspekte der Implementierung
6.3.1 Datenbank-Kopplung
6.3.2 Einlesen von Personendaten
6.3.3 Layoutberechnung
6.3.3.1 Vertikale Anordnung
6.3.3.2 Plazierung der Kinder
6.3.3.3 Auflösung von Überschneidungen
6.3.3.4 Linienberechnung
60
61
63
64
64
66
68
69
70
72
75
7. Zusammenfassung und Ausblick
7.1 Zusammenfassung und Bewertung
7.2 Ausblick
76
76
77
Literaturverzeichnis
81
2
Genealogie
Begibt man sich auf die Suche nach den Ursprüngen der Genealogie, wird man bereits in frühen hebräischen Schriften fündig. So sind unter anderem in den Büchern Mose auffallend
ausführliche Abstammungslinien festgehalten worden. Beispielsweise läßt sich die Stammfolge von Adam und Eva über Noah, Abraham und König David bis zu Jesus aus verschiedenen
Teilen des Alten und des Neuen Testaments wie folgt lückenlos zusammenstellen:
Adam und Eva zeugten einen Sohn Set; Set zeugte Enosch; Enosch zeugte Kenan; Kenan
zeugte Mahalalel; Mahalalel zeugte Jered; Jered zeugte Henoch; Henoch zeugte Metuschelach; Metuschelach zeugte Lamech; Lamech zeugte Noah; Noah zeugte drei Söhne: Sem,
Ham und Jafet; Sem zeugte Arpachschad; Arpachschad zeugte Schelach; Schelach zeugte
Eber; Eber zeugte Peleg; Peleg zeugte Regu; Regu zeugte Sergug; Sergug zeugte Nahor; Nahor zeugte Terach; Terach zeugte Abraham; Abraham zeugte Isaak; Isaak zeugte Jakob; Jakob
zeugte Juda; Juda zeugte mit Tamar Perez und Serach; Perez zeugte Hezron; Hezron zeugte
Aram; Aram zeugte Amminadab; Amminadab zeugte Nachschon; Nachschon zeugte Salomon; Salomon zeugte mit Rahab Boas; Boas zeugte mit Rut Obed; Obed zeugte Isai; Isai
zeugte König David; König David zeugte mit Urijas Frau Salomo; Salomo zeugte Rehabeam;
Rehabeam zeugte Abija; Abija zeugte Asa; Asa zeugte Joschafat; Joschafat zeugte Joram;
Joram zeugte Usija; Usija zeugte Jotam; Jotam zeugte Ahas; Ahas zeugte Hiskaija; Hiskaija
zeugte Manasse; Manasse zeugte Amos; Amos zeugte Joschija; Joschija zeugte Jojachin; Jojachin zeugte Schealtiël; Schealtiël zeugte Serubbabel; Serubbabel zeugte Abihud; Abihud
zeugte Eljakim; Eljakim zeugte Azor; Azor zeugte Zadok; Zadok zeugte Achim; Achim zeugte Eliud; Eliud zeugte Eleasar; Eleasar zeugte Mattan; Mattan zeugte Jakob; Jakob zeugte
Josef, der schließlich Maria, deren Sohn Jesus Christus der Messias genannt wird, ehelichte.
[Rau]
Es lassen sich aber durchaus noch wesentlich ältere Aufzeichnungen von Abstammungslinien
finden, und zwar in Form von bildlichen Darstellungen, die zum Teil bis in die Epoche des
altägyptischen Reiches zurückdatiert werden können. Gleichsam werden in vielen hellenischen Lobgesängen auf berühmte Helden typischerweise die jeweiligen Stammväter erwähnt.
Die außerordentliche Bedeutung, die der Abstammung wiederum im antiken Rom zukam, läßt
sich anhand der bewußten und ausgeklügelten Fälschungen erahnen, die von den vornehmsten
und mächtigsten Familien begangen wurden in dem Bestreben, ihre Vorfahrenreihe bis zu
Romulus und Remus, den Stadtgründern, zurückzuführen. [GHGRBe]
Im Mittelalter wuchs die Bedeutung der Genealogie weiter an. Verschiedene Stände und Gesellschaftsschichten bemühten sich, ihre Abstammung als Mittel einzusetzen, um sich immer
schärfer voneinander abgrenzen zu können. Als Voraussetzung für den Antritt bestimmter
geistlicher oder weltlicher Ämter oder auch für die Teilnahme an Turnieren mußte oft die
sogenannte Ahnenprobe erbracht werden, bei welcher eine adelige oder zumindest freie Abstammung zum Teil bis zur sechsten Vorfahrengeneration nachgewiesen werden mußte.
[Wik_6], [GHGRBe]
Im späten Mittelalter erstellte der Gelehrte Ladislaus Suntheim (ca. 1440 1530) im Auftrag
Kaiser Maximilians eine Chronik der Häuser Habsburg und Bamberg. Suntheim ist somit einen der ersten eigentlichen Berufsgenealogen; man kann ihn daher sogar als den Begründer
der Genealogie als Wissenschaft ansehen. [GHGRBe]
3
In der römisch-katholischen Kirche wurde durch das Konzil von Trient im 16. Jahrhundert die
Einführung von Kirchenbüchern angeordnet. Diese bildeten damals wie auch heute noch für
die Genealogie die wichtigste Quelle ihrer Forschung. Ihre Bedeutung wurde im 19. Jahrhundert durch die Einführung der Personenstandsregister (auch Standesregister oder, in der
Schweiz, Zivilstandsregister genannt) ergänzt und auch abgelöst. [Liw], [GHGRBe]
Mit der Jahrhundertwende zum 19. Jahrhundert entstanden schwere gesellschaftliche Umbrüche und es traten Krisen in ganz Europa auf. Mit der französischen Revolution und der Herrschaft Napoleons wurde eine staatlich-standesamtliche Registrierung der Bürger und ihrer
Personenstandsangelegenheiten eingeführt. Die bis dahin für den Adel zum Nachweis ihres
Adelsgeschlechtes genutzte Genealogie erlitt einen enormen Bedeutungsverlust, trotz der neu
eingeführten Personenstandsangelegenheiten. Eine neue Bedeutung erhielt die Genealogie erst
wieder gegen Mitte der zweiten Hälfte des 19. Jahrhunderts durch eine eng verwandte Nachbarwissenschaft, der Heraldik oder Wappenkunde, mit der Gründung der heraldischen Gesellschaften Herold (Berlin 1869) und Adler (Wien 1870). Im folgenden begannen sich zwei
unterschiedliche theoretische Richtlinien in der Genealogie herauszubilden. Als Vertreter der
soziologisch und historisch orientierten Genealogie, in der es mehr um eine umfassende Familienkunde und dabei auftretende praktische Probleme ging, sind Stephan Kekulé von Stradonitz sowie Eduard Heydenreich, der Verfasser des Handbuchs der praktischen Genealogie",
zu nennen. Stephan Kekulé von Stradonitz entwickelte ein Ahnennummerierungsystem, das
heute weltweit eingesetzt wird. Unter dem Einfluß der Entwicklungslehre Darwins und Haeckels sowie der Vererbungtheorien Mendels entstand daneben eine mehr naturwissenschaftlich orientierte genealogische Richtung, die auch später im Dritten Reich ähnlich wie im Mittelalter und der Antike zur Abgrenzung verwendet wurde, nur mit anderen Zielen. Als ein
weiterer Vertreter der stark auf die Humangenetik fixierten Richtung ist Ottokar Lorenz zu
nennen. [Web03], [GHGRBe]
Die Machtergreifung der Nationalsozialisten in Deutschland führte dazu, daß die Genealogie
entgegen ihrer vorherigen Bedeutung als Werkzeug der Rassenpolitik mißbraucht wurde. Beispielsweise wurde sie dazu benutzt, Gebietsansprüche im Osten zu rechtfertigen, die sich aus
der Abstammungsfolge des deutschen Volkes ergaben, und zur Feststellung einer arischen
oder jüdischen Abstammung. So wurde von der NSDAP als Aufnahmebedingung eine reine
arische Abstammung ab dem Jahre 1800 erwartet, die auch für den Ehepartner gelten mußte.
Die SS verlangte sogar einen Nachweis bis zum Jahre 1750, der anhand einer Ahnenliste vorzulegen war. Zur Vereinfachung des Abstammungsnachweises wurde schließlich der Ahnenpaß eingeführt, in dem Eltern und Großeltern nachgewiesen werden mußten. [Wik_1], [Wik_3], [Web03]
Heutzutage existieren weltweit enorm viele genealogische Vereine, deren Mitglieder sich beruflich mit der Abstammungskunde beschäftigen. Genealogie ist allerdings nicht nur rein wissenschaftlich anwendbar, sondern sie ist mittlerweile auch ein verbreitetes Hobby von Privatpersonen. Letztere können dabei entweder selbständig versuchen, genealogische Daten zu
sammeln wie eben durch Einsicht von Kirchenbüchern, Standesregistern u. ä. oder entsprechend orientierte Dienstleistungsunternehmen in Anspruch nehmen. In jedem Falle spielt
das Internet heutzutage eine sehr wichtige Rolle für Genealogen, was folgendes Beispiel verdeutlicht: Gibt man in der Internet-Suchmaschine Google Genealogie als Suchbegriff ein,
werden ungefähr 1.170.000 Treffer als Ergebnis bei einer Suchdauer von 0,16 Sekunden geliefert. Gibt man wiederum Stammbaum in Google ein, werden innerhalb von 0,11 Sekunden ca. 651.000 Treffer gefunden.
4
In den vergangenen Jahrhunderten standen einem Genealogen als Handwerkszeug lediglich
Papier, Bleistift, Federhalter, Karteikarten, Aktenordner, Bücher und Zeitschriften zur Verfügung. Vor ungefähr achtzig Jahren kamen die Schreibmaschine so wie der Fotoapparat (zur
Dokumentation von Schriftstücken etc.) dazu, und seit etwa dreißig Jahren finden Fotokopierapparate intensive Verwendung. Diese Hilfsmittel werden mittlerweile schon seit rund zwanzig Jahren durch Computer, Drucker und Disketten ergänzt. Heute wird diese Palette an
Hilfsmitteln abgerundet durch Scanner, CD und Internet, wobei letzteres sehr schnell eine
hervorragende Stellung bei der Genealogie sowie natürlich auch anderen Wissenschaften
erobert hat. [Liw], [Rud]
2.1 Begriffsbildungen und Fachterminologie
An dieser Stelle sollen zunächst im Kontext dieser Arbeit wichtige Begriffe aus dem Bereich
der Genealogie definiert werden. Desweiteren werden einige genealogische Hilfsmittel vorgestellt.
Ahnenliste:
Bei einer Ahnenliste handelt es sich um eine strukturierte Liste aller Ahnen eines Probanden,
die mit diesem beginnt. Es folgen dessen Eltern, diesen wiederum die vier Großeltern usw.
Der Proband erhält dabei die Nummer 1, seine Eltern die Nummern 2 und 3 usw., so daß jeder
Vorfahr durch eine Nummer gekennzeichnet ist, wobei gerade Zahlen für männliche, ungerade für weibliche Ahnen stehen. Die Generationen werden, beginnend mit den Eltern des Probanden, durch römische Ziffern kenntlich gemacht. [See_a], [Rau]
Ahnentafel:
Eine Ahnentafel stellt die Vorfahren eines Probanden schematisch in graphischer oder tabellarischer Form dar, wobei sie mit dem Probanden und seinen Eltern als der untersten genealogischen Einheit beginnt. Es folgen dann die weiteren Generationen, die, wie bei einer Ahnenliste, beginnend mit den Eltern des Probanden durch römische Ziffern gekennzeichnet werden.
So läßt die Ahnentafel auf einen Blick die Vorfahren des Probanden über mehrere Generationen erkennen, wobei sie im Gegensatz zum Stammbaum von der Gegenwart bis in die
Vergangenheit weist. [Ber91a], [Wik_2], [Reu01a]
Ahnennummerierung:
Stephan Kekulé von Stradonitz (deutscher Mathematiker, 1863 - 1933) führte im vergangenen
Jahrhundert ein System zur Nummerierung der Vorfahren ein, das einem einfachen Prinzip
folgt: dem Probanden wird die Nummer 1, seinen Eltern die Nummern 2 und 3, den Großeltern die Nummern 4 7 zugeteilt etc. Gerade Zahlen werden dabei für männliche Vorfahren,
ungerade Zahlen für weibliche Vorfahren verwendet. Die Nummer des Vaters einer Person ist
somit immer das Doppelte der Nummer dieser Person; die Nummer jeder Mutter ist immer
das Doppelte der Nummer ihres Kindes plus eins. [See_a], [Rau], [Mag]
Die Ahnennummerierung nach Kekulé erlaubt nur die Nummerierung direkter Vorfahren, ist
also nur für Ahnentafeln verwendbar. Dabei werden auch keine Zweitehen berücksichtigt.
Sollen auch Geschwister und Kinder aus weiteren Ehen mit erfaßt werden, ist die Ahnen5
nummerierung nach Kekulé zu erweitern. Für eine solche Erweiterung gibt es keine eindeutige Vorschrift; beispielsweise kann jeder Geschwisterteil mit einem Buchstaben markiert werden.
In der folgenden Tabelle werden die Bezeichnungen für die Generationen und deren AhnenNummerierung nach Kekulé demonstriert. [Sch], [Rau]
Bezeichnung
Proband
Eltern
Großeltern
Urgroßeltern
Alteltern (Ur-Urgroßeltern)
Altgroßeltern
Alturgroßeltern
Obereltern
Obergroßeltern
Oberurgroßeltern
Stammeltern
Stammgroßeltern
Stammurgroßeltern
Ahneneltern (Stammalteltern)
Ahnengroßeltern
Ahnenurgroßeltern
Urahneneltern
Urahnen-Großeltern
Urahnen-Urgroßeltern
Erzeltern
Erzgroßeltern
Erzurgroßeltern
Erzahneltern
Erzahnen-Großeltern
Erzahnen-Urgroßeltern
Generation
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
IX.
X.
XI.
XII.
XIII.
XIV.
XV.
XVI.
XVII.
XVIII.
XIX.
XX.
XXI.
XXII.
XXIII.
XXIV.
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Generation
Personennummer
1
2-3
4-7
8 - 15
16 - 31
32 - 63
64 - 127
128 - 255
256 - 511
512 -1023
1024 -2.047
2.048 - 4.095
4.096 - 8.191
8.192 - 16.383
16.384 - 32.767
32.768 - 65.535
65.536 - 131.071
131.072 - 262.143
262.144 - 524.287
524.288 - 1.048.575
1.048.576 - 2.097.151
2.097.152 - 4.194.303
4.194.304 - 8.388.607
8.388.608 - 16.777.215
16.777.216 - 33.554.431
Die Personennummern sind nur theoretischer Natur: Nimmt man einen Generationsabstand
von durchschnittlich ca. dreißig Jahren an und errechnet ein Proband mit dem Geburtsjahr
2000 die Anzahl seiner Vorfahren bis zur fünfundzwanzigsten Generation, die bei einer angenommenen Generationsdauer von ca. 30 Jahren also etwa im Jahre 1220 n. Chr. gelebt haben,
ergibt sich, daß zu diesem Zeitpunkt mehr als 67 Millionen Vorfahren des Probanden gelebt
haben müßten. Allerdings war zu dieser Zeit nicht einmal die gesamte Bevölkerung von ganz
Deutschland derart zahlreich. Diese Divergenz ist mit dem Ahnenschwund zu erklären: Einige
Ahnen eines Probanden können selbst miteinander verwandt sein, wenn auch nur entfernt.
Heiratet z.B. ein Mann seine Cousine, so haben beide dieselben Großeltern, Urgroßeltern
usw., und für die Kinder aus dieser Ehe bedeutet dies, daß die Urgroßeltern mütterlicherseits
und väterlicherseits identisch sind. Somit wird die theoretische Anzahl von Ahnen nie erreicht, da in der Regel früher oder später eine Heirat zwischen Verwandten vorkommt.
[GHGRBa], [GHGRBc], [Rau], [Enz]
6
Genealogie:
Der Begriff Genealogie leitet sich aus dem Lateinischen und dem Altgriechischen ab: Das
Wort genus bedeutet soviel wie Geschlecht oder Abstammung , während sich logos mit
Kunde oder Lehre übersetzen läßt. Das griechische genealogein bedeutet: die Abstammung angeben oder einen Stammbaum aufstellen . Die Genealogie ist also die Geschlechter- oder Abstammungskunde und beschäftigt sich mit der Erforschung von Ursprung und
Schicksal von Familien, ihren Vorfahren und ihren Nachkommen, oder mit anderen Worten
mit der Erforschung der Abstammungsverhältnisse und Verwandtschaftsbeziehungen zwischen Menschen. Man unterscheidet die darstellende Genealogie und, darauf aufbauend, die
theoretische Genealogie. Die darstellende Genealogie behandelt die Abstammung und die
verwandtschaftliche Beziehung einzelner Personen oder Personengruppen; die theoretische
Genealogie befaßt sich mit den allgemeinen Regeln und Gesetzen der Genealogie.
Heutzutage beschäftigt sich die Genealogie als geschichtliche Hilfswissenschaft mit der Erforschung der Abstammungsverhältnisse einzelner Geschlechter und der Beantwortung der
sich daraus ergebenden historischen Fragestellungen. So wird die Genealogie etwa zur Bestimmung von Besitz- und Herrschaftsverhältnissen in einzelnen Familien und damit auch zur
Bestimmung ihrer gesellschaftlichen und politischen Rolle herangezogen. [Ber91b], [Lex90]
[Lec93], [Bün96], [Wik_6], [Web03]
Nachfahrentafel:
Als Nachfahren- oder Enkeltafel bezeichnet man die schematische Aufzeichnung der Nachkommenschaft eines Ehepaares, der Stammeltern. Werden nur die Nachkommen, die denselben Familiennamen tragen, ermittelt, spricht man von einer Stammtafel. [Wik_9], [Ber91c]
Nachkommennummerierung:
Zur Nummerierung von Nachfahren werden verschiedene Methoden genutzt. Die Nummerierung nach Aboville und die Nummerierung nach Saragossa zählen dabei zu den meistgenutzten. [Rud],
Bei der Nummerierung nach Aboville wird immer mit einem Buchstaben begonnen; dieser
bestimmt die Generation. Somit ist es möglich, Personen bis zur 26. Generation durchzunummerieren; dabei trägt der Proband die Nummer A1, seine Kinder erhalten demnach die
Nummern B1.1 für das erste Kind bis B1.n für das n-te Kind usw. [GHGRBc], [Rud]
Nachfahrennummerierung nach Aboville:
A1
B1.1
B1.2
C1.2.1
C1.2.2
D1.2.2.1
C1.2.3
B1.3
C1.3.1
Maxim Goreski (1912 1990)
Lenka Goreska (1952 )
Kirko Goreski (20.02.1953 )
Marijan Gjoreski (16.10.1975 )
Manuela Gjoreski (13.09.1978 )
Alexander Smirnoff (14.07.2003 )
Gregor Gjoreski (14.07.1982 )
Senka Grozdanovska (14.01.1954 )
Maximilian Grozdanovski (02.1.1979
7
)
Das Nummerierungssystem nach Saragossa ist ähnlich; der einzige Unterschied zu Aboville
liegt darin, daß hier ausschließlich Zahlen verwendet werden und die Generationen somit
nicht mit angegeben werden. [GHGRBc]
Nachfahrennummerierung nach Saragossa:
1
1.1
1.2
1.2.1
1.2.2
1.2.2.1
1.2.3
1.3
1.3.1
Maxim Goreski (1912 1990)
Menka Goreska (1952 )
Kirko Goreski (20.02.1953 )
Marijan Gjoreski (16.10.1975 )
Manuela Gjoreski (13.09.1978 )
Alexander Smirnoff (14.07.2003 )
Gregor Gjoreski (14.07.1982 )
Senka Grozdanovska (14.01.1954 )
Maximilian Grozdanovski (02.1.1979
)
Eine weitere bekannte Nummerierung ist die von Reginal Buchanan Henry 1935 eingeführte.
Dabei wird beim Stammvater die Nummerierung mit einer 1 begonnen. Die Kinder des
Stammvaters werden in der Geburtsreihenfolge mit 1x durchnummeriert, wobei der Erstgeborene die Nummer 11 , der an vierter Stelle Geborene die Nummer 14 erhält. Diese
Nummerierung wird für die Nachkommen ebenso weitergeführt, wobei also z.B. der Erstgeborene des zweiten Kindes des Stammvaters die Nummer 121 besitzt. Um mehr als neun Kinder nummerieren zu können, wird ab dem zehnten Kind ein X eingesetzt und von diesem an
mit Buchstaben aus dem Alphabet weiter beziffert (A = 11, B = 12, C = 13 ). [Mag], [Rud]
Das Nummerierungssystem nach Henry erlaubt es, Kinder aus verschiedenen Ehen zu kennzeichnen. Dazu wird hinter dem Kind ein kleingeschriebener Buchstabe (a für ein Kind aus
erster Ehe, b für ein Kind aus zweiter Ehe usw.) angefügt, der somit beschreibt, aus welcher
Ehe das Kind stammt. Diese Nummerierung existiert auch in einer leicht abgeänderten Form,
bei der die Kinder ab dem zehnten Kind nicht mit Buchstaben, sondern mit einer zweistelligen
Ziffer, die in Klammer steht, gekennzeichnet werden. Die Kennzeichnung 12X1A würde
nach diesem modifizierten Verfahren also 12(10)1(11) entsprechen. [Mag], [Rud]
Nachfahrennummerierung nach Henry:
1
11
12
121
122
1221
123
13
131
Maxim Goreski (1912 1990)
Lenka Goreska (1952 )
Kirko Goreski (20.02.1953 )
Marijan Gjoreski (16.10.1975 )
Manuela Gjoreski (13.09.1978 )
Alexander Smirnoff (14.07.2003 )
Gregor Gjoreski (14.07.1982 )
Senka Grozdanovska (14.01.1954 )
Maximilian Grozdanovski (02.1.1979
)
In Südafrika entwickelten Ch. De Villiers und Dr. Cor Pama im neunzehnten Jahrhundert eine
weitere Art der Nummerierung von Nachkommen. Sie ähnelt der Nummerierung nach Aboville: Der Stammvater wird mit einem a markiert und die jeweils nächste Generation durch
Anhängen des nächsten Buchstabes des Alphabets gekennzeichnet, wobei zusätzlich eine Zahl
angefügt wird, die kennzeichnet, um das wievielte Kind es sich handelt. Die Generationen
werden durch einen Punkt voneinander getrennt. Folgendes Beispiel dient zu Verdeutlichung:
a.b1.c2 steht für das zweite Kind des ersten Kindes des Stammvaters. [Mag], [Rud]
8
Stammbaum:
Ein Stammbaum zeigt die Nachkommen eines Stammvaters, d.h. des ältesten, direkten männlichen Vorfahrs, der nachgewiesen werden kann. Die Darstellung der Verwandtschaftsbeziehungen erfolgt dabei in Baumform, wobei der Stammvater die Wurzel und die folgenden Generationen die Äste und Zweige bilden. Der Stammbaum eines Probanden besteht dabei im
Gegensatz zur Ahnentafel aus allen lebenden und verstorbenen Familienmitgliedern, die
seinen Familiennamen tragen. Somit zeigt also ein Stammbaum von der Vergangenheit in die
Gegenwart. [Wik_4], [Wik_10], [Lex90b]
Stammliste:
Die Stammliste stellt die Nachkommenschaft einer Person in Listenform dar. Dabei existieren
zwei mögliche Anordnungen: die fortlaufende und die unterbrechende Liste. Bei ersterer folgt
jeder Person sofort ihre gesamte Deszendenz, wobei jede Generation um das gleiche Stück
nach rechts eingerückt wird. Auf den Stammvater folgt also z.B. dessen ältester Sohn, diesem
wiederum dessen Nachkommenschaft und erst dann das zweite Kind des Stammvaters, das
wieder entsprechend seines Bruders nur wenig eingerückt wird.
Bei der unterbrechenden Liste dagegen werden die einzelnen Kleinfamilien, d.h. Eltern und
Kinder aufgelistet. Die Kinder, deren Deszendenz dargestellt werden soll, werden dabei nur
kurz mit Hinweis auf die folgenden Kleinfamilien erwähnt und dort ausführlich mit ihren eigenen Kindern genannt, während die nächsten Generationen in weiteren Kleinfamilien erscheinen. [See_a], [Lex90b]
Stammtafel:
Entsprechend einer Ahnentafel werden hier die Nachkommen eines Stammvaters in graphischer oder tabellarischer Form dargestellt. Wie bei einem Stammbaum werden lediglich Familienmitglieder mit dem gleichen Familiennamen berücksichtigt. [Lex90b]
Symbole in der Genealogie:
Für genealogische Zwecke existieren spezielle Abkürzungen und Symbole. Im folgendem
wird die Bedeutung einiger wichtiger Symbole aufgezeigt. [Her00]
Symbol Bedeutung
*
(*)
~
o
oo
I oo
II oo
+
geboren
außereheliche Geburt
getauft
verlobt
verheiratet
erste Ehe
zweite Ehe
gestorben
Symbol Bedeutung
o/o
o-o
X
+X
[]
++
9
geschieden (alternativ auch o|o)
freie Verbindung
gefallen
an im Kampf erlittenen Wunden gestorben
beerdigt
ausgestorbene Linie
Verwandtschaft:
Die Verwandtschaft gibt die Beziehung zwischen zwei Personen, von denen die eine von der
anderen abstammt oder beide von einer dritten Person abstammen, an. Man unterscheidet dabei zwischen Konsanguität (Blutsverwandtschaft) und der Affinialverwandtschaft, die auch
angeheiratete Personen umfaßt. [See_a], [Lex90a]
Unter Aszendenz versteht man die leiblichen Eltern, Großeltern und weitere blutsverwandte
Vorfahren eines Probanden. Die Deszendenz bezeichnet dagegen die gesamte Nachkommenschaft eines Probanden oder der Stammeltern. [See_a], [Lex90a]
Verwandtschaftsbezeichnungen:
Verwandte eines Probanden lassen sich folgendermaßen definieren:
Die Mutter bzw. der Vater ist der weibliche bzw. männliche Elternteil. Der Großvater ist
wiederum der Vater eines Elternteils, die Großmutter die Mutter eines Elternteils. Als Onkel
bezeichnet man den Bruder eines Elternteils oder den Ehemann der Schwester eines Elternteils. Die Tante ist eine Schwester der Mutter oder des Vaters, oder die Ehefrau eines Bruders
der Mutter oder des Vaters. Ein Bruder ist ein von denselben Eltern abstammendes männliches Kind, die Schwester eine weibliche Person, die von denselben Eltern abstammt. Ein
Cousin (Synonym: Vetter) ist der Sohn eines Onkels oder einer Tante, eine Cousine (veraltetes Synonym: Base) dementsprechend die Tochter eines Onkels oder einer Tante. Ein Sohn
ist ein männliches Kind des Probanden, eine Tochter demgemäß ein weibliches Kind. Als
Neffe bzw. Nichte bezeichnet man das männliche bzw. weibliche Kind eines Bruders oder
einer Schwester. Als Enkel (Enkelsohn) bzw. Enkelin (Enkeltochter) bezeichnet man ein
männliches bzw. weibliches Kind einer Tochter oder eines Sohnes. [Lex90_1], [Lex90_2],
[GHGRBa]
Die Eltern des Probanden sind für dessen Ehepartner die Schwiegereltern, also Schwiegervater bzw. Schwiegermutter. Der Bruder bzw. die Schwester des Ehepartners oder der Ehepartner von Bruder oder Schwester wird Schwager bzw. Schwägerin genannt. [Lex90_2]
2.2 Formate für genealogische Daten
Genealogische Daten werden bzw. wurden meist schriftlich oder graphisch in verschiedenen
Formen festgehalten. Seit Beginn des Computerzeitalters wurden spezielle computerbezogene
Formate zur digitalen Speicherung von genealogischen Daten entwickelt.
2.2.1 Klassische Formate
Genealogische Daten sind nur selten in einer für ihre Sammlung idealen komprimierten Form
zu finden, sondern müssen teilweise aus Schriftstücken, deren Umfang von kurzen Texten bis
zu längeren Büchern reichen kann, herausgefiltert werden. Als Beispiel sei auf die eingangs
zu diesem Kapitel erwähnte der Bibel entnehmbare Abstammungsfolge von Jesus verwiesen.
Quellen, denen genealogische Daten entnommen werden können, sind dabei recht vielgestaltig: So verwaltet das Standesamt genealogische Daten, die in Form von Standesregistern wie
Geburtsurkunden, Heiratsurkunden und verschiedenen weiteren Dokumenten zugänglich sind.
Eine Vielzahl genealogischer Daten sind auch in Krankenhäusern und Privatarchiven vorhanden. Ungefähr seit Anfang des dreizehnten Jahrhunderts wurden Grundbücher angelegt, in
10
denen ebenfalls genealogisch relevante Daten verzeichnet sind. Weitere Quellen sind auch
Testamente (seit ca. 1250) sowie Bürgerbücher (seit ca. 1490). Im sechzehnten Jahrhundert
wurde der Einsatz verschiedener Schriftstücke zur Datensammlung gebräuchlich: Etwa um
1550 wurden Hausbücher, Volkszählungslisten, Leichenpredigten und Kirchenbücher eingeführt. Das älteste bekannte deutsche Kirchenbuch wurde jedoch schon im fünfzehnten Jahrhundert in Basel von der Pfarrei St. Theodor angelegt; dort wurde 1481 die Führung von
Taufbüchern angeordnet. Mit dem neunzehnten Jahrhundert kamen um 1840 1870 ferner
auch Einwohnermeldelisten, Auswandererlisten, Adreßbücher, Passagierlisten, und die
Sammlungen in Standesämtern dazu. In Privatarchiven finden sich Auszüge aus den oben
erwähnten Schriftstücken ebenso wie in selbst angelegten Familienchroniken oder Wappen.
[Rud]
Interessant ist vor allem die Sammlung genealogischer Daten einer bestimmten Familie. Sobald alle verfügbaren Daten für alle Personen dieser Familie zusammengetragen wurden,
werden sie in einer bestimmten Weise zusammengefaßt und dargestellt. Das geschieht fast
immer in Textform, durch per Hand gezeichneten Stammbäume oder Ahnentafeln, je nach
dem Anliegen des Benutzers. Die verschiedenen Darstellungsmöglichkeiten werden in Kapitel 2.5 ausführlich beschrieben.
Klassische genealogische Daten werden meist ortsabhängig archiviert, wie am folgenden Beispiel des Verzeichnisses der Standesregister aus französischer Zeit erläutert: Dieses spezielle
Verzeichnis für die ehemals fürstbischöflichen Gemeinden des Birsecks und des Laufentals
für die Jahre 1792 1815 kennzeichnet den jeweiligen Standort der Daten von Geburten,
Eheverkündungen, Hochzeiten und Todesfällen. Es werden jeweils nur die ersten zwei Zeilen
der Tabelle dargestellt. [KBLa], [KBLb]
Bezirk Arlesheim: 9 ehemals fürstbischöfliche Gemeinden
Standort: Staatsarchiv des Kantons Basel-Landschaft, Liestal
Gemeinde
Aesch
Grenzjahre
1800 1813
Archiv
StA BL
Signatur
ST 4201 Statthalteramt Arlesheim, 01.08.01
Allschwil
1792 1814
StA BL
ST 4201 Statthalteramt Arlesheim, 01.08.02
Bezirk Laufen: 12 ehemals fürstbischöfliche Gemeinden
Standort: Archives de l'ancien Evêché de Bâle (AAEB), 10 rue des Annonciades, 2900 Porrentruy, Tel/Fax 032 466 32 43.
Gemeinde
Blauen
Grenzjahre
Burg
1792 1814
1792 1794
1798 1814
Archiv
AAEB
Signatur
Microfilm, NC 45
AAEB
Microfilm, NC 45
Diese Verzeichnisse geben Auskunft darüber, an welchen Orten die Daten zu finden und folglich zur Einsicht verfügbar sind. Wie auch beim Standesregister gibt es auch Verzeichnisse
der Kirchenbücher, die wie das folgende Beispiel online abrufbar sind, wobei jeder Ort mehrere Kirchenregister besitzt, abhängig von der Zahl der Kirchen des Ortes oder der Gemeinde.
[KBL_1]
11
Kirchenbücher: Übersicht und Ortsregister
E 9.1.01.
Aesch (ev.-ref.)
E 9.2.01.
Aesch (röm.-kath.)
E 9.1.02.
Allschwil (ev.-ref.)
E 9.2.02.
Allschwil (röm.-kath.)
E 9.3.02.
Allschwil (christ.-kath.)
E 9.1.03.
E 9.2.03.
E 9.1.04.
Anwil (ev.-ref.)
Anwil (röm.-kath.)
Arboldswil (ev.-ref.)
Römisch-katholische Kirchgemeinde
Aesch bis 1803 siehe E 9.2.60 Pfeffingen
siehe E 9.1.58 Oltingen
siehe E 9.2.29 Gelterkinden
bis 1881: siehe E 9.1.17 Bubendorf
ab 1811: siehe E 9.1.85 Ziefen
Auch bei den Kirchenregistern muß zur Einsicht in die Daten vor Ort recherchiert werden. Zu
den Archiven kann es je nach Gemeinde einen Verweis auf ein anderes Archiv geben, da es
vorkommt, daß eine Gemeinde einer anderen Kirchengemeinde zugeordnet wird und ab diesen Zeitpunkt die Daten in einem anderen Archiv weitergeführt werden. Unter der Archivnummer ist ein Verweis zu finden, der angibt, wo die Daten zu finden sind. [KBL_2]
Unter E 9.1.01 ist folgender Standort abgelegt:
E 9.1.01.
Aesch
Evangelisch-reformierte Kirchgemeinde Aesch, Pfeffingen
Die Kirchenbücher befinden sich bei der Kirchgemeinde
Die Archive sind vor Ort wieder in Unterarchive unterteilt; somit sind die Taufen, Ehen, Todesdaten usw. in jeweils eigenen Archiven vermerkt, so daß nicht alle Daten zu einer Person
an einer Stelle zusammengetragen sind. Als Beispiel ein Taufeintrag aus dem Jahre 1632:
[GHGRBd]
Der linke Text in Druckschrift :
1632
7 Octob.
241. Margret Rothen sunt
genant Sandfluhgredi
ihra ein unehelich kind
gtoufft, hats geben dem
Daniel Zandt dem
jüngeren, das kind
heisst Hans, Zügen
Hans Zahndt StadtHalters Sohn, Willi
Zbinden, und Anna
Kündiger.
Abb. 2.3.1.1. Taufeintrag [GHGRBd]
12
2.2.2 Computergenealogische Formate
Speziell für den Bereich der sogenannten Computergenealogie wurden eigene Formate zur
Datenspeicherung entwickelt: FOKO und GEDCOM. Dieses sind programmunabhängige
Formate. Der Vollständigkeit halber sollte erwähnt werden, daß jedes genealogische Programm sein eigenes internes Format besitzt, welches meist nicht einzusehen ist. Einige Programme verwenden Textdateien, die dann eingesehen werden können. Programme, die GEDCOM unterstützen, verfügen immer über ein weiteres programmspezifisches Datenformat für
die genealogischen Daten.
FOKO ist ein Projekt für Familienforscher mit deutschem Hintergrund, GEDCOM ein Format, welches in den USA von den Mormonen entwickelt wurde. Diese Formate sind zum
Austausch genealogischer Daten gedacht und nicht für ihre Darstellung. Außerdem ist die
Darstellung der Daten auch nicht direkt aus diesen Formaten möglich; daher müssen sie zu
diesem Zweck selbst für Programme, die FOKO oder GEDCOM unterstützen, zunächst in ein
internes Datenformat umgewandelt werden, oder, im Falle von GEDCOM, mit einem HTMLGEDCOM-Konverter in HTML-Dokumente. Aus diesen sind die Daten dann zu lesen - jedoch nur in Textform und nicht graphisch. [Fok01], [Kei_c]
FOKO (FOrscher KOntakte) ist ein Projekt der DAGV (Deutsche Arbeitsgemeinschaft Genealogischer Verbände). Es startete Ende der 80er Jahre. Bei der DAGV handelt es sich um
eine Gesellschaft von über fünfzig auf Deutschland bezogene genealogischen Vereinen, Verbänden und Einrichtungen. Heute wird FOKO nicht mehr aktualisiert, die Datensätze sind
aber noch online abrufbar. [Fok01], [Kei_c]
FOKO soll den Datenaustausch zwischen Familienforschern mit deutschem Hintergrund erleichtern. Um dies zu gewährleisten, wurde ein Standard für Personendaten festgelegt und
eine Organisation aufgebaut, die für den Austausch und die Integration von derartigen FOKODaten zuständig ist. Zum ersten Schritt gehörte die Festlegung des FOKO-Daten-Standards
für Personendaten. Im folgenden wurden von der DAGV die Ahnendaten ihrer Mitglieder und
anderen interessierten Personen gesammelt. Durch die Verwandtschaft einiger Familienforscher gab es viele redundante Aufzählungen einzelner Personendaten und die gesamten Daten
mußten bereinigt werden. Seit Oktober 1999 ist der Verein für Computergenealogie für die
FOKO-Datensätze zuständig, die damals zwischen 0,5 1 Million Datensätzen lagen. Seit
Anfang des Jahres 2000 stehen Informationen zu allen FOKO-Datensätzen kostenlos unter der
Internetadresse http://foko.genealogy.net/ zur Verfügung. Die Datensätze können nicht selbst
abgerufen werden, sondern müssen unter den Kontaktadressen der Verwalter angefordert werden. [Kei_c], [Fok01]
Eine FOKO-Datei besteht aus FOKO-Sätzen von jeweils gleicher Länge und Struktur. Ein
FOKO-Satz enthält die wichtigsten Daten zu einer Person, wobei es zu jeder Person nur einen
FOKO-Datensatz gibt (bis auf einige Ausnahmen). Ein Satz für eine Person enthält keinerlei
Beziehung zu Sätzen anderer Personen, selbst dann nicht, wenn diese in der gleichen FOKODatei gespeichert sind. Es ist somit aus dem FOKO-Satz einer Person keine Information zu
Eltern, Ehepartnern oder Kindern verfügbar. [Fok01], [Kei_c]
13
Der FOKO-Datensatz enthält u.a. folgende Informationen zu einer Person: [Foko01]
Familienname
Vorname (Bei mehreren Vornamen kann der Rufname groß geschrieben werden.)
Matrikeltyp (Gibt die Genauigkeit der folgenden Daten an, d.h. ob sie sicher oder unsicher sind.)
Jahreszahl der ältesten Erwähnung
Jahreszahl der jüngsten Erwähnung
Bekenntnis
Territorium
Staat
Postleitzahl (bzw. Kennziffer bei ehemaligen dt. Ostgebieten)
Ort (Hierauf bezieht sich der Matrikeltyp und die beiden Jahreszahlen. Bei mehreren
Orten sind auch mehrere Sätze pro Person nötig.)
Kennzeichen (Gibt den genealogischen Verein sowie die Mitgliedsnummer der Person
an, die die Daten einreicht. Nichtmitglieder erhalten eine eindeutige Gastnummer.)
Dabei gilt: Jeder Eintrag ist ein Zeile lang. Im folgenden Beispiel sind zur Anschaulichkeit
anstelle der nichtdruckbaren Zeichen Doppelpunkte eingefügt. Um eine FOKO-Datei zu bearbeiten, wird ein FOKO-Programm benötigt; ein ASCII-Editor reicht dazu nicht aus. [Kei_c]
Familienname
Jahreszahl der ältesten / jüngsten Erwähnung
Postleitzahl (bzw. Kennziffer)
Bekenntnis
Vorname / Rufname
Territorium
Ort
Staat
:Bayer Johan ANDREAS ::::::::::::1743:1743:rk:::::SUD:CS::w62247:Landek:::::::::::::::::::
:Braun Katharina:::::::::::::::::1822:1880:rk:::::SUD:CS::w62239:Gießhübel P Sollmus::::::
:Benedikt Anna MARIA:::::::::::::1765:1791:rk:::::SUD:CS::w62246:Rössin P Tschelief:::::::
:Brautfelder Franz:::::::::::::::1853:1925:rk:::::SUD:CS::w62234:Lauterbach (Stadt):::::::
Abb. 2.3.2.1 Beispiel für einen FOKO-Datensatz mit vier Einträgen
GEDCOM (Genealogical Data Communication) ist ein Format zur Speicherung und zur Ermöglichung des Austausches von Familiendaten zwischen verschiedenen GenealogieProgrammen und Computersystemen. [GHGRBb]
Entwickelt wurde GEDCOM interessanterweise von der Religionsgemeinschaft Kirche Jesus
Christus der Heiligen Letzten Tage (besser bekannt als Mormonen), bei denen auch das Copyright liegt: Für Mormonen ist die Ahnenforschung eine religiöse Verpflichtung, da sie daran
glauben, daß Familienbande ewig, auch über den Tod hinaus, bestehen. Als Vorbereitung auf
das Leben nach dem Tode versuchen sie daher, möglichst viele ihrer Ahnen mit Namen und,
wenn möglich, mit Lebensgeschichte zu kennen. Daraus erklärt sich ihre Motivation zur
Sammlung genealogischer Daten. [See_a], [GHGRBb], [Kei_a], [Kei_b], [Reu01b]
Mit der Entwicklung von GEDCOM wurde etwa 1984 begonnen. Ursprünglich zum Austausch von Daten innerhalb der Gemeinschaft der Mormonen gedacht, wurde es als gemein14
samer Datensatz von fast jedem Programm übernommen und von einigen auch modifiziert.
Daher erzeugen in manchen Fällen verschiedene Programme auch verschiedene GEDCOMDatensätze, die nicht immer untereinander kompatibel sind. Mittlerweile sind unter
www.FamiliySearch.com, in einer Datenbank, die von den Mormonen verwaltet wird, über
650 Millionen Namen online abrufbar. [NL_2], [Kei_a], [Kei_b], [Reu01b]
GEDCOM entspricht einer Zwischensprache und ist als solche, wie schon erwähnt, zum
Austausch von genealogischen Daten zwischen verschiedenen Programmen gedacht: Diese
Programme haben jeweils eine eigene Datenstruktur, können aber das GEDCOM-Format importieren und/oder exportieren. GEDCOM selbst bietet also keine Organisation zum Austausch der Daten, sondern ist ein Standard, der beschreibt, in welcher Form komplexe genealogische Daten gespeichert werden können. [Kei_a], [Kei_b]
Während die erste Version von GEDCOM nur Export und Import der wichtigsten Elemente
einer Genealogiedatenbank, wie Name, Geburtsdatum und ort, Heiratsdatum und ort etc.
erlaubte, führte die Weiterentwicklung dieses Standards parallel zu der der Genealogieprogramme dazu, daß in der aktuellen Version 5.5 auch Elemente wie Bilder, Töne und Video
berücksichtigt werden. Somit können in einer GEDCOM-Datei einzelner Individuen Verweise auf die genannten multimedialen Elemente eingefügt werden, die in Bezug zu den Personen stehen. Mit GEDCOM 5.5 wird seit 1996 gearbeitet; der Standard wurde im Januar 1996
verabschiedet. Zur Zeit steht GEDCOM-Version 6.0 in Entwicklung; eine Beta-Spezifikation
wurde bereits vorgestellt. [GHGRBb], [Kei_a], [Kei_b]
Eine GEDCOM-Datei ist eine reine Textdatei, die in Datensätze unterteilt ist. Dabei zeigt
jeder Datensatz einen hierarchischen Aufbau. Man unterscheidet drei Datensatz-Typen:
1. HEAD
2. INDI
3. FAM
Jede GEDCOM-Datei beginnt mit einem HEAD-Datensatz, der allgemeine
Informationen über die Datei liefert.
Es folgen INDI-Datensätze, in denen die Informationen zu den Personen
gespeichert werden.
In den FAM-Datensätzen werden die Verwandschaftsverhältnisse zu den
einzelnen Personen angegeben.
Jede Zeile eines Datensatzes beginnt mit einer Zahl und einem Tag. Die erste Zeile beginnt
mit einer 0 und dem HEAD-Tag. Durch die 0 wird dabei der Anfang eines neuen Datensatzes
gekennzeichnet. Bei FAMI- und INDI-Datensätzen steht vor dem Tag der ersten Zeile eine
ID, anhand der alle Datensätze unterscheidbar sind. [Kei_a], [Kei_b], [GHGRBb]
Die Informationen in den Datensätzen beginnen mit einer 1; sobald weitere Informationen zu
einer Zeile folgen, wird eine weitere hierarchische Stufe eingefügt. Die jeweilige Art der gespeicherten Information ist dabei anhand des Tags zu erkennen. Z.B. verweist der Tag OCCU
(von engl. occupation) im INDI-Datensatz auf die Angabe des Berufs der betreffenden Person. [Kei_a], [Kei_b], [Reu01b], [GHGRBb], [Kei_a], [Kei_b]
15
0 HEAD
1 FILE gjoreski.ged
1 GEDC
2 VERS 5.5
1 CHAR ANSI
1 LANG German
0 @0@INDI
1 NAME Kathrin/Obrusnik/
1 FAMS @F1@
0 @1@INDI
1 NAME Marijan/Gjoreski/
1 SEX M
1 BIRT
2 DATE 19751016
2 PLAC Bedburg
1 OCCU Student
1 FAMS @F1@
0 @F1@ FAM
1 HUSB @I1@
1 WIFE @I0@
1 CHIL @I3@
1 CHIL @I4@
1 MARR
2 DATE 08.12.2002
2 PLAC Bonn
Beginn des HEAD-Datensatzes
Name der GEDCOM-Datei
Beginn der GEDCOM-Informationen
Version
benutzter Zeichensatz
verwendete Sprache
Beginn des INDI-Datensatzes mit Code 0
Name des Individuums
Person 0 gehört zu Familiensatz F1
Beginn des INDI-Datensatzes mit Code 0
Name
Geschlecht
Beginn der Geburtsdaten
Geburtsdatum
Geburtsort
Beruf
Person 1 gehört zu Familiensatz F1
Beginn des FAMI-Datensatzes mit Code F1
Mann Person mit Code 1
Frau Person mit Code 2
Kind Person mit Code 3
Kind Person mit Code 4
Beginn Heiratsdaten
Heiratsdatum
Ort der Heirat
Abb. 2.3.2.1. Beispiel einer Gedcom-Datei
2.3 Datenbanken mit genealogischem Hintergrund
Datenbanken mit genealogischem Hintergrund sind im Internet international vertreten. Darunter befinden sich die unmittelbar mit der Genealogie in Verbindung stehenden Datenbanken,
aber auch die von Genealogen als Hilfsmittel benutzten Namens- und Ortsdatenbanken.
Genealogische Datenbanken werden von verschiedenen Vereinen angeboten. Als Beispiel
seien die Mitgliederdatenbanken genannt. In diesen sind die Forschungsgebiete der jeweiligen
Mitglieder erfaßt, wodurch die genealogische Forschung in bestimmten Territorien unter verschiedenen Vereinen, die zusammenarbeiten, aufgeteilt ist. In den Datenbanken kann zwar
nach Orten und Familiennamen gesucht werden, jedoch werden für den allgemeinen Zugriff
nur die Datensätze angezeigt, die von den jeweiligen Forschern zur Veröffentlichung freigegeben wurden. Folgende Vereine z.B. verwalten eine Mitgliederdatenbank, die online abrufbar ist: AGoFF Arbeitsgemeinschaft ostdeutscher Familienforscher e.V., AMF - Arbeitsgemeinschaft für mitteldeutsche Familienforschung e.V., DVG Dresdner Verein für Genealogie e. V., und viele weitere. Sämtliche dieser Datenbanken sind über Links auf der Seite
http://www.genealogienez.de/bookmarks /Genealogie.htm zu erreichen. Dort sind auch Links
zu weiteren Mitgliederdatenbanken vorhanden. Desweiteren existiert die FOKO-Datenbank
des Vereins für Computergenealogie, die über http://foko.genealogy.net/ zu erreichen ist, sowie weltweit eine Vielzahl von GEDCOM-Datenbanken verschiedener Organisationen. Als
16
erstes ist hier die unter www.FamiliySearch.com zugängliche Datenbank mit über 650 Millionen Namenseinträgen zu nennen, die unter Verwaltung der Mormonen steht, welche, wie bereits erläutert, den GEDCOM-Standard entwickelt haben. Weitere Beispiele sind die Datenbank der Organisation WorldConnect unter http://worldconnect.-genealogy.rootsweb.com/
mit über 321 Millionen Namenseinträgen, und speziell für den deutschsprachigen Raum
GEDBAS (die genealogische Datenbasis), eine deutschsprachige GEDCOM-Datenbank, unter
http://gedbas.genealogy.net/index.jsp. In GEDBAS sind wie in den anderen Datenbanken die
GEDCOM-Datensätze enthalten, nicht die Datensätze selbst abrufbar, sondern es ist nur die
Suche in diesen Datensätzen möglich. Zu diesem Zweck gibt es ein Suchfenster, in dem es
möglich ist, unter bestimmten Suchkriterien nach Personen zu suchen. In GEDBAS sind dies
Vor- und Zuname der Person, ihrer Eltern und des Partners; außerdem kann der Ort und ein
Datum eingegeben werden. [GHGRBb],
Abb. 2.3.2.2. Suchfenster für eine GEDCOM-Datenbank
Historische Adreßbücher sind anerkanntermaßen eine weitere wichtige Sekundärquelle für
den Familienforscher. Die aus der systematischen Erfassung von historischen Adreßbüchern
gewonnenen Datenbestände werden für viele deutsche Orte und ehemals zu Deutschland gehörende Gebiete in einer Datenbank online zur Verfügung gestellt.
Weitere für Genealogen wichtige Datenbanken sind Namensdatenbanken; unter diese fallen
neben den Personen-Suchportalen auch Online-Telefonbücher verschiedener Anbieter, eMailVerzeichnisse oder Suchmaschinen wie Google oder Yahoo, die ebenfalls wichtige Informationen bei der Suche nach Ahnen oder Verwandten liefern können. Bei einer Ortsdatenbank
wie GOV Das genealogische Ortsverzeichnis erhält man als Antwort auf eine Anfrage
nach einem Ort den offiziellen Namen des Ortes, die Postleitzahl (die aktuelle sowie die alte,
vor der Wiedervereinigung Deutschlands gültige), die staatliche Zugehörigkeit und einen Locator Code.
17
Wenn zu den eingegebenen Daten Einträge in der Datenbank existieren, werden alle Suchergebnisse in Kurzform aufgelistet und einer der Datensätze kann zur Darstellung mit allen bekannten Informationen als Datenblatt geöffnet werden. Beides ist in Abb. 2.4.2 und 2.4.3 zu
sehen. In ähnlicher Art und Weise ist die Suche auch in anderen Datenbanken geregelt; es
unterscheidet sich nur die Optik. Selbst die internationalen Suchmasken für die jeweiligen
Datenbanken sind ähnlich aufgebaut; es existieren nur je nach Organisation zusätzliche Suchoptionen, die eingetragen werden können. Zu nennen sind hier beispielsweise der Todesort
oder das Todesdatum, welche in der speziellen GEDBAS-Suchmaske nicht berücksichtigt
werden.
Abb. 2.4.2 GEDBAS-Suchergebnisse
18
Abb. 2.4.3 GEDBAS-Datenblatt
Als Beispiel für eine genealogische Hilfsdatenbank sei das genealogische Ortsverzeichnis
genannt, bei dem zu dem Namen einer Stadt oder eines Dorfes weitere für Genealogen wichtige Daten ausgegeben werden. Diese Hilfsmittel sind nötig, um Daten aus sehr frühen Zeitepochen, in denen Ortsnamen offiziell bzw. von Einwohnern anders geschrieben wurden, mit
heutigen Orten identifizieren zu können. In Abb. 2.4.4. ist die Eingabemaske zur Suche eines
Ortes in Deutschland gezeigt, dabei ist auch die phonetische Suche (d.h. nach Orten, die so
klingen wie der gesuchte) möglich. Als Ergebnis wird der in dem Beispiel gesuchte Ort mit
seiner aktuellen Zugehörigkeit, der Postleitzahl (dabei wird die aktuelle ebenso wie die ehemalige westdeutsche Postleitzahl angegeben) und einem Code (Locator) ausgegeben, wie er
beispielsweise in FOKO zur Kennzeichnung von Orten benutzt wird.
Abb. 2.4.4 Suchmaske im Ortsverzeichnis
19
Abb. 2.4.5. Suchergebnis im Ortsverzeichnis
2.4 Visualisierungsmöglichkeiten für genealogische Daten
Genealogische Daten sind verschiedentlich darstellbar. Es sind dabei die Darstellung in Textform und die graphische Darstellung zu unterscheiden. Am weitesten verbreitet ist die erstere,
da auf diese Weise jedermann seinen Datensatz aufzeigen kann, ohne sich mit graphischen
Problemen zu belasten. Dies ist vor allem darauf zurückzuführen, daß sehr viele Personen
ohne umfangreiche Computerkenntnisse in der graphischen Visualisierung ihre Daten im Internet darstellen möchten, aber nur die einfachsten Möglichkeiten, die zur Darstellung in
Textform nötig sind, beherrschen.
Als einfachste Darstellungsform, die auch im Internet sehr weit verbreitet ist, ist die Stammliste zu nennen. Dazu wird bei dem ältesten bekannten Ehepaar begonnen, und jeder Nachkomme einer Person wird um einen bestimmten Abstand nach rechts eingerückt. Das folgende
Beispiel ist zur Übersichtlichkeit verkürzt.
Georg Ludwig, Elector of Hannover , succeeded his cousin Queen Anne as GEORGE I, King of Great Britain and
Ireland 1 Aug 1714; he was b.Osnabrück 28 May 1660 and d.nr Osnabrück 11 Jun 1727; he m.Celle 21 Nov 1682
(separated 1694) Sophia Dorothea Dss of Braunschweig-Lüneburg (Celle 5 Sep 1666-Ahlden 2 Nov 1726)
1a) GEORGE II Augustus, King of Great Britain and Ireland (Hannover 30 Oct 1683- 25 Oct 1760); m. 22 Aug
1705 Karoline Margravine of Brandenburg-Ansbach (1 Mar 1683-St.James's Palace 20 Nov 1737)
1b) Frederick Lewis, Pr of Wales (Hannover 20 Jan 1707-Leicester House 20 Mar 1751); m.St.James's
Palace 8 May 1736 Auguste Pss of Saxe-Gotha (Gotha 30 Nov 1719-Carlton House 8 Feb 1772)
1c) Augusta, Pss Royal (St.James's Palace 31 Jul 1737-London 23 Mar 1813); m 16 Jan 1764
Karl II, Duke of Braunschweig (9 Oct 1735- 10 Nov 1806)
2c) GEORGE III William Frederick, King of Great Britain (4 Jun 1738-Windsor Castle 29 Jan
1820); m. 8 Sep 1761 Charlotte Dss of Mecklenburg-Strelitz (19 May 1744- 17 Nov 1818)
8b) Louisa (Leicester House 7 Dec 1724- 8 Dec 1751); m. Altona 11 Dec 1743 King Frederik V of Denmark and Norway (Copenhagen 31 Mar 1723- 14 Jan 1766)
2a) Sophia Dorothea (Hannover 16 Mar 1687-Monbijou, nr Berlin 28 Jun 1757); m.Berlin 17 Nov 1706 King Friedrich Wilhelm I of Prussia (Berlin 15 Aug 1688-Berlin 31 May 1740)
Abb. 2.4.1 Stammliste
20
Zu dieser Darstellung als Stammliste gibt es weitere ähnliche Varianten. Abweichend von
dem ersten Beispiel können auch Linien in die Darstellung einbezogen werden, die die Zugehörigkeit der Daten als optisches Hilfsmittel unterstreichen. In den meisten Fällen sind der
Liste nicht so viele Informationen zu entnehmen wie in dem obigen Beispiel der englischen
Königsfamile, sondern nur Name, Vorname, das Geburts- und das Sterbedatum. Je nach Vorliebe wird ein Heiratsdatum, Geburts-, Sterbeort oder eine andere gewünschte Information mit
angegeben. [Rud], [VC], [GHGRBa], [GHGRBc]
Person 1
Partner 1 von Person 1
Kind 1 von Person 1 und Partner 1
Kind 2 von Person 1 und Partner 1
Kind x von Person 1 und Partner 1
Partner von Kind x
Partner m von Person 1
Kind von Person 1 und Partner m
Abb. 2.4.2 Darstellung einer Stammliste mit Linien
Bei einer anderen Möglichkeit der Visualisierung wird mit einem Ehepaar begonnen, und jede
weitere Generation wird durch eine Markierung abgetrennt. In der zweiten Generation stehen
somit die Kinder dieses Ehepaars, in der dritten Generation die Enkel, wobei diese jeweils
nach ihren Eltern geordnet sind und bei jedem Enkel aufgeführt ist, wer die Eltern sind.
Stammvater:
1 (1) Kirko Goreski, * 20.02.1949 in Bazernik oo 1973 (2) Olgica Neistorovska,
*13.09.1953
I. Generation:
2 Kinder des (1) Kirko Goreski I 1-2
I1 (3) Marijan Gjoreski, * 16.10.1975 in Bedburg oo 02.01.2002 (5) Kathrin Obrusnik,
*31.12.1978 in Köln
I 2 (4) Manuela Gjoreski * 16.09.1978 in Bedburg oo 02.01.2003 (6) Tom Smirnoff,
*11.02.78
II. Generation:
2 Kinder des (3) Marijan Gjoreski II 1-2; 2 Kinder der (4) Manuela Gjoreski II 3-4
II 1 (7) Alexander Gjoreski, * 14.06.2003
II 2 (8) Maya Gjoreski, * 14.06.2003
II 3 (9) Alexandra Smirnoff * 06.01.2004
II 4 (10) Natascha Smirnoff, * 06.01.2004
21
Dieser Darstellung ähnelt der Familienbogen oder auch Familiengruppenbogen. Der Unterschied zur oben beschriebenen Darstellung besteht darin, daß nur ein Ehepaar mit seinen Kindern eingetragen wird. Bei einigen Familienbögen werden auch die Eltern des Ehepaars, jedoch nur namentlich und eventuell mit Geburts- und Sterbedatum, erwähnt. [GHGRBa],
[GHGRBc], [VC]
Der Familienbogen beginnt mit den Informationen des Ehemannes und den Informationen der
Ehefrau. Meistens sind dies Name, Vorname, Geburts- und gegebenenfalls Sterbedatum und
einige benutzerabhängige Eintragungen wie Beruf oder Religion. Diesen Daten folgen die
Informationen zu den einzelnen Kindern. Familienbögen müssen nicht so ausführlich wie der
hier als Beispiel dargestellte sein; es ist auch möglich, daß die Kinder nur namentlich ohne
ihre jeweiligen Ehepartner und nur mit Geburts- und gegebenenfalls Sterbedatum erwähnt
werden. [VC]
Abb. 2.4.3. Familienbogen [VC]
Zu den graphischen Visualisierungsmöglichkeiten gehören weiterhin auch die Ahnentafel und
der Stammbaum. Es gibt eine Vielzahl von Möglichkeiten bei der Darstellung eines Stammbaums. Eine ausführliche Diskussion findet im Kapitel 4 statt, in dem die Alternativen vorgestellt werden. Die Ahnentafel wird manchmal in Anlehnung an einen Stammbaum in den Hintergrund eines Baumes integriert, so daß der Proband die Wurzel bildet und alle seine Vorfahren folgen; dabei werden nur die direkten Eltern berücksichtigt, wie es bei einer Ahnentafel
üblich ist. [GHGRBa], [GHGRBc]
22
Daniel Josef Rüttgers
Hubert Josef Rüttgers
Franziska Moll
Hubert Josef Rüttgers
Adelheit Frenzen
Daniel Josef Rüttgers
Alfred Müller
Helga Müller
Katherina Obermann
Abb. 2.4.4. Ahnentafel mit vier Generationen
Georg Ludwig
Sophia Dorothea
GEORGE II Augustus
Sophia Dorothea
Karoline Margravine
Frederick Lewis
Anne, Pss. Royal
Pss. Auguste
Willem IV
Amelia Sophia
Eleanor
Friedrich Wilhelm I
Caroline Elizabeth
George William
Abb. 2.4.5 Stammbaum
23
William
Augustus
Mary
Louisa
Friedrich II
Frederik V
3
Datenbanken und Java Grundlagen
3.1
Grundlagen von Datenbanken
Ein DBMS (Daten Bank Management System) besteht aus einer Sammlung von Programmen,
das Datenbanken eines bestimmten Typs (relational, objektorientiert, ) verwalten kann.
Dabei ist eine Datenbank (DB) eine Menge von Daten, die in Beziehung zueinander stehen.
Zusammen kann man sie als DBS (Datenbanksystem) bezeichnen. Ein Datenmodell wird
durch die Menge von Skizzen zur Modellierung beschrieben. Mit ihm werden die in der Datenbank enthaltenen Daten formal beschrieben und ihre Beziehungen zueinander aufgezeigt.
Das Modell dient zur Modellierung von beliebigen Anwendungen, darunter beispielsweise
Tabellen, Funktionen, Typen und Klassen. Es existiert eine Vielzahl von Datenmodellen; in
dieser Arbeit wird allerdings nur das am weitesten verbreitete relationale Modell betrachtet.
Weitere bekannte Modelle sind unter anderem das Entity-Relationship-Modell, welches ein
rein konzeptionelles Modell ist; eher historische Beispiele und kaum noch verwendet sind das
Netzwerkmodell und das hierarchisches Modell. Neben dem relationalen Modell existieren
unter anderem das objektrelationale und das objektorientierte Modell. [KE97], [Man98]
Nachdem die Auswahl eines bestimmten Modells getroffen wurde, ist desweiteren noch ein
Datenbankschema nötig. Ein Datenbankschema ist anwendungsabhängig und stellt eine
Struktur des Datenmodells, die eine bestimmte spezielle Anwendung beschreibt, dar. Mit Hilfe des anwendungsunabhängigen Datenbankmodells wird also ein anwendungsabhängiges
Datenbankschema entwickelt. Eine derartige Entwicklung des Datenbankschemas ist sinnvoll,
damit im laufenden Betrieb in der Regel keine Änderungen am Schema notwendig werden,
bzw. damit, falls sie doch nötig sein sollten, das Schema sich nur in sehr großen Zeitspannen
ändert. Eine solche auch als Schema-Evolution bezeichnete Änderung könnte durch Integritätsbedingungen erschwert werden, so daß manche Änderungen anhand der schon in der Datenbank existierend Daten und der dazugehörigen Integritätsbedingungen erst gar nicht zugelassen werden. [KeEi97],[Man98], [Voss99]
Existiert für eine bestimmte Anwendung ein Datenbankschema, so werden reale Daten in die
zugehörige Datenbank geladen. Diese auch als Populieren der Datenbank bezeichnete Aktion
führt zum Datenbankzustand. Ein Datenbankzustand oder auch eine Datenbankausprägung
ist wiederum die Gesamtheit aller realen Daten (d.h. Daten aus der realen Welt), die in der
Datenbank gespeichert sind. Eine Datenbank enthält Daten, die möglicherweise vertraulich
oder überflüssig sind und für bestimmte Benutzergruppen ausgeblendet werden sollen. Für
solche Fälle gibt es externe Schemata, die auf der logischen Ebene der Datenbank die Daten
in Subschemata anzeigen, ohne das Schema des Datenmodells zu verändern. Sie werden auch
als Views (Sichten) bezeichnet. Das Ausblenden von vertraulichen und irrelevanten Informationen ebenso wie der Schutz des Benutzers vor möglichen Schema-Evolutionen, die ein
View nicht betreffen, bezeichnet man als logische Datenunabhängigkeit. Es existiert in einer
Datenbank ferner eine physische Datenunabhängigkeit, was bedeutet, daß der Benutzer von
der Datenspeicherung und des Datenzugriffs abgeschirmt wird; er kennt das logische Schema
der Datenbank und muß sich mit der physischen Speicherverwaltung nicht befassen.
[KeEi97], [Man98], [Voss99]
Die Daten einer Datenbank werden im 3-Schema-Konzept (oder auch 3-Schichten-Modell)
beschrieben. Das 3-Schichten-Modell dient dazu, die Unabhängigkeit der Daten für die Anwendungspogramme zu gewährleisten, die in drei Ebenen aufgeteilt werden: Es existiert eine
konzeptuelle Ebene, in der die logische Gesamtstruktur aller Daten mitsamt ihrer Beziehungen dargestellt werden. In der internen Ebene werden die spezielle Speicherstruktur sowie
24
die Speicherverwaltung und Zugriffsmechanismen einer Datenbank beschrieben. Die dritte
und letzte, die sogenannte externe Ebene ist die Benutzersicht. Dort werden die Daten unabhängig von Struktur und Schema in einem speziell auf den Benutzer zugeschnittenen externen
Schema dargestellt. Zwischen diesem externen Schema und dem konzeptionellen Schema
existiert somit die logische Datenunabhängigkeit; zwischen dem konzeptionellen Schema und
der internen Ebene wiederum gilt die physische Datenunabhängigkeit. [KeEi97],[Man98]
externe Ebene
Logische Datenunabhängigkeit
Konzeptionelle Ebene
physische Datenunabhängigkeit
Interne Ebene
Abb. 3.1 drei Schichten Modell
Eine Datenbanksprache umfaßt die Datenbeschreibungssprache (oder auch Data Definition Language, DDL), die zur Darstellung eines Schemas dient, und die Datenmanipulationssprache (DML, Data Manipulating Language) zur Formulierung von Anfragen, Änderungen
und Eingaben. [KeEi97]
3.1.1 Das relationale Modell und SQL
Relationale Datenbanksysteme sind heutzutage marktbeherrschend. Im relationalen Datenmodell werden Informationen in Tabellen (Relationen) abgelegt. Eine Tabelle besitzt einen
Tabellennamen (kursiv) sowie mehrere Feldnamen (Spalten). Letztere werden als Attribute
(Fettdruck) bezeichnet. Durch den Wertebereich eines Attributes wird festgelegt, welcher Art
die mögliche Eintragung ist. Ein Datensatz, d.h. eine Zeile in einer Tabelle, wird als Tupel
(umrandet) bezeichnet. Eine Spalte eines Tupels bezeichnet man als Wert. [KeEi97],
[Man98], [Voss99]
25
Vögel
Gruppe
Greifvögel
Greifvögel
Greifvögel
Singvögel
Singvögel
Singvögel
Art
Habicht
Steinadler
Turmfalke
Wiesenpieper
Zaunkönig
Nachtigall
Größe
~Mäusebussard
>Mäusebussard
<Rabenkrähe
< Haussperling
< Haussperling
>Haussperling
Status
Teilzieher
Jahresvogel
Teilzieher
Teilzieher
Jahresvogel
Sommervogel
Abb. 3.1 Tabelle einer relationalen Datenbank
Im folgenden soll eine kurze Einführung in SQL (Structured Query Language ) gegeben werden, die allerdings aus Zeit- und Platzgründen nicht vollständig sein kann. Die Einführung
erfolgt anhand von SQL2, wobei die Anfragemöglichkeit mit SQL als Schwerpunkt behandelt
wird.
SQL ist eine strukturierte Anfragesprache für relationale Datenbanken. Der erste SQLStandard wurde 1986 von der ANSI verabschiedet, 1989 revidiert, und wurde als SQL1 bzw.
SQL89 bekannt. Trotz dieses Standards existierten auch noch weiterhin verschiedene SQLImplementierungen. Erst mit SQL2, auch als SQL92 bekannt, wurde eine Norm standardisiert, an die sich die meisten Hersteller halten konnten. SQL3 schließlich wurde 1999 verabschiedet und ist deshalb auch unter SQL: 1999 bekannt. Dieser letzte Standard wurde mit
Konzepten wie Rekursion und objektorientierten Ansätzen erweitert. [Man98], [NL_5]
SQL kann als stand alone -Sprache benutzt werden oder auch eingebettet in eine allgemeine
Programmiersprache. SQL ist eine vollständige DB-Sprache, die als DDL-Teilsprache oder
auch als DML-Teilsprache mit Anfrage- und Änderungsmöglichkeiten verwendet werden
kann. [Man98]
Grundlagen der SQL-DDL
Die CREATE TABLE-Anweisung dient zur Definition eines neuen Relationsschemas inklusive Attribute, Wertebereiche und Integritätsbedingungen (Anlegen einer Tabelle). In Abb.
3.2.1 wurde die Tabelle Professoren mit den drei Attributen: PersNr, Name und Rang generiert, wobei hinter jedem Attribut der Wertebereich angegeben wird. Als Integritätsbedingung
wird bei den ersten beiden Attributen not null festgelegt. Die DROP TABLE-Anweisung
entfernt eine Tabelle aus dem Schema. Die ALTER TABLE-Anweisung dient zum Ändern
der Attribute, Wertebereiche oder Integritätsbedingungen. [Man98]
26
CREATE TABLE Professoren
(PersNr integer not null,
Name varchar (20) not null
Rang character (2));
ALTER TABLE Professoren
ADD COLUMN Gehalt INTEGER;
DROP TABLE Professoren;
ALTER TABLE Professoren
ALTER COLUMN Name VARCHAR(30);
Abb. 3.2.1
Es existieren noch einige weitere DDL-Operationen zur Wertebereichs-, Index- und Sichtdefinition, auf die hier nicht weiter eingegangen wird. [Man98]
Grundlagen der SQL-DML
Mit der INSERT-Anweisung werden einzelne Tupel oder eine Tupelmenge in eine Tabelle
eingefügt. Fehlende Attributwerte werden mit Nullwerten aufgefüllt. Da keine Attribute angegeben werden, fügt man sie in der gleichen Reihenfolge wie in der Schemadefinition ein.
Der DELETE-Operator löscht eine Tupelmenge oder einzelne Tupel, die im WHERE-Teil
spezifiziert werden; falls der WHERE-Teil nicht angegeben ist, werden sämtliche Inhalte der
Relation gelöscht. Die UPDATE-Anweisung ist nichts anderes als eine nacheinander ausgeführte DELETE- und INSERT-Anweisung. Sie kann also als syntaktischer Zucker angesehen werden. Die UPDATE-Anweisung kann bedingungslos ausgeführt werden; in diesem Fall
werden alle Tupel der Tabelle geändert. Um nur bestimmte Tupel einer Tabelle zu ändern,
wird dieses im Bedingungssteil separat angegeben. Beispiele für die Operationen sind in Abb.
3.2.2 angegeben. [Man98], [KeEi97]
INSERT INTO Professoren
VALUES (1250, Manthey , C4 , 4000);
DELETE FROM Professoren
WHERE Gehalt >5000
INSERT INTO ProfessorenC4
SELECT *
FROM Professoren
WHERE Rang = C4
* Bedeutet, alle Attribute sind gewählt.
UPDATE Professoren
SET
Gehalt = Gehalt + 400
Alle Professoren bekommen eine Gehaltserhöhung.
UPDATE Professoren
SET
Gehalt = Gehalt + 400
WHERE Rang = C4
(Nur Rang C4-Professoren bekommen eine Gehaltserhöhung.)
Abb. 3.2.2 UPDATE, INSERT und DELETE Beispiele
27
Anfragen mit SQL
Anfragen werden in SQL mit SELECT-FROM-WHERE-Blöcken gestellt. Der WHERETeil ist optional und kann daher entfallen. [Man98]
In den SELECT-Teil kommen die auszugebenden Attribute mit expliziter Relationszugehörigkeit, falls es nicht eindeutig ersichtlich ist, zu welcher Relation sie gehören. Der FROMTeil beschreibt, welche Relationen an der Anfrage beteiligt sind und teilt ihnen für die Anfrage einen Namen zu, falls z.B. eine Relation mehrfach auftritt. [Man98]
Es ist zu beachten, daß Ergebnisse von Anfragen in SQL keine Relationen sind, sondern Multi-Mengen. Sie können Duplikate enthalten. Um Duplikate zu vermeiden, muß dies explizit
mit dem Schlüsselwort DISTINCT gefordert werden. [Man98]
SELECT xi1.A1, , Xim.Am
FROM R1 x1, , Rn xn
WHERE Bedingung
SELECT Geburtsort
FROM Person
SELECT DISTINCT Geburtsort
FROM Person
GEBURTSORT
Bonn
Bonn
Bonn
Bornheim
Köln
Köln
Köln
GEBURTSORT
Bonn
Bornheim
Köln
Links eine Multimenge
und oben eine Menge.
SELECT-Blöcke sind auch mit den folgenden drei algebraischen Operatoren kombinierbar:
1.
(Schnitt in SQL2 INTERSECT )
2.
(Vereinigung IN SQL2 UNION )
3.
(Minus in SQL2 EXCEPT)
Auf diese Weise können mehrere Anfragen durchgeführt und die Ergebnisse schließlich entweder vereinigt, nur die gleichen betrachtet, oder bestimmte abgezogen werden.
SELECT-Blöcke können auf drei Arten mit Operatoren im WHERE-Teil geschachtelt werden:
1. Schachtelung mit dem IN-Operator in WHERE-Teil, um zu prüfen, ob Attribute in
dem geschachtelten SELECT-Block enthalten sind.
2. Schachtelung mit Vergleichsoperatoren mit Quantoren; folgende sechs Quantoren existieren, gefolgt von ALL oder SOME :
4. <
5. =
6. >
1.
2.
3. < >
28
3. Schachtelung mit dem Existenzquantor EXISTS; analog dazu wird NOT EXISTS
angewendet. SQL kennt keinen Allquantor; deshalb müssen alle Anfragen mit Hilfe
des aus der Prädikatenlogik bekannten Zusammenhangs x(P) =
x( P) umgewandelt werden.
SELECT Name
FROM Person
WHERE ID IN (SELECT ID
FROM Professoren
WHERE Name= Manthey )
SELECT Name
FROM Professor
WHERE PersNr<= ALL
(SELECT PersNr
FROM Professor);
.
Namen der Professoren mit der kleinsten
Personalnummer
SELECT Name
FROM Professor
WHERE EXISTS (SELECT *
FROM Professor
WHERE PersNr = 15466)
Desweiteren existieren noch andere Operatoren in SQL, die hier nicht genauer beschrieben
werden. Dazu gehört die Aggregatfunktionen COUNT zur Erfassung der Anzahl auftretender
Werte für ein Attribut. Im Spezialfall COUNT (*) werden die Anzahl der Tupel gezählt und
mit DISTINCT mehrfach vertretene Werte ignoriert. Für numerische Werte berechnet SUM
die Summe aller Werte eines Attributes; AVG ermittelt den arithmetischen Mittelwert eines
Attributes und MAX bzw. MIN gibt den größten bzw. kleinsten Wert eines numerischen Attributes aus. Nullwerte werden bei den Aggregatfunktionen nicht berücksichtigt.
[KeEi97], [Man98]
Joins lassen sich seit SQL2 auch direkt formulieren und müssen nicht wie in früheren SQLVersionen durch den Anwender selbst simuliert werden. [Man98]
1.
2.
3.
4.
5.
6.
CROSS JOIN
NATURAL JOIN
JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
Bei den letzten vier Joins wird im ON-Teil die Join-Bedingung angegeben.
Mit GROUP BY ist es möglich, sich Ergebnisse von Anfragen gruppiert ausgeben zu lassen.
Zusätzlich kann HAVING als Bedingung für die Gruppierungsanweisung angegeben werden.
SQL bietet die Möglichkeit, die Attribute in der Antwortmenge aufsteigend (ASC) oder absteigend (DESC) zu sortieren. [KeEi97], [Man98]
29
3.2
Access
Access ist ein DBMS und seit 1992 ein Teil von Microsoft Office. Die neueste Version ist
Access 2003 aus dem Office 2003 -Paket. Access ist für kleinere Netzwerke oder Einzelplatz Desktops geeignet. Die Spezifikation von Access gibt die Anzahl der Benutzer, die
gleichzeitig auf die verwaltete Datenbank zugreifen können, mit zweihundertfünfundfünfzig
an, jedoch ergibt sich durch die Mehrbenutzersynchronisation eine in der Praxis erheblich
geringere Zahl. Durch die Verwaltung der Sperren bei Datenänderungen wird Access bei
mehr als zehn Benutzern zu langsam. Sollte die Datenbank mehr als 100.000 Einträge besitzen oder regelmäßig mehr als zehn Benutzer auf die Datenbank zugreifen, sollte Access mit
einem SQL-Server gekoppelt werden. Für Anwendungen im Internet bietet Access einen großen Vorteil, da die meisten Internet Service Provider einen MS Access-ODBC-Treiber installiert haben, wohingegen ODBC-Treiber für SQL-Server nicht immer angeboten werden bzw.
teuer gekauft werden müssen. [NL_2],
Der Aufbau von Microsoft Access gestaltet sich so, daß die Benutzeroberfläche als Interface
von der Jet-Engine, die alle elementaren Datenbankfunktionen enthält, getrennt ist. Diese JetEngine wird von allen Microsoft-Office-Programmen und Visual-Basic unterstützt und darf
im Gegensatz zum restlichen Microsoft-Access-Paket frei weitergegeben werden. Der JetEngine ist es möglich, auch auf andere Datenbank-Formate wie dBase, Paradox und weitere
zuzugreifen. Dazu werden ISAM-Treiber (Index-Sequential-Access-Method) benötigt. Datenbanken, die nicht mit der ISAM-Technik ansprechbar sind, werden über ODBC angesprochen. [Wik_8],
3.3
JDBC/ODBC
ODBC (Open DataBase Connectivity) steht für offene Datenbankanbindung. Hierbei handelt es sich um eine standardisierte Methode, die den Zugriff auf Datenbanken erlaubt, ohne
zu berücksichtigen, mit welchem Programm oder mit welchem Betriebssystem der Zugriff
erfolgt. ODBC beruht auf einer Spezifikation, die durch die SAG (SQL-ACCESS-Group)
unter Aufsicht von Microsoft erstellt wurde. JDBC (Java DataBase Connectivity) stellt einen Satz von Klassen und Methoden zur Nutzung relationaler Datenbanksysteme dar. Im Gegensatz zu ODBC ist JDBC plattformunabhängig. JDBC erlaubt nur Kommunikation mit Datenbanksystemen, die ebenfalls JDBC unterstützen. [Ull03], [Wit_a], [Wit_a], [ODBCa]
[Job02], [Hag96]
Das ODBC-Interface bietet Funktionen, um einer Anwendung zu erlauben, sich mit einer Datenbank zu verbinden. Diese Verbindung dient zur Übertragung von SQL-Befehlen an die
Datenbank und zum Empfang der Ergebnisse. ODBC benutzt eine Syntax, die auf X/OPEN
und SAG basiert. Die ODBC-Verbindung besitzt eine Menge von Fehlercodes, um dem Anwender das Suchen nach Fehlern zu ermöglichen. Die Architektur von ODBC wird in vier
Schichten gegliedert: [MSH02], [Ull03], [Job02], [Hag96], [ODBCa]
1
2
Die ODBC-Applikation; sie ist für die SQL-Ausdrücke und den Empfang der Ergebnisse zuständig.
Der ODBC-Treiber-Manager; er ist zum aktivieren des erforderlichen Treibers für
die Applikation zuständig, wobei eine Applikation auf verschiedene DBMS
gleichzeitig zugreifen kann. Der Treiber-Manager verarbeitet ODBC-Anfragen
und überprüft ihre Parameter.
30
3
4
Der ODBC-Treiber; er stellt die Verbindung zum DBMS her und sendet die Anfragen an das System. Desweiteren liefert er die Ergebnisse der Anfragen zurück.
Sollte ein Fehler auftreten, gibt er die Fehlermeldung an den Benutzer zurück.
Die Datenquelle; diese besteht aus den Daten mit den zugehörigen Informationen
für den Zugriff auf diese Daten aus anderen Programmen und Datenbanken, die
ODBC unterstützen.
Die API von ODBC kann in drei Ebenen gegliedert werden
1.
2.
3.
Core-API
Level 1-API
Level 2-API
In dem Core-API sind die Funktionen enthalten die jeder ODBC-Treiber unterstützt. Darin
sind die Aufgaben zur Datenbankanbindung, zum Ausführen von SQL-Ausdrücken und zum
Bearbeiten der Informationen eines Ergebnisses sowie die Standardfehlermeldungen enthalten. Es kann davon ausgegangen werden, daß jeder ODBC-Treiber diese Funktionen bietet.
[MSH02], [Ull03], [Wit_a], [Wit_a], [Job02]
Das Level 1-API stellt Funktionen zur Verfügung, die es erlauben, mehr Informationen über
die in der SQL-Anweisung angesprochene Tabellen des Datenbankschemas und die Ergebnisse zu erhalten, dazu gehört die Genauigkeit von Datentypen und um welche Datentypen es
sich handelt. Weiterhin kann die Datenverbindung konfiguriert werden, es können z.B. die
unterstützten Treiberfunktionen abgefragt werden. Das Level 2-API dient hauptsächlich der
Erhöhung der Performance, worunter auch die Optimierung der Anfragen fällt.
[MSH02], [Ull03], [Wit_a], [Wit_a], [Job02]
Von den verschiedenen Treiberherstellern wird nicht jede der drei Ebenen unterstützt bzw.
vollständig unterstützt. Dem Anwender bleibt oft nichts anderes übrig, als verschiedene Treiber auszuprobieren. [MSH02], [Ull03], [Wit_a], [Wit_a], [Job02]
Java kommuniziert über das JDBC mit dem DBMS. Falls JDBC nicht unterstützt wird, kann
einfach eine ODBC-Bridge dazwischen gesetzt werden. Das JDBC Projekt wurde 1996 gestartet und auch 1996 spezifiziert. Seit dem JDK 1.1 ist JDBC Bestandteil des Java-CorePaketes. Mit JAVA 1.1x wird auch ODBC in das Java Core-Paket aufgenommen, da nur wenige Datenbanksysteme JDBC direkt, jedoch fast alle Datenbanksysteme ODBC unterstützen.
Eine JDBC-ODBC-Bridge gewährleistet, daß mit Java auf alle ODBC-Systeme zugegriffen
werden kann. [MSH02], [Ull03], [Wit_a], [Wit_a], [Job02]
JDBC definiert aus Anwendersicht:
Klassen zum Absetzen der SQL-Befehle,
Klassen mit Metadaten,
Klassen zur Auswertung der Fehlermeldungen,
Klassen zur Bearbeitung der Ergebnisse der Abfragen,
allgemeine Zuordnungen von Java-Datentypen zu denen der DB und
den Ablauf zum Zugriff auf die Datenbank.
31
Darstellung der grundlegenden Abläufe von JDBC
Driver Manager
getConnection
DBMS
Connection
createStatement
Statement
DB
executeQuery
Result Set
while (next ()){
getXXX()
}
Abb. 3.4.1 JDBC-Anbindung
3.4 Java AWT und Swing
Graphische Benutzerschnittstellen, auch GUI (Graphical User Interface) genannt, können in
Java mit AWT (Abstract Window Toolkit) und Swing programmiert werden. Swing wurde ab
Java 2 in dem Paket javax.swing als Teil des Java-Pakets implementiert; vorher war Swing
eine optionale Komponente, die in Java 1.1 eingeführt wurde. Swing ist eine Erweiterung des
AWTs; die Klassen, Methoden und Techniken wurden unter Swing verbessert und ausgebaut.
Diese Verbesserung bringt jedoch einen Nachteil mit sich, nämlich in Bezug auf die Performance und den Ressourcenverbrauch. Swing-Anwendungen sind in der Regel langsamer, da
sie mehr Speicher- und Prozessorressourcen benötigen als nur auf AWT basierende Anwendungen. Viele der Swing-Komponenten sind direkt vom AWT abgeleitet und besitzen densel32
ben Namen, dem ein J vorangestellt wird. Somit entsprechen die AWT-Klassen Window,
Frame, Applet und Dialog den Swing-Klassen JFrame, JWindow, JApplet und JDialog. Alle
Oberflächenkomponenten sind in Swing von JCopmonent abgeleitet, dadurch sind sie gleichzeitig Komponenten und Container. Sie sind alle, bis auf die vier oben erwähnten Komponenten, Lightweight-Komponenten, im Gegensatz zu den AWT-Komponenten, die HeavyweightKomponenten sind. Heavyweight-Komponenten liegen auf der z-Achse über den Lightweight-Komponenten, sind immer rechteckig und werden immer deckend (engl. opaque) ohne
transparente Bereiche gezeichnet. [MSH02], [Ull03]
Nun werden einige Komponenten vorgestellt, die auch im Rahmen dieser Diplomarbeit verwendet wurden. Zu Beginn wird das Erstellen eines Fensters beschrieben. [MSH02], [Ull03]
import.java.awt.*;
public class MakeFrame extends Frame {
public MakeFrame (String Title) {
super(Title);
setSize(200,100);
setVisible(true);
}
public static void (String [] args) {
new MakeFrame( Java Frame mit AWT );
}
}
import.javax.swing.*;
public class MakeFrame extends JFrame {
public MakeFrame (String Title) {
super(Title);
setSize(200,100);
setVisible(true);
}
public static void (String [] args) {
new MakeFrame( Java Frame mit Swing );
}
}
Abb. 3.4.1 Ein Frame mit AWT und Swing
Die nun folgenden Beispiele werden nur noch in Swing vorgestellt. An ein Frame kann in
wenigen Schritten ein Menü angefügt werden. Ein Fenster kann aber auch noch nicht geschlossen werden. Um dies zu ermöglichen, ist noch eine Erweiterung einzufügen. Unter
Swing wird dieses mit der Zeile setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
ermöglicht. [MSH02], [Ull03]
33
import javax.swing.*;
public class Fenster extends JFrame {
public Fenster (String Title) {
super(Title);
initializeMenu();
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void initializeMenu() {
JMenu mJMenu;
JMenuBar menuBar= new JMenuBar();
menuBar.add(mJMenu = new JMenu("Datei"));
mJMenu.add(new JMenuItem("Beenden"));
setJMenuBar(menuBar);
}
public static void main (String[] args) {
new Fenster("Java Frame mit Swing");
}
}
Abb. 3.4.2 JFrame mit Menü und Close Operation
Mit new JMenuBar() wird eine Menüleiste erstellt. An dieser können dann einzelne Menüpunkte angehangen werden; wie im Beispiel wird mit new JMenu( Datei ) ein neuer Menüpunkt erzeugt. An diesen Menüpunkt können dann weitere Menüpunkte oder Submenüs angehangen werden. Mit new JMenuItem( Menüname ) wird ein Menüpunkt und mit new JMenu( Menüname) wird ein Untermenü erzeugt, an dem weitere Menüpunkte angehangen werden können. Diese müssen, nachdem sie erzeugt wurden, mit add an die Menüleiste oder das
Menü angehangen werden. Als weitere Menü-Komponenten exstieren JChekBoxMenuItem,
um den Status als selektiert oder nicht selektiert anzuzeigen, und JRadioButtonMenuItem. Mit
dieser kann eine Gruppe von Optionen zusammengefaßt werden, von denen immer nur eine
selektiert werden kann. Es ist mit JToolBar auch möglich, Buttons in die Menüleiste einzufügen. [MSH02], [Ull03]
Zur Darstellung der Größe gibt es verschiedene Möglichkeiten. Die im Beispiel verwendete
ist setSize(), mit der die Größe explizit angegeben wird. Die Größe ermittelt sich aus dem
Inhalt und den plattformabhängigen Umrahmungen, so daß bei einer größeren Umrahmung
wie in Windows XP (im Vergleich zu älteren Windows-Versionen) die Titelleiste größer und
somit der Inhalt kleiner ist. Die zweite Möglichkeit pack() stellt ein Fenster in der minimalen
Größe dar, so daß alle enthaltenen Komponenten ausreichend Platz haben. Nach Festlegung
der Größe eines Fenster muß es noch mit setVisible(true)sichtbar gemacht werden.
[MSH02], [Ull03]
Um Komponenten, die zu groß für die Oberfläche sind, anzuzeigen, wird JScrollPane benutzt.
Ein JScrollPane besteht aus dem JViewport, d.h. dem Bereich innerhalb des Fensters, und
einem horizontalen und einem vertikalen Rollbalken. Diese beiden Rollbalken erscheinen,
sobald die Komponente aufgrund ihrer Größe nicht mehr angezeigt werden kann. Um zwei
Komponenten zu trennen, kann eine JSplitPane genutzt werden. Die Leiste (Divider) zwischen den getrennten Komponenten kann verschoben werden, wobei dann der sichtbare Be34
reich der einen Komponente proportional zum Wachstum der anderen abnimmt. Es ist ein
horizontales und vertikales Teilen möglich. [MSH02], [Ull03]
Zum Bestätigen oder Treffen einer Auswahl existieren Buttons. Mit JButton wird ein Button
erzeugt, der nach Bestätigung wieder in seine Ausgangsposition zurückkehrt. JToggleButton
bleibt bis zur nächsten Auswahl gedrückt. Desweiteren verhält sich JCheckBox wie ein JToggleButton, nur ist die graphische Darstellung die eines leeren Kästchens, das bei Bestätigung
mit einem Häkchen versehen wird. JRadioButton entspricht in etwa einer JCheckBox, wobei
immer nur ein Punkt aus einer Gruppe ausgewählt werden kann. [MSH02], [Ull03]
Die einfachste Textkomponente in Swing ist ein JTextField. Sie erzeugt ein einzelliges Textfeld, dessen Inhalt beispielsweise für Eingaben abgefragt werden kann. JTextArea erstellt im
Gegensatz dazu ein Textfeld mit mehreren Zeilen. [MSH02], [Ull03]
Es existiert ein Vielzahl von weiteren Komponenten, allerdings wird hier nur noch auf den
Layout-Manager eingegangen. Mit dem Layout-Manager wird bestimmt, wie verschiedene
Komponenten angeordnet werden, beispielsweise die Buttons in einem Fenster. Zu den Standard-Layouts gehören FlowLayout, BorderLayout, CardLayout, GridLayout, GridBagLayout,
BoxLayout und das SpringLayout. Neben diesen Layouts gibt es die Möglichkeit eines selbstdefinierten Layouts. Hier werden die ersten beiden Layouts vorgestellt. Das FlowLayout ist
bei JPanel voreingestellt. Es ordnet alle Komponenten in der Reihenfolge, in der sie eingefügt
werden, nebeneinander an. Sobald der Container zu schmal ist, wird in der nächsten Zeile
fortgefahren. Die Ausrichtung kann linksbündig, rechtsbündig oder zentriert erfolgen. Bei
einer Änderung der Größe des Containers wird das Layout angepaßt. Das BorderLayout ist
der voreingestellte Layout-Manager von JWindow, JFrame und JDialog. Hiermit ist es möglich, Komponenten gezielt nebeneinander oder untereinander anzuordnen. Der Container wird
in fünf Bereiche aufgeteilt, und zwar in eine Komponente in der Mitte, um die die anderen
vier Bereiche angeordnet werden. Sie werden mit den vier Himmelsrichtungen angesprochen.
Soll ein JLabel mit einem Text beispielsweise rechts vom Zentrum angeordnet werden muß,
geschieht dies mit folgendem Befehl: add(BorderLayout.NORTH, new JLabel( Text )).
[MSH02], [Ull03]
35
4
Graphische Visualisierung genealogischer Daten
Zur Darstellung von Stammbäumen kann aus einer großen Zahl von Alternativen gewählt
werden, die sich jeweils in der graphischen Anordnung der Personen unterscheiden. Begonnen wird bei jeder Variante mit dem Stammvater, d.h. der ältesten bekannten Person und ihrem/ihren Ehepartner(n). Diese Stammeltern stellen die Wurzel dar, von der ausgehend die
Kinder und alle weiteren Nachkommen aufgeführt werden. Die Wurzel des Stammbaumes
wird in der Regel an das obere Ende der Darstellung gesetzt, so daß der Stammbaum nach
unten hin wächst.
Die Wahl der Darstellung ist oft davon abhängig, wo der Stammbaum seinen Platz finden
soll. Ist er dazu bestimmt, gewissermaßen als Wohnungsaccessoire oder Bild ein Zimmer zu
schmücken, wird meistens auf einen von Hand gezeichneten Stammbaum oder Vordrucke, die
vervollständigt werden, zurückgegriffen. Bei einer Online-Darstellung im Internet auf einer
eigenen Homepage oder einer allgemeinen Seite werden Stammbäume in den meisten Fällen
als Stammliste dargestellt. Sollten sie als Graph zur Verfügung gestellt werden, sind diese
Versionen sehr oft als Bilddatei gespeichert, was mit einem von Hand gezeichneten Stammbaum gleichgesetzt werden kann; nur wurden hierbei als Handwerkszeug keine Pinsel und
Farben benutzt, sondern ein computergestütztes Graphikprogramm.
Als Stammliste dargestellte Stammbäume sind wegen der einfachen Generierung beliebt. Da
viele Internetseiten mit genealogischem Hintergrund und Homepages vor der Einführung von
DSL erstellt wurden, haben sich viele Genealogen bzw. Hobbygenealogen dazu entschlossen, ihren Stammbaum in reiner Textform darzustellen.
4.1 Klassifizierung
Darstellungsformen für genealogische Daten können in vier Arten eingeteilt werden.
1.
2.
3.
4.
Mündliche Darstellung
Bildliche Darstellung
Schriftliche Darstellung
Graphische Darstellung
In einer mündlichen Darstellung werden die Daten von Generation zur Generation in Form
von Geschichten oder Liedern weitergegeben. Z.B. gehört es in einigen Staaten Afrikas zur
Tradition, sich den eigenen Stammbaum, von dem mehr als zwanzig Generationen bekannt
sein können, einzuprägen; dabei werden aber ausschließlich die männlichen Ahnen berücksichtigt. Bei diesem Brauch ist es aufgrund der immer größer werdenden Anzahl der Vorfahren mittlerweile üblich geworden, viele Generationen namentlich zu überspringen und dabei
lediglich die Anzahl der jeweils ausgelassenen Generationen festzuhalten. Welche Generationen jeweils übersprungen werden, ist davon abhängig, welchen Status die betreffenden Vorfahren innehatten. [Wik_5]
Prominente Beispiele für eine bildliche Darstellung sind unter anderem Höhlenmalereien oder
Portraits von Ahnen in Form von Gemälden oder Skulpturen. Die bildliche Darstellungsweise
wurde durch die schriftliche und graphische Darstellung erweitert, durch welche mehr
oder überhaupt erst Informationen in die Darstellung mit einflossen.
36
Die graphische Darstellung ist noch weiter unterteilbar. Es sind Stammbäume, die der Definition eines Stammbaums im eigentlichen Sinne entsprechen, von stammbaumähnlichen Darstellungen zu unterscheiden, welche nur die Form eines Stammbaums besitzen. Auf den ersten Blick fällt diese Differenzierung nicht leicht, sondern wird erst durch Betrachtung der
Daten deutlich: Bei einem Stammbaum stellt eine Tochter immer ein Blatt des Baumes dar.
Auch wenn sie selbst schon Nachkommen besitzt, sind diese hier nicht dargestellt, sondern
werden in dem Stammbaum der Familie, in die sie einheiratet, weiter aufgeführt. In einer
stammbaumähnlichen Darstellung dagegen kann ausgehend von der Tochter die Familie weiter aufgeführt werden. [Wik_5]
Bei Stammbäumen kann man desweiteren verschiedene Varianten der graphischen Darstellung unterscheiden. Häufig verwendet werden Stammbäume, die üblicherweise von oben
nach unten wachsen. Eine Alternative dazu sind Stammbäume, die einer Ahnenliste ähnlich
von links nach rechts wachsen. Letztere stellen sich in ihrer Ausdehnung oft sehr breit und
flach dar. Nachdem die Ausrichtung eines Stammbaums zur Klassifizierung berücksichtigt
wird, sind sie desweiteren noch anhand der Darstellung der Personen in dem Baum zu unterscheiden. Hierbei gibt es zwei Möglichkeiten: Entweder können die Individuen durch Objekte
wie Rechtecke, Kreise oder Ovale, die mit den Informationen der Personen gefüllt werden,
symbolisiert werden, oder es kann einfach ein mehr oder weniger ausführlicher bzw.
informativer Text über die Person ans Ende einer Linie plaziert werden, und vom Ende dieses
Textes ausgehend weiter verzweigt werden. Bei eingerahmten Personen existiert die Möglichkeit, einen Partner mit eigenem Platzhalter darunter oder daneben zu setzen, oder alternativ den Partner mit in die eigene Box zu schreiben.
4.2 Rechnergestützte Methoden zur Stammbaumausgabe
Es existiert bereits eine Vielzahl von Programmen zur Speicherung und Darstellung von genealogischen Daten. Einige dieser Programme werden im folgenden vorgestellt und an diesen
Beispielen Vorzüge und Nachteile der schon existierenden Anwendungen erläutert. Ferner
werden anhand der Auswahl dieser Programme die verschiedenen möglichen Arten der Darstellung genealogischer Daten aufgezeigt. Jedes der im folgenden beschriebenen Softwareprodukte kann über die Seite http://www.genealogie-software.de per Download erworben
werden. Dort findet sich auch eine Linksammlung von weiteren Programmen, wobei einige
kommerzielle Anbieter jedoch keine Testversion vor dem Kauf zur Verfügung stellen.
4.2.1 GFAhnen Version 5.0
GFAhnen 5.0 ist eine kommerzielle Software, die zum Preis von 75 erworben werden kann.
Sie wird von der Gesellschaft für Familienforschung in Franken vertrieben und ist in der neusten Version 5.0 lieferbar. Die Gesellschaft ist unter http://www.gf-franken.de/ im WWW zu
erreichen.
In GFAhnen 5.0 sind die wichtigsten Daten einer Person auf dem Hauptbildschirm präsentiert
(Abb. 4.2.1.1). Die Personendaten der jeweils aktiven Person sind durch eine rote Umrandung
markiert. Von der aktiven Person kann über verschiedene Buttons zu ihrem Vater (V), der
Mutter (M), ihrem Partner (P) oder einem Kind (K) dieser Personen gewechselt werden. Die
Eltern und Ehepartner werden rechts angezeigt (grüne Umrandung). In dem blau umrandeten
Bereich können alle ehelichen und unehelichen Kinder, Paten und andere Daten angezeigt
37
werden. Die Personeneingabe sowie die Zuordnung von Beziehungen wie Pate, Kind usw.
geschieht im braun umrandeten Feld.
Visualisierungsmöglichkeiten werden immer von der aktiven Person ausgewählt, die somit
den Probanden darstellt. Es stehen vier verschiedene Visualisierungsarten der Daten zur Auswahl:
1. Ahnentafel (mit AT)
2. Stammbaum (mit SB)
3. Familienanalyse (mit FA)
4. Familienblatt (mit FB)
In jedem Fall können allerdings maximal fünf Generationen in die Darstellung aufgenommen
werden.
Abb. 4.2.1.1 Hauptbildschirm
Abbildung 4.2.1.3 zeigt die Ahnentafel der aktiven Person, Abbildung 4.2.1.2 den in Form
eines Filesystems dargestellten Stammbaum. In der in Abb. 4.2.1.4 dargestellten Familienanalyse sind die Daten der für eine Familie, das heißt Ehepartner und deren Kinder, wichtigsten Ereignisse als Symbole in einer Zeitlinie markiert. Hierzu gehören unter anderem Geburten, Heiraten und Sterbedaten. Das Familienblatt ist nicht abgebildet; dort sind die Informationen zu Eltern, Ehepartnern und Kindern in Textform festgehalten.
38
Abb. 4.2.1.2 Stammbaum
Abb. 4.2.1.3 Ahnentafel
39
Abb. 4.2.1.4 Familienanalyse
4.2.2
Ursprung
Die Software Ursprung ist als Freeware für private, nichtkommerzielle Zwecke unter der
Adresse http://www.prog.de als Download zu beziehen. Der Autor Heiko Pruess beschreibt
sie als Programm zur Verwaltung eines Familienstammbaums; eigentlich wird mit dieser
Software aber kein Stammbaum sondern, eine Ahnentafel verwaltet. Somit dient Ursprung der
Speicherung der Ahnen eines Probanden bis zur siebten Generation, wobei der Proband die
erste Generation bildet. Es können daher 27-1 = 127 Personen gespeichert werden.
In Ursprung existiert nur eine Bildschirmdarstellung, die in Abb. 4.2.2.1 zu sehen ist. Auf der
rechten Seite ist ein kleiner Baum abgebildet, innerhalb dessen man mit Hilfe der vier Pfeiltasten umherwandern und so zu den verschiedenen Personen gelangen kann. Die Informationen
und eigene Anmerkungen werden in Textfeldern angezeigt, in denen Eintragungen direkt
vorgenommen werden können. Der Proband besitzt innerhalb des Baumes die Nummer 1-1
(Ebene eins, Person eins). Der Baum wird folglich bis zur siebten Generation von 7-1 bis 7-64
weitergeführt. Es können Name, Vorname, Geburtsname, Geburtsdaten, Taufdaten, Konfirmationsdaten, Hochzeitsdaten, Sterbedaten und Beruf eingetragen werden. Zusätzlich existiert
ein Feld für Notizen sowie die Möglichkeit zur Einbindung eines GIF-Bildes, welches unterhalb des Baums angezeigt wird.
Die Speicherung erfolgt in Textdokumenten. Für jede Person, die in der Ahnentafel eingetragen wird, legt das Programm ein Textdokument an, so daß sich bei vollständig ausgefüllter
Ahnenliste demnach 127 Textdateien ergäben. Allgemein werden die Textdateien mit Uxxxyyy.txt bezeichnet, wobei xxx die Generation und yyy die Nummer der Person 1-64 auf Ebene 7, 1-32 auf Ebene 6 etc. bezeichnet. Für den Probanden wird daher das Dokument U001001.txt angelegt usw. In der Textdatei steht in jeder Zeile nur eine Information, angefangen
mit Zeile 1 für den Vornamen, Zeile 2 für den Nachnamen, Zeile 3 für das Geschlecht etc.
Dabei können immer nur die Ahnen für einen Probanden dargestellt werden. Sobald ein anderer Datensatz angelegt werden soll, werden automatisch die vorher angelegten Textdokumente
überschrieben.
40
Abb. 4.2.2.1 Ursprung Hauptfenster
4.2.3 Famtree Version 2.3
Famtree wird kommerziell zu einem Preis von 20 angeboten. Der Entwickler Dr. Bruno
Stöckle vertreibt es unter der zur Zeit neuesten Version 2.3. Eine Demoversion ist unter
http://bst-soft.de erhältlich.
Famtree ist ebenso wie Ursprung ein Programm, mit dem nur die Ahnentafel dargestellt werden kann. Der Name Famtree des Programms ist also insofern irreführend, als daß er auf einen Stammbaum schließen läßt. Abweichend von einer eigentlichen Ahnentafel jedoch gibt es
hier die Möglichkeit, auch Ehepartner und Geschwister einzutragen. Diese werden allerdings
nicht in der Ahnentafel selbst, sondern in separaten Textboxen angezeigt.
Das Programm zeigt eine Ahnentafel bis zur fünften Generation an. Falls jedoch mehr Ahnen
existieren bzw. bekannt sind, besteht die Option, eine Person aus der Ahnentafel auszuwählen
(durch Klick auf die entsprechende Stelle der Ahnentafel) und diese als neuen Probanden zu
markieren. Dabei werden nur zum aktuell gewählten Probanden Vorname, Nachname, Geburtsname, Beruf, Ort, Lebensdaten, ein Kommentar und falls vorhanden ein Bild angezeigt. Wird ein Ahne angeklickt, werden dessen Daten in einem zusätzlichen Textfeld dargestellt.
Desweiteren gibt es die Möglichkeit, sich die Ahnentafel ausdrucken zu lassen. Dabei wird
eine der Definition entsprechende Ahnentafel (gegebenenfalls mit Bildern) gedruckt. Alternativ kann die Familie eines Probanden in zwei verschiedenen Versionen ausgedruckt werden.
Dabei werden jeweils Proband, Partner und Kinder dieser Ehe mit ausgegeben. In der ersten
möglichen Version sind die Eltern über die ganze Breite einer Seite in einer Box inklusive
Heiratsdaten aufgeführt und ihre Kinder in Boxen, die jeweils nur ein Drittel dieser Größe
41
haben. Die zweite Version gibt den Probanden mit Name, Nachname, Geburtsname, Ort, Lebensdaten, Beruf der Eltern und zusätzlichen Bemerkungen aus, den Partner mit dessen entsprechenden Daten und zusätzlich den Heiratsdaten und schließlich alle Kinder ohne eventuelle Partner. Die Daten werden in einer Datei gespeichert, wodurch mehrere Datensätze angelegt werden können. Es besteht keine Möglichkeit, Daten zu importieren, doch die eingetragenen Daten können als Textdokument exportiert werden. Sie sind dann aber nur zur Ansicht
zu verwenden und haben keine weitere Funktion; ein erneuter Import ist ebenfalls nicht möglich.
Abb. 4.2.3.1 Fammtree Hauptbildschirm
4.2.4 Fzip Family Tree S1.7d
Fzip ist ein kommerzielles Programm, das gegen eine Gebühr von 20 erworben werden
kann. Es wird von Andrew Croft vertrieben und ist unter http://members.ozemail.com.au/
~acroft/ zu beziehen.
Abbildung 4.2.4.1 zeigt eine von zwei unterschiedlichen Ansichten des Hauptfensters mit
Daten zu den Personen. Unter dem Menüpunkt Ausdrucke kann eine Fülle von Informationen angefordert werden. Die Darstellungen sind dann allerdings nur in der Druckvorschau
(wie der Menüpunkt Ausdrucke andeutet) zu sehen und müssen daher teilweise erst ausgedruckt werden, um einige Visualisierungen komplett anzuzeigen.
42
Abb. 4.2.4.1
In Abb. 4.2.4.1 unten ist eine Ahnentafel dargestellt. Eine ähnliche Form besitzen auch die
anderen hier nicht vorgestellten Ausgaben, wie Daten zur Person oder Partnerliste . Abb.
4.2.4.1 oben zeigt den Nachkommen-Baum, dessen Aussehen dem des Vorfahren-Baums
äquivalent ist. Der Stammbaum (in Fzip so genannt, stellt jedoch eine Ahnentafel dar) ist
ähnlich der Ahnentafel aus Abb. 4.2.1.3 aus GFAhnen. Der eigentliche Stammbaum, hier
Nachkommen-Box-Chart genannt, ist hier nicht abgebildet da der Stammbaum erst vollständig ausgedruckt und zusammengeklebt werden muß, um als Ganzes betrachtet werden zu
können. Fzip bietet ebenfalls einige Statistiken, die als Text ausgegeben werden können.
4.2.5 WinAhnen V6.02
Das Programm WinAhnen ist derzeit in der aktuellen Version 6.02 für 45 von dem Herstellerteam Robert Mund und Olaf Schilling zu beziehen. Unter http://www.winahnen.de ist eine
Testversion erhältlich.
WinAhnen bietet die Möglichkeit, die Personendaten als Stammbaum, Ahnentafel, Tabelle
oder als Formular auszugeben. Dabei sind die Ausgaben als Tabelle und Formular sehr ähnlich in Tabellenform aufgebaut, mit nur leichten Abweichungen im Aufbau der Tabellen. Im
großen und ganzen aber werden bei beiden die gleichen Informationen aufgezeigt. Die Ahnentafel entspricht hier nicht einer Ahnentafel im engeren Sinne (bei der nämlich nur ein Proband mit seinen direkten Eltern und von diesen jeweils auch nur die direkten Eltern usw. dargestellt werden), sondern bezieht auch die Geschwister der Vorfahren mit ein, die direkt nebeneinander dargestellt werden. Die Entscheidung für die Verwirklichung der Ahnentafel in
43
dieser Form hat zur Folge, daß die Symmetrie einer Ahnentafel nicht mehr gegeben ist. Desweiteren wächst der Baum durch die Darstellung der Geschwister unvorteilhaft in die Breite,
was dazu führt, daß die Ahnentafel unübersichtlich wird.
Der Stammbaum beginnt beim Stammvater, wobei als dieser auch eine Frau gewählt werden
kann. Allerdings können im Stammbaum nur Ahnen und deren Partner eingefügt werden;
somit ist es hier nicht möglich, Kinder direkt einzutragen. Zur Übersicht läßt sich der Stammbaum bzw. die Ahnentafel verkleinern, wodurch aber die Personendaten nicht mehr zu lesen
sind. Es besteht zwar die Möglichkeit, die Personendaten zu bearbeiten, allerdings sind sämtliche Informationen auf insgesamt elf Formularblättern verteilt (Allgemein, Geburt, Taufe,
Partner, etc.).
Die in Bezug zu dieser Arbeit interessante Form der Stammbaudarstellung wird im folgenden
ausführlicher diskutiert: Frauen werden in der Darstellung durch rote, Männer durch blaue
und unbekannte Personen durch weiße Boxen symbolisiert. Die Platzhalter für einzelne Personen werden alle in der gleichen Größe aufgezeichnet, was bei diesem Programm im Kontrast zu anderen vorgestellten sehr zur Übersichtlichkeit beiträgt. Partner werden einer Person
zugeordnet und direkt oberhalb in einer eigenen Box angehangen. Bei Mehrfachehen wird die
Ansicht so generiert, daß alle Ehepartner einer Person nebeneinander über dieser Person angeordnet werden. Diese Entscheidung führt dazu, daß die Breite des Baums sich bei vielen
Mehrfachehen deutlich vergrößert, wobei er aufgrund des Layouts ohnehin schon mehr in die
Breite als in die Höhe wächst. Die Kästen haben eine solche Form, daß maximal fünf Personen einer Generation mitsamt ihren Ehepartnern falls alle Personen nur einmal verheiratet
waren - nebeneinander angezeigt werden können. Außerdem wird durch die Wahl der Platzierung der Ehepartner der Baum flach gehalten, da zwischen jeder Generation der gleiche Abstand besteht.
Es können vier Generationsebenen auf einer Bildschirmseite dargestellt werden. Die Kinder
einer Ehe werden dem Ehepartner angefügt; dadurch ist ersichtlich, wer die Mutter und wer
der Vater eines Kindes ist. Falls aber ein Elternteil mehrere Ehen eingegangen ist, aus denen
Kinder hervorgingen, führen von einem direkten Nachkommen mehrere Linien zu verschiedenen Kindern. Dadurch ist an bestimmten Stellen des Stammbaumes nicht immer ersichtlich,
ob eine Person Geschwister hat. Zu diesem Zweck muß mindestens zu den Eltern gescrollt
und hier geschaut werden, ob ein Elternteil eventuell Kinder aus einer weiteren Ehe hat.
Nach eigenem Empfinden betrachtet, könnte diese Darstellung durch die Entscheidung für
einen Stammbaum, der von oben nach unten wächst, verschönert werden; möglicherweise
wurde hier die entgegengesetzte Variante gewählt, da die Ahnentafel optisch das gleiche Format wie der Stammbaum hat. Dadurch sollte wohl der Stammbaum auf den ersten Blick von
der Ahnentafel unterscheidbar gemacht werden. In Abb. 4.2.5.1 ist ein Stammbaumausschnitt
zu sehen. Die Ahnentafel weist eine äquivalente Darstellung auf, mit dem Unterschied, daß
sie am oberen Rand beginnt und nach unten fortgesetzt wird. Desweiteren werden in der
Ahnentafel Geschwister nebeneinandergesetzt, wie in dem Stammbaum bei der Mehrfachehe
zu sehen ist.
44
Abb. 4.2.5.1 Stammbaumdarstellung in WinAhnen
4.2.6 DYNASS-TREE V300
Dynass-Tree wird von Gerhard Bauch Software vertrieben. Die Vollversion ist für 49 unter
der Internetadresse http://www.dynas-tree.de zu beziehen. Das Programm bietet neben der
Darstellung genealogischer Daten viele erweiterte Funktionen. Mit Dynass-Tree können Gedcom-Dateien importiert und exportiert werden. Es ist möglich, sich eine Statistik in Balkengraphik über verschiedenste Daten ausgeben zu lassen; als Beispiel seien Geburtsmonat, Alter, Todesjahr, Kinder in der ersten Ehe unter vielen anderen Möglichkeiten genannt. Desweiteren hat man die Möglichkeit, sich Berichte auszudrucken, d.h. Listen, in denen zu einer gewählten Person alle Blutsverwandten, Nachkommen, Vorfahren oder andere ausgewählte Informationen aufgeführt werden.
Bei der Auswahl der visuellen Ausgabe hat man die Wahl zwischen einem Stammbaum, einer
Ahnenliste, oder dem Stammbaum einer Person, zu der auch noch die bekannten Vorfahren
ausgegeben werden. Positiv zu bewerten ist, daß einem die Möglichkeit gegeben wird, in elementare Formatierungen der visuellen Ausgabe einzugreifen. Der Benutzer wählt aus, ob der
Baum von oben nach unten, von links nach rechts oder jeweils umgekehrt ausgegeben werden
soll. Dabei kann ausgesucht werden, ob auch angeheiratete Partner mit angezeigt werden oder
nur die Blutsverwandten. Der Benutzer kann auch entscheiden, wie viele Generationen der
Baum maximal umfassen darf, und kann auf der Visualisierung verschiedene Änderungen
vornehmen. Die Visualisierung ist in einer der möglichen Formen in den Abb. 4.2.6.1 und
Abb. 4.2.6.1 gezeigt. Als nachteilig anzusehen ist wiederum die Unproportionalität zwischen
den einzelnen Personen: Je mehr Informationen es zu einer Person gibt, desto größer ist die
Box, in der sie dargestellt wird. Übersichtlicher und auch ästhetischer wäre die Darstellung
45
jeder Person mit den wichtigsten Informationen in einheitlich großen Boxen. Falls mehr Informationen angezeigt werden sollen, sollten diese in einem Menüpunkt auswählbar sein.
Abb. 4.2.6.1 Stammbaum in zwei Ausrichtungen
46
4.2.7 GEN-Master V3.1.4
GEN-Master ist in der Version 3.0 für 15 zu erwerben; der Hersteller des Programms ist
Ralph Hedke. Eine Demoversion steht unter http://www.genmaster.de zum Download bereit.
GEN-Master bietet graphische Balkendarstellungen über die Verteilung der Geschlechter, des
Alters, der Jahrgänge und der Konfessionen. Neben GEN-Master-Dateien können auch
GEDCOM-Datensätze importiert und exportiert werden. Als weiteres Exportformat existiert
ein Format speziell für die Seite www.vorfahrensuche.de; dazu werden zwei Textdateien erzeugt, die speziell von dieser Seite zur Aufnahme in ihre Datenbank genutzt werden. In der
Datei psxxxxxxxx.txt werden alle Personendaten gespeichert und in der Datei ehxxxxxxxx.txt
alle Daten zu Hochzeiten von Personen, wobei xxxxxxxx jeweils für eine achtstellige Nummer steht. Ein eindeutiger Nachteil bei der graphischen Darstellung der Daten in Form eines
Stammbaums ist die Tatsache, daß der Baum sich nicht auf dem Bildschirm, sondern nur in
ausgedruckter Form betrachten läßt. In Abb. 4.2.7.1 ist der Stammbaum abgebildet. Ein Scrollen ist hier allerdings nicht möglich, so daß in der Ansicht einige Personen verdeckt bleiben.
Desweiteren existiert die Option, eine Darstellung in Textform, z.B. als Ahnenblatt, auszugeben. Bei der Stammbaum-Darstellung werden jeweils nur die Namen angezeigt. Durch
das Anklicken einer Person werden zwar mehr Informationen sichtbar, jedoch sind eben nicht
alle Personen sichtbar und es kann unzweckmäßigerweise nicht zu den verdeckten Personen
gewechselt werden. Dadurch stehen die weiteren nicht dargestellten Informationen in der ausgedruckten Version nicht zur Verfügung.
Abb. 4.2.7.1
47
4.2.8 GeneWeb 4.09
Bei GeneWeb handelt es sich um Freeware, die vom Hersteller INRIA unter der Internetadresse http://www.genealogie-software.de kostenlos bezogen werden kann.
GeneWeb ist ein attraktives Programm zur Darstellung von Stammlisten. Der Vorteil von
GeneWeb besteht darin, daß aus den Daten eine Stammliste erzeugt wird, die nicht nur zur
Ansicht dient, sondern auch weitere Funktionen bietet. GeneWeb verwendet als Oberfläche
den installierten Webbrowser. Die Daten können aus einer GEDCOM-Datei importiert und
auch wieder exportiert werden. Ist ein Datensatz geöffnet, besteht die Möglichkeit, ihn sich
als Stammliste ausgeben zu lassen; wird dabei eine Person aus einer Stammliste weiter selektiert, so wird ihr Familienblatt angezeigt. Im Familienblatt hat man die Möglichkeit, sich weitere Informationen bezüglich der Person angeben zu lassen, wie z. B. ihre Cousinen, Cousins,
Onkel, Tanten und weitere Beziehungen. Zusätzlich existieren einige statistische Auswertungen der Daten, wie etwa die ältesten lebenden Personen, die letzten Heiraten, die letzten Sterbedaten und andere, wobei diese sich jeweils auf maximal zwanzig Personen beziehen. Als
Hilfsmittel für Genealogen ist ein Datumsrechner integriert, der die Daten zwischen dem gregorianischen, julianischen, französischen und hebräischen Kalender konvertiert. In Abb.
4.2.8.1 ist die Stammliste aufgeführt.
Abb. 4.2.8.1 Stammliste
4.2.9 StaBa
Der Stammbaumgenerator
48
Auch StaBa ist eine kommerzielle Software zur Darstellung von Stammbäumen. Die Lizenz
zum Download des Programms ist für den Preis von 22 unter http://www.codev.de/nunz zu
beziehen. Lizenz und Programm zusammen auf CD sind für 32 erhältlich. Der Entwickler
ist Jochen Herz.
Im Stammbaumgenerator wird das Familienblatt übersichtlich dargestellt, wobei ein komfortabler Wechsel zu den direkt in Beziehung stehenden Personen ermöglicht ist. Die graphische
Darstellung als Stammbaum jedoch erweist sich als sehr unübersichtlich: Der Stammbaumgenerator erstellt die Beziehungen zu Personen, ordnet sie aber nicht korrekt an, so daß die Darstellung, wie in Abb. 4.2.9.1 unten zu sehen recht konfus wirkt ohne dabei einen Bezug
zwischen den Daten erkennen zu lassen. Die Darstellung des Stammbaums als Stammliste ist
jedoch ohne Probleme möglich, wie in Abb. 4.2.9.1 oben gezeigt.
Abb. 4.2.9.1 Stammliste und Stammbaum
49
5
Konzepte zur Stammbaumvisualisierung
5.1
Diskussion von Alternativen und eigener Ansatz
Bei einer Stammbaumvisualisierung muß vieles berücksichtigt werden. Besonders wichtig
sind hierbei die Art der Informationen, die angezeigt werden sollen, sowie die Auswahl der
Darstellungsweise der einzelnen Personen. In Bezug auf die Informationen besteht eine Möglichkeit darin, sämtliche für eine Person existente Daten mit in den Stammbaum aufzunehmen. Alternativ könnten aber auch nur wenige, relevante Angaben in komprimierter Form
direkt in die Visualisierung mit aufgenommen werden, während gleichzeitig auf Verlangen
zusätzliche Informationen zu einer bestimmten Person gesondert angezeigt werden könnten.
Die Ausgabe könnte dabei in einem eigenen Fenster erfolgen, welches sich auf eine Anfrage
hin öffnet, oder aber auch an einer bestimmten Stelle im Hauptfenster.
Wurde nun eine bestimmte Art der Informationsdarstellung festgelegt, ist weiterhin zu entscheiden, wie die Individuen optisch im Stammbaum dargestellt werden. Sollen die Daten
einfach als Text ohne eine Umrandung dargestellt werden, oder soll ein Platzhalter in Form
eines Rechtecks oder eines anderen Gebildes in den Stammbaum die Personendaten aufnehmen. Mit dem Begriff Platzhalter ist dabei im folgenden die Darstellung der Personendaten in
dem Stammbaum gemeint. Männliche und weibliche Personen könnten entweder unterschiedliche Rahmen erhalten, die ihre jeweiligen Daten einfassen, oder es wird für alle Geschlechter
dieselbe Umrahmung verwendet. Bei geschlechtsspezifischer Umrandung ergibt sich dabei
ein Problem für unbekannte Personen, deren Existenz zwar erwiesen ist, deren Name und Geschlecht jedoch nicht bekannt sind. In diesem speziellen Fall müßte daher noch eine dritte
Form zur Kennzeichnung existieren. Werden dagegen alle Personen in gleicher Art und Weise
dargestellt, könnte das jeweilige Geschlecht auch einfach durch ein Zeichen kenntlich gemacht werden. Oft ist natürlich die jeweilige Geschlechtszugehörigkeit schon anhand des
Vornamens zu erkennen; bei unklarer Namensgebung könnte daher das Geschlecht auch einfach nur aus der erweiterten Anzeige der Person ersichtlich gemacht werden. Diese Probleme
ergeben sich bei gleichartigen Rahmen aber selbstverständlich gar nicht erst, wenn sämtliche
Personendaten ausgegeben werden.
ID
Kirko Goreski
*20.02.1949
ID
Kirko Goreski
*20.02.1949
oo 1973
ID
Olgica Goreska
*13.09.1953
ID
Marijan Gjoreski
*16.10.1975
ID
Olgica Goreska
*13.09.1953
ID
Manuela Gjoreski
*16.09.1978
ID
Marijan Gjoreski
*16.10.1975
Abb. 5.1.1 Personplatzhalter
50
ID
Manuela Gjoreski
16.09.1978
Bei der Wahl eines Platzhalters für eine Person im Stammbaum kann entweder für jede Person unabhängig von der Anzahl der zugehörigen Daten derselbe Platzhalter einer einheitlichen Größe verwendet werden, oder es kann dessen Größe individuell an die Menge der dargestellten Daten angepaßt werden. In Abb. 5.1.2 sind zum Vergleich dieser beiden Alternativen jeweils zwei Personen abgebildet. Bei einer individuell angepaßten Größe werden häufig
wechselnde Darstellungen, wie das Beispiel von Abb. 5.1.3 zeigt, schnell unübersichtlich.
Anhand dieser aus dem Programm DYNASS-TREE übernommenen Art der Abbildung werden im folgenden zwei weitere Designmöglichkeiten diskutiert.
ID
Gajus Julius Caesar
100 v.Chr 44 v.Chr.
ID
Gajus Julius Caesar
100 v.Chr 44 v.Chr.
Geburtsort
Todesort
Titel: römischer Staatsmann und Feldherr
ID
Kaiser Augustus
ID
Kaiser Augustus
Titel: römischer Kaiser 60-53 v.Chr.
Abb. 5.1.2 Größe von Personenplatzhaltern
ID 1
Huber, Heinrich Blasius Willibald
* 01.02.1850
* Hirschberg am Neckar
ID 6
Tochter
*01.02.1850
*Bretzenheim
ID 15
Huber, Hans
* 13.04.1904
ID 2
Nothburga Niethammer
* 03.04.1851
* Nauheim
oo 01.04.1874
oo Hirschberg am Neckar
ID 4
Huber, Horst
*13.12.1875
* Hirschberg am Neckar
ID 16
Huber, Gerti
* 08.12.1907
ID 3
Walburga Weber
* 04.05.1852
* Wiesbaden
oo 01.08.1881
oo Wiesbaden
+ 01.06.1886
+ Wiesbaden
ID 5
Huber, Robert
* 06.02.1884
* Wiesbaden
ID 17
Leonard Lachmann
oo 12.06.1826
Trauzeuge Huber, Hans
ID 14
Franziska Freitag
ID 21
Josef Jäger
oo 01.06.1938
oo Waging
Trauzeuge Jäger, Jockel
Abb. 5.1.3 Stammbaum mit verschieden großen Personenplatzhaltern
51
Für die Darstellung der Partner einer Bezugsperson bieten sich mehrere Möglichkeiten an.
Der trivialste Fall ist eine Auflistung aller Daten eines Partners unter der jeweiligen Bezugsperson, wobei deren Platzhalter größer gewählt werden muß. Dadurch entstehen allerdings
weitere Probleme, die zu berücksichtigen sind, z.B. die Frage, ob alle Personen eine äquivalente Größe in der Darstellung erhalten sollen, oder ob die Größe von der Anzahl der Partner
bzw. davon, ob überhaupt Partner vorhanden sind, abhängen soll.
Bei der Entscheidung für individuell anzupassende, also veränderliche Größen leidet die
Symmetrie der Darstellung; wird dagegen eine Einheitsgröße gewählt, ergeben sich wiederum
verschiedene andere Probleme. Zunächst stellt sich die Frage, welche Größe als Standard
festgelegt werden soll. Ist diese Vorgabe relativ großzügig, resultiert ein zu großer Freiraum
bei Personen ohne Partner. Wählt man dagegen einen zu kleinen Platzhalter, etwa einen für
ein bis zwei Partner ausreichenden, entstehen an allen Positionen des Stammbaums Engpässe,
an denen eine Person mit überzähligen Partnern eingetragen werden soll.
Eine denkbare Lösung dieses Problems läge darin, lediglich den ersten oder letzten Partner
aufzuführen und darüber hinaus durch Verwendung einer bestimmten Farbe oder eines Symbols auf die Existenz weiterer Partner zu verweisen. Damit diese weiteren Partner eingesehen
werden können, wäre ferner ein Menüpunkt oder eine Funktion einzubringen, der bzw. die
eine erweiterte Sicht oder Zusatzinformationen in einer anderen Art ermöglicht. Allerdings
wäre dann nicht direkt anhand des Stammbaumes zu erkennen, ob jemand mehrfach verheiratet war und somit seine Kinder aus unterschiedlichen Ehen stammen könnten, sondern dies
müßte an jeder Stelle der Darstellung gesondert überprüft werden.
Für den Fall, daß die Partner in eigenen Platzhaltern dargestellt werden, ergeben sich je nachdem, ob die Partner rechts oder unter den zugehörigen Personen angeordnet werden, einige
Alternativen für diese Anordnung: Die Ehepartner könnten bündig oder um ein wenig nach
rechts bzw. links versetzt an die zugehörige Person angefügt werden. Dabei muß diese Verschiebung erst beim zweiten Partner beginnen und ist nur nötig, falls die Kinder anhand der
Linien ihren Eltern zugeordnet werden sollen, da die Verbindungen zu den Kindern jeweils
von dem Partner x-ter Ehe aus hergestellt werden; siehe hierzu beide Alternativen in Abb.
5.1.4. Diese Möglichkeit der Zuordnung von Nachkommen führt jedoch beim Auftreten mehrerer Partnerschaften mit jeweiligen Kindesvorkommen zu vielen zusätzlichen Verbindungen,
die die Zuordnung unübersichtlich machen. In Abb. 5.1.5 sind diese beiden Darstellungsvarianten bei einem nach rechts expandierendem Stammbaum aufgezeigt.
Nachfahre
OO I
Nachfahre
Partner 1. Ehe
OO II
Partner 2. Ehe
I
Kind 1. Ehe
Kind 1. Ehe
Kind 2. Ehe
Abb. 5.1.4 Anordnung der Ehepartner
52
OO
Partner 1. Ehe
OO
Partner 2. Ehe
II
Kind 2. Ehe
Bei dem in Abb. 5.1.3 dargestellten Beispiel ist auf den ersten Blick nicht sofort erkennbar,
daß die Personen Huber Horst, Huber Robert und die namenlose Tochter Geschwister sind.
Wäre die vorige Generation und somit ihre Eltern nicht gleichzeitig dargestellt, weil der Benutzer gerade eine jüngere Generation betrachtet, so wäre überhaupt kein Zusammenhang
erkennbar. Um solche Unklarheiten bei nicht vollständiger Darstellung des Stammbaums auszuschließen, wäre die in Abb. 5.1.4 auf der rechten Seite sichtbare Linienführung vorzuziehen.
Ein Stammbaum kann entweder von oben nach unten expandieren oder von links nach rechts.
Ahnentafeln sind in der Regel von links nach rechts angeordnet, so daß man den Stammbaum
auf den ersten Blick für eine Ahnentafel halten könnte. Weiß der Benutzer aber um den Unterschied zwischen beiden, so ist der Stammbaum leicht anhand der eingetragenen Daten zu
erkennen. Werden die Personendaten in einem Quadrat dargestellt, ist es irrelevant, in welcher
Richtung sich der Baum ausdehnt; es kommt in diesem Fall dann lediglich auf den Geschmack des Nutzers oder des Entwicklers an. Jedoch ist es effektiver, rechteckige Platzhalter
für die Personendaten zu verwenden (ausgenommen ist der Fall, in dem sämtliche verfügbare
Personendaten im Stammbaum eingetragen werden sollen). Dies ergibt sich aus der Schriftform. Für die chinesische Schriftform wäre ein um 90 grad gekipptes Rechteck besser geignet.
Ein von links nach rechts wachsender Baum wird in der Regel eine flachere und breitere Ausdehnung erreichen als ein von oben nach unten expandierender Baum. In Abb. 5.1.5 ist ein
nach rechts wachsender Stammbaum abgebildet. Bei der zweiten Alternative in Abb. 5.1.6,
bei der auf dem ersten Blick die Partnerzuordnung übersichtlicher erscheint, ist der entstehende Baum sogar noch flacher, da dort die Abstände zwischen den Partnern kleiner sind und
keine Platzhalter für das Heiratssymbol verwendet werden.
Frederick Lewis
OO
Sophia Dorothea
Pss. Auguste
OO
Anne, Pss. Royal
Friedrich Wilhelm
OO
George Ludwig
Wilhelm IV
OO
Sophia Dorothea
GEORGE II Augustus
OO
Amelia Sophia
Eleanor
Karoline Margravine
Caroline Elizabeth
George William
Abb. 5.1.5 Nach rechts expandierender Stammbaum
53
Sophia Dorothea
Frederick Lewis
Friedrich Wilhelm
Pss. Auguste
George Ludwig
Sophia Dorothea
Anne, Pss. Royal
GEORGE II Augustus
Wilhelm IV
Karoline Margravine
Amelia Sophia
Eleanor
Caroline Elizabeth
George William
Abb. 5.1.6 Nach rechts expandierender Stammbaum mit alternativer Partnerzuordnung
Ein Symmetrieproblem bleibt bei Kindern aus mehreren Ehen bestehen, in denen die Kinder
jeweils durch eine Verbindung vom Partner markiert werden, um einer Ehe zugewiesen zu
werden (Abb. 5.2.1 links). Dort verzweigt sich die die Linienführung sehr stark, insbesondere
bei einem nach rechts wachsenden Stammbaum.
Es ist ferner noch die Entscheidung über Anordnungsregeln in dem Stammbaum zu treffen,
d.h. darüber, wie die Kinder den Eltern zugeordnet im Stammbaum plaziert werden sollen.
Eine sich anbietende Möglichkeit besteht darin, alle Kinder eines direkten Nachkommens im
Stammbaum mittig unter diesem zu plazieren, und zwischen allen Geschwistern den gleichen
Abstand zu wählen. Das hat zur Folge, daß an gewissen Stellen, wie in Abb. 5.2.2 oben zu
erkennen ist, unnötiger Freiraum entsteht, der dazu führt, daß der Stammbaum bei gleicher
Personenzahl größer ist und daher weniger Informationen auf einem Bildschirm bei der Darstellung angezeigt werden können. Der Vorteil dieser Anordnung besteht aber darin, daß trotz
des größeren Freiraums zwischen den Personen weniger ungenutzte Flächen in der Darstellung zu sehen sind, da eine große Verteilung der Personen auf der gesamten Zeichenfläche
erreicht wird. Dies kann aber auch zu einer größeren Gesamtfläche führen.
Für die Darstellung der Informationen einer Person, die nicht im Stammbaum angezeigt werden, bieten sich zwei alternative Möglichkeiten an. Zum einen könnte ein permanenter Anzeigebereich für die Daten an einer fest verankerten Stelle des Hauptfensters vorgesehen werden.
Alternativ dazu könnte für jede Person ein neues Fenster erzeugt werden, welches vom Benutzer frei plaziert werden kann und so lange Zeit zu sehen ist, wie es benötigt wird. Mit dieser zweiten Variante ist es möglich, sich die gesamten Daten von mehreren Personen gleichzeitig anzeigen zu lassen. Dies ist ein bedeutender Vorteil bei einem Vergleich von mehreren
Datensätzen, wohingegen bei einer zur Datenanzeige fest vorgegebenen Plazierung jeweils
nur ein einzelner Datensatz betrachtet werden kann.
54
ID 11
Michael Müller
Gebtag 17.20.76
ID 11
Michael Müller
Gebtag 17.20.76
ID 21
Michael üller Schmitz
Gebtag 17.20.7%
Abb. 5.1.6 Verschieden Arten eines Infofensters
5.2
Vorstellungen der eigenen Methoden
Um eine gewisse Symmetrie zu erreichen, fiel die Wahl auf die Darstellung des Platzhalters
jeder Person als ein Rechteck einheitlicher Größe. In diesem werden die wichtigsten Daten
zur jeweiligen Person angegeben. Mit Platzhalter ist hierbei ein Knoten im Stammbaum gemeint, der für eine Person steht. Im Falle einer Ehe sind an einem Knoten mehrere Platzhalter
vorhanden, d.h. für jeden Ehepartner einer. Als wichtige Informationen, die im Stammbaum
angezeigt werden, wurden ID, Name sowie die Lebensdaten der jeweiligen Person ausgewählt. Zusätzlich werden verstorbene Personen durch ein Zeichen, nämlich ein Kreuz ( ),
kenntlich gemacht. Da die Lebensdaten und somit gegebenenfalls auch das Sterbedatum zu
jeder Person angegeben werden, ist dies zwar eigentlich nicht nötig, allerdings sind Daten von
Personen, die vor längerer Zeit gelebt haben, oft unvollständig. Somit ist auch bei bekanntermaßen verstorbenen Personen das Sterbedatum nicht zwingend bekannt und kann in diesem
Fall also auch nicht angezeigt werden. Dieser Sachverhalt ist im Stammbaum in Abb. 5.1.3,
der aus einem existierenden Datensatz erstellt wurde, zu erkennen.
Die ID identifiziert eine Person eindeutig aus dem Datensatz der Datenbank und wird zum
Vergleich mit einer Übersicht benötigt. Name und Lebensdaten dagegen sind direkte Informationen zu einer Person, die dargestellt werden sollen. Wie bereits verdeutlicht, können aufgrund der statische Größe der Personenplatzhalter nicht sämtliche Daten, die zu einer Person
existieren, im Stammbaum dargestellt werden. Ist man aber an zusätzlichen, nicht dargestellten Daten interessiert, wird auf Anfrage hin ein separates Fenster geöffnet. In diesem werden
neben den schon im Stammbaum integrierten alle weiteren vorhandenen Daten, wie Geburtsund Sterbeort, Titel, Geschlecht, Geburtsname und Heiratsdatum, angezeigt.
Aus der Auswahl der anzuzeigenden Informationen leitet sich für den Personenplatzhalter
eine Größe von 100 mal 50 Pixeln ab. Die Höhe von 50 Pixeln ergibt sich daraus, daß jeweils
vier Zeilen an Informationen ausgegeben werden und der Text bei voller Ausnutzung dieser
Höhe in einer angenehm lesbaren Größe erscheint. In der ersten Zeile wird die ID der Person
und, falls sie verstorben ist, ein Kreuz dargestellt. Der Name einer Person wird in der zweiten
Zeile eingetragen. Zeile 3 enthält das Geburtsdatum und die vierte und letzte Zeile das Sterbedatum. Die Breite von 100 Pixeln ergibt sich aus mehreren Faktoren. Der Platzhalter sollte
mindestens diese Länge aufweisen, um die Daten darstellen zu können und die meisten Namen komplett aufzunehmen. Bei 100 Pixeln Breite können Namen mit bis zu sechzehn Buchstaben eingetragen werden. Längere Namen werden ab der dreizehnten Stelle mit drei Punkten abgekürzt. Da ein Stammbaum ausschließlich Personen mit gleichem Nachnamen enthält,
werden nur die Vornamen ausgegeben; der Nachname ist nur in der erweiterten Ansicht mit
55
dargestellt. Ein Wert von genau 100 Pixeln wurde gewählt, da diese Länge der doppelten
Breite entspricht und die Proportion von 1:2 die Symmetrie und somit das Aussehen der
Platzhalter ansprechender erscheinen läßt.
Männliche und weibliche Personen werden mit einem Platzhalter derselben Art dargestellt. Es
wurde darauf verzichtet, männliche Personen mit einem Rechteck und weibliche Personen mit
einem Kreis oder einem anderen Symbol darzustellen, da es möglich ist, daß vom ersten bekannten Nachfahren eben nur dessen Existenz, aber keine weiteren Daten bekannt ist. Somit
ist auch das Geschlecht unbekannt, und folglich ist ungewiß, wie der Platzhalter zu wählen ist.
Als Beispiel wäre hier ein uneheliches Kind zu nennen, von dem der Vater erst spät unterrichtet wurde, aber über dessen Existenz hinaus er nie mehr über dieses Kind in Erfahrung bringen konnte. Desweiteren wirkt die Darstellung von weiblichen Personen in Form von Kreisen
nicht attraktiv, was ein ästhetisches Argument gegen diese Form wäre. Wird aber für die
weiblichen Personen eine nur leicht geänderte Form wie etwa ein Rechteck mit abgerundeten
Ecken gewählt, ist der Unterschied zwischen den Geschlechtern wiederum kaum zu erkennen.
Aus den Alternativen der Zuordnung von Partner wurde eine direkte Plazierung aller Partner
einer Person unmittelbar unter dieser gewählt. Auf diese Weise wird die partnerschaftliche
Beziehung zu einer Person ohne weitere Symbole oder Linien direkt aufgezeigt. Die Kinder
einer Ehe werden jeweils einem Block von Partnerschaften zugeordnet, wobei der direkte
Nachkomme, in der Regel immer der Vater ist. Die Kinder eines weiblichen direkten Nachkommen werden üblicherweise in dem Stammbaum der Familie aufgezeigt, in die die Frau
eingeheiratet hat. Existiert ein Kind, das eine angeheiratete Person mit in die Familie bringt,
wird es nicht aufgeführt, es sei denn es wird vom Partner seines leiblichen Elternteils adoptiert und nimmt somit auch den neuen Nachnamen an. Alle Kinder des direkten Nachkommens werden im Stammbaum zusammengefaßt, auch wenn sie aus verschiedenen Partnerschaften stammen, und bei allen wird eine Verbindung zu den Elternteilen hergestellt. Konkret bedeutet dies, daß die Verbindung bei dem letzten Partner des direkten Nachkommens
beginnt und zu allen Kindern aus einer der Partnerschaften führt. Es wurde darauf verzichtet,
die Verbindung der Kinder zu den jeweiligen Partnerschaften einer Ehe anzuzeigen, da diese
zusätzlichen Linien hauptsächlich verwirren.
Für die Darstellung wurde ein von oben nach unten expandierender Stammbaum gewählt. Ein
Argument für diese Entscheidung ist dabei die subjektiv als ansprechender empfundene Gestalt eines solchen Baumes. Desweiteren wird auf diese Weise optisch eine deutliche Abgrenzung zu einer Ahnentafel erreicht, die, wie schon erwähnt, im allgemeinen seitlich wachsend
von links nach rechts dargestellt wird. Außerdem spricht für diese Darstellungsvariante auch
die Verwendung von rechteckigen Personenplatzhaltern, deren Breite größer ist als ihre Höhe,
da sich in diesem Fall ein seitlich expandierender Stammbaum flacher und breiter entwickeln
würde als ein von oben expandierender. Außerdem ermöglicht diese sich seitlich ausdehnende
Stammbaum-Variante bei eventuell auftretenden Mehrfachehen eine direkte Zuordnung der
Kinder zum betreffenden Partner des direkten Nachkommens. Jedoch tritt, falls eine Person
mit mehreren aufeinanderfolgenden Partnern jeweils mehrere Kinder hat, neben den schon
weiter oben diskutierten Problemen ein zusätzliches auf, nämlich das der Linienführung. Somit fällt die Entscheidung für ein bestimmtes Layout schwer, da jedes eigene Vor- und
Nachteile mit sich bringt.
56
Karl Heinz
Erste Ehefrau
Kind 1
Kind 1 Ehe 1
Kind 2
Kind 2 Ehe 1
Kind 3
Karl Heinz
Zweite Ehefrau
Kind 3 Ehe 1
Erste Ehefrau
Zweite Ehefrau
Kind 1
Kind 1 Ehe 2
Kind 2
Kind 2 Ehe 2
Kind 3
Kind 3 Ehe 2
Abb. 5.2.1 Alternative Möglichkeiten zur Verzweigung zu den Kindern
Alle Kinder werden dazu an den Stellen, die es erlauben, mittig unter den Platzhaltern des
Elternpaares plaziert, wie in Abb. 5.2.2 zu sehen. Dabei existiert also eine Verbindung zu allen Kindern des direkten Nachkommens, unabhängig davon, ob sie alle von dem gleichen
zweiten Elternteil abstammen.
ID
Person
10.04.1939-17.05.1998
ID
Partner 1
11.06.1941ID
Partner 2
05.07.1944-
ID
Partner 1
11.06.1971-
ID
Partner 2
05.07.1972-
ID
Partner 1
11.06.1976-
Abb. 5.2.2 Plazierung der Kinder im Bezug zu den Eltern
An einigen Stellen ist es, abhängig von den weiteren Nachkommen, nicht möglich, die Kinder
wie beschrieben anzuordnen. Dieses Problem wurde gelöst, indem das erste Kind, das auch
am weitesten links im Stammbaum zu finden ist, den Platz beibehält, der ihm zugewiesen
wurde. Sollte eine Verschiebung eines Kindes nötig sein, werden alle Nachkommen beginnend mit den Eltern des Kindes nach rechts verschoben. Die Anordnung an der betreffenden
Stelle ist nach dieser Layoutentscheidung zwar nicht mehr symmetrisch, jedoch werden die
Freiräume innerhalb des Baums so klein wie möglich gehalten, so daß weniger Scrollen erforderlich ist.
In Abb. 5.2.3 ist ein Beispiel für die zwei Möglichkeiten bezüglich des Abstandes zwischen
Geschwistern dargestellt. Im oberen Baum wird die Symmetrie durch Beibehalten desselben
Abstandes für alle Geschwister bewahrt, allerdings werden auf diese Weise innerhalb des
Stammbaumes größere Freiräume geschaffen. Die untere Alternative in zeigt das in dieser
Arbeit gewählte Layout des Baumes. Sollte eine Verschiebung erforderlich sein, so werden
57
nur an der benötigten Stelle größere Abstände eingefügt, wodurch der Baum nicht mehr vollständig symmetrisch ist.
Abb. 5.2.3 Abstand zwischen Geschwistern
Bezüglich einer Übersichtsdarstellung des gesamten Baumes erfolgte die Entscheidung für
zwei verschiedene Darstellungsbereiche: Es sind zwei verschiedene Zeichnungsbereiche für
den Stammbaum verwirklicht worden, die gleichzeitig angezeigt werden. Im ersten Bereich
wird der Stammbaum mit allen hier diskutierten Entscheidungen bezüglich der Darstellung
aufgezeichnet, und im zweiten Bereich wird derselbe Stammbaum in einem kleineren Maßstab zur Übersicht wiedergegeben. Dieser Übersichtsstammbaum enthält nur die IDs der Personen, da für weitere Eintragungen kein Platz vorhanden ist und mit diesen lediglich der Bezug zum ersten Stammbaum hergestellt werden soll. Die beiden Fenster sollten synchronisiert
sein, so daß die Hauptdarstellung des Stammbaums immer einen Teil einer bestimmten Stelle
aus der Übersicht zeigt.
1
GEORGE II Augustus
Karoline Margravine
6
Frederick Lewis
Anne, Pss. Royal
Pss. Auguste
Willem IV
Amelia Sophia
Eleanor
Abb. 5.2.4 Stammbaum mit Übersicht
58
3
7
ID
Georg Ludwig
* 28.05.1660
11.06.1727
ID
Sophia Dorothea
* 05.09.1666
02.11.1720
ID
GEORGE II Augustus
* 30.10.1683
25.10.1760
Nachfahre
ID
Sophia Dorothea
* !&.0§.16(/
28.06.1757
ID
Karoline Margravine
* 01.03.1683
20.11.1737
angeheiratet
ID
Friedrich Wilhelm I
* 12.05.1687
11.06.1757
ID
Sophia Dorothea
* 20.01.1707
20.03.1751
ID
Sophia Dorothea
* 02.11.1791
12.01.1759
ID
Sophia Dorothea
* 10.06.1711
31.10.1786
ID
Friedrich Wilhelm I
* 30.1.1719
08.02.1772
ID
Friedrich Wilhelm I
* 28.05.1708
12.01.1727
Abb. 5.2.5 Layout des Stammbaums
Abb. 5.2.4 zeigt den Stammbaum mit der Übersicht. Zusammenfassend ergibt sich das in
Abb. 5.2.5 dargestellte Layout für die Stammbaumdarstellung in der Hauptansicht. Zur Anzeige der nicht im Stammbaum dargestellten Daten, wird bei Bedarf ein neues Fenster mit
sämtlichen Informationen eingeblendet.
59
6
Implementierung des Systems ViMaGe
Das System wurde aus dem Kontext heraus ViMaGe benannt, da es ein Werkzeug zur Visualisierung und interaktiven Manipulation genealogischer Daten darstellt. Die Implementierung erfolgte in Java und die Daten werden in einer Microsoft-Access-Datenbank abgelegt.
Im folgenden soll ViMaGe vorgestellt werden; dabei werden einige ausgewählte Aspekte der
Implementierung betrachtetet. ViMaGe bietet die Funktion zur Erstellung eines Stammbaums
aus den in einer Datenbank in bestimmter Form gespeicherten Daten, und läßt gleichzeitig
Manipulationen darauf zu. Das Datenbankschema, das hierzu nötig ist, wird in Kapitel 6.2
vorgestellt. Der Stammbaum wird auf zwei Arten dargestellt. Zu diesem Zweck sind auf der
Hauptseite zwei Anzeigebereiche zu sehen: Das Hauptfenster ist vertikal in zwei kleinere
Fenster unterteilt, wobei die Größenänderung des einen Fensters eine umgekehrt proportional
Änderung in der Größe des anderen Fensters bewirkt. In dem linken Fenster befindet sich die
Hauptansicht des Stammbaums. Sie zeigt die Informationen ID, Name, Lebensdaten und Lebensstatus einer Person an. In dieser Ansicht können vorgefertigte Anfragen und Manipulationen an jede hier dargestellte Person gestellt werden. Dazu wird eine Person im Stammbaum
mit der rechten Maustaste angeklickt, woraufhin ein entsprechendes Popup-Menü erscheint.
In diesem Menü stehen folgende Funktionen zur Auswahl:
Daten zur Person ausgeben öffnet ein Fenster, in dem alle gespeicherten Daten zu
einer Person ausgegeben werden, die nicht im Stammbaum angezeigt werden.
Nachfahren ausgeben markiert alle direkten Nachfahren dieser Person farbig.
Kind einfügen ermöglicht das Einfügen eines Kindes zu der ausgewählten Person;
dabei ist jeweils die angeheiratete Person zu wählen, da bei Mehrfachehen sonst unklar bleibt, wer der zweite Elternteil ist.
Partner einfügen Hiermit ist es möglich, einen Partner für die gewählte Person einzutragen.
Daten ändern ermöglicht es, Daten in der Datenbank zu ändern; Personendaten können geändert und neue Titel können eingetragen werden.
Beziehungen anzeigen erlaubt die Auswahl einer Verwandtschaftsbeziehung aus einer Menge und die farbige Markierung dieser im Stammbaum. Beispielsweise können
alle Enkel einer Person markiert werden, wobei diese rot dargestellt werden und die
Bezugsperson grün. Sind die Antworten auf diese Anfrage nicht auf dem aktuellen
Ausschnitt des Stammbaums sichtbar, kann unter dem Menü Aktion der Menüpunkt
Gehe Zu gewählt werden, der bewirkt, daß der Ausschnitt mit den Antworten als aktueller Bezugspunkt im Stammbaum angezeigt wird. Unter diesem Menüunterpunkt ist
es auch möglich, zu den Stammeltern zu springen.
Das rechte Fenster zeigt die Übersichtsdarstellung des Stammbaumes. Dort wird ein um die
Hälfte verkleinerter Übersichtstammbaum dargestellt, in dem nur die IDs der Personen abgebildet sind, um die Personen in beiden Stammbäumen miteinander referenzieren zu können.
In Abb. 6.1 ist der Hauptbildschirm mit beiden Stammbäumen dargestellt. Markierungen
werden jeweils in beiden Stammbäumen dargestellt. Die linke obere Ecke wird jeweils als
Bezugspunkt zum anderen Stammbaum verwendet. Wird in einer der Ansichten gescrollt,
wird dies auch in der anderen Ansicht so übersetzt, daß im Maßstab 1:2 ausgehend von der
linken oberen Ecke der gleiche Punkt in beiden Ansichten vom Stammbaum dargestellt wird.
60
6.1
Architektur und Komponenten
Dem System ViMaGe liegt die in Abb. 6.1.1 beschriebene Architektur zugrunde.
ViMaGe
JDBC-ODBC-Brücke
ODBC-Schnittstelle von Windows
ODBC-Schnittstelle von Access
Microsoft Access
DB
Abb. 6.1.1 Architektur und Komponenten
VM
ÜbersichtStB
DBAnbindung
Hauptfenster
MenuGenealogy
TopologieSB
Person
DJPanel
ZeichneLinien
Eingabemaske
DBDateneingabe
ABAbfrage
Abb. 6.1.2 Zusammenwirken der Java-Klassen
61
Wahlbox
Das System ViMaGe besteht aus zwölf Java-Klassen, die wie in Abb. 6.1.2 gezeigt zusammenwirken.
Die Klasse Person enthält Methoden, in denen die Personen aus der Datenbank eingelesen
werden und in denen für jede Person ein Objekt erzeugt wird. Desweiteren wird in dieser
Klasse die Layout-Berechnung für die Anordnung der Personen in der StammbaumDarstellung durchgeführt. Die wichtigsten Methoden in dieser Klasse sind
1. Personeneinlesen(int y)
2. Personeneinlesen(String idv, int y)
3. partner(String personid, String geschlechtpartner, int y)
4. kindvonvec(String personid, String geschlechtvor)
5. partnervec(String personid, String geschlechtpartner)
6. balance(int xwert, int startbalance)
7. elternteileintragen(String idelternteil,Vector kinder, int zaeler,int xwertkind)
8. veschiebegeschwister()
9. elternverschieben(String id, int verxpos, int ebene)
10. nachkommenverschieben(String nid, int xwertverschieben)
11. countline()
Die ersten fünf Methoden sind zum Personeneinlesen nötig, an dieser Stelle wird bereits der
erste Schritt der Layoutberechnung durchgeführt. Methoden sechs und sieben sind für den
zweiten Layoutschritt erforderlich, acht bis zehn für die Layoutoptimierung und die letzte
Methode zur Berechnung der Linien im Stammbaum. Der genaue Ablauf wird in Kapitel 6.3
erläutert.
TopologieSB erzeugt Objekte, die Informationen zu der topologischen Anordnung der Personen im Stammbaum und zu ihrer Darstellung enthalten. Dazu zählen die x- und yKoordinaten, Farbinformationen sowie Angaben zu der Ebene im Stammbaum, die Anzahl
von Geschwistern und die größte Anzahl von Ehepartnern, die eine Person auf dieser Stammbaumebene hat. Desweiteren ist gespeichert, ob die Person innerhalb des Stammbaums einen
Nachfahren darstellt oder lediglich eingeheiratet hat. Jedem Person-Objekt wird ein TopologieSB-Objekt zugeordnet.
LinienVerbindungen generiert für jede Linie ein Objekt, in dem die x- und y-Koordinaten
von Startposition und Endposition der Linie angegeben sind. In WahlBox wird die Auswahl
des Stammvaters inklusive Datenbankanfrage verwaltet. DBAnbindung ist für das Laden der
Treiber zur Verwendung der JDBC-ODBC-Bridge und zum Verbindungsaufbau mit der Datenbank verantwortlich. In Eingabemaske werden die Fenster zur Dateneingabe erzeugt. Zu
diesen gehören unter anderem das Fenster, in dem die Datenbank angegeben wird, die unter
ODBC registriert ist, sowie die Fenster zur Personen- oder Titeleingabe von Personen. Die
Klasse DJPanel erstellt das Fenster, in dem die erweiterten Personeninformationen angezeigt
werden. Dieses Fenster wird erzeugt, sobald eine Anfrage über Personendaten zu einer bestimmten Person vom Benutzer über das Popup-Menü im Hauptfenster gestellt wird.
In Hauptfenster wird das Hauptfenster erzeugt und das Menü integriert. Außerdem wird in
dieser Klasse auch das Popup-Menü erzeugt. Im Hauptfenster werden zwei Scrollpanes, also
scrollbare Bereiche, erzeugt. Jedem dieser Bereiche wird ein Panel zugeordnet. Auf dem
Hauptpanel wird der Stammbaum gezeichnet, auf dem Übersichtspanel wird ein ÜbersichtStB
dem zweiten Scrollpane zugeordnet. Dort wird der Stammbaum um die Hälfte kleiner ge62
zeichnet und nur mit der ID als Ausgabe erstellt, damit die beiden Bäume einander zugeordnet
werden können. ÜbersichtStB erzeugt ein Panel, welches im Hauptfenster in das Scrollpane
eingebunden wird. Hier wird der um die Hälfte verkleinerte Übersichtsstammbaum abgebildet. Das Panel muß dabei in einer anderen Klasse erzeugt werden als das Hauptpanel für den
Stammbaum, da die Paint-Methode andernfalls in beiden Panels die gleichen Zeichnungen
einfügt. MenuGenealogy erzeugt das Menü im Hauptfenster.
DBDateneingabe ist für das Absetzen von SQL-Befehlen, die eine Änderung der Datenbank
wie z.B. das Einfügen neuer Personen oder Titel zur Folge haben, zuständig. Durch DBAbfrage werden die Beziehungen einer Person wie vom Benutzer abgefragt ermittelt und im
Stammbaum markiert.
6.2
Vorstellung des Datenbankschemas
Die genealogischen Daten werden in einer relationalen Datenbank gespeichert, die unter Access angelegt wird. In dieser Datenbank werden die Informationen zu den einzelnen Personen
in sechs Tabellen aufgeteilt.
Informationen, welche später auch in Kurzform im Stammbaum dargestellt werden, befinden
sich in den Tabellen Person und Lebensdaten . Das erste Attribut der Person -Tabelle
stellt die ID der Person und gleichzeitig den Schlüssel der Tabelle dar. Diese ID ist ein Autowert, d.h. ein Integerwert, der automatisch inkrementiert wird, sobald eine neue Person eingetragen wird. Der Name einer Person wird in drei verschiedenen Spalten der Tabelle eingetragen, nämlich unter Name , Vorname und Geburtsname . Alle diese Attribute haben den
Wertebereich Text und dürfen Nullwerte enthalten. Zwei weitere Attribute sind Geschlecht ,
in dem m für männlich, w für weiblich und unbekannt eingetragen werden kann, falls
das Geschlecht einer Person nicht bekannt sein sollte, und Lebendig , in dem der Wert ja ,
nein oder unbekannt eingetragen werden muß. Diese beiden Attribute haben ebenfalls
den Wertebereich Text, besitzen jedoch eine Gültigkeitsregel, so daß hier anders als bei den
ersten drei genannten kein anderer Wert als in der Gültigkeitsregel spezifiziert ist eingetragen
werden kann. Die einzutragenden Werte sind dabei die oben beschriebenen Werte.
Eine weitere Tabelle ist Stammvater , die nur eine Spalte besitzt. Hier können Stammväter,
die zur Wahl stehen sollen, eingetragen werden. Ausgehend von demjenigen Stammvater, der
aus dieser Tabelle gewählt wird, beginnt die Berechnung zur Darstellung des Stammbaums.
Der Datentyp des Feldes ist der ID entsprechend integer, da sich hierauf die ID einer Person,
die in der Tabelle Person gespeichert ist, bezieht.
Die Tabelle Titel besitzt vier Attribute: Das erste, PersonID , besitzt den Wertebereich
Integer. Dieses Attribut ist ein Fremdschlüssel, in dem die ID der betreffenden Person eingetragen wird. Die weiteren drei Spalten sind Titel , von und bis . Hier wird vermerkt,
wann ein Titel verliehen wurde und, sollte er aberkannt oder nur zeitlich begrenzt vergeben
worden sein, so wird dieser entsprechende Zeitpunkt in der bis -Spalte eingefügt. Auch hier
ist der Wertebereich aller drei Attribute vom Typ Text.
Lebensdaten ist die letzte Tabelle, die Informationen zu einer Person liefert; die zwei übrigen Tabellen Verheiratet und Kind geben lediglich Beziehungen zwischen Datensätze in
der Person -Tabelle an. PersonID stellt wieder einen Schlüssel der Tabelle Lebensdaten
dar: Hier wird die ID einer Person eingetragen, auf die sich das Tupel bezieht. Die restlichen
63
vier Attribute, die Spalten Geburtsort , Geburtstag , Todesort und Todestag , haben den
Wert Text und geben Informationen zu Geburts- und Todesdaten.
In der Tabelle Kind werden drei IDs gespeichert: in Mutter die ID der Mutter, in Vater
die ID des Vaters und in Kind entsprechend die ID des Kindes. Das Attribut Kind ist hier
der Schlüssel dieser Tabelle: Jedes Kind kann nur einmal als Kind eingetragen sein, wogegen
jede Person mehrfach Vater oder Mutter werden kann.
In der letzten Tabelle, verheiratet , wird die Heirat eines Paares vermerkt. In der Spalte
Mann wird dabei die ID des Mannes, in Frau die ID der Frau eingetragen. Diese beiden
Attribute sind vom Typ Integer. Die weiteren Attribute von/seit und geschieden , in denen
das Heiratsdatum- bzw. das Scheidungsdatum eingetragen werden, sind vom Typ Text. Diese
verheiratet-Tabelle besitzt kein Attribut als Schlüssel, da es selbst unter den gleichen Personen mehrere Heiraten geben kann. Somit ist hier das gesamte Tupel der Schlüssel.
6.3
Ausgewählte Aspekte der Implementierung
6.3.1 Datenbank-Kopplung
Java kommuniziert mit Access über die ODBC-JDBC-Bridge. Um dies zu ermöglichen, müssen zunächst die ODBC-Treiber installiert werden. Dies geschieht bei Microsoft Access schon
parallel zur Programminstallation. Eine Datenbank, auf die mit ODBC zugegriffen werden
soll, muß beim ODBC-Treiber unter dem jeweiligen Betriebssystem registriert werden, damit
der Zugriff über ODBC freigegeben wird. Soll unter Windows XP bei Verwendung von
Microsoft Access auf eine Datenbank zugegriffen werden, so muß diese Datenbank vorab erst
erstellt werden. Die in dieser Arbeit verwendete Datenbank trägt den Namen Königshaus
England.mdb ; ihre genaue Struktur wurde bereits im vorigen Kapitel beschrieben. Zur Registrierung der ODBC-Schnittstelle ist in der Systemsteuerung unter dem Punkt Leistung und
Wartung der Menüpunkt Verwaltung zu wählen. Hier ist es nun unter Datenquellen
(ODBC) möglich, eine Datenbank unter System-DSN zu registrieren: Man wählt Hinzufügen und wird im folgenden zunächst zur Auswahl eines Treibers aufgefordert.
Da Königshaus England.mdb eine Access-Datei ist, findet in diesem speziellen Fall der
Microsoft Access-Treiber Verwendung. Im nächsten Punkt sind Datenquellenname und Datenbank zu wählen. Zum Datenquellennamen wird england bestimmt und die Datenbank
Königshaus England.mdb zugewiesen. Nach Bestätigung ist Königshaus England.mdb
somit unter dem Namen england über die ODBC-Schnittstelle zu erreichen. Optional ist es
möglich, einen Benutzernamen und ein Kennwort anzugeben, falls die Datenbank paßwortgeschützt ist. Nach dieser Registrierung der Datenbank unter Windows als ODBC-Datenquelle
ist es nun möglich, mit einer ODBC-unterstützenden Anwendung, wie z.B. im vorliegenden
Fall einem Java-Programm, direkt auf die Datenbank zuzugreifen.
In Java gestaltet sich der Zugriff auf die Datenbank folgendermaßen: Die Datenbankanbindung sowie alle Anfragen und Befehle an die Datenbank sind in einem try-catch-Block unterzubringen, damit es in Fehlersituationen nicht zu unkontrollierbaren Abstürzen kommt. Bevor
tatsächlich Anfragen an die Datenbank gestellt werden können, ist eine Datenbankanbindung
erforderlich. Dazu wird zunächst der Datenbanktreiber für die JDBC-ODBC-Bridge geladen.
Ist dies geschehen, wird eine Verbindung zur Datenbank hergestellt. Diese Verbindung bleibt
geöffnet, bis sie mit dem Befehl .close() wieder geschlossen wird. Die Verbindung zur Da64
tenbank ist in der Klasse DBAnbindung geregelt. In dem folgenden Codeausschnitt ist die
Datenbankanbindung dargestellt.
try {
Class.forName( sun.jdbc.odbc.JdbcOdbcDriver ); //Datenbanktreiber
}catch(Exception e) {
(Reaktion auf Ausnahmen )
}
try {
Connection verbindung = DriverManager.getConnection(DB,user,pass);
}catch(Exception e) {
(Reaktion auf Ausnahmen )
}
Der erste try-catch-Block zeigt, wie die ODBC-Treiber für die JDBC-ODBC-Bridge geladen
werden, da das Programm über diese Windows-Bridge mit Access kommuniziert. Alternativ
würde für ein MySQL-System der Treiber org.gjt.mm.mysql.Driver geladen werden; bei
Oracle-Systemen wäre dagegen der Treiber oracle.jdbc.driver.OracleDriver nötig. Im zweiten try-catch-Block wird mit Connection eine Verbindung definiert, über die später Befehle
und Anfragen an die Datenbank weitergegeben werden. Es werden drei Stringwerte als Parameter übergeben: Die DB ist der Datenquellenname, d.h. der Name, unter dem die Datenbank
(in diesem speziellen Fall Königshaus England.mdb ) im Betriebssystem dem ODBCTreiber zugeordnet wurde (wie bereits erklärt, ist dieser Name im Rahmen dieser Arbeit england ). Die Strings user und pass stellen Username bzw. Paßwort bei einer paßwortgeschützten Datenbank dar. Existieren keine Benutzer und kein Paßwort, ist ein leerer String zu
übergeben.
In ViMaGe wird die Verbindung in der Variablen verbindung , die in MenuGenealogy als
statisch definiert wird, geöffnet und bei Beendigung des Programms oder des Benutzers getrennt. Statisch ist diese Verbindung, weil mehrere Klassen auf sie zugreifen: Die Klasse
Person fragt alle Personendaten aus der Datenbank ab, DBDateneingabe benutzt die Verbindung zum Einfügen oder Ändern von Daten, DBAnbindung stellt die Verbindung her,
MenuGenealogy gibt die Metadaten der Datenbank aus und beendet auf Wunsch des Benutzers die Verbindung. DBAbfrage stellt die Beziehungsanfragen zwischen Personen an
die ODBC-Schnittstelle und markiert sodann die Ergebnisse im dem Datensatz und der Darstellung in ViMaGe.
Nach Herstellung der Verbindung werden nun Anfragen über die JDBC-ODBC-Bridge an die
Datenbank gesendet. Die Anfragen und Befehle an die Datenbank werden dabei ebenfalls in
einem try-catch-Block gestellt. Die Anfrage selbst gestaltet sich folgendermaßen: Es wird
zunächst ein Statement definiert, das in dem Programm immer als query benannt wird. Dem
Statement wird die offene Verbindung zugewiesen, über die dann die Anfragen an die JDBCODBC-Bridge weitergeleitet werden. Zusätzlich wird ein ResultSet erzeugt, welches die Ergebnisse der SQL-Anfrage an die Datenbank als Antwort erhält. Dem ResultSet wird die Anfrage zugeordnet, in der die SQL-Anweisung als Parameter in Stringform übergeben wird.
Das Ergebnis wird in einer while-Schleife durchlaufen.
65
In dem folgenden Codeausschnitt ist die Anfrage nach den Personendaten gezeigt, die in die
Java-Objekte eingetragen werden. In einem Person -Objekt werden folgende Informationen
gespeichert:
die ID (so, wie sie von der Datenbank vergeben ist);
Vor- und Nachname; Geschlecht;
ob die Person noch lebt oder bereits verstorben ist;
Vektoren, in denen die Partner und Kinder gespeichert sind;
ein Objekt topologie , in dem die bereits weiter oben beschriebenen Informationen
zu finden sind;
das Elternteil, welches einen direkten Nachkommen in dem Stammbaum darstellt und
also keine angeheiratete Person;
und schließlich die Sterbe- und Geburtsdaten.
try {
String anfrage= "SELECT * FROM Person P,Lebensdaten L WHERE
L.PersonID=P.ID AND P.ID= " +idv;
Statement query = MenuGenealogy.verbindung.createStatement();
ResultSet ergebnisse = query.executeQuery(anfrage);
while(ergebnisse.next()) {
idinput = ergebnisse.getString(ergebnisse.findColumn("ID"));
vnameinput=ergebnisse.getString(ergebnisse.findColumn("Vorname"));
nameinput=ergebnisse.getString(ergebnisse.findColumn("Nachname"));
geschlechtinput=ergebnisse.getString(ergebnisse.findColumn("Geschlecht"));
inputlebendig=ergebnisse.getString(ergebnisse.findColumn("Lebendig"));
gebdatuminput=ergebnisse.getString(ergebnisse.findColumn("Geburtstag"));
todesdatuminput=ergebnisse.getString(ergebnisse.findColumn("Todestag"));
Person peintrag = new Person(idinput, nameinput, vnameinput, geschlechtinput, tmpp, tmpk, gebdatuminput, todesdatuminput);
MenuGenealogy.vid.addElement(peintrag);
partner(idinput,geschlechtinput,y);
}
}catch (Exception e) {
}
6.3.2 Einlesen von Personendaten
Das Einlesen der Personendaten und das Erzeugen von Objekten zur Darstellung im System
ViMaGe beginnt, sobald der Benutzer die Stammbaumausgabe startet. Bevor dies möglich ist,
wird mit der Wahl des Stammvaters die Startposition, ab der alle Daten ausgelesen werden
sollen, spezifiziert. Diese Auswahl des Stammvaters bewirkt, daß seine ID in der Variablen
stammvaterid eingetragen wird. Wird nun im Menü die Ausgabe des Stammbaumes ausgewählt, werden in der Klasse Person alle Nachfahren von diesem Stammvater eingelesen.
Für jede Person wird ein Person-Objekt angelegt und im Vektor vid gespeichert. Dazu werden die Personen, abhängig von ihren Beziehungen untereinander, in einer bestimmten Rei66
henfolge (siehe Abb. 6.3.2.1) gespeichert. Diese Reihenfolge dient der späteren Layoutberechnung als Grundlage.
Zum Importieren der Personendaten in das System werden fünf Methoden und die zwei temporären Vektoren vektortemp und kindvektortemp verwendet. In diesen beiden Vektoren
werden mit einer der Methoden die einzulesenden Personendaten bestimmt. Das Einlesen
beginnt bei Stammvater. Dazu wird dessen ID in den Vektor vektortemp eingefügt. Mit der
Methode Personeneinlesen (int y) wird der Import begonnen. Der übergebene
Parameter dient zur Layoutberechnung. Dies wird in Kapitel 6.3.3 genauer erläutert. Zu Beginn wird für jede ID, die in dem Vektor vektortemp gespeichert ist, in einer Schleife die
Methode Personeinlesen(String id, int y) aufgerufen. Diese zweite Methode
generiert für jede ID, die in vektortemp gespeichert ist, ein Person-Objekt und fügt sie dem
Vektor vid an. Desweiteren ermittelt sie alle Nachkommen für die Personen, deren ID in
dem Vektor vektortemp gespeichert sind, und trägt sie in kindvektortemp ein. Wurde der
Vektor vektortemp vollständig durchlaufen, wird dieser geleert. Der zweite Schritt in dieser
ersten Methode ist die Übertragung aller Elemente aus kindvektortemp in vektortemp und
das Löschen aller Einträge aus kindvektortemp . Hatte(n) die Person(en), deren Referenz
zuvor in vektortemp gespeichert war(en), keine Kinder, so bleibt kindvektortemp leer und
seine Größe somit gleich null. Dann ist das Einlesen der Personendaten aus der Datenbank
beendet. Falls aber Kinder existiert haben, ruft sich diese Methode solange selbständig auf,
bis sämtliche Nachkommen eingelesen wurden.
Die Methode Personeinlesen (String id, int y) wird, wie eben erwähnt, aufgerufen. Dabei wird ihr die ID der auszulesenden Person übergebenen. Anhand dieser ID wird
eine Anfrage an die Datenbank gestellt, um die nötigen Informationen zum Erstellen eines
Person-Objektes zu erhalten. Diese Informationen sind die schon bekannte ID, Vor- und
Nachname, Geschlecht, Geburts- und Todesdatum und zwei Vektoren. Ein Vektor beinhaltet
die IDs aller Partner und der zweite Vektor die IDs alle Kindern einer Person. Diese beiden
letzteren Vektoren werden jeweils mit der Methode kindvonvec (String id,
String geschlecht) für die Kinder und partnervonvec (String id,
String geschlecht) für die Partner gefüllt. Die Kinder werden an den Vektor kindvektortemp angehangen, und für jeden Partner einer Person wird in der Methode Partner
(String id, String geschlecht, int y) ein Person-Objekt erzeugt. Diese
Methode ist mit der vorherigen Methode, in der die Personen-Objekte angelegt wurden, nahezu identisch; der einzige Unterschied liegt darin, daß hier die Kinder nicht an kindvektortemp angehangen und für die Partner dieser Personen keine neuen Objekte erzeugt werden,
da sie selbst der Partner sind. In der Methode Partner (String id, String geschlecht, int y) werden die Personen eingelesen, die durch eine Heirat in die Familie aufgenommen wurden.
In den beiden Methoden zum Einlesen der Partner und Kinder wird neben der ID und dem yWert, der zur Topologieberechnung benötigt wird, ebenfalls noch das Geschlecht der Person,
deren Kinder bzw. Partner zurückgegeben werden sollen, übergeben. Dies ist wichtig, da beide Methoden eine SQL-Anfrage an die Datenbank senden, um die gewünschte Information zu
erhalten, und je nach Geschlecht eine unterschiedliche Anfrage gesendet werden muß. Im
Falle der Kinder, die ebenfalls an kindvektortemp zur weiteren Abarbeitung weitergegeben
werden, gestaltet sich die SQL-Anweisung, die an die Datenbank gesendet wird, folgendermaßen:
if(geschlechtvor.equalsIgnoreCase("w")) {
67
anfrage = "SELECT * FROM Person P,Kind K WHERE K.Kind=P.ID AND
K.Mutter=";
}else if(geschlechtvor.equalsIgnoreCase("m")) {
anfrageteil1 = "SELECT * FROM Person P,Kind K WHERE K.Kind=P.ID AND
K.Vater=";
}
Abhängig vom Geschlecht der Person, deren Kinder angefragt werden, muß diese Person als
Vater oder Mutter in der SQL-Anfrage eingetragen werden. Der zweite neben dem Geschlecht
übergebene Wert ist y, was dem y-Wert für die Darstellung im Stammbaum entspricht. Er
wird für die Layoutberechnung benötigt.
Stammeltern
SV
P1
SV
Px
Kn
KmPn
Erste Generation
Pn
K1
K1P1
K1Pn
K2
Stammvater
Partner x
Kind n
n-ter partner von m-ten Kind
K2P1
K11
K12
Zweite Generation
KnPn
K11
K11P1
..
K12
erstes Kind von Kind 1
zweites Kind von Kind 1
Abb. 6.3.2.1 Anordnung der Person-Objekte im Vektor vid
6.3.3 Layoutberechnung
Die Layoutberechnung wird in vier Schritten durchgeführt. Als erstes wird während des Einleseprozesses der Daten allen Personen der y-Wert für die vertikale Plazierung zugewiesen,
die damit schon abgeschlossen ist, und ein erster x-Wert für die horizontale Plazierung. Der
letztere Wert ordnet die Personen für jede Generation mit einem Abstand von 20 Pixeln nebeneinander an. In diesem ersten Schritt werden auch die Partner einer Person unter den Personen plaziert. Darauf folgt als zweiter Schritt eine Zuordnung der Kinder einer Person mittig
unter dieser. Im anschließenden dritten Schritt werden Überschneidungen, die durch das Anordnen der Kinder unter ihren Eltern entstehen, aufgelöst. Die Optimierung wird mit dem Berechnen der Linien beendet.
Vertikale Anordnung beim
einlesen y-Werte berechnen
Kinder den Eltern zuordnen
Linien berechnen
Überschneidungen auflösen
Abb. 6.3.2.2 Ablauf der Layout-Optimierung
68
6.3.3.1
Vertikale Anordnung
Der erste Schritt der Layoutberechnung wird bereits während des Einlesevorgangs der Personendaten gestartet. Da mit der Wahl des Stammvaters festgelegt wird, von welcher Person
ausgehend die Ausgabe des Stammbaums beginnen soll, wird somit gleichzeitig bestimmt, an
welchem Punkt die Layoutberechnung beginnt. Zu Beginn der Layoutberechnung wird ein
Startwert für den y-Wert von 50 festgelegt, damit die Stammeltern, die ja auch die ersten Personen im Stammbaum sind, nicht unmittelbar am Fensterrand angeordnet werden. Es wurde
hierzu ein Wert von 50 Pixeln gewählt, dies ist die Höhe eines Rechtecks. Bei dem Einlesen
der Personendaten wird für jede Person einer Generation ein aktueller y-Wert geführt, der
dieser Person zugewiesen wird. Sobald zu einer Person die Partner mit der Methode partner (String personid, String geschlechtpartner,int y) eingetragen
werden, geschieht dies in einer Schleife, in der der maximale y-Wert dieser Ebene ermittelt
wird. Jeder Partner einer Person besitzt denselben x-Wert, aber für jeden Partner wird der yWert um 50 erhöht.
Der größte y-Wert in einer Generation wird als Maximalwert gespeichert, von dem aus der yWert für alle direkten Nachfahren der nächsten Generation errechnet wird: Dazu wird zum
erhaltenen maximalen y-Wert 90 hinzuaddiert. Somit ist die nächste Generation 90 Pixel vom
letzten Ehepartner der Person entfernt, die die meisten Ehen eingegangen ist. Der nach dem
Einlesen aller existierenden Daten der Nachkommen eines Stammvaters ermittelte y-Wert
wird nun noch um 100 Pixel erhöht, da somit jede dargestellte Person der letzten Generation
einen Abstand von mindestens 50 Pixel zum unteren Rand des Zeichnungsbereiches besitzt.
Ohne diese Erhöhung um 100 Pixel würde für mindestens eine Person mit diesem maximalen
y-Wert ein Platzhalter erzeugt werden, der nicht sichtbar ist, da er außerhalb des Darstellungsbereiches gezeichnet wird (denn das Rechteck wird ja vom maximalen y-Wert ausgehend um 50 Pixel nach unten gezeichnet). Diese y-Werte ändern sich im folgenden auch in
der weiteren Optimierung des Layouts nicht mehr.
Der x-Wert zu einer Person wird folgendermaßen berechnet. Da alle Personen generationsweise eingelesen werden, wird bei jeder Generation mit einem x-Wert von null begonnen. In
dem Vektor vektortemp befinden sich die IDs für alle Personen der aktuell einzulesenden
Generation. Es wird bei der ersten ID begonnen; dem dieser Person entsprechenden PersonObjekt wird ein x-Wert von null zugeordnet. Nun wird, bevor der x-Wert für die nächste
Person um 120 Pixel erhöht wird, geprüft, ob Partner für die aktuell bearbeitete Person existieren. Ist dies der Fall, wird der x-Wert beibehalten und wie weiter oben beschrieben der yWert für die eventuell vorhandenen Partner berechnet. Die Person-Objekte für die Partner
werden mit denselben x-Werten erzeugt, da ein Partner bündig unter der dazugehörigen Person plaziert wird. Wenn aber die aktuell ausgelesene Person aus der Datenbank keine Partner
besitzt und noch eine Person im Vektor vorhanden ist, wird für diese Person der x-Wert um
120 erhöht.
Nachdem alle Personen eingelesen wurden, entspricht die Reihenfolge, die sie im Vektor einnehmen, folgendem Muster: Die erste Person ist der Stammvater selbst, die nächste(n) Person(en) sein(e) Partner bzw. seine Partnerin(nen), und darauf folgen die Kinder des Stammvaters sowie deren Partner. Dabei folgt bzw. folgen auf das erste Kind direkt dessen Partner, und
erst danach das zweite Kind mit Partner etc. Somit schließt sich der kompletten ersten Generation die vollständige zweite Generation an usw. Ausgehend von dieser Anordnung im vid
wird nun die Berechnung des Layouts begonnen. Im ersten Schritt wird für jede Person, be69
ginnend mit dem Stammvater, eine Verschiebung von deren Kindern durchgeführt, so daß
sich die Eltern mittig über ihren Kindern befinden. D.h. also, daß die Kinder des Elternteils,
welcher ein direkter Nachkomme ist, mittig unter diesem mit all seinen Partnern plaziert werden.
Mit den anfänglichen x- und y-Werten würde die Ausgabe des Stammbaums sich wie unter
Abb. 6.3.1 gezeigt gestalten. Diese ursprünglichen Werte für die Koordinaten ergeben sich
direkt nach Einlesen der Personendaten, ohne daß eine Optimierung begonnen wurde. Lediglich die gezeigten Linien sind nicht auf diese Weise berechnet worden; sie würden jedoch wie
vorliegend dargestellt werden, wenn keine Optimierung der zur Anordnung der Personen im
Stammbaum durchgeführt werden würde. Die Zahlen in der Abbildung bezeichnen die Reihenfolge der einzelnen Personen im Vektor, was auch der Reihenfolge ihres Einlesevorgangs
entspricht.
1
2
3
5
4
6
7
9
10
11
12
13
15
8
16
14
17
19
20
18
21
24
22
25
26
27
23
Abb. 6.3.1 Stammbaum vor Optimierung
6.3.3.2
Plazierung der Kinder
Der zweite Teil der Layout-Berechnung erfolgt in mehreren Schritten. Im ersten Schritt wird
die Methode balance() gestartet, die den Vektor vid mit allen Personenobjekten einmal
durchläuft. Dabei wird mit der ersten Person im Vektor, also dem Stammvater, begonnen. Ob
eine Person ein direkter Nachkomme ist und somit deren Kinder bezüglich ihrer Position angeordnet werden müssen, wird daran erkannt, daß alle Personen beim Einlesen einen boolschen Wert zugewiesen bekommen, nämlich getwahl . Werden Personen als Nachkommen
oder als Stammvater eingelesen, erhalten sie den Wert false . Alle angeheirateten Personen,
d.h. die Partner von direkten Nachkommen, werden mit true markiert. Bei der Topologieberechnung wird nun für alle Personen mit getwahl=false die Anzahl ihrer Kinder abgefragt.
Zur Berechnung der Positionen der Kinder muß lediglich ein neuer x-Wert berechnet werden,
da alle y-Werte durch den Einlesevorgang schon korrekt berechnet worden sind. Um alle
Kinder symmetrisch unter die Eltern zu plazieren, wird der x-Wert für das erste Kind ermittelt. Dieser Wert wird als Parameter zusammen mit der ID des Elternteils, der Position im
Personenvektor und allen Kindern dieses Elternteils an die Methode elternteileintragen
70
übergeben, in der jedem Kind der Elternteil, welcher ein direkter Nachkomme im Stammbaum ist, und der entsprechende x-Wert zugewiesen wird. Um den Wert des ersten Kindes zu
ermitteln, wird der x-Wert des Elternteils ausgelesen. Für eine Plazierung mittig unter den
Eltern muß das erste Kind um die Hälfte der gesamten Länge aller Kinder nach links verschoben werden, was einer Subtraktion von (#Kinder-1)*60 vom x-Wert der Eltern entspricht. Der
errechnete Wert wird mit den drei anderen Parametern an die Methode elternteileintragen
übergeben. In dieser Methode wird der Vektor ausgehend von der übergebenen Position in
einer Schleife mit den IDs der Kinder verglichen. Sobald das erste Kind erreicht wird, wird
ihm die errechnete x-Position zugewiesen und die aktuelle x-Position um 120 erhöht. Gleichzeitig wird dem Kind der Elternteil zugewiesen. Die Schleife wird abgebrochen, sobald dies
für alle Kinder geschehen ist.
Bei jeder Berechnung des x-Wertes für die Kinder einer Person, die im Stammbaum direkte
Nachkommen besitzt, wird dieser x-Wert beginnend mit null verglichen und der kleinste Wert
gespeichert. Nach abgeschlossener Plazierung der Kinder existiert ein minimaler Wert, der
gleich null oder negativ ist. Das Panel, in dem der Stammbaum dargestellt wird, beginnt bei
der Position x = 0 und y = 0; dadurch liegen alle Darstellungen, die im negativen Wertebereich für x oder y beginnen, außerhalb des Darstellungsbereichs. Infolgedessen wird für jede
Person der x-Wert um den Betrag dieses minimalen x-Wertes erhöht, was in einer Verschiebung des Stammbaums um diesen Pixelwert nach rechts resultiert.
if(p.topologie.getwahl()==true) {
}else if(p.topologie.getwahl()==false) {
parts=p.partner.size();
kidv=p.getkind();
kinds=kidv.size();
xpos=p.topologie.getxpos();
help1=xpos-(kinds*60)+60;
elternteileintragen(p.getid(),kidv,i,help1);
}else{}
Berechnung des x-Wertes für die Kinder
Nachdem diese Prozedur durchlaufen wurde, ergibt sich eine Anordnung wie in Abb. 6.3.2
dargestellt, wobei sich mittig unter jeder Person ihre Kinder befinden. Die Verschiebung hat
jedoch zur Folge, daß es zu Überschneidungen in der Stammbaumdarstellung kommt, was
aber durch die Methode veschiebegeschwister behoben wird (dritter Schritt der Layoutberechnung). Nun wird der gesamte Vektor erneut durchlaufen und jeder x-Wert um den Betrag
des kleinsten existierenden x-Wert erhöht, um den Baum gegebenenfalls aus dem negativen
Bereich, der nicht dargestellt wird, wieder in den positiven zu verschieben. Dadurch kann sich
der maximale x-Wert wieder erhöhen, was parallel überprüft werden muß, um das Panel nach
dieser Verschiebung ausreichend groß zu wählen.
71
X=0
1
2
9
10
3
5
4
6
7
11
12
8
16
17
21
18
22
14
15
13
19
24
20
26
27
25
23
Abb. 6.3.2 Erster Optimierungsschritt
6.3.3.3
Auflösen von Überschneidungen
Mit der Methode veschiebegeschwister wird die dritte Phase der Layoutberechnung eingeleitet. Der Vektor vid mit den Person -Objekten wird noch einmal durchlaufen, und zwar
geschieht dies jeweils generationsweise. Für jede Generationsebene wird geprüft, ob sich
Überschneidungen ergeben, indem folgende Prozedur durchlaufen wird:
while(i<anzahlpersonen-1) {
xposrechts=p.topologie.getxpos();
ypostest=p.topologie.getypos();
ebene=p.topologie.getebene();
i++;
p=(Person)(vid.elementAt(i));
xposrechts2=p.topologie.getxpos();
ypostest2=p.topologie.getypos();
ebene2=p.topologie.getebene();
abort=false;
while((ebene==ebene2)&&(i<anzahlpersonen)&&(abort==false)) {
if ((ypostest2==ypostest)) {
abort=true;
}else {
i++;
p=(Person)(MenuGenealogy.vid.elementAt(i));
ebene2=p.topologie.getebene();
ypostest2=p.topologie.getypos();
id2 = (String)p.getid();
xposrechts2=p.topologie.getxpos();
}
}
if((ebene2==ebene)&&(xposrechts2<xposrechts+119)&&(testvectorempty==f
alse)) {
xwert=xposrechts-xposrechts2+120;
elternverschieben(p.getelternteil(),xwert,ebene-1);
}else{}
}
72
Bei diesem Verfahren wird mit dem ersten Eintrag im Vektor vid begonnen. Das erste Objekt wird ausgelesen und dessen x- und y-Wert und sowie seine Ebene in der Stammbaumdarstellung ermittelt. Ausgehend von dieser Ebene wird das nächste Objekt auf der gleichen
Ebene mit identischem x-Wert gesucht. Um zu überprüfen, ob es hier nun zu einer Überschneidung kommt, wird der x-Wert von zwei aufeinander folgenden Personen, die direkte
Nachkommen im Stammbaum sind, verglichen. Alle angeheirateten Personen auf der gleichen
Ebene haben einen größeren y-Wert, so daß mit diesem ersten Test jeder Partner einer Person
übersprungen und stattdessen der nächste direkte Nachbar (bei dem es sich nur um ein Geschwisterteil oder ein Cousin bzw. eine Cousine handeln kann) im Stammbaum ermittelt wird.
Besitzt eine Person keine Verwandten auf derselben Generationsebene, folgt nach dem/den
Partner(n) der erste Eintrag für ein Individuum der nächsten Generation. Diese wird daraufhin
als aktuelle Generation markiert, und der Vergleich wird in dieser Generation weitergeführt,
bis alle Ebenen abgearbeitet wurden. Sollte eine Person einen direkten Nachbarn haben,
gibt es zwei mögliche Fälle. Im ersten Fall tritt keine Überschneidung auf und sodann wird
die zweite dieser Personen als Vergleichsposition eingesetzt und mit dem nächsten direkten
Nachbarn im Stammbaum verglichen. Im zweiten Fall kommt es zu einer Überschneidung.
Da alle Geschwister in der Methode veschiebegeschwister mittig unter den Eltern plaziert
wurden, kann es sich dabei nur um eine Überschneidung zwischen Cousinen und Cousins
handeln. Diese wird aufgelöst, indem die Person, die im Vektor die hintere Position einnimmt,
einschließlich ihrer Partner verschoben wird. Um das errechnete Layout überall dort, wo keine Überschneidungen auftreten, zu erhalten, werden die Eltern mitsamt allen ihren Nachkommen und, wenn nötig, den direkten Nachbarn , verschoben. Die direkten Nachbarn der
Eltern werden dabei nur dann verschoben, wenn es zu einer neuen Überschneidung auf dieser
Generationsebene kommen sollte. Überschneidungen, die durch eine Verschiebung auf tieferen Ebenen entstehen, bleiben unberücksichtigt und werden erst korrigiert, wenn die betreffende Ebene erreicht wird.
Der x-Wert, um den solch eine Verschiebung durchgeführt werden muß, errechnet sich aus
dem x-Wert der beiden Personen, die auf eine Überschneidung hin überprüft werden. Für
Personen auf der gleichen Ebene, die direkte Nachfahren im Stammbaum sind, gilt dabei folgendes: Die im Vektor vor der anderen stehende Person (im folgenden als Person 1 bezeichnet) muß einen kleineren x-Wert besitzen als die nachstehende Person (im folgenden als Person 2 bezeichnet). Der x-Wert muß mindestens um den Wert von 120 kleiner sein, da er den
Beginn des Rechtecks, in dem die Person dargestellt wird, bezeichnet, und von diesem Startpunkt ausgehend um 100 Pixel nach rechts abgebildet wird. Die 20 zusätzlichen Pixel bezeichnen den Mindestabstand zwischen zwei Rechtecken innerhalb des Stammbaums. Hieraus
ergibt sich also, daß der x-Wert von Person 1, um 120 erhöht (xposrechts), kleiner sein muß
als der x-Wert von Person 2 (xposrechts2).
Die Differenz xpos = xposrechts - xposrechts2 dieser beiden Werte stellt somit den Wert dar,
um den die Eltern von Person 2 inklusive aller Nachkommen und Nachbarn verschoben
werden müssen. Dieser Wert wird zusammen mit der Ebene, auf der die Eltern zu finden sind,
und der ID des Elternteils, welcher ein direkter Nachkomme im Stammbaum ist, der Methode
elternverschieben übergeben. Die Position des betreffenden Elternteils wird im Vektor
vid gesucht und gemeinsam mit dem zu verschiebenden x-Wert der Methode nachkommenverschieben übergeben. In dieser Methode werden alle x-Werte der direkten Nachkommen der Eltern, inklusive aller Partner, um den Wert xpos erhöht. Dadurch wird der entsprechende Ast im Stammbaum, an dem Position der Eltern beginnend, um den Wert xpos
nach recht verschoben. Das Verrücken der Eltern könnte dabei zwar zu einer neuen Über73
schneidung auf deren Ebene führen, doch diese kann nur mit einem direkten Nachbarn , also
einem Geschwisterteil oder einem/einer Cousin/Cousine, stattfinden. Um dies zu prüfen, wird
in der Methode elternverschieben , nachdem die Methode nachkommenverschieben aufgerufen wurde, mit dem neuen x-Wert des verschobenen Elternteils kontrolliert, ob eine solche
Überschneidung entstanden ist.
Ist es zu keiner Überschneidung gekommen, wird diese Prozedur abgebrochen und das Verfahren an den Stellen in der Methode verschiebegeschwister fortgesetzt, wo zuvor auftretende Überschneidungen anfänglich den Aufruf der beiden Methoden ausgelöst hatten. Mit
den neuen Werten von Person 2 werden die restlichen Einträge auf Überschneidungen hin
überprüft. Sollte nun aber, verursacht durch die Verschiebung, eine Überschneidung auf der
Ebene der Eltern erzeugt worden sein (was analog zur Methode verschiebegeschwister geprüft wird), kommt es hier zur Verschiebung der betroffenen Person mit allen Nachkommen
und Partnern an der Stelle, wo sie auftritt, und nicht zur Verschiebung ab der Stelle ihrer Eltern. Diese Überprüfung läuft solange weiter, bis mit der nächsten Generation begonnen wird.
Nachdem die Topologieberechnung abgeschlossen ist, sind alle Personen korrekt im Stammbaum angeordnet und die Verbindungen zwischen den Individuen können im folgenden anhand dieser Anordnung berechnet werden. Dies geschieht in der Methode countline() im
letzten Schritt zur Layoutoptimierung.
1
2
3
5
4
6
7
9
10
11
12
8
16
17
18
14
15
13
19
20
21
24
22
25
23
X=0
Abb. 6.2.4
74
26
27
6.3.3.4
Linienberechnung
Um die Layoutberechnung abzuschließen, sind noch die Linien, welche die Verbindungen
zwischen Kindern und Eltern darstellen, zu berechnen. Es existieren drei Linientypen, von
denen zwei in countline() errechnet werden. Der dritte Typ wird bei der Zeichnung des
Stammbaums ausgegeben und an dieser Stelle auch errechnet. Der erste der drei Linientypen
ist die waagerechte Verbindung zwischen Geschwistern. Der zweite Typ ist die von den Eltern, genauer gesagt vom letzten Partner des Elternteils, der ein direkter Nachkomme ist, ausgehende Linie, die sich bis zu der Stelle fortsetzt, an der bei mehreren Nachkommen die waagerechte Linie berechnet wird. Der dritte und letzte Linientyp ist die Verbindung von den
Nachkommen zu der waagerechten Linie. Besitzt eine Person keine Geschwister, tritt keine
waagerechte Linie auf, und die Linien der Eltern treffen sich mit der ihres Kindes an der Stelle, an der sich andernfalls eine waagerechte Linie befinden würde.
Die Berechnung der Linien wird wie folgt vorgenommen. Jeder direkte Nachfahre im Stammbaum ist an dem Eintrag false im Wert getwahl zu erkennen. Dies bedeutet, daß an dieser
Stelle eine senkrechte Linie von der Mitte des Rechtecks, das die Person repräsentiert, um 22
Pixel nach oben gezeichnet werden muß. Alle waagerechten Linien werden nun auf der gleichen Höhe, und zwar 22 Pixel oberhalb der Personen, die sie als Geschwister verbinden, gezeichnet. Somit ist der Treffpunkt der Linien als diese Stelle definiert. Für die von den Eltern
zu einem 22 Pixel oberhalb der Kinder gelegenen Punkt führende Linie wird zuerst nur der yWert berechnet, bei dem die Linie bei den Eltern beginnt. Zu diesem Zweck wird bei der Vektor vid durchlaufen und bei jeder Person, für die getwahl den Wert false hat, der y-Wert
der Linie von dem letzten Partner aus errechnet. Dieser Wert ist der um 50 multiplizierte und
mit der Anzahl der Partner erhöhte y-Wert des Partners. Beispielsweise würden im Falle von
zwei Ehen 50 x 2 = 100 Pixel addiert werden.
Anschließend werden im Vektor alle Kinder der Person gesucht und von diesen der y-Wert
sowie der kleinste und der größte x-Wert ermittelt. Aus diesen Werten errechnen sich dann
die beiden Verbindungslinien. Die waagerechte Linie zur Verbindung aller Kinder beginnt bei
dem kleinsten, um 50 erhöhten x-Wert und setzt sich, jeweils mit dem um 22 erniedrigten yWert des Kindes, fort bis zum größten, um 50 erhöhten x-Wert. Es werden 50 Pixel zum ersten Kind addiert und vom letzten Kind abgezogen, damit die Linie in der Mitte der Kinder
endet. Die wagerechte Linie wird 22 Pixel über den Kindern gezeichnet, damit sie näher an
den Kindern als an den Eltern ist, da sie alle Kinder miteinander verbindet. Mit diesen Angaben stehen die beiden y-Werte für die Eltern der betreffenden Kinder ebenfalls fest. Der zuvor
errechnete y-Wert kennzeichnet nämlich den Beginn der Linie und der y-Wert der Kinder ihr
Ende. Um die Linie in der Mitte des Rechtecks beginnen zu lassen, bildet die um 50 Pixel
erhöhte x-Position der Eltern die Startposition für den x-Wert der Eltern. Im allgemeinen wird
die Linie senkrecht nach unten gezeichnet, allerdings kann ein Sonderfall eintreten, der noch
berücksichtigt werden muß. Durch das Verschieben der Personen kann es passieren, daß an
manchen Stellen im Stammbaum alle Kinder eines Paares, gemessen am x-Wert, weiter rechts
plaziert werden, so daß eine senkrechte Linie die Eltern nicht mit den Kindern verbinden
würde. Um dem vorzubeugen wird, bevor die Verbindungslinie zwischen Eltern und Kindern
eingetragen wird, kontrolliert, ob der kleinste x-Wert der Kinder kleiner oder gleich dem der
Eltern ist. Ist dies der Fall, treten keine Schwierigkeiten auf, und die Linie wird senkrecht
eingetragen. Andernfalls wird der kleinste x-Wert der Kinder plus 50 zur Endposition der
Linie bestimmt, und die Verbindung wird somit in diesem Sonderfall bei sehr vielen Verschiebungen schräg eingezeichnet, um eine weitere Verschiebung des ganzen Stammbaums
zu vermeiden.
75
7
Zusammenfassung und Ausblick
7.1
Zusammenfassung und Bewertung
Es wurde ein System zur Darstellung genealogischer Daten entwickelt, an dem interaktiv Manipulation vorgenommen werden können. Das System erlaubt anhand deduktiver Regeln die
Herleitung von Daten, die nicht in der Datenbank gespeichert, aber daraus ableitbar sind.
Darüber hinaus ist die Änderung- und Erweiterung des Datensatzes über das System anhand
der Darstellung möglich. Im vergleich zu den schon existierenden Anwendungen zur Visualisierung genealogischer Daten ist eine übersichtlichere und intuitiv verständlichere Darstellung
der Daten gelungen. Jedoch ist die graphische Ausschmückung der Hauptfenster und Funktionalitäten wie zusätzlicher Bedienungskomfort nicht so weit fortgeschritten. Während in
ViMaGe der Schwerpunkt auf die Darstellung der Daten und mögliche Anfragen zum herleiten von nicht gespeicherten Daten gelegt wurde, sind die meisten Programme mit genealogischem Hintergrund darauf ausgelegt Daten zu Speichern, oder einen optisch guten Eindruck
in der Bedienung herzugeben.
Besonders gut ist meiner Meinung nach die Aufteilung des Darstellungsbereiches in zwei
Fenster, in dem das eine zur Visualisierung und Manipulation der Daten herangezogen werden kann. Der zweite Bereich zeigt dahingegen eine Übersicht des Stammbaumes. Durch die
räumliche Nähe der Antworten auf eine Anfrage an die Datenbank, ist im Allgemeinen die
gesamte Visualisierung dieser Antworten, wenigstens im Übersichtfenster überblickbar. Die
bisher existierenden genealogische Programme zeigen keine Übersicht, es sind Programme
vorhanden, die ein Zoomen erlauben, doch wird dadurch entweder die Darstellung so klein,
daß die Daten nicht mehr lesbar sind, oder die Daten sind lesbar aber der Baum kann nicht
mehr überblickt werden. Ein weiterer Pluspunkt die erweiterte Anzeige, der nicht im Stammbaum gespeicherten Daten. Es ist Möglich die erweiterte Anzeige für mehrere Personen
gleichzeitig zu öffnen. In der erweiterten Anzeige stehen Informationen, die aufgrund der
Größe des Platzhalters für eine Person, nicht angezeigt werden können. Diese Funktion erlaubt es, daß bei einer deduktiven Anfrage an die Datenbank, die erweiterte Anzeige für alle
Personen die anhand der Antwortmenge markiert werden, gleichzeitig geöffnet werden kann.
So ist eine genauere Analyse der Antwortmenge möglich.
Abhängig von der Größe des Stammbaums und damit abhängig von der Menge der Daten, die
dargestellt werden, sind im oberen Bereich der Darstellung nur sehr wenige Personen angeordnet. In der ersten Generation finden sich hier nur die Stammeltern. Dadurch kommt es in
der linken und rechten oberen Ecke zu ungenutztem Raum, in dem jedoch ein Scrollen möglich ist. Es ist durchaus möglich, sich als Benutzer darin regelrecht zu verlieren. Dies ist zwar
kein Fehler, jedoch schadet es der Übersichtlichkeit. In Abb. 7.1 ist ein Beispielstammbaum
gezeigt, bei dem der obere rechte Teil nahezu ein ganzes Viertel des Bildschirms ausmacht.
Aufgrund dieses Effektes wurde bei der Darstellung auch auf die Plazierung der Stammeltern
in der Mitte des Bildschirms verzichtet. Eine mittige Plazierung hätte zusätzlichen ungenutzten Platz zur folge.
76
Abb. 7.1.1 Stammbaum
7.2
Ausblick
Als erster in Frage kommender technischer Verbesserungsvorschlag ist die Optimierung der
Liniendarstellung zu nennen. An einigen Stellen sind die Nachkommen einer Person nicht
unter diese plaziert, was durch das Verschieben von Personen hervorgerufen wird. Aus diesem Grund müßte die Linienberechnung in der Darstellung noch weiter verbessert werden. Zu
diesem Zweck könnte unter anderem das System um eine Schnittstelle erweitert werden, die
dem Benutzer verschiedene vorgegebene Layouts der Darstellung zur Auswahl stellt.
Weiterhin wäre auch eine Verbesserung der Laufzeit erstrebenswert, denn sobald andere ressourcenverbrauchende Programme im Hintergrund laufen, treten beim Multitasking Laufzeitprobleme auf. In diesem Fall wird das Scrollen verlangsamt, und beim Überzeichnen des Darstellungsbereichs ist in manchen Fällen das zuvor gezeichnete Bild zu sehen, und das Neuzeichnen wird kurzzeitig verzögert.
ViMaGe bietet einige Anfragen an die genealogische Datenbank zur Herleitung nicht gespeicherter Daten. Sollten weitere Anfragen hinzugefügt werden, ist ein abändern das System
notwendig. In einer Weiterführung dieser Diplomarbeit, könnten die SQL-Anfragen in einer
Datei gespeichert werden, und über eine Funktion im Hauptprogramm erweitert werden. So
könnten beliebige, formulierbare SQL-Anfragen, ohne Änderung des Quellcodes, den deduktiven Regeln hinzugefügt werden. Hierbei werden vom Benutzer SQL-Kenntnisse erwartet.
Eine wünschenswerte Erweiterung des Systems wäre die Möglichkeit, einen GEDCOMDatensatz aus den Daten in der genealogischen Datenbank oder den in das Programm importierten Daten zu erstellen. Weiterhin sollte es möglich sein, eine GEDCOM-Datei mit Hilfe
des Systems zu importieren, so daß für bestehende im GEDCOM-Format gespeicherte Datensätze nicht eine erneute manuelle Eingabe der Daten erfolgen muß. Damit wäre es möglich,
Datensätze aus existierenden Genealogieprogrammen, die den Exports in eine GEDCOMDatei ermöglichen, über diesen Umweg wieder einzulesen. Die dabei bestehende Schwierigkeit liegt in dem nicht einheitlichen GEDCOM-Standard. Obwohl GEDCOM als einheitliches
Format zum Austausch von genealogischen Daten entwickelt wurde, haben viele Entwickler
geringe Änderungen in die GEDCOM-Struktur eingebracht, so daß der Export einer GEDCOM-Datei oft auf verschiede Arten verwirklicht wird. Dadurch sind diese inkompatibel zu
anderen Anwendungen, die selbst GEDCOM-Daten exportieren und/oder importieren können.
77
Eine weitere Schwierigkeit besteht in der Existenz mehrerer Versionen von GEDCOM. Daher
muß eine Entscheidung getroffen werden im Hinblick darauf, ob es möglich sein sollte, jede
Version zu importieren oder nur die aktuelle Version 5.5.
Eine andere mögliche Erweiterung wäre die Darstellung der Ahnentafel einer Person. Dies
sollte gegebenenfalls auch interaktiv aus der Darstellung des Stammbaums erfolgen. Dabei
sollte die Ahnentafel in einem separaten Fenster geöffnet werden, ähnlich wie die erweiterte
Darstellung der Personendaten. Es wäre denkbar, in der Ahnentafel die gleichen Informationen wie im Stammbaum darzustellen und dort ebenfalls eine Auswahl von weiteren Informationen einzublenden. Diese Darstellung wäre damit einheitlich und könnte ohne Berechnungsprobleme erstellt werden. Es ist lediglich zu überlegen, ob eine beliebig weit in die Vergangenheit zurückführende Ahnentafel zugelassen wird, oder diese auf beispielsweise fünf bis
zehn Generationen beschränkt wird. Viele Datensätze reichen nur bis etwa zum 17. Jahrhundert zurück, so daß keine großen Generationsebenen zu erwarten sind. Ausnahmen bilden nur
historisch interessante Familien, die schon vor den Zivilstandsangelegenheiten Ahnenchroniken geführt haben.
Im Bezug auf alternative Darstellungen der genealogischen Daten könnte eine von der Anwendung abhängige Darstellung gewählt werden, in der andere abgeleitete Daten relevant
sind, aber auch die Auswahl der in den Stammbaum aufgenommenen Personen von verschiedenen Kriterien abhängt. So ist für eine genetisch orientierte Anwendung, die genealogische
Daten anhand von biologischen Kriterien analysiert, eine andere Datenmenge aus den genealogischen Daten einer Familie von Bedeutung als für die Darstellung des Familienstammbaums. Im genetisch motivierten Beispiel werden ausschließlich die Daten von Blutsverwandten als relevant betrachtet, während ein Familienstammbaum auch Affinialverwandte umfaßt.
Um aus genealogischen Daten das Erbe der einzelnen Verwandten zu ermitteln, sind wiederum andere Bedingungen an die Daten gestellt. Das System könnte unter Einbeziehung des
aktuellen Erbschaftsrecht und der Vererbungstheorie um weiter Darstellungsmöglichkeiten
der gleichen genealogischen Datenmenge für verschieden Anwendungsmöglichkeiten erweitert werden. Auf die verschiedenen Darstellungen könnten anwendungsabhängig Anfragen
ausgeführt und die Antworten wie gewohnt visualisiert werden.
In dieser vorliegenden Version von ViMaGe ist es nicht möglich, den Stammbaum irgendeiner Person aus der gerade aktiven Darstellung auszugeben, während zur gleichen Zeit die erstere Darstellung erhalten bleibt. Eine weitere Entwicklung könnte so aussehen, daß mehrere
Stammbäume zur gleichen Zeit gezeichnet werden können, so ist es möglich den Stammbaum
von beiden Großvätern gleichzeitig zu betrachten, falls alle Daten in der genealogischen Datenbank gespeichert sind. In einem Stammbaum sind die Vorfahren mütterlicher Seite nicht
gespeichert, deshalb wäre die soeben erwähnte Darstellung nur mit zwei nebeneinander existierenden Stammbäumen möglich. Da alle Daten in einer gemeinsamen genealogischen
Datenbank gespeichert wären, ist es dadurch auch möglich übergreifende Anfragen an die
Daten zu stellen, die dann simultan in beiden Stammbäumen visualisiert werden. Z.B. können
dann alle Onkel einer Person dargestellt werden. In einem einzigen Stammbaum, werden nur
die Onkel von einer Elternseite erfaßt, da die des anderen Elternteils in einem anderen
Stammbaum dargestellt werden.
Es können Personen interaktiv in die Datenbank eingefügt werden. Die geänderten Personendaten werden sofort gespeichert und sind auch abrufbar; lediglich bei Einfügen von neuen
Personen, sei es ein Kind oder ein Partner, ist ein Programmneustart aufgrund der gewählten
Darstellungs- und Einlesemethoden für die genealogischen Daten nötig.
78
Denkt man in die Richtung von Transaktionsverwaltung nach, könnte das ViMaGe auf ein
Mehrbenutzersystem ausgeweitet werden. Dazu wäre eine Mehrbenutzersynchronisation notwendig. In der vorliegenden Version könnten zwar verschieden Exemplare dieser Software in
einem Netzwerk auf eine gemeinsame genealogische Datenbank zugreifen, da ViMaGe über
die JDBC-ODBC-Bridge auf die Datenbank zugreift, jedoch gibt es keine Regeln die den
Zugriff steuern.
79
Erklärung: Hiermit erkläre ich, diese Diplomarbeit selbständig durchgeführt zu haben. Alle
Quellen und Hilfsmittel, die ich verwendet habe, sind angegeben. Zitate habe ich als solche
kenntlich gemacht.
Bonn, 19. April 2004, Marijan Gjoreski
80
Literaturverzeichnis
[AGLS00]
A. Austermann, J. Gallenbacher, Ch. Lange, M. Spörl: Java 2 mit Methode ,
C&L Computer und Literaturverlag, Böblingen, 2000
[AeiGe]
Österreich-Lexikon: Genealogie,
http://www.aeiou.at/aeiou.encyclop.g/g235218.tm
[Ber91a]
Bertelsmann Universal Lexikon in 20 Bänden, Band 1 A-Aso, Verlagsgruppe
Bertelsmann GmbH/Bertelsmann Lexikon Verlag GmbH, Gütersloh, 1991
[Ber91b]
Bertelsmann Universal Lexikon in 20 Bänden, Band 6 Feu-Gier, Verlagsgruppe Bertelsmann GmbH/Bertelsmann Lexikon Verlag GmbH, Gütersloh, 1991
[Ber91c]
Bertelsmann Universal Lexikon in 20 Bänden, Band 12 Met-Nizo, Verlagsgruppe Bertelsmann GmbH/Bertelsmann Lexikon Verlag GmbH, Gütersloh,
1991
[Bün96]
Karl-Dieter Bünting: Deutsches Wörterbuch , Isis Verlag AG , Chur, 1996
[Bis00]
Judy Bishop: Java lernen , Addison-Wesley Verlag, München, 2000
[Com02]
Computergenealogie, http://www.familiengeschichte.de/computer
[Chu96]
The Church of Jesus Christ of Latter-day Saints: The Gedcom Standard Release 5.5, http://homepages.rootsweb.com/~pmcbride/gedcom/55gctoc.htm
[Dad01]
P. Dadam: Skript Datenbaksysteme WS 00/01,
http://www.informatik.uni-ulm.de/dbis/f&l/lehre/WS00_01/Skript_DBMS/
[Dud93]
Lektorat des B.I.-Wissenschaftsverlags unter Leitung von Hermann Enesser:
Duden Informatik, 2. Auflage Dudenverlag, Mannheim, Leipzig, Wien, Zürich,
1993
[Eck01]
Eckhard Henkel: Ahnenforschung, Tools, Mormonen ,
http://www.eckhard-henkel.de/ahnen/genealog.htm
[Enz]
Encyclopedia: Begriffe der Genealogie , http://ahnenforschungen.de/famnet/
modules.php?name=Encyclopedia&op=terms&eid=5&1tr=A
[EthT04]
Tagung am Max-Planck-Institut für Ethnologie: Verwandtschaft und Freundschaft, http://www.freundschaft-und-verwandtschaft.de/tagung_halle_2004.rtf,
2004
[Fla00]
David Flanagan: Java Foundation Classes in a Nutshell , 1. Auflage, O'Reilly
Verlag, 2000
[Fok01]
FOKO - Allgemeine Informationen, http://foko.genealogy.net/doc/
81
[GHGRBa]
Genealogisch-Heraldische Gesellschaft der Region Basel: Fachwörter/Glossar,
http://www.ghgrb.ch/genealogicalIntroduction/glossary.html
[GHGRBb]
Genealogisch-Heraldische Gesellschaft der Region Basel: GEDCOM,
http://www.ghgrb.ch/genealogicalIntroduction/gedcom.html
[GHGRBc]
Genealogisch-Heraldische Gesellschaft der Region Basel: Verwandtschaft,
http://www.ghgrb.ch/genealogicalIntroduction/verwandtschaft.html
[GHGRBd]
Genealogisch-Heraldische Gesellschaft der Region Basel: Alte Schrift - aus
Pfarrbüchern, http://www.ghgrb.ch/genealogicalIntroduction/Schrift_pfarrbuch1.html, 2003
[GHGRBe]
Genealogisch-Heraldische Gesellschaft der Region Basel: Geschichte der Genealogie , http://www.ghgrb.ch/genealogicalIntroduction/history.html
[GYJ97a]
James Gosling, Frank Yellin, Java-Team : JavaTM API Band 1: Die Basispakete , 1. Auflage, Addison Wesley Longman Verlag GmbH, 1997
[GYJ97b]
James Gosling, Frank Yellin, Java-Team : JavaTM API Band 2: Das Window
Toolkit und Applets , 1. Auflage, Addison Wesley Longman Verlag GmbH,
1997
[Hag96]
Sven Hage: ODBC , http://wwwbs.informatik.htw-dresden.de/svortrag/ai93/
hage/odbc.html, 1996
[Her00]
Rainer Herman: Genealogische Zeichen und Abkürzungen ,
http://www.genealogienetz.de/misc/
[HiKo]
Hill, P.B. und Kopp: Anthropologische und historische Aspekte der Familie ,
http://infosoc.uni-koeln.de/fs-soziologie/texte/Makro_WS9899/Hill.html
[IEG]
IEG Systems: Einsatzgebiete von Access, Vorteile und Nachteile
http://www.iegsystems.com/
[Job02]
Fritz Jobst: Programmieren in Java , 4., überarbeitete Auflage, Hanser Verlag, München/Wien, 2002
[KBLa]
Kanton Basel Landschaft: Verzeichnis der Zivilstandsregister aus französischer Zeit (1792-1815) , http://www.baselland.ch/docs/archive/main.htm
[KBLb]
Kanton Basel Landschaft: Kirchenbücher: Übersicht und Ortsregister ,
http://www.baselland.ch/docs/archive/main.htm
[Kei_a]
Ewald Keil: GEDCOM, http://www.geocities.com/ekeilde/d-ged.htm
[Kei_b]
Ewald Keil: GEDCOM, http://www.uni-hohenheim.de/~keil/d-ged.htm
[Kei_c]
Ewald Keil: FOKO, http://www.geocities.com/ekeilde/d-fok.htm
82
[KeEi97]
Alfons Kemper, André Eickler: Datenbanksysteme , 2., aktualisierte und erweiterte Auflage, R. Oldenbourg-Verlag, München, Wien, 1997
[Krü00]
Guido Krüger: Go To Java 2 , Zweite Auflage, Addison Wesley,2000
[Lec93]
Fremdwörterbuch , Lechner Verlag, 1993
[Lex90a]
Neues großes Lexikon in Farbe 1 A-L, o.A. des Verlags, 1990
[Lex90b]
Neues großes Lexikon in Farbe 1 M-Z, o.A. des Verlags, 1990
[Liwa]
Klaus Liwowsky: Grundlagen zu Personenstandsregistern / Kirchenbüchern in
Schlesien , www.boehm-chronik.com.verwandtschafts.htm
[Liwb]
Klaus Liwowsky: Kirchenbücher der Gnadenkirche in Landeshut ,
www.boehm-chronik.com/verwandtschafts.htm
[Lug01]
Hannes Lugert: Foko Kennziffern , http://www.genealogienetz.de/vereine
VSFF/fokoid.htm, 2001
[Mül]
Gerd Müllenheim: Einträge in Kirchenbüchern ,
www.boehm-chronik.com.verwandtschafts.htm
[Man98]
Rainer Manthey: Skript zur Vorlesung Informationssysteme WS 98/99, Rheinische-Friedrich-Wilhelms-Universität Bonn Institut für Informatik III
[Man99]
Rainer Manthey: Skript zur Vorlesung Deduktive Datenbanken I SS 1999,
Rheinische-Friedrich-Wilhelms-Universität Bonn Institut für Informatik III
[MSH02]
Stefan Middendorf, Reiner Singer, Jörn Heid: Programmierhandbuch und
Referenz , 3. Auflage, http://www.dpunkt.de/java/index.html, 2002
[Msa96]
Microsoft Press: Microsoft Access 97 , Microsoft Press, 1996
[Mag]
Mager: Nummerierungsmethoden ,
http://home.t-online.de/home/MagerAuW/nummer.htm
[Nie03]
Alexander Niemann: Objektorientierte Programmierung in Java , 3., überarbeitete Auflage, bhv Verlag moderne industrie Buch AG & Co. KG, 2003
[Mcd97]
Microsoft Press Computer Dictionary, 3rd. Edition, Microsoft Press, Washington, 1997
[NL_1]
Net-Lexikon: Familie, http://www.net-lexikon.de/Familie.html
[NL_2]
Net-Lexikon: Genealogie, http://www.net-lexikon.de/Genealogie.html
[NL_3]
Net-Lexikon: Microsoft Access,
http://www.net-lexikon.de/Microsoft-Access.html
83
[NL_4]
Net-Lexikon: Stephan Kekulé von Stradonitz,
http://www.net-lexikon.de/Stephan_ Kekule_von_Stradonitz.html
[NL_5]
Net-Lexikon: SQL Allgemein, http://www.net-lexikon.de/SQL.html
[ODBCa]
http://www.net-lexikon.de/ODBC.html
[Bos]
Bosssoftware: ODBC Unterstüzung , http://www.bossoftware.com/web/
deutsch/Html/tca_Odbc.html
[Pay97]
Margarete Payer, Alois Payer: Skript Datenbankaufbau,
http://www.payer.de/dbaufbau/dbaufbau01.html, 1997
[Rau]
Heribert Rau:
Genealogische Methodik , http://www.heribert-rau.de/
Ahnenseite_von_Heribert_Rau/Genealogie/body_genealogie.html
[Reu01a]
Doris Reuter: Aufbau einer Ahnentafel ,
http://www.genealogie-forum.de/allgemein/ahnentafel.htm
[Reu01b]
Doris Reuter: Was ist GEDCOM? ,
http://www.genealogie-forum.de/allgemein/gedcom/gedcom01.htm, 2001
[Ric87]
Arndt Richter: Die 64 (autosomalen) Verwandschaftswege der Verwandtehe
von Gregor Mendels Eltern,
http://www.genetalogie.de/artikel/pdf/Mendel64.pdf , 1987
[Roo02]
RootsWeb: GEDCOM TAGS,
http://helpdesk.rootsweb.com/FAQ/Gedcom_tags.htm, 2002
[Rud]
Karsten Rudorf: Grundlagen der Familienforschung,
http://www.t-online.de/home/Karsten Rudorf/vhskurs2.htm
[Sch00]
Brit Schröder: Data Beckers Kompaktreferenz Java2 , 1. Auflage, Data Becker Gmbh & Co. KG, 2000
[Sch]
Juergen Schadnik: Verwandschaftsgrade ,
www.boehm-chronik.com.verwandtschafts.htm
[SO01]
Herbert Schildt, Joe O`Neil: Java2 Ge-Packt , mitp-Verlag, 2001
[Sch97]
Frank Schnell: Verwandtschaftsgrade , http://www.frank-schnell.de
[Sch01]
Schmid Wolfgang: Rezension über Genealogie als Denkform in Mittelalter
und Früher Neuzeit , http://www.sehepunkte.historicum.net/2001/01/2981.htm,
2001
[Sei00]
Winfrid Seimert: Access 2000 , bhv Verlag, 2000
[Sin98]
Detlef Singer: Die Vögel Mitteleuropas , 3. Auflage, Franckh-KosmosVerlags-GmbH & Co., Stuttgart, 1998
84
[Ste02]
Ralph Steyer: Java2 , Markt+Technik-Verlag, 2002
[See_a]
Stiftung Seeau: Lexikon-Genealogie ,
http://members.kabsi.at/seeau/Encyclopedia/Kompendien/LexikonGenealogie.html
[See_b]
Stiftung Seeau: Genealogische Modelle ,
http://members.kabsi.at/seeau/Encyclopedia/Kompendien/Medienmodelle.html
[See_c]
Stiftung Seeau: Monografie Genealogieplan ,
http://members.kabsi.at/seeau/Encyclopedia/Kompendien/MonografieGenealogie.html
[SQLa]
SQL, http://www.net-lexikon.de/SQL.html
[SQLb]
SQL, http://www.net-jcc.com/sqlpages/jccs_sql.htm
[Tra03]
Enzo Traverso, Kontinuität und Bruch, Sozialistische Zeitung ,
http://members.aol.com/sozrst/030824.htm, 2003
[Ull03]
Ullenboom Christian: Java ist auch eine Insel , 2., aktualisierte und erweiterte
Auflage, Galileo Computing, 2003
[VC]
Verein für Computergenealogie: Vorlagen , http://www.genealogienetz.de/
vorlagen
[Vos99]
Gottfried Vossen: Datenbankmodelle, Datenbanksprachen und Datenmanagement-Systeme , 3., vollständig überarbeitete Auflage, R. OldenbourgVerlag, München, Wien, 1999
[Web03]
Tobias Weber, Einführung in die Genealogie ,
http://www.vilstal.net/users/tobiasweber/einführung.htm
[Wei03]
Volkmar Weiß: Nationalsozialismus, Wissenschaftsgeschichte ,
http://www.volkmar-weiss.de/pub17.html, 2003
[Wei03]
Illona Weinreich: Skript zur Vorlesung Datenbanken WS 03/04, Rhein-AhrCampus Remagen
[Wen04]
Birgit Wendt: Internet für Familienforscher ,
http://tipps.ahnenforschung.net/internet, 2004
[Wik_1]
Wikipedia: Ahnenpass, http://de.wikipedia.org/wiki/Ahnenpass
[Wik_2]
Wikipedia: Ahnentafel, http://de.wikipedia.org/wiki/Ahnentafel
[Wik_3]
Wikipedia: Ariernachweis, http://de.wikipedia.org/wiki/Arische_Abstammung
[Wik_4]
Wikipedia: Familienstambaum,
http://de.wikipedia.org/wiki/Familienstammbaum
85
[Wik_5]
Wikipedia: Darstellung, http://de.wikipedia.org/wiki/Darstellung
[Wik_6]
Wikipedia: Genealogie, http://de.wikipedia.org/wiki/Genealogie
[Wik_7]
Wikipedia: Stephan Kekulé von Stardonitz ,
http://de.wikipedia.org/wiki/Stephan_Kekulé_von_Stradonitz
[Wik_8]
Wikipedia: Microsoft Access, http://de.wikipedia.org/wiki/MS_Access
[Wik_9]
Wikipedia: Nachkommenliste, http://de.wikipedia.org/wiki/Nachkommenliste
[Wik_10]
Wikipedia: Stammbaum, http://de.wikipedia.org/wiki/Stammbaum
[Wit_a]
Thomas Wittek: JDBC Grundlagen , http://computer.freepage.de/cgi- bin/
feets/freepage_ext/41030x030A/rewrite/wittek/Java/JDBC_Grdlg.htm
[Wit_b]
Thomas Wittek: JDBC für Fortgeschritene , http://computer.freepage.de/
cgi- bin/feets/freepage_ext/41030x030A/rewrite/wittek/Java/JDBC_Profi.htm
86
Herunterladen