Zurück   Ahnenforschung.Net Forum > Software und Technik > Internet, Homepage, Datenbanken
Hier klicken, falls Sie Ihr Kennwort vergessen haben.

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1  
Alt 09.10.2016, 22:47
Waltschrat Waltschrat ist offline männlich
Erfahrener Benutzer
 
Registriert seit: 20.07.2016
Ort: Fürstenfeldbruck
Beiträge: 137
Standard Optimales Datenmodell für eine Genealogie-Datenbank?

Grüß Gott,

ursprünglich habe ich nach einem Beispiel für eine Baumstruktur gesucht, die man im Unterricht als Beispiel nutzen kann. Daraus ist dann im Laufe der Zeit die Suche nach den Ahnen entstanden.

Ich bin daher historisch von den Bäumen heruntergestiegen.


Nun haben Relationale Datenbanken Schwächen bei der Modellierung von Bäumen (das sogenannte Stücklistenproblem). Beispielsweise kann man in SQL nicht fragen: "Gib mir die Wurzel zu einem Knoten = Gib mir den jüngsten Nachkommen". Genauer: Im neuesten SQL-Standard ist dazu ein Befehl vorgesehen, der aber bei den eher bescheidenen Genealogie-Datenbanken nicht realisiert ist.

Wie man aus meinem Anmeldedatum sieht, habe ich mich erst kürzlich getraut, in dieses professionelle Forum einzutreten. Man lernt, dass es eine Vielzahl von Programmen gibt, die fast alle die Kommunikation über den Gedcom-Standard erlauben. Dieser Standard beschreibt ein Austauschformat, ist also keine Datenbank.

Nach dieser langen Einleitung nun zu meinem Problem:

Um in einem RDBM (Relationalen Datenbank Management)-System einen Baum darzustellen, genügt eine einfache, reflexive Tabelle (Bild 1) (eine Tabelle mit mindestens einem Fremdschlüssel auf sich selbst).

Natürlich kann man hier bereits darüber streiten, ob die Felder p_p_aNrV (Vater) und p_p_aNrM (Mutter) als Verweise auf die Personennummer p_aNr einen Verstoß gegen die 1. Normalform (1NF) darstellen. Da es sich aber aus biologischen Gründen um genau zwei handelt, sei das erlaubt. Weiterhin sollen erst einmal alle Schmutzeleien wie gleichgeschlechtliche Ehe, unehelich geborene Personen usw. außen Acht gelassen werden.

Sucht man nun nach einer Access-Datenbank, die Gedcom verarbeitet (einliest), so trifft man nur auf ein Template von Microsoft aus dem Jahre 2007. Das Nachfolgertemplate aus 2016 enthält interessanterweise diese Fähigkeit nicht mehr.

Hinweis: Die Fragestellung dieses Beitrages hat weder etwas mit Microsoft noch mit Access zu tun. Also bitte keine Diskussion darüber.

Spannend ist das zugehörige Datenmodell (Bild 2), das eine direkte Umsetzung des Gedcom-Standards ist.

Im Zentrum von Gedcom stehen zwei Tabellen Families und Individuals, die nicht allein einen Baum realisieren können, was auch im Gedcom Standard 5.5.1. ausdrücklich dokumentiert ist.

Die Tabelle Families könnte man nach ihren Feldern auch als Ehe bezeichnen. Die Ehe besteht aus zwei Personen, die in Individuals näher beschrieben werden. Die Felder Father und Mother sind eine schlechte Umsetzung von HUSB und WIFE aus Gedcom.

Jede Person (Individual) hat einen Fremdschlüssel Parents auf die Ehe der beiden Eltern. Erst über diesen Weg findet man die Eltern einer Person.

Ich stelle mir daher die Frage: Welches der beiden Datenmodelle ist (technisch gesehen) das bessere.

Diese Frage würde ich hier gern mit DB-Analysten diskutieren. Es geht nicht darum, ob MySql besser als Access, DB 2, SQL Server usw. ist.

Da ich mit Gedcom erst am Anfang stehe, interessieren mich die Fragen:

1. Wie werden uneheliche Kinder behandelt?
2. Wie werden Ahnen ohne Eltern behandelt?
3. Wie wird die Konsistenz der Daten geprüft?
4. Der Standard sieht gegenseitige Verweise in beiden Tabellen aufeinander vor. Wie werden Widersprüche erkannt?

Selbstverständlich muss auch das Baum-Modell um eine Tabelle Ehe (assoziative Zwischentabelle) ergänzt werden, wenn es dieselben Daten wie das Gedcom-Modell aus Bild 2 enthalten soll.

Diese Tabelle kann theoretisch leer bleiben, während Families für jede Familie einen Datensatz enthalten muss.

Euer Waltschrat
Angehängte Grafiken
Dateityp: png DBEntwurfBaum01.png (9,5 KB, 47x aufgerufen)
Dateityp: png DBEntwurfGenealogy01.png (16,1 KB, 45x aufgerufen)

Geändert von Xtine (10.10.2016 um 21:39 Uhr) Grund: off Topic Teil entfernt
Mit Zitat antworten
  #2  
Alt 09.10.2016, 23:16
StefOsi StefOsi ist offline
Erfahrener Benutzer
 
Registriert seit: 14.03.2013
Beiträge: 4.060
Standard

Moin,

bin nicht ganz sicher was du mit deiner Frage eigentlich erzielen willst, aber warum nicht einfach das Gedcom-Format 1:1 in der DB abbilden? Fremdschlüssel, Verknüpfungen ect. sind damit alle erfasst und du kannst dann nach Lust und Laune SQL-Queries erstellen die für deine Ansprüche die richtigen sind.

Oder verstehe ich da die grundlegende Frage nicht?

P.S: Ich hatte mir mal ein Script geschrieben, das genau das macht - meine eigene .ged in ne DB (in meinem Fall war das sqlite) packt. Dann konnte ich damit fleissig rumspielen und völlig neue Funktionen für Views schreiben die z.b. Ahnenblatt nicht hat.

Geändert von StefOsi (09.10.2016 um 23:18 Uhr)
Mit Zitat antworten
  #3  
Alt 10.10.2016, 07:19
Waltschrat Waltschrat ist offline männlich
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 20.07.2016
Ort: Fürstenfeldbruck
Beiträge: 137
Standard Ist Gedcom optimal?

Zitat:
Zitat von StefOsi Beitrag anzeigen
Oder verstehe ich da die grundlegende Frage nicht?

P.S: Ich hatte mir mal ein Script geschrieben, das genau das macht - meine eigene .ged in ne DB (in meinem Fall war das sqlite) packt. Dann konnte ich damit fleissig rumspielen und völlig neue Funktionen für Views schreiben die z.b. Ahnenblatt nicht hat.
Grüß Gott, lieber StefOsi

danke für Deine Antwort.

Die Frage ist nicht, ob Gedcom einen Stammbaum vollständig und gut abbildet, sondern ob das Format optimal ist. Nachdem ich ged eingelesen habe, weiß meine Datenbank nichts mehr von Gedcom und ich kann fleißig herumspielen und neue, überraschende Sichten auf meine Daten erzeugen. Das ist ein, wenn auch mit der Frage nicht beabsichtigter, positiver Nebeneffekt.

Ja, meine Frage ist grundlegend.

Sollte beispielsweise Gedcom X im Tag INDI nicht FATH und MOTH einführen statt FAMC/FAMS? Damit wird FAM zu einer willkommenen, aber eigentlich für den Ahnenbaum überflüssige Zugabe.

Die Frage ist ketzerisch und könnte einen Shitstorm auslösen. Ich bin auf alles gefasst.

Wie gesagt, arbeite ich mich gerade erst ein und bin auf folgende Aussage getroffen (Quelle: www.daubnet.com Übersetzung von Gedcom 5.5.1):

Zitat:
Die normalen Abstammungsverbindungen werden durch Zeiger von der Person auf eine Familie durch entweder einen FAMC-Kennzeichen oder FAMS-Kennzeichen gezeigt. Das FAMC-Kennzeichen beinhaltet einen Zeiger auf eine Familie, in der die Person Kind ist. Das FAMS-Kennzeichen beinhaltet einen Zeiger auf eine Familie, in der die Person (Ehe-)Partner oder Elternteil ist. Die <<CHILD_TO_FAMILY_LINK>> Struktur enthält einen FAMC-Zeiger, der zwingend notwendig ist, um die Verbindung eines Kindes zu seinen Eltern zu dokumentieren. Die <<CHILD_TO_FAMILY_LINK>> Struktur zeigt zudem, ob es sich um eine biologische Verbindung, Adoption oder Siegelung handelt.
Dein Waltschrat
Mit Zitat antworten
  #4  
Alt 10.10.2016, 22:28
gki gki ist offline
Erfahrener Benutzer
 
Registriert seit: 18.01.2012
Beiträge: 3.898
Standard

Nur mal so: Was kümmert mich das Datenmodell, wichtig ist, daß das Programm funktioniert.

Sich an Gedcom zu orientieren nur um der Orientierung an Gedcom willen halte ich auch für vergebene Liebesmüh.

Grundsätzlich wäre eine nicht-relationale DB das Mittel der Wahl.
__________________
Gruß
gki
Mit Zitat antworten
  #5  
Alt 11.10.2016, 06:43
Waltschrat Waltschrat ist offline männlich
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 20.07.2016
Ort: Fürstenfeldbruck
Beiträge: 137
Standard Bitte keine "Nur mal so"-Beiträge

Grüß Gott,

selbstverständlich ist es dem Anwender egal, wie ein Problem programmiert wird, Hauptsache es funktioniert. Aber ich dachte, dass diese Aspekte in genau diesem Forum diskutabel sind und ich hier auf Mitglieder treffe, die nicht nur reine Anwender sind. Der letzte Beitrag hilft mir nicht besonders. Also bitte keine weiteren "Nur mal so"-Beiträge.

Vielleicht gibt es ja Mitglieder, die es schon einmal mit einer nicht-relationalen Datenbank probiert haben oder schon einmal selbst eine post-Excel-Variante programmiert haben. Auch nicht-relationale Datenbanken sind oft nur "nach Außen" nicht-relational.

Vielleicht sollte ich meine Vorstellungen zum Begriff "optimal" noch ein wenig erläutern:

Ein Programm, das nicht funktioniert (oder die gewünschten Ergebnisse bringt) kann nicht optimal sein (Ausschlusskriterium).

Ein Programm ist (landläufig gesehen) optimal,

1. wenn es speicheroptimal ist,
2. wenn es laufzeitoptimal ist.

Daher würde ich bei diesem Thema gern Folgendes diskutieren (Beispiele):

Das Datenmodell xyz benötigt mehr/weniger Speicherplatz, weil beispielsweise:

  • Baum-Modell: Jede Person hat einen zweiten Fremdschlüssel (günstig/ungünstig?)
  • Gedcom-Modell: Bei einer durchschnittlichen Kinderzahl (fiktiv, nicht geprüft) von sieben, enthält die Tabelle Families nur 1/7 der Datensätze der Tabelle Individuals.
  • usw.
Das Datenmodell xyz benötigt mehr/weniger Laufzeit, weil
  • Gedcom-Modell ungünstig: Die Eltern einer Person können nur über einen doppelten JOIN-Befehl bestimmt werden.

Euer Waltschrat
(nicht nur für "Insider": http://home.f1.htw-berlin.de/Scheibl...lStammbaum.htm)
Mit Zitat antworten
  #6  
Alt 11.10.2016, 09:53
Benutzerbild von urmel_x
urmel_x urmel_x ist offline männlich
Erfahrener Benutzer
 
Registriert seit: 26.06.2015
Beiträge: 102
Standard

Hi,

als erstes denkt man über die dem Problem angemessenen Datenstrukturen nach,
und erst dann über die Abspeicherung dieser Datenstrukturen - sprich:

Die Datenbank ist das letzte Glied in der Kette.

Gruß,

Urmel
Mit Zitat antworten
  #7  
Alt 11.10.2016, 12:29
JanX JanX ist offline männlich
Benutzer
 
Registriert seit: 13.12.2009
Beiträge: 92
Standard

Ich habe auch das Gefühl, als ob die Herangehensweise etwas - unüberlegt ist.

Erstmal: GEDOCM ist prinzipiell ein Datenaustausch-Format. Es gibt mit Ages! zwar ein Programm, das seine Daten in GEDCOM speichert, aber das ist eher die Ausnahme. Und hat hier das Problem, das bei sehr großen Genealogien (ich rede hier von mehreren 10.000 Personen) die Ladezeit extrem lang ist, da die gesamte GEDCOM-Datei eingelesen und aufgebröselt werden muß, um im weiteren Verlauf damit arbeiten zu können. Was bei so vielen Personen halt dauert.

Dann: Wie man in einer eigenen Datenbankstruktur Kinder und Eltern mit den Personen verknüpft ist Sache der eigenen Überlegungen. In GEDCOM gibt es jedenfalls verschiedene Möglichkeiten, das zu erledigen.

Zu den Anfangsfragen:
  • Uneheliche Kinder werden in GEDCOM erstmal nicht anders behandelt als andere Kinder.
  • Personen ohne Eltern bekommen halt keine zugewiesen. Das entsprechende Tag wird dann eben nicht verwendet (was bedeutet, das die Person nirgends als Kind einer Familie eingetragen ist).
  • GEDCOM selber prüft die Konsistenz der Daten überhaupt garnicht,. Weil GEDCOM kein Programm ist sondern nur eine Aneinanderreihung von entsprechend formatierten Textzeilen. Für die Konsistenz ist das schreibende Programm zuständig. Das kann da also stapelweise falsche Tags einbauen, fehlerhafte Formatierungen, gebrochen Links zu Partnern, Kindern, Orten, Quellen, ... Passiert ja auch in manchen Programmen stapelweise.
  • Der Standard (solange hier GEDCOM gemeint ist) sieht überhaupt keine zwei Tabellen, sonddern eine einzelne Textdatei. Kann also auch nicht mit Widersprüchen umgehen. Familien werden in dieser Textdatei verknüpft (Person, Ehe, Kinder zur Familie) aufgeführt.
JanX
Mit Zitat antworten
  #8  
Alt 12.10.2016, 09:21
Waltschrat Waltschrat ist offline männlich
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 20.07.2016
Ort: Fürstenfeldbruck
Beiträge: 137
Standard

Zitat:
Zitat von urmel_x Beitrag anzeigen
Hi,

als erstes denkt man über die dem Problem angemessenen Datenstrukturen nach,
und erst dann über die Abspeicherung dieser Datenstrukturen - sprich:

Die Datenbank ist das letzte Glied in der Kette.

Gruß,

Urmel
Grüß Gott, lieber Urmel,

Deine Antwort verstehe ich nicht. Nach dem "Nachdenken" über ein angemessenes Datenmodell muss sich doch der DB-Analyst fragen, welcher der beiden (oder mehr) Entwürfe optimal ist.
Natürlich gibt es viele Kriterien wie "Anpassungsfähigkeit an Änderungen in der Umwelt, Wartungsfreundlichkei usw.), aber bei einer Genealogie-Datenbank sehe ich weiterhin die Hauptkriterien
  1. Platzbedarf
  2. Laufzeit
im Vordergrund stehen (ok, Speicherplatz ist heute billig wie noch nie). Macht meine Anfrage nicht genau dieses Anliegen deutlich?

Das Datenmodell zementiert ein Programm/eine Firma auf Jahrzehnte.

Gedcom ist keine Datenbank, impliziert aber mittelbar eine Datenstruktur.

Zitat:
Hallo, auf Anregung dieses Themas habe ich mal meine Datenbank Script durchwühlt. Hab mir auch schon eine Struktur überlegt. kurz einige Komments zu Bild 1: mehr als die Hälte ist eine Quelle? Mit Handy Nr wirkt es etwas aufgebläht. Veränderliche Daten (Wohnung) sollte in eine eigene Tabelle; Normalformen würde das ganze sehr abspecken... Ich würde mich mehr an den Gedcom Standard halten. Weiters finde ich den GRAMPS Ansatz mit Personen, Erreignissen, Orte und Quellen sehr gut. Leider betrachtet kaum jemand, dass die Orte das Beständigste sind. Sie ändern max. den Namen und die Bestimmung, bleiben aber, solange die Plattendektonik nicht schneller wird, am selben Platz.
(Heraushebung durch mich)

Ein wenig ratlos hat mich der Beitrag
http://forum.ahnenforschung.net/show...=126405&page=2
zurückgelassen, da hier "alte Scripts" hervorgeholt werden, um ein Datenmodell zu beurteilen. Dort findest Du übrigens auch mein aktuelle Datenmodell mit der Baumstruktur.

Dein Waltschrat
(nicht nur für "Insider": http://home.f1.htw-berlin.de/Scheibl...lStammbaum.htm)
Mit Zitat antworten
  #9  
Alt 12.10.2016, 09:53
StefOsi StefOsi ist offline
Erfahrener Benutzer
 
Registriert seit: 14.03.2013
Beiträge: 4.060
Standard

Na dann gehe doch einfach den Weg jeder DB und bringe alles in die NF's. Da gibt es feste Regeln. Ob du bis zur 4. oder 5. NF gehst sei dann dir überlassen.
Mit Zitat antworten
  #10  
Alt 12.10.2016, 10:02
Benutzerbild von urmel_x
urmel_x urmel_x ist offline männlich
Erfahrener Benutzer
 
Registriert seit: 26.06.2015
Beiträge: 102
Standard

Hi Waltschrat,

wie hier schon erläutert wurde, ist GEDCOM ein Datenaustauschformat - niemand ist gezwungen, dieses Format als Vorlage einer Datenstruktur für ein Genealogie-Programm zu benutzen. Aber ein Genealogie-Programm sollte dieses Format einlesen können und in seine eigenen Datenstrukturen übersetzen können - desgleichen sollte es seine Daten im GEDCOM-Format ausgeben können. Die vom Genealogie-Programm verwendeten Datenstrukturen sollten dem Problem angemessen sein - und das Problem ist nicht, wie man die Daten optimal abspeichert. Der eine Schritt ist, dem Problem angemessene Datenstrukturen zu finden und der zweite Schritt ist, wie diese Datenstruktur optimal abgespeichert werden kann. Von einer optimalen Datenabspeicherung auszugehen, heißt das Pferd von hinten aufzuzäumen. Es kann dann leicht passieren, dass dann das Genealogie-Programm von der Art der Datenabspeicherung bestimmt wird - was leicht eine schlechte Software ergibt.

N.B. benutzt ein Genalogie-Programm nicht nur real tatsächlich vorhandene Relationen, sondern eigentlich nur mehr oder weniger Quellen-belegte Relationen, was insbesonder bedeutet, dass z.B. eine Person mehrere Mütter besitzen kann, jede mit entsprechender Wahrscheinlichkeit, oder mehrere Geburtsdaten oder Geburtsorte ...

Gruß

Urmel.
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:58 Uhr.