2010-03-22 12 views
30

Qualcuno conosce o dispone di collegamenti a siti Web che descrivono dettagli su come progettare uno schema di database per un sistema di contabilità a partita doppia ??.Progettazione dello schema del database per un sistema di contabilità a partita doppia?

Ho trovato un sacco di articoli ma non erano abbastanza esplicativi. Lo apprezzerei se qualcuno potesse aiutarmi in questo.

+0

@soden: quale parte specifica di quale articolo specifico desideri avere? – DVK

+0

io ho una conoscenza di base del mantenimento del libro a doppia entrata, ma la conversione di questo concetto in uno schema di database ", beh, credo che i miei succhi creativi non scorrano in questo. – soden

risposta

27

Ecco un collegamento che si possono trovare utili:

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

Aggiornato: collegamenti alternativi (come quella originale sembra essere rotto):

+0

ho letto questo. ma in realtà non sapeva come usarlo. Alcuni esempi sql sarebbero la ciliegina sulla torta :). comunque dal modo in cui – soden

+1

hai uno sfondo di contabilità? Ho trascorso 10 anni in contabilità e avrei esitato a creare un pacchetto contabile da zero ... l'articolo sopra riportato è un ottimo esempio di impostazione della tabella e processi contabili. Che tipo di esempi SQL ti piacerebbe? – Leslie

+0

http://www.cuppadev.co.uk/dev/double-entry-accounting-in-rails/ questo link spiega la stessa roba. ma ora sono sicuro di come dovrei iniziare a costruire lo schema del database. io sono esperto in RDBMS e alcune contabilità di base che ho imparato da autodidatta nelle ultime settimane. sono solo confuso. id essere gentile se potessi aiutarmi su questo. – soden

6

Ho pensato che potrei anche provarci. I commenti sono apprezzati - perfezionerò il design sulla base del feedback di chiunque. Userò la sintassi T-SQL di SQL Server (2005) per ora, ma se qualcuno è interessato ad altre lingue, fammelo sapere e aggiungerò altri esempi.

In un double-entry bookkeeping system, gli elementi di base sono account e transazioni. La "teoria" di base è accounting equation: Equity = Assets - Liabilities.

Combinando gli elementi nell'equazione contabile e due tipi di conti nominali, entrate e uscite, l'organizzazione di base dei conti è semplicemente una foresta di conti nidificati, la radice dei (cinque) minimi alberi è uno di: Attività , Passività, Equità, Entrate e Spese.

[Sono alla ricerca buoni disegni di SQL per le gerarchie in generale ... aggiornerò questo con specifiche più tardi.]

Un disegno gerarchia interessante è documentato nell'articolo SQL squadra More Trees & Hierarchies in SQL.

Ogni transazione è costituita da addebiti e importi di credito bilanciati. Per ogni transazione, il totale degli importi di debito e il totale degli importi del credito devono essere esattamente uguali. Ogni importo di debito e credito è legato a un account.

[Più di seguire ...]

+0

Nota che la mia risposta è "wiki della comunità". Sentiti libero di modificarlo da solo. –

25
  1. creare le seguenti tabelle: conto, transazione, LineItem, contatto. un contatto può essere un cliente, un fornitore o un dipendente. per semplificare le cose, tralasciamo la tabella account_type, la tabella contact_type, ecc.

  2. identificare le relazioni tra le tabelle e impostarle.

a) un contatto può avere molte transazioni, ma ogni transazione può avere un solo contatto (uno-a-molti)

b) un account può avere molte transazioni, e una transazione può influenzare molti account; lineitem è la tabella di join tra la tabella delle transazioni e la tabella degli account (una relazione molti-a-molti)

c) una transazione può avere molti elementi pubblicitari, ma ogni elemento deve riguardare una transazione. Abbiamo il seguente schema (una relazione uno-a-molti):

CONTATTO> --- --- TRANSAZIONE < LINE_ITEM> --- CONTO

3 Aggiungi campi appropriati ad ogni tavolo. Contatto (contactID, nome, addr1, addr2, città, stato, zip, telefono, fax, e-mail, ecc.). Transaction (transactionID, data, memo1, contactID, ref, line_itemID. LINE_ITEM (line_itemID, transactionID, accountid, importo, Memo2). Account (accountid, line_itemID, account_name, ACCOUNT_TYPE).

4 Ad esempio, per aggiungere una nuova transazione nel database, aggiungere un nuovo record nella tabella delle transazioni e compilare i campi, selezionare un nome di contatto, inserire una data, ecc. Quindi aggiungere nuovi record figlio al record di transazione padre per ciascun account interessato. almeno due record figlio (in un sistema di contabilità a partita doppia) .Se ho acquistato del formaggio per $ 20 in contanti, aggiungi un record figlio al record della transazione, Nel record figlio, seleziona il conto in contanti e registra -20.00 (negativo) nel campo Importo Aggiungere un nuovo record figlio, selezionare l'account Groceries e registrare 20,00 (positivo) nel campo importo. La somma dei record figlio deve essere zer o (cioè, 20,00 - 20,00 = 0,00). Crea il numero di nuove transazioni necessarie.

5 Creare report nel database in base ai dati memorizzati nelle tabelle precedenti. La query per darmi tutti i record nel database organizzati in modo che i record figlio dell'elemento pubblicitario della transazione siano raggruppati per account, ordinati per data e quindi per ID transazione. Creare un campo di calcolo che fornisca il totale parziale del campo importo nei record line_items della transazione e qualsiasi altro campo di calcolo che si ritiene necessario. Se si preferisce mostrare gli importi in formato debito/credito, creare due campi di calcolo nella query del database hanno un campo chiamato debito e un altro chiamato credito. Nel campo del calcolo del debito, inserisci la formula "se l'importo nel campo quantità dalla tabella line_item è positivo, mostra l'importo, altrimenti null". Nel campo Calcolo del credito, inserisci la formula "se l'importo nel campo quantità dalla tabella riga-articolo è negativo, mostra l'importo, altrimenti nulla".

Sulla base di questa struttura di database piuttosto semplice, è possibile aggiungere continuamente più campi, tabelle e report per aggiungere più complessità al database per tenere traccia delle proprie finanze aziendali o aziendali.

Problemi correlati