PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank mit binären Bäumen oder anders selbst schreiben


asm
04.10.2003, 11:45
Hallo!
Ich möchte gerne eine Datenbank für ein Visual Basic Programm /*Sprache egal*/ selber schreiben [bekomme dafür einen Pauschallohn (100€)] und darf ohne Lehrkosten bei denen Lernen (is also schon was!).
Die soll nämlich laut der Auftragsfirma nicht mit "meisockel" oder "fox" oder "exzess" sein, sondern textbasiert = also mit notepad einsehbar (außer wenigen einfachen Steuerzeichen).
Ich habe schon versucht, denen einzureden, daß man besser mysql oder was anderes nimmt (auch da müßte ich mich erst einarbeiten) - aber die stellten daraufhin nur meinen "Auftrag" infrage. :mauer: War also keine Lösung.

Darin sollen Rezepte (Name, Anschrift, Datum, verordnete Wirkstoffe) gespeichert werden.
Später wird nach Patientennamen gesucht und es sollen die bereits verordneten Rezepte ausgegeben werden, damit sie
verändert /angepaßt und dann ausgedruckt werden können.
Also man muß nur nach PatNamen suchen können. Umgekehrt wäre nicht erfoderlich (mhh, aber für ne Statistik als BonusFunktion bestimmt auch gut, aber weiter: )

Pro Jahr werden etwa 500 Patienten behandelt. D.h. es befinden sich in etwa so viele in der Datenbank und ein paar neue sind hinzugekommen oder fallen weg ("ältere Datnsätze") (bereits austherapiert,etc. [die wollte ich dann mit nem externen Programm entrümpeln = ist aber ne andere Sache])

Nun wollte ich, daß ich nicht ein Feld mit +/-500 Einträgen dimensionieren und alles in den Speicher laden muß, sondern die Datenbank durchforsten kann.
Daß etwa der Name einen Positionsverweis auf die Rezeptdaten beinhaltet. (nicht weiter schwer)

Da kam mir die Idee, als ich ein altes Buch über Turbobasic 1.0 (Data Becker 1987) TurboBasicBuch (http://kirke.hbz-nrw.de/dcb/447/Alle_000/Buecher_11/in_NRW_46/000042376.html)
sowie ein Buch: Programmierkurs TurboPascal 7.0 (©1994-98)TurboPAscBuch7 (http://www1.digibib-nrw.de/dcb/Alle_042/Buecher_41/in_NRW_00/009219632.html) im Kapitel über Datenbanken durchlas und dabei auf die Technik der Binären Bäume stieß.
(im letzteren (pascal) steht es ausfürhlicher)
Diese Technik sollte es ermöglichen, die Datenbank klein und schnell durchforstbar zu machen, weil man für die Namensuche nur noch die 1/2 der Zeit benötigt (im günstigsten Fall).
Das Programm legt bei Bedarf bei jedem Aufruf eine - nicht zwingend notwendig bereits vorhandene - Indexdatei an, die dann durchsucht werden kann.
Das klingt praktisch (bei Beschädigung der idx-Datei z.B.)
Doch leider arbeitet dieses Pasc-Programm (quellcode steht im Buch, kein Source auf DISK {©1994-98} oder im Netz => ich müßte alles fehlerfrei abtippen) mit Pointern^.variablen und ist für mich etwas schwer zu lesen.
mit webcam fotogr (http://membres.lycos.fr/janschmidt/pascbook.htm)

Weil ich nicht erkennen kann, daß die Namensvariable irgendwie lexikalisch für die Einordnung (ob links, rechts = also alphabet höher oder niedriger) untersucht wird.
Weiß jemand, wie man mit den binären Bäumen eine solche Datenbank erstellt?
Oder anders? (nur nicht mysockel usw :p )

(grober) Pseudocode würde glaub ich schon reichen
(habt Euch schon genug Arbeit mit dem Durchlesen gemacht)

Vielen Dank


Jan Krüger
05.10.2003, 21:16
Hmm, wo genau liegt das Problem? Im Algorithmen-Forum gibt es massig Links zu Seiten, die verschiedene Suchverfahren (Hashing, Suchbäume etc. pp.) beschreiben und analysieren.

Nebenbei bemerkt ist die Laufzeit einer Binärbaumsuche deutlich niedriger als 1/2 einer linearen Suche, nämlich durchschnittlich ld(n) bei n Elementen (wenn man balancierte Bäume benutzt, kommt man allerdings noch viel öfter an diesen Durchschnittswert als bei einfachen Binärbaumen).

Und wenn die Durchschnittsgröße der Datenbank sowieso nur 500 Elemente beträgt, kannst du eigentlich auch alles in den Speicher laden und dann jeweils linear suchen lassen. Die Leute haben ja anscheinend sowieso keine Ahnung von Performance bei Datenbanken, dann wird sie die kurze Wartezeit sicher nicht stören. Ich kenne jemand, der ein solches Programm schon erfolgreich im Produktionsbetrieb eingesetzt hat.

Scavi
10.10.2003, 12:33
Wenn die Datei einsehbar sein soll, dann guck dir mal das CSV Dateiformat an (nur durch ; getrennte Daten). Ausserdem kannste das ins Excel laden und deine Chefs können auch da mal drin rumeditieren ;)