2010-03-22 9 views
30

Kennt jemand oder haben Sie Links zu Websites, die Details zum Entwurf eines Datenbankschemas für ein doppeltes Buchhaltungssystem beschreiben?Datenbankschemadesign für ein doppeltes Buchführungssystem?

Ich fand eine Reihe von Artikeln, aber nicht waren sehr erklärend genug. Würde mich freuen, wenn mir jemand dabei helfen könnte.

+0

@soden - welchen spezifischen Teil von welchem ​​Artikel möchten Sie Hilfe haben? – DVK

+0

Ich habe ein grundlegendes Verständnis der doppelten Buchführung, aber das Konvertieren dieses Konzepts in ein Datenbankschema ,,,, Nun, ich glaube, meine kreative Säfte Arent fließt in diesem. – soden

Antwort

27

Hier ist ein Link, der Sie nützlich finden können:

http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html

Aktualisiert: Alternative Links (als Original scheint gebrochen zu werden):

+0

Ich habe dieses gelesen. aber wusste nicht, wie man es benutzt. Einige sql Beispiele wären Sahnehäubchen auf dem Kuchen :). thnx übrigens – soden

+1

hast du einen buchhalterischen hintergrund? Ich habe mehr als 10 Jahre im Rechnungswesen verbracht und würde zögern, ein Buchhaltungspaket von Grund auf neu zu erstellen ... der oben verlinkte Artikel ist ein sehr gutes Beispiel für Tabellenaufbau und Buchhaltungsprozesse. Welche Art von SQL-Beispielen möchten Sie? – Leslie

+0

http://www.cuppadev.co.uk/dev/double-entry-accounting-in-rails/ Dieser Link erklärt das gleiche Zeug. aber jetzt bin ich mir sicher, wie ich mit dem aufbau des datenbankschemas anfangen soll. Ich bin in RDBMS und einige grundlegende Buchhaltung, die ich in den letzten Wochen durch Selbststudium gelernt habe, gut versiert. ich bin nur verwirrt. ID sei nett, wenn Sie mir dabei helfen könnten. – soden

6

Ich dachte, ich könnte es genauso gut ertragen. Kommentare werden geschätzt - ich werde das Design basierend auf Feedback von jedem verfeinern. Ich werde SQL Server (2005) T-SQL-Syntax für jetzt verwenden, aber wenn jemand in anderen Sprachen interessiert ist, lassen Sie mich wissen, und ich werde weitere Beispiele hinzufügen.

In einem double-entry bookkeeping system sind die grundlegenden Elemente Konten und Transaktionen. Die grundlegende "Theorie" ist die accounting equation: Eigenkapital = Vermögenswerte - Verbindlichkeiten.

Bei der Kombination der Elemente in der Buchhaltungsgleichung und zwei Arten von nominalen Konten, Einnahmen und Ausgaben, ist die grundlegende Organisation der Konten einfach eine Gesamtstruktur verschachtelter Konten. Die Wurzel der (mindestens) fünf Bäume ist eine der folgenden: Assets , Passiva, Eigenkapital, Erträge und Aufwendungen.

[Ich bin die Erforschung gutes SQL-Designs für Hierarchien im Allgemeinen ... Ich werde dies später mit Einzelheiten aktualisieren.]

Ein interessanter Hierarchieentwurf wird in dem SQL-Team Artikel More Trees & Hierarchies in SQL dokumentiert.

Jede Transaktion besteht aus ausgeglichenen Soll- und Habenbeträgen. Für jede Transaktion muss die Summe der Sollbeträge und die Summe der Kreditbeträge genau gleich sein. Jeder Soll- und Habenbetrag ist an ein Konto gebunden.

[Mehr folgen ...]

+0

Beachten Sie, dass meine Antwort "Community-Wiki" lautet - bitte bearbeiten Sie sie selbst. –

25
  1. die folgenden Tabellen erstellen: Konto, Transaktion, lineitem, zu kontaktieren. Ein Kontakt kann ein Kunde, ein Lieferant oder ein Mitarbeiter sein. Um die Dinge einfach zu halten, lassen wir die Tabelle account_type, contact_type usw. aus.

  2. identifizieren Sie die Beziehungen zwischen den Tabellen und richten Sie sie ein.

a) ein Kontakt viele Transaktionen haben kann, aber jede Transaktion nur einen Ansprechpartner haben kann (one-to-many-Beziehung)

b) ein Konto viele Transaktionen haben kann, und eine Transaktion beeinflussen kann viele Konten; lineitem ist die Join-Tabelle zwischen Transaktionstabelle und Account-Tabelle (eine Viele-zu-Viele-Beziehung)

c) eine Transaktion kann viele Einzelposten haben, aber jede Einzelposten muss sich auf eine Transaktion beziehen. Wir haben das folgende Schema (eine Eins-zu-viele-Beziehung):

KONTAKT> --- --- TRANSACTION < LINE_ITEM> --- ACCOUNT

3 Fügen entsprechende Felder zu jeder Tabelle. Kontakt (contactID, name, addr1, addr2, Stadt, Bundesland, Postleitzahl, Telefon, Fax, E-Mail usw.). Transaktion (transactionID, date, memo1, contactID, ref, line_itemID, line_item (line_itemID, transactionID, accountID, betrag, memo2). Account (accountID, line_itemID, account_name, account_type)

4 Zum Beispiel um eine neue Transaktion hinzuzufügen Fügen Sie in der Datenbank einen neuen Datensatz in die Transaktionstabelle ein, füllen Sie die Felder aus, wählen Sie einen Kontaktnamen aus, geben Sie ein Datum usw. ein, und fügen Sie dem übergeordneten Transaktionsdatensatz für jedes betroffene Konto neue untergeordnete Datensätze hinzu mindestens zwei untergeordnete Datensätze (in einem System mit zwei Buchführungssystemen) Wenn ich Käse für $ 20 Bargeld gekauft habe, füge einen Kinddatensatz zum Transaktionsdatensatz hinzu, im Kinderdatensatz das Geldkonto und den Datensatz -20.00 (negativ) in der Betragsfeld Fügen Sie einen neuen Kinddatensatz hinzu, wählen Sie das Lebensmittelkonto aus, und notieren Sie 20,00 (positiv) im Feld Betrag Die Summe der untergeordneten Datensätze sollte null sein o (d. h. 20,00 bis 20,00 = 0,00). Erstellen Sie so viele neue Transaktionen wie nötig.

5 Erstellen Sie Berichte in der Datenbank basierend auf den in den obigen Tabellen gespeicherten Daten. Die Abfrage, um mir alle Datensätze in der Datenbank so zu organisieren, dass die untergeordneten Transaktionszeileneinträge nach Konto gruppiert werden, sortiert nach Datum und dann nach Transaktions-ID. Erstellen Sie ein Berechnungsfeld, das die laufende Summe des Betragsfelds in der Transaktion line_items-Datensätze und alle anderen erforderlichen Berechnungsfelder angibt. Wenn Sie Beträge im Debit/Kredit-Format anzeigen möchten, erstellen Sie zwei Berechnungsfelder in der Datenbankabfrage, wobei ein Feld als Soll und ein anderes als Guthaben bezeichnet wird. Geben Sie im Feld Lastschrift die Formel "ein, wenn der Betrag im Feld Betrag aus der Tabelle line_item positiv ist, zeigen Sie den Betrag an, andernfalls null". Geben Sie im Feld für die Gutschriftsberechnung die Formel ein: "Wenn der Betrag im Feld Betrag aus der Tabelle mit den Positionszeilen negativ ist, geben Sie den Betrag an, ansonsten Null".

Basierend auf diesem eher einfachen Datenbankdesign können Sie kontinuierlich weitere Felder, Tabellen und Berichte hinzufügen, um Ihrer Datenbank mehr Komplexität hinzuzufügen, um Ihre Finanzen oder Ihre Finanzen zu verfolgen.