Datenbank-Struktur

Datenbank-Struktur

am 04.03.2007 21:10:29 von Daniel Walz

Hallo,

habe mal eine etwas ausführlichere Frage, wie ich am besten eine
Datenbank strukturiere. Es handelt sich grob gesagt um so etwas wie eine
Trainingsdatenbank. Das heißt, es werden zum einen Personendaten
gespeichert, zum anderen Meßwerte zu verschiedenen Zeitpunkten. Dabei
werden für jede Person unterschiedliche Tests benutzt, also z.B. für
eine Person 100m-Zeit, Sprungweite und Sprunghöhe, für eine andere
Person Zeiten für 400m und 100m etc. Das ganze sieht also etwas so aus:

Person A:
Name, Geb.-Datum, etc.
100m:
01.01.07 13,6s
08.01.07 12,9s
12.01.07 13,2s
Hochsprung:
01.01.07 1,54m
08.01.07 1,36m
Weitsprung:
08.01.07 3,67m
12.01.07 3,23m

Person B:
Name, Geb.-Datum, etc.
100m:
04.02.07 14,6s
09.02.07 13,8s
400m:
...


Wie kann man denn so eine Datensammlung am besten abbilden? Also
wieviele/welche Tabellen, welche Form von Datensätzen, wie verknüpfen?
Ich bin mir momentan nicht mal sicher, ob sich eine Datenbank wie MySQL
überhaupt für so was eignet...

Gruß
Daniel

Re: Datenbank-Struktur

am 05.03.2007 07:08:43 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Datenbank-Struktur

am 06.03.2007 17:47:30 von Daniel Walz

Andreas Kretschmer schrieb am 05.03.2007 07:08:
> begin Daniel Walz schrieb:
>> Wie kann man denn so eine Datensammlung am besten abbilden? Also
>
> Grob gesagt, 3 Tabellen: eine für die Personen (id, Name, Geburtstag etc.),
> eine für die Sportarten (id, Bezeichnung, Einheit der Messung etc.) und eine
> für die Messungen selbst (id, id für Sportler, id für Sportart,
> Timestamp der Messung, Meßwert)
>

Danke erstmal für das Licht im Dunkel. Leider habe ich inzwischen
festgestellt, dass das ganze doch etwas komplizierter ist:

Letztlich soll das ganze nämlich nicht für Trainings-, sondern für
Therapiezwecke dienen, so dass ich noch mehr Kategorien brauche.

Vom Vorgehen her:
Ich habe eine Person/Patienten, für diesen definiere ich zunächst die
Probleme/Mediatoren ("Beinkraft", "Ausdauer", ...).
Im folgenden werden mehrere Therapiezyklen durchlaufen.
Für jeden Therapiezyklus wird eines der Probleme als Zielproblem
genommen und einigen anderen wird eine Trainingstechnik/Intervention
("Koordination", "Kraft", "Stabilisierung") zugewiesen, die zugleich mit
einem Therapiebereich ("Physiotherapie", "Ergotherapie"; "Logopädie")
verknüpft ist. Schließlich werden für einige der Interventionen
Tests/Messungen definiert, die am Anfang und Ende eines jeden
Therapiezyklus durchgeführt werden

Jetzt frage ich mich, wie ich die Tabellen am besten verknüpfe:

Tabelle Patient
ID, Schlüssel, Name, Vorname, Geb.-Dat.

Tabelle Mediator (z.B. "Schwäche rechtes Bein", "Schluckstörung")
ID, Code, Text

Tabelle Intervention (z.B. "Krafttraining", "Schlucktraining")
ID, Text

Tabelle Therapiebereich (z.B. "Physiotherapie", "Logopädie")
ID, Text

Tabelle Test (z.B. "Kraft rechtes Bein", "Gehstrecke")
ID, Name, Einheit

Tabelle Messung (z.B. "20kps", "400m")
ID, Wert, Datum, Patient_ID


Die einfache Lösung:

Tabelle Therapiezyklus
ID, Zyklus-Nr, Patienten_ID, Mediatoren_ID, Intervention_ID,
Therapiebereich_ID, Test_ID, Messung_ID, BOOL Ziel

Nachteil:
Ich bekomme viele "leere" IDs, weil ich z.B. nicht für alle
Interventionen Tests habe und weil ich nicht in jedem Zyklus jeden
Mediator auch therapeutisch angehe.


Alternative Idee:
Selektive und sukzessive 1:n Verknüpfung der Tabellen:

Tabelle Patient_Mediator
ID, Patient_ID, Mediator_ID, BOOL Ziel

Tabelle Mediator_Intervetion
ID, Patient_Mediator_ID, Intervention_ID

Tabelle Intervention_Therapiebereich
ID, Mediator_Intervetion_ID, Therapiebereich_ID

Tabelle Intervention_Test
ID, Mediator_Intervetion_ID, Test_ID

Tabelle Messung (geändert):
ID, Intervention_Text_ID, Wert, Datum


Das erscheint mir irgendwie passender, allerdings bin ich mir nicht
sicher, wieviele Hilfs-Tabellen ich tatsächlich brauche und ob ich die
später alle vernünftig verknüpfen kann. Ist diese sukzessive Verknüpfung
sinnvoll, oder sollten lieber alle o.g. Ausgangstabellen für sich
miteinander verknüpft werden?

Hoffe, ich habe mich irgendwie halbwegs verständlich ausgedrückt...

Gruß
Daniel