Office: (Office 2007) Doppelte Buchführung / Datenmodell

Helfe beim Thema Doppelte Buchführung / Datenmodell in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich (ziemlicher Anfänger) suche Hilfe beim Entwurf für ein Datenmodell, mittels dessen ich eine einfache doppelte Buchführung umsetzen... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von JapanFreak, 18. April 2008.

  1. Doppelte Buchführung / Datenmodell


    Hallo zusammen,

    ich (ziemlicher Anfänger) suche Hilfe beim Entwurf für ein Datenmodell, mittels dessen ich eine einfache doppelte Buchführung umsetzen kann. Konkret habe ich zwei Fragen:

    1.
    Zunächst drängt sich eine Tabelle mit folgenden Spalten auf:

    Buchungsnummer – Datum – Soll-Konto – Soll-Betrag – Haben-Konto – Haben-Betrag

    mit der Spalte Buchungsnummer als Primärschlüssel.

    Für jede Buchung muss mindestens ein Soll- und ein Haben-Konto angesprochen werden. Es können jedoch auch Buchungen auftreten, bei der z.B. nur ein Soll-Konto und mehrere Haben-Konten angesprochen werden. Dann stoße ich hier auf ein Problem.

    Eine Alternative wäre eine Tabelle mit folgendem Aufbau:

    ID – Buchungsnummer – Datum – S/H – Konto – Betrag

    mit der Spalte ID als Primärschlüssel.

    Jeder Buchungssatz wird dann in mindestens zwei Datensätze zerlegt, wobei die Spalte S/H den Vermerk erhält, ob mit der jeweiligen Zeile ein Soll- oder Haben-Konto angesprochen wird. Dabei müsste dann (als Fehlerkontrolle) für jede Buchungsnummer die Summe der Beträge Null ergeben.

    Mich interessiert: Ist dies ein guter Start oder mache ich hier noch Denkfehler? Ich frage mal lieber am Anfang, bevor ich ein komplexeres Gefüge von Tabellen aufsetze und dann evtl. ganz fundamentale Fehler mache


    2.

    Für einzelne Buchungssätze würde ich gerne in separaten Tabellen weitere Informationen erfassen. Zum Beispiel, wenn ich Dividendenzahlungen verbuche, möchte ich in einer separaten Tabelle das ausschüttende Unternehmen, den Dividenden-Betrag pro Aktie u.ä. Informationen erfassen. Oder wenn ich Aktien-Käufe erfasse, sollen in einer weiteren Tabelle das gekaufte Unternehmen, der Kaufkurs, die Anzahl der Aktien etc. erfasst werden. Sprich, ich möchte die Tabelle mit den Buchungssätzen mit verschiedenen anderen (für einzelne Buchungssätze aber auch mit gar keiner) Tabellen verknüpfen… Ich stehe hier allerdings total auf dem Schlauch. Wie kann ich so etwas realisieren?

    Ich würde mich über eine Antwort sehr freuen!

    Vielen Dank & viele Grüße

    JapanFreak

    P.S. Die Lösung soll in ein bereits bestehendes Projekt eingebunden werden. Aus diesem Grunde hilft mir käuflich erwerbbare Buchhaltungssoftware hier nicht weiter…

    :)
     
    JapanFreak, 18. April 2008
    #1
  2. Hallo,

    wenn ich dich richtig verstanden habe, dann würde ich sagen, du bist auf dem richtigen Weg. Für mich klingt die Struktur deiner Buchungstabelle logisch. Über die Buchungsnummer werden dann die einzelnen Buchungen gruppiert und du kannst kontrollieren, ob eine Differenz zwischen Soll und Haben existiert.

    Problematisch wird es allerdings mit den zusätzlichen Funktionen. Hier fallen mir spontan zwei Möglichkeiten ein:

    1. Diese Informationen werden in einem Memo-Feld gespeichert. Der Vorteil dabei ist, dass du dieses Memofeld mit in den Buchungstabelle einbinden kannst. Nachteile sind allerdings, dass die Eingaben nicht auf Vollständigkeit geprüft werden können und auch später keine Auswertungen möglich sind.

    2. Du fügst deiner Buchungstabelle noch eine Spalte "Typ" hinzu. Über diesen Typ kannst Du dann steuern, welche Detailtabelle mit den welchen Feldern angesprochen wird. Vorteil ist hier, dass du sehr spezielle Informationen zu den Buchungssätzen hinterlegen kannst und diese übersichtlich in verschiedenen Tabellen verwaltest. Auch sind für jeden Typ dann Auswertungen der Informationen möglich. Nachteil ist, dass nicht einfach durch den Anwender ein neuer Typ erstellt werden kann, da ja dann auch immer eine neue Detailtabelle erstellt und in das Programm eingebunden werden muss. Hier ist dann immer der Programmierer gefragt. *wink.gif* Dies ist für den Anwender jedoch eher lästig.
     
    megatrash, 20. April 2008
    #2
  3. \@ megatrash, vielen Dank schon einmal für Deine Antwort! Mind. eine Rückfrage hätte ich allerdings noch...

    @ All,

    okay, ich verwende also folgende Tabellen-Struktur:

    ID - Buchungsnummer - S/H - Konto - Betrag - Buchungstyp

    mit der Spalte "ID" als Primärschlüssel. Da Memo-Felder ja keine Auswertung erlauben arbeite ich also mit einer Spalte namens Buchungstyp. Der Eintrag "Dividendenzahlung" würde also auf weitere Details in der Detailtabelle "Dividendenzahlungen" mit folgenden Spalten verweisen:

    DivNr - Ticker - Dividende pro Aktie

    wobei DivNr der Primärschlüssel wäre und Ticker das Unternehmen kennzeichnen würde, welches die Dividenden-Zahlung leistet. Nur - ich habe jetzt den Verweis auf die richtige Detailtabelle eingefügt, aber wie bekomme ich es jetzt hin, dass einer konkreten Buchungsnummer in der obigen Tabelle die richtige Zeile (bzw. DivNr) in der Tabelle Dividenenzahlungen zugewiesen wird?

    Viele Grüße
    JapanFreak
     
    JapanFreak, 20. April 2008
    #3
  4. Doppelte Buchführung / Datenmodell

    Warum eigentlich nicht? Vielleicht bietet eine Anwendung deiner Wahl eine Schnittstelle an um Daten von außen einzufügen.

    Damit hast du auch kein Problem mit den rechtlichen Vorschriften die so eine Anwendung erfüllen muss.
     
    Josef P., 20. April 2008
    #4
  5. Vielen Dank für den Hinweis; rechtliche Vorschriften sind in diesem Zusammenhang vernachlässigbar. Es geht in aller erster Linie um die Auswertung der eingegebenen Daten in einer Weise mit maximaler Flexibilität.

    Ich bin also weiterhin dankbar für Denk-Anstöße...

    Gruß
    JapanFreak
     
    JapanFreak, 20. April 2008
    #5
  6. Ok, wenn die rechtlichen Sachen nicht beachtet werden müssen, dann kann sind ja dem Tabellenlayout keine Grenzen gesetzt. *wink.gif*

    Falls der Buchungstyp die Art der Buchung für die Buchungsnummer angibt, dann könntest du diesen vielleicht mit der Buchungsnummer in eine eigene Tabelle stecken

    tabKonten
    - Konto (PK)
    - ...

    tabBuchung
    - Buchungsnummer (PK)
    - Datum
    - Buchungstyp (FK)
    - ...

    tabBuchungAufKonten
    - ID (PK)
    - Buchungsnummer (FK)
    - SH
    - Konto (FK)
    - Betrag

    Über ein Tabelle "BuchungsTyp" könntest du vielleicht auch die Konten für die Buchung einschränken bzw. die Standard-Konten vorschlagen.
     
    Josef P., 20. April 2008
    #6
  7. Hey, cool, danke, das ist schon einmal ein Ansatz, der mir sehr viel weiter hilft. Der von Dir vorgeschlagenen Tabelle tabBuchung würde ich dann noch eine weitere Spalte hinzufügen (DetailinfoNr), welche auf den Datensatz in der Detail-Tabelle verweist - richtig?

    tabBuchung
    - Buchungsnummer (PK)
    - Datum
    - Buchungstyp (FK)
    - DetailinfoNr

    z.B.
    tabDividenden
    - ID (PK)
    - Ticker
    - Betrag
    - DetailinfoNr

    oder:

    tabTrades
    - ID(PK)
    - Ticker
    - Anzahl
    - Kurs
    - DetailinfoNr

    etc.

    Nur...
    • zum einen gibt es in tabBuchung nicht zu jeder Buchungsnummer eine Detailinfo (einige Buchungen erfolgen also sozusagen unkommentiert) und
    • zum anderen sind die Detailinfos auf verschiedene Detailtabellen verteilt

    Ich sehe vermutlich hier den Wald vor lauter Bäumen nicht - ist dies eine vernünftige Lösung?

    Viele Grüße
    JapanFreak
     
    JapanFreak, 20. April 2008
    #7
  8. Doppelte Buchführung / Datenmodell

    Bei den Detail-Tabellen würde ich eher den umgekehrten Weg gehen.
    Statt in der Buchungstabelle die Detail-Kennung zu speichern, speicherst du in der Detail-Tabelle die Buchungs-Kennung. (Falls nur eine 1:0/1-Beziehung erlaubt ist, kannst du die Buchungs-Kennung in der Detail-Tabelle als PK einstellen.)

    Wenn du mehrere 1:1-Detail-Tabellen verwendest, ist aber aus Datenmodell-Sicht in jeder ein Eintrag möglich. Falls du das auch ausschließen willst, funktioniert das über eine zusätzliche Hilfstabelle zur Verteilung. (mehr dazu bei Bedarf, da das nicht ganz so einfach erklärt ist. *wink.gif*)
     
    Josef P., 20. April 2008
    #8
  9. Vielen vielen Dank. Ja, in der Tat würde ich gerne verhindern, dass für eine Buchungsnummer Einträge in mehreren Detail-Tabellen möglich sind. Wie kann ich dies verhindern - erklärst Du es mir? *Smilie
     
    JapanFreak, 20. April 2008
    #9
  10. Als Beispiel:

    Ausgangsbasis:
    tabBuchung
    - Buchungsnummer (PK)
    - ....

    tabBuchung_Detail01
    - Buchungsnummer (PK/FK)

    tabBuchung_Detail02
    - Buchungsnummer (PK/FK)

    Buchungsnummer darf nur in Detail01 oder in Detail02 vorkommen.

    Lösungsvariante 1:

    tabBuchung
    - Buchungsnummer (eindeutiger Index)
    - BuchungsDetailGruppe (hier steht dann 1, 2,...)
    - ....

    PK = Buchungsnummer + BuchungsDetailGruppe

    tabBuchung_Detail01
    - Buchungsnummer (PK)
    - Gruppe (not null, Einschränkung: nur 1 ist erlaubt)

    FK: Buchungsnummer + Gruppe

    tabBuchung_Detail02 (wie Dateil01 nur mit 2 statt 1)
    - Buchungsnummer (PK)
    - Gruppe (not null, Einschränkung: nur 2 ist erlaubt)
    FK: Buchungsnummer + Gruppe

    Lösungsvariante 2:
    BuchungsDetailGruppe in Hilfstabelle auslagern (ist etwas aufwendiger zum befüllen, das Modell gefällt mir aber besser)

    tabBuchung
    - Buchungsnummer (PK)
    - ....

    tabBuchungsDetail
    - Buchungsnummer (unique index / FK)
    - BuchungsDetailGruppe (FK) (1,2,...)
    PK = Buchungsnummer + BuchungsDetailGruppe

    tabBuchung_Detail01 und tabBuchung_Detail02 wie bei Variante 1 nur, statt dem FK auf tabBuchung einen FK auf tabBuchungsDetail.
     
    Josef P., 20. April 2008
    #10
  11. Hallo,

    nach einigem Grübeln habe ich nunmehr - denke ich - die beiden Alternativen verstanden. Indsbesondere die Lösung mit der Hilfs-Tabelle gefällt mir sehr. Vielen Dank dafür!!!

    Eine Frage dazu hätte ich allerdings noch: Es gibt auch Fälle, bei denen eine Buchung in tabBuchung_DetailXX vorkommt, die allerdings nicht zu einer Buchung in tabBuchung führt. Konkretes Beispiel: Eine Detail-Tabelle enthält Transaktionen in Aktien: Käufe, Verkäufe, aber eben auch Aktien-Splits (hier werden zusätzliche Aktien hinzugebucht, zahlungswirksam ist dieser Vorgang jedoch nicht). Da ich aus der Detail-Tabelle tabTransaktionen auch mittels einer Abfrage den jeweils aktuellen Depot-Bestand abfragen können möchte, kann ich auf diesen Eintrag nicht verzichten. --- Wie kann man dies lösen?

    Und noch eine weitere, davon los gelöste Frage:

    Wie gesagt, ich habe diese Detail-Tabelle tabTransaktionen, wo u.a. Käufe und Verkäufe von Aktien eingetragen werden. Unter anderem enthält sie also die Spalten Anzahl, GehandelterKurs, AktienTicker, Börse etc. Der Betrag, welcher dann in der Tabelle tabBuchungAufKonten gebucht wird, ergibt sich aus dieser Tabelle: Betrag = Anzahl x GehandelterKurs.
    Ich würde das jetzt so lösen, dass ich zur Eingabe der Daten ein Formular gestalte, wo ich die Daten für "Anzahl" und "GehandelterKurs" eintrage. Das Ergebnis würde dann - um Eingabefehler zu verhindern - automatisch errechnet und in die Tabelle tabBuchungAufKonten eingetragen. --- Ist das ein probater Weg oder begehe ich hier irgendwelche sträflichen Anfänger-Fehler? Kann man das eleganter lösen?

    Vielen Dank für die Hilfe soweit. Viele Grüße

    JapanFreak
     
    JapanFreak, 22. April 2008
    #11
  12. Dann haben diese Buchungen nichts in der Tabelle tabBuchung_DetailXX zu suchen.
    Aber: die tabBuchung_DetailXX könnte auch eine n:m-Tabelle zw. tabBuchung und der tabWasWeißIch sein.

    Prinzip:
    tabWasWeißIch
    - idWWI
    - ...

    tabBuchung_DetailXX
    - ID (PK)
    - Buchungsnummer (FK)
    - fiWWI (FK)

    Dann kannst du Buchungen und die anderer Tabelle getrennt führen, und wenn du sie verbinden willst, dann erstellst du einen Datensatz unter tabtabBuchung_DetailXX.

    Wenn sich der Wert für tabBuchungAufKonten automatisiert berechnen lässt, dann musst (solltest) du ihn nicht speichern, da du ihn über die Datensätze aus der Basistabelle (tabTransaktionen) jederzeit berechnen kannst.
    Ob das in deinem Fall zutrifft, weiß ich aber nicht, da ich dein Vorhaben nicht vollständig durchschaue. *wink.gif*
     
    Josef P., 22. April 2008
    #12
  13. Doppelte Buchführung / Datenmodell

    Guten Abend,

    vielleicht erläutere ich in der Tat einmal etwas detailierter, worum es mir hier im Endeffekt geht:

    Es sollen Transaktionen einer Aktien-Anlagestrategie verfolgt werden. Dafür möchte ich zum einen das Aktien-Portfolio in seiner Zusammensetzung verfolgen und analysieren können. Zum anderen soll der Stand der Kasse-Position verfolgt werden.

    Dabei gibt es Buchungen, die sich...

    1. nur auf die Kasse auswirken
    wie z.B. Zinszahlungen auf Geldkonten, Dividendenzahlungen
    2. sowohl auf die Kasse als auch die Depot-Zusammensetzung auswirken
    wie z.B. Aktien-Käufe und Verkäufe
    3. nur auf die Depot-Zusammensetzung auswirken
    Aktien-Splits (wenn sich also die Zahl der Aktien im Depot erhöht ohne das
    Geld fließt)

    Zudem müssen für (fast) jede dieser 3 Arten von Buchungen zusätzliche Informationen erfasst werden können, damit später detailierte Analysen möglich sind.

    Da ich also sowohl für jeden Zeitpunkt die aktuelle Portfolio-Zusammensetzung als auch den aktuellen Kasse-Stand bestimmen können muss, muss ich - zumindest meiner Einschätzung nach - sowohl Anzahl und Kurs für erstere und den Betrag (= Anzahl x Kurs) für letztere Auswertung erfassen.

    So, jetzt versuche ich erst einmal Josefs Vorschlag zu verstehen... *wink.gif*

    Viele Grüße
    JapanFreak
     
    JapanFreak, 22. April 2008
    #13
  14. Hallo zusammen,

    ich habe mal den jetzigen Stand (bzw. relevanten Ausschnitt) des Datenmodells grafisch dargestellt sowie zum besseren Verständnis ein paar Beispiel-Datensätze eingefügt. Macht dies soweit Sinn?

    Darf ich, jetzt wo der Anwendungszweck vielleicht etwas klarer dargestellt wurde, noch einmal eine Frage aufwerfen: In der Tabelle tabTrades werden die Daten "Anzahl" und "Kurs" erfasst, deren Produkt "Anzahl" x "Kurs" den Eintrag "Betrag" in der Tabelle tabBuchungAufKonten ergibt. Ich vermute, dass dies eine potentielle Fehlerquelle ist, aber kann man dies überhaupt anders / eleganter lösen?

    Nur zum Hintergrund: Wenn ich bei der Tabelle tabTrades die Spalte "Anzahl" gruppiert nach "Ticker" bis zu einem gewissen "Datum" aufaddiere, dann erhalte ich die aktuelle Depot-Zusammensetzung zu diesem Datum und kann mit der errechneten Spalte "Anzahl" x "Kurs" den jeweiligen Einstandswert darstellen. Ich benötige diese Detail-Angaben m.E. zwingend in dieser Tabelle?!

    Ich bedanke mich für Eure Hilfe.

    Gruß
    JapanFreak
     
    JapanFreak, 23. April 2008
    #14
  15. Und da bist du nicht der einzige der sich damit nicht auskennt *Smilie
    Geht uns sicherlich vielen so.Mir fällt es auch nicht leicht,aber ich hab' zum Glück im Web so einiges über die Definition der doppelten Buchführung erfahren können!Sind wirklich viele Tipps und Beispiele dabei,die das ganze um einiges leichter machen.Kann mann gerne mal nen Blick reinwerfen.Bin mir sicher,das es vielen hilfreich sein kann.
    Auf buchhaltungslexikon.de kann mann alle weiteren Infos finden.

    Ich hoff' das du es geschafft hasst,und Hilfe gefunden hasst,und deine Aufgabe gelöst hasst!

    Mein Vorschlag wird dir nicht viel nutzen,aber jemand anders ganz sicher,daher teile ich meinen Fund sehr gerne weiter ...

    LG
     
    Stalone77, 15. August 2018
    #15
Thema:

Doppelte Buchführung / Datenmodell

Die Seite wird geladen...
  1. Doppelte Buchführung / Datenmodell - Similar Threads - Doppelte Buchführung Datenmodell

  2. Abfrageergebnis soll keine doppelten Werte enthalten

    in Microsoft Access Hilfe
    Abfrageergebnis soll keine doppelten Werte enthalten: Ich suche nach einer Lösung für folgendes Problem. In einer Tabelle werden Abwesenheiten erfasst. Verknüpft mit einer Mitarbeitertabelle. So erhalte ich eine Übersicht welcher Mitarbeiter aus...
  3. doppelte

    in Microsoft Excel Hilfe
    doppelte: Hallo zusammen, ich habe folgendes Problem. In meiner Excel-Liste sind in Spalte E doppelte oder mehr Patienten-Nr. vorhanden, in Spalte H sind die Liegezeiten dokumentiert. Nun möchte ich in...
  4. Doppelte finden und Zellen addieren

    in Microsoft Excel Hilfe
    Doppelte finden und Zellen addieren: Erstmal Frohes neues euch allen. ich habe soviele Varrianten ausprobiert, bis jetzt hat nichts so richtig geklappt. Hoffe Ihr könnt mir bei meinem Problem Helfen. 1. Wenn in Spalte G ein Ja und...
  5. Doppelte Werte pro Tag, an anderen nicht

    in Microsoft Excel Hilfe
    Doppelte Werte pro Tag, an anderen nicht: Hallo zusammen Ich stehe vor folgender Herausforderung - nach zig Versuchen stehe ich wieder am Anfang und bitte um Hilfe. Eine Gebäude ist mit einem Scansystem ausgestattet und jeder mit...
  6. Doppelte Werte mit 2 Bedingungen finden

    in Microsoft Excel Hilfe
    Doppelte Werte mit 2 Bedingungen finden: Hi zusammen, ich beiße mir gerade die Zähne an einer wahrscheinlich einfachen Lösung aus. Ich habe 2 Tabellen mit Kundendaten. Beide Tabellen sind identisch aufgebaut. In Spalte A stehen in...
  7. Dateneingabe via Formular: Duplikate auf die gleiche ID schreiben

    in Microsoft Access Hilfe
    Dateneingabe via Formular: Duplikate auf die gleiche ID schreiben: Hey Ihr Lieben, vielleicht erklärt sich mein Problem schon durch die Überschrift *:)* Ich habe eine Formular gebastelt in denen ich verschiedene Diagnosen pro Patienten eingeben kann. Ein...
  8. Textverketten bei doppelten einträgen

    in Microsoft Excel Hilfe
    Textverketten bei doppelten einträgen: Hallo, unter 2. Mahnung habe ich unter Mahndatum folgende Formel: =WENN(A2="";"";TEXTVERKETTEN(", ";WAHR;FILTER(TEXT(Rechnung[1....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden