realbasic-nug.de
[Top] [All Lists]

Re: Arrays in Datenbank

To: REALbasic NUG German <realbasic-nug dot de at lists dot realsoftware dot com>
Subject: Re: Arrays in Datenbank
From: Claudius Sailer <Claudius at sailer-online dot de>
Date: Wed, 27 Jul 2005 19:44:29 +0200
Delivered-to: realbasic-nug dot de at lists dot realsoftware dot com
References: <3205204257 dot 408598859465 at [192 dot 168 dot 1 dot 11]> <65F66767-E15C-4280-95C6-AC2138971347 at sailer-online dot de> <3205206686 dot 411028463590 at [192 dot 168 dot 1 dot 11]> <49BD139A-3517-45FB-9642-7A0CE3C9767E at sailer-online dot de> <3205334875 dot 449135966076 at [192 dot 168 dot 1 dot 11]>
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!!! ]


<Prev in Thread] Current Thread [Next in Thread>