web-dev-qa-db-fra.com

Conception de schéma de base de données pour un système de comptabilité à double entrée?

Quelqu'un connaît-il ou a-t-il des liens vers des sites Web décrivant les détails de la conception d'un schéma de base de données pour un système de comptabilité à double entrée ??.

J'ai trouvé un tas d'articles mais non assez explicatifs. J'apprécierais que quelqu'un puisse m'aider à ce sujet.

48
soden
43
Leslie

Créez les tableaux suivants

  • compte
  • transaction
  • line_item
  • contact (peut être un client, un fournisseur ou un employé).

Pour simplifier les choses, nous laisserons de côté la table account_type, la table contact_type, etc.

Identifiez les relations entre les tables et configurez-les

  • un contact peut avoir plusieurs transactions, mais chaque transaction ne peut avoir qu'un seul contact (relation un-à-plusieurs)
  • un compte peut avoir plusieurs transactions et une transaction peut affecter plusieurs comptes; line_item est la table de jointure entre la table des transactions et la table des comptes (une relation plusieurs-à-plusieurs)
  • une transaction peut avoir plusieurs éléments de campagne, mais chaque élément de campagne doit être lié à une transaction.

Nous avons le schéma suivant (une relation un-à-plusieurs):

CONTACT ———< TRANSACTION ———< LINE_ITEM >——— ACCOUNT

Ajoutez les champs appropriés à chaque table

  • Contact
    • contactID
    • prénom
    • addr1
    • addr2
    • ville
    • etat
    • Zip *: français
    • téléphone
    • fax
    • email
  • Transaction
    • identifiant de transaction
    • rendez-vous amoureux
    • memo1
    • contactID
    • ref
  • Line_item
    • line_itemID
    • identifiant de transaction
    • identifiant de compte
    • montant
    • memo2
  • Compte
    • identifiant de compte
    • nom du compte
    • type de compte

Créez autant de nouvelles transactions que nécessaire

Par exemple, pour ajouter une nouvelle transaction dans la base de données, ajoutez un nouvel enregistrement dans la table des transactions et remplissez les champs, sélectionnez un nom de contact, entrez une date, etc. Ajoutez ensuite de nouveaux enregistrements enfants à l'enregistrement de transaction parent pour chaque compte affecté . Chaque enregistrement de transaction doit avoir au moins deux enregistrements enfants (dans un système de comptabilité à double entrée). Si j'ai acheté du fromage pour 20 $ en espèces, ajoutez un enregistrement enfant à l'enregistrement de transaction dans le dossier enfant, sélectionnez le compte Cash et enregistrez -20,00 (négatif) dans le champ du montant. Ajoutez un nouvel enregistrement enfant, sélectionnez le compte Épicerie et enregistrez 20,00 (positif) dans le champ du montant. La somme des enregistrements enfants doit être nulle (c'est-à-dire 20,00 - 20,00 = 0,00).

Créer des rapports dans la base de données sur la base des données stockées dans les tableaux ci-dessus

La requête pour me fournir tous les enregistrements de la base de données est organisée de manière à ce que les enregistrements enfants de l'élément de ligne de transaction soient regroupés par compte, triés par date, puis par ID de transaction. Créez un champ de calcul qui donne le total cumulé du champ de montant dans les enregistrements de transaction line_items et tout autre champ de calcul que vous jugez nécessaire. Si vous préférez afficher les montants au format débit/crédit, créez deux champs de calcul dans la requête de base de données, un champ appelé débit et un autre appelé crédit. Dans le champ de calcul du débit, entrez la formule "si le montant du champ montant de la table line_item est positif, affichez le montant, sinon nul". Dans le champ de calcul de crédit, entrez la formule "si le montant dans le champ de montant du tableau des postes individuels est négatif, affichez le montant, sinon nul".

Sur la base de cette conception de base de données plutôt simple, vous pouvez continuellement ajouter plus de champs, de tableaux et de rapports pour ajouter plus de complexité à votre base de données pour suivre le vôtre ou les finances de votre entreprise.

47
bkire

J'ai pensé que je pourrais aussi bien essayer. Les commentaires sont appréciés - je vais affiner la conception en fonction des commentaires de n'importe qui. Je vais utiliser la syntaxe SQL Server (2005) T-SQL pour l'instant , mais si quelqu'un s'intéresse à d'autres langues, faites-le moi savoir et je 'vais ajouter des exemples supplémentaires.

Dans un système de comptabilité à double entrée , les éléments de base sont les comptes et les transactions. La "théorie" de base est la équation comptable : capitaux propres = actifs - passifs.

Combinant les éléments de l'équation comptable et deux types de comptes nominaux, les revenus et les dépenses, l'organisation de base des comptes est simplement une forêt de comptes imbriqués, la racine des cinq arbres (minimum) étant l'un des actifs, passifs et capitaux propres , Revenus et dépenses.

[Je recherche de bonnes conceptions SQL pour les hiérarchies en général ... Je mettrai à jour cela avec des détails plus tard.]

Une conception de hiérarchie intéressante est documentée dans l'article de l'équipe SQL More Trees & Hierarchies in SQL .

Chaque transaction se compose de montants de débit et de crédit équilibrés. Pour chaque transaction, le total des montants débiteurs et le total des montants créditeurs doivent être exactement égaux. Chaque montant de débit et de crédit est lié à un seul compte.

[Plus à venir ...]

9
Kenny Evitt