Autor Beitrag
firefuzy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Fr 28.12.07 13:11 
Hallo

Ich versuche gerade ein Verwaltungsprogramm für Kleintierpraxen zu programmieren. Bisher habe ich die Daten einfach in .txt Dateien gespeichert. Auf diese Art dauert es aber ewig bis die Datenbank geladen ist, oder die Datenbnak zu durchsuchen. Ich habe jetzt SQLite heruntergeladen und möchte damit die Daten speichern. Mein Problem ist das ich bei den Textdateien einfach immer eine Zeile hinzufügen konnte und so n Medikamente und die dazugehörige Anzahl der Medikmenteinheit in eine Leistung speichern konnte:

Eine Leistung:
...
6 Zeilen Daten zur Leistung
...
Bezeichnung des 1. Medikaments
Anzahl des 1. Medikaments
...
Bezeichnung des n. Medikaments
Anzahl des n. Medikaments

Bei SQLite sind aber die Tabellenspalten auf eine bstimmte Anzahl festgelegt. Ich habe leider keine Ahnung wie ich das in einer Tabelle speichern soll. :(
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 28.12.07 13:17 
In einer eigenen Tabelle, welche die andere referenziert.

_________________
Markus Kinzler.
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Fr 28.12.07 13:27 
Also ich habe eine Tabelle mit den Medikamenten und eine mit den Leistungen.
Aber wie referenziere ich das jetzt???
Es können ja mehrere Medikamente einer Leistung zugeordnet werden und ein Medikmant kann auch bei verschiedenen Leistungen auftauchen... und die Anzahl muss ja auch noch gespeichert werden und ist bei jeder Leistung<-Medikament - Beziehung anders.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 28.12.07 13:34 
Tabelle Kunde:
ID Name ...

Tabelle Medikament:
ID Bezeichnung ...

Tabelle Leistungen:
ID Kunde Datum ...

Tabelle Leistungspos:
ID Medikament Anzahl ...

_________________
Markus Kinzler.
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.01.08 04:01 
Indem du ein Datenmodel aufbaust und dann deine Daten entsprechend abfüllst. Wiederholungsstrukturen solltest du in eigene Tabellen auslagern.

Stichworte: ERM, Datenmodell
Einloggen, um Attachments anzusehen!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 04.01.08 10:38 
Bisserl Klugscheiss am Morgen....

Stichwort 'Nomenklatur'. Wieso sollen die PK-Spalten in allen Tabellen immer nur ID heißen? Ich halte das für unübersichtlich. Die Struktur ist ja ok, aber vielleicht sollte die PK-Spalte des Kunden nicht 'ID' sondern 'KundenID' oder 'KdID' oder so heißen, die der Medikamente 'MedikamentID' etc.

Wir verwenden 2-Buchstabige Prefixe, die jedes Feld (mit Ausnahme der Foreign Keys) einer Tabelle eindeutig bezeichnen. Foreign Keys heißen so, wie die referenzierende Spalte. Somit sind -zumindest konzeptionell- auch Natural Joins möglich. Und Übersichtlicher ist es auch. Finde ich.

_________________
Na denn, dann. Bis dann, denn.
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Mi 09.01.08 17:27 
Tut mir Leid das ich erst jetzt wieder poste.
Das Schaubild erm.jpg ist ja schon einmal ein Anfang. :)
Das Problem ist jetzt, dass ich einer Leistung auch mehrere Meds hinzufügen können muss. Bei einer Texdatei kann man dazu einfach eine Zeile anfügen, bei DBs kann ich aber nicht eine Medkament2ID und Anzahl2 Spalte hinzufügen.
Wie kann man das lösen?

PS: mkinzler mit deinem Posting konnte ich mal gar nichts anfangen... ein paar Erläuterungen wären nicht schlecht...
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 09.01.08 19:22 
Mein Posting beschreibt genau, dein Problem.
Es zeigt das Datenbankschema auf.
Mehrere Medikamente pro Leistung löst man wiederum mit einer Zwischenrelation (Tabelle Leistungspos), welche die Zuordnung zwischen Leistung und Medikament erzeugt. In dieser existieren dann soviele Einträge wie Medikamente pro Leistung.

Beispiel:
Tabelle Kunde:

ID Name ...
1 Maier
2 Müller

Tabelle Medikament:
ID Bezeichnung ...
1 ***
2 Aspririn

Tabelle Leistungen:
ID Kunde Datum ...
1 1 01.01.2008

Tabelle Leistungspos:
ID Leistung Medikament Anzahl ...
1 1 1 10
2 1 2 1

Bedeutet, dass Kunde Maier am 01.01.2008 eine Leistung erhalten hat, die 10 Einheiten *** und eine Einheit Aspirin umfasst hat.

_________________
Markus Kinzler.
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Fr 11.01.08 22:43 
OK vielen Dank an alle die hier gepostet haben.
Jetzt habe ich verstanden wie ich das Problem lösen kann. :D