Entwickler-Ecke
Datenbanken - Datenbankdesign für eine Rechnungsverwaltung
firefuzy - Fr 28.12.07 13:11
Titel: Datenbankdesign für eine Rechnungsverwaltung
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 - Fr 28.12.07 13:17
In einer eigenen Tabelle, welche die andere referenziert.
firefuzy - 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 - Fr 28.12.07 13:34
Tabelle Kunde:
ID Name ...
Tabelle Medikament:
ID Bezeichnung ...
Tabelle Leistungen:
ID Kunde Datum ...
Tabelle Leistungspos:
ID Medikament Anzahl ...
Delete - 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
alzaimar - 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.
firefuzy - 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 - 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.
firefuzy - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!