Hallo Stefan,
Am 27. Jul 2005 um 18:45 Uhr schrieb Stefan Mettenbrink:
Um Dir dahingehend weiterhelfen zu können, dass ich sage, ich würde
es so oder so machen, muss ich wissen worum es geht.
Gut. Also Deteils.
Es geht um Ahnenforschung. Vorhanden sind Klassen für Personendaten,
Adressdaten, etc. (auf die dann ebenfalls in Form eines Array
zugegriffen wird)
Beispiel:
Person.append new Personenklasse -> erzeugt mir die nötigen Variablen
für einen neue Person
Das wäre ein Datenbank INSERT wobei Du die Defaultwerte mit einfügen
müsstest im RB-Code.
Innerhalb der Klassen habe ich z.B. für die Person diverse Variablen
für Vorname, Nachname, Konfesson, etc.
Problematisch ist derzeit die Flexible Anzahl von Kinder und
Ereignissen. Dort nutze ich ein Array innerhalb der Klasse, das einen
Vereis auf einen Eintrag einer entsprechenden Klasse enthält.
Beispiel:
Person(5).Ereinis(3)=4 -> also bei der Person zu der Datensatz 5
gehört existieren mindestens 3 Ereignisse, wobei Eintrag 3 auf den 4.
Ereignisdatensatz verweist. Dort würde ich dann z.B. das Datum, den
Ort und eine Bemerkung finden.
Nun hatte ich mir eine Datenbank angelegt und für Personen- und
Ereignisdaten jeweils eine Tabelle mit den nötigen Variablen angelegt.
Mir fehlt jetzt aber die Funktion, die ich bisher mit den Arrays
hatte.
Hab mir fast gedacht, dass das etwas heftiges wird ;-))
Um zukünftige Fehler/Probleme weitestgehend auszuschliessen, hatte
ich damals alleine 3 Monate für die saubere Normalisierung verbraten.
Dabei habe ich oftmals wieder etwas umgestellt oder wegen
Zukunftssicherheit verworfen. Das was ich von Dir verstanden habe,
würde ich derzeit über den Daumen gepeilt so lösen. (Nur als Ausschnitt)
Tabelle: Personen
ID (eineindeutig)
Name
weitere PersonenInformationen
Tabelle: Paare
ID (eineindeutig)
ID_Person1
ID_Person2
weitere Paarinformationen
Tabelle: Ereignisse
ID (eineindeutig)
ID_Person
Datum
Ereignis etc
Mit folgendem Select findest Du alle Ereignisse einer Person
Select E.*
from Person P, Ereignis P
where P.ID=E.ID_Person
AND P.Name='Sailer'
natürlich muss man das SQL weiter verfeinern und Dann hast Du eine
Ergebnismenge. Suchst Du ein bestimmtes Ereignis, musst Du dieses
über die WHERE-Clauseln weiter einschränken.
Du kannst aber auch folgende tabellen anlegen
Tabelle: Paare
ID (eineindeutig)
weitere Paarinformationen
Tabelle: Personen
ID (eineindeutig)
Name
ID_Paare
weitere PersonenInformationen
beide Lösungswege haben Ihren Sinn. Welcher für Dich welche
Auswirkungen hat muss man beim Normalisieren beachten und
dementsprechend arbeiten.
Eine Datenbank sauber aufzusetzen ist alles andere als einfach. Steht
dies jedoch einmal, dann hat man richtig Freude daran.
Viel Erfolg
Claudius
--
G4/733 QS / MacOS X 10.4de / RB 5.5.5/ Valentina 1.10.0 & 2.0.4
Homepage http://www.ClaSai.de
iChat ryhoruk
RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
|