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: Stefan Mettenbrink <S dot Metti at gmx dot de>
Date: Wed, 27 Jul 2005 21:19:40 +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]> <D618D81F-BE44-4BD6-9A88-4B5F2E6B358B at sailer-online dot de>
Claudius Sailer wrote:

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.

Ja, soweit hatte ich das schon raus.

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

Ich denke, das wird mir auch noch einige Male passieren. Schon allein aus dem Grund, weil ich noch nicht alles weiß.

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

Ja, hatte ich so bereits angelegt.

Tabelle: Paare
ID (eineindeutig)
ID_Person1
ID_Person2
weitere Paarinformationen

Aha.
Das hatte ich bisher anders. Kommt aber dem Standard Austauschformat sehr nahe. Wäre also sinnvoll. Die Kinder kämen noch hinzu und würde dann als Familie laufen.

Tabelle: Ereignisse
ID (eineindeutig)
ID_Person
Datum
Ereignis etc

Ist klar.

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'

Gut, ich würde auf die Person wieder über eine ID zugreifen. Namen sind mehrfach möglich.

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.

Ja, die habe ich bereits kurz mal ausprobiert. Ich denke das habe ich im Groben verstanden.

Du kannst aber auch folgende tabellen anlegen

Ich glaube, die erste Variante entspricht (deutlich komplexer und mit von mehr Tabellen) dem, was der Gedcomstandard (das Austauschformat) schon vorgibt.
Dann würde eine Im-/Exporroutine auch schneller sein.

Eine Datenbank sauber aufzusetzen ist alles andere als einfach. Steht dies jedoch einmal, dann hat man richtig Freude daran.

Ja, ich denke, da sollte ich mir genügend Zeit nehmen und auch auf das Zusammenspiel mit Gedcom achten. Erst mal werde ich die grudlegenden Sachen in Klein ausprobieren und dann die Struktur durchdenken. Danach kann das dann eingebaut werden. Das sieht nach sehr viel Arbeit aus.

Viel Erfolg

Danke. Besonders für die ausführlichen Erklärungen.

Was ich noch nicht beim ersten Durchlesen Verstanden habe ist der Button "Indexes ..." in der Dialogbox zum Erstellen der Tabellen. Soweit ich das sehe, werden damit Einträge vorsortiert, damit bei einem Aufruf schneller darauf zugegriffen werden kann. Somit sollte ich nur die hauptsächlichen Suchfelder damit belegen.

Habe ich das richtig verstanden?

MfG, Metti.

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