Sven Rautenberg: Familienverhältnisse - Problem mit Datenbankstruktur

Beitrag lesen

Moin!

T_ISTVON
ID_ISTVON
ID_EIGENSCHAFT
ID_MENSCH
ID_MENSCH2

1   1    4    2         (ist tochter von) (Wiebke) -> (Bernd)
2   2    2    3         (ist Bruder von)  (Bernd)  -> (Klaus)
3
4
5
6

Das ganze nennt sich dann n-zu-m-selbstbezug

Um mit Selbstbezügen intelligent arbeiten zu können, öffnet (spricht an) man die selbe daei einfach unter zwei verschiedenen Aliasen.

Meinst du wirklich, dass solch eine komplexe Tabelle sinnvoll ist? Ich finde, man kann doch einfach den natürlichen Weg der Geburt abbilden: Ein Mensch hat Vater und Mutter, die für seine Entstehung verantwortlich sind. Also kriegt jeder Mensch in der Tabelle zwei weitere Felder Vater und Mutter, in denen andere Menschen der Tabelle stehen.

Damit wären Vater und Mutter geklärt. Die Kinder des Menschen findet man, indem man nach allen Einträgen in der Tabelle sucht, die die eigene ID als Vater oder Mutter enthalten (wobei das "oder" nur in den seltensten Fällen benötigt wird - aber sicher ist sicher).

Die Geschwister findet man, indem man die Eltern-IDs feststellt und dann alle Menschen sucht, die beide (oder mindestens eine) der IDs als Mutter oder Vater enthält.

Und durch mehrere Stufen hindurch kann man dann im Prinzip den gesamten Stammbaum herauskriegen.

Das Problem ist nur: Eine relationale Datenbank ist für solche Konstrukte nicht wirklich die ideale Speicherungsform. Würde ich noch mit Turbo Pascal arbeiten, würde ich die Daten nicht auf Festplatte lassen, sondern ins RAM einlesen und mit Zeigern "verdrahten", damit man schnell durch die Datenstruktur wandern kann. Und wenn das zuviel Platz braucht, bliebe immer noch die Möglichkeit, direkt auf der Festplatte wahlfrei zu lesen (seek).

Die Datenbank hingegen wird als einzige Stärke ihre Datenspeicherkapazität einbringen können - wirklich helfen tut das nicht. Im Gegenteil wird sie vermutlich von vielen kleinen SELECT-Querys gequält, denn JOIN hilft zwar im Prinzip weiter, aber man kann da sehr leicht endlose JOIN-Ketten bilden, die irgendwann auch nicht mehr performant sind.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)