PDA

Vollständige Version anzeigen : Baumstruktur, aber wie?


LuckyB
05.10.2001, 12:17
Hallo Leute,

ich hab hier ein kleines Problem.
Ich hab hier eine Haupttabelle(H-TBL), die Operationsdaten speichert. Ein Datensatz kann bis zu n einzelne Operationen enthalten. Die Bezeichnungen der Operationen liegen in einer Baumstruktur vor. Die Daten will ich in einer zweiten Tabelle(TBL-OP) ablegen, um nur die Listeneinträge zur Auswahl zu haben. Um jetzt eine n zu n Relation zu erzeugen brauche ich ja eine dritte Tabelle(NN-TBL). In der ich dann die Primärschlüssel der H-TBL und TBL-OP verknüpfe. Ich hoffe, dass ist soweit OK.
Jetzt kommt das Problem. Ich möchte später die Anzahl der durchgeführten OPs aufschlüsseln können. (z.B. Anzahl:Gesamt, Anzahl: Große, Anzahl: Kleine, Anzahl: Kleine am Auge, Anzahl: Große am Kopf usw……)
Dazu müsste ich ja im PS der TBL-OP irgendwie die Hierarchie unterbringen. Mir ist da was Eingefallen:

1.0.0.0 Kleine OP
1.1.0.0 Kleine OP am Auge
1.1.1.0 Kleine OP am linken Auge
1.1.2.0 Kleine OP am rechten Auge
1.1.2.1 Kleine OP am rechten Auge (z.B. grauer Star)
2.0.0.0.Große OP
2.1.0.0 Große OP am Auge

Jetzt könnte ich doch später abfragen: Zähle alle, die eine 1 an der ersten Stelle haben und müsste so die Gesamtanzahl der Kleinen OPs bekommen. Und mit: Zähle alle mit 1.1.X.X die Anzahl der kleinen OPs am Auge. usw…, oder?

Ist das überhaupt der richtige Ansatz und lege ich besser für jede Ziffer ein eigenes Feld an (Zur leichteren Abfrage, aber bei der NN-TBL muß ich dann auch alle Felder eintragen(4 Primärschlüssel).

Das schönste wär dann noch, wenn man sich im Formular hierarchisch durchhangeln könnte. Also erst nur groß und klein zur Auswahl, und bei einer Auswahl die nächste Stufe erscheint (OP am Auge/OP am Kopf usw…)

Ich hoffe das war jetzt nicht zuviel und es hat einer eine gute Idee.

Danke im Voraus,

Lucky

erwin
05.10.2001, 18:53
Also du solltest noch etwas an deiner Struktur arbeiten - da ich kein Chirurg bin,kann ich nur allgemeine Tipps geben:

Wenn du eine FIXE Hierarchie hast, dann sollte diese auch in mehreren hierarchisch verknüpften Tab. abgebildet werden zB.:

- Operation
-- OP am Auge
--- grauer Star
--- Kurzsichtigkeit
...

allerdings passt dein Beispiel da insofene nicht, als es semantisch Dinge in eine Hierarchie pappt, welche nmM. keine sind:
ob eine OP gross oder klein ist, hat ja wohl nichts mit dem Körperteil zu tun.

Da ich deine Problemstellung aber nicht im detail kenne, kann ich dir nur generell den Tipp geben, die Realität "sauber" in ein relationales DB-Design zu abstrahieren - und das scheint mir (so wie du es vorhast) nicht der Fall zu sein.

Ich vermute eher, dass man dein Problem am "saubersten" mit einer flachen Hierarchie (Tab. Operationsart) sowie N:1 verknüpften weiteren klassifizierenden Auswahltabellen gelöst bekommt (Tab. OP-Schwere - klein,mittel...; Tab. OP-Körperteil - Auge, Bein, Arm ....), wobei die ID's der klassifizierenden Tab. jeweils einen Fremdschlüssel i.d. Tab.Operationsart darstellen.

so long erwin...

LuckyB
08.10.2001, 11:49
Hallo an alle und erstmal Danke an Erwin für die Mühe…..

Also du solltest noch etwas an deiner Struktur arbeiten - da ich kein Chirurg bin,kann ich nur allgemeine Tipps geben:

…das Chirurgen-Problem hab ich eigentlich auch ;-)

Wenn du eine FIXE Hierarchie hast, dann sollte diese auch in mehreren hierarchisch verknüpften Tab. abgebildet werden zB.:
- Operation
-- OP am Auge
--- grauer Star
--- Kurzsichtigkeit
...
allerdings passt dein Beispiel da insofene nicht, als es semantisch Dinge in eine Hierarchie pappt, welche nmM. keine sind:
ob eine OP gross oder klein ist, hat ja wohl nichts mit dem Körperteil zu tun.

Ja, das stimmt schon, aber ich wollte die einzelnen Eingriffe dann halt mehrfach (jeweils unter klein/mittel/groß) aufführen. Es handelt sich dabei auch um verschiedene Eingriffe. Ich versuche mal ein allgemeineres Beispiel zu kreieren…..bzzz…


1.0.0.0.0 Landfahrzeuge
-1.1.0.0.0 Motorgetriebene
--1.1.1.0.0 2 Räder
---1.1.1.1.0 Motorrad
----1.1.1.1.1 <font color=red>BMW 1100</font color=red>
----1.1.1.1.2 <font color=red>Honda 850</font color=red>
--1.1.2.0.0 4 Räder
---1.1.2.1.0 PKW
----1.1.2.1.1 <font color=red>VW Käfer</font color=red>
----1.1.2.1.2 <font color=red>VW Golf</font color=red>
----1.1.2.1.3 <font color=red>Mercedes C-Klasse</font color=red>
---1.1.2.2.0 Lieferwagen
----1.1.2.2.1 <font color=red>Mercedes Sprinter</font color=red>
----1.1.2.2.2 <font color=red>Ford Transit</font color=red>
-1.2.0.0.0 Sonstige Antriebe
--1.2.1.0.0 2 Räder
---1.2.1.1.0 Fahrrad
----1.2.1.1.1 <font color=red>Kettler Alu 28er</font color=red>
---1.2.1.2.0 Tretroller
----1.2.1.2.1 <font color=red>Holzroller</font color=red>
--1.2.2.0.0 4 Räder
---1.2.2.1.0 Kutschen
----1.2.2.1.1 <font color=red>4Personen Pferdekutsche</font color=red>

2.0.0.0.0 Wasserfahrzeuge

3.0.0.0.0 Luftfahrzeuge

Also die Hauptgruppen sind dann Landfahrzeuge/WasserFZ/LuftFZ. Unter LandFZ finde ich dann erstmal Motorgetriebene und Sonstige Antriebe usw….
Die eigentlichen Daten, die ich aus im Formular auswählen möchte, findet man erst in der untersten Stufe (rot dargestellt).
Anhand des Schlüssels 1.1.2.1.2 kann man direkt die Angehörigkeit entnehmen (LandFZ / Motorgetriebene / 4 Räder / PKW / VW Golf.
Es ist halt wichtig, dass man von jedem Knoten die Anzahl in seinen Kindern enthaltenen Daten abfragen kann. Also z.B. Anzahl LandFZ / Motorgetriebene: ist gleich 7 oder
Anzahl LandFZ / Motorgetriebene/2 Räder: ist gleich 2


Ich vermute eher, dass man dein Problem am "saubersten" mit einer flachen Hierarchie (Tab. Operationsart) sowie N:1 verknüpften weiteren klassifizierenden Auswahltabellen gelöst bekommt (Tab. OP-Schwere - klein,mittel...; Tab. OP-Körperteil - Auge, Bein, Arm ....), wobei die ID's der klassifizierenden Tab. jeweils einen Fremdschlüssel i.d. Tab.Operationsart darstellen.

Hm, entweder bin ich noch zu müde……

Gruß, Lucky

LuckyB
15.10.2001, 10:44
Hat denn keiner eine Idee?

Lucky