2010-03-22 16 views
30

¿Alguien sabe o tiene enlaces a sitios web que describen detalles de cómo diseñar un esquema de base de datos para un sistema de contabilidad de doble entrada?¿Diseño de esquema de base de datos para un sistema de contabilidad de doble entrada?

Encontré un montón de artículos pero no fueron muy explicativos. Agradecería que alguien pudiera ayudarme con esto.

+0

@soden - ¿En qué parte específica de qué artículo específico desea recibir ayuda? – DVK

+0

tengo un conocimiento básico de la contabilidad de doble entrada, pero la conversión de este concepto en un esquema de base de datos ,,, bien supongo que mis jugos creativos no fluyen en este. – soden

Respuesta

27

Aquí hay un enlace que le puede ser útil:

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

Actualizado: enlaces alternativos (como uno original parece no estar funcionando):

+0

, leí este. pero en realidad no sabía cómo usarlo. Algunos ejemplos sql serían la guinda del pastel :). Por cierto, – soden

+1

tiene antecedentes contables? Pasé más de 10 años en contabilidad y vacilaría en crear un paquete de contabilidad desde cero ... el artículo vinculado anteriormente es un muy buen ejemplo de configuración de tabla y procesos contables. ¿Qué tipo de ejemplos de SQL le gustaría? – Leslie

+0

http://www.cuppadev.co.uk/dev/double-entry-accounting-in-rails/ este enlace explica las mismas cosas. pero ahora estoy seguro de cómo se supone que debo comenzar a construir el esquema de la base de datos. estoy bien versado en RDBMS y algo de contabilidad básica que aprendí por autoaprendizaje en las últimas semanas. estoy confundido. id ser amable si me pudieras ayudar en esto. – soden

6

Pensé que sería mejor que lo apuñale. Los comentarios son apreciados: voy a refinar el diseño en función de los comentarios de cualquier persona. Voy a utilizar la sintaxis T-SQL de SQL Server (2005) por ahora, pero si alguien está interesado en otros idiomas, hágamelo saber y agregaré ejemplos adicionales.

En un double-entry bookkeeping system, los elementos básicos son cuentas y transacciones. La 'teoría' básica es accounting equation: Patrimonio = Activos - Pasivos.

Combinando los elementos de la ecuación contable y dos tipos de cuentas nominales, Ingresos y gastos, la organización básica de las cuentas es simplemente un bosque de cuentas anidadas, la raíz de los (mínimos) cinco árboles es una de: Activos , Pasivos, Patrimonio, Ingresos y Gastos.

[Estoy investigando buenos diseños de SQL para las jerarquías en general ... Voy a actualizar esto con detalles más adelante.]

Un diseño interesante jerarquía se documenta en el artículo de equipo de SQL More Trees & Hierarchies in SQL.

Cada transacción consiste en cantidades de débito y crédito equilibradas. Para cada transacción, el total de las cantidades de débito y el total de las cantidades de crédito deben ser exactamente iguales. Cada monto de débito y crédito está vinculado a una cuenta.

[Más a seguir ...]

+0

Tenga en cuenta que mi respuesta es 'wiki de la comunidad'; no dude en editarlo usted mismo. –

25
  1. crear las siguientes tablas: cuenta, transacción, línea de pedido, contacto. un contacto puede ser un cliente, un proveedor o un empleado. para mantener las cosas simples, omitiremos la tabla account_type, contact_type table, etc.

  2. identifique las relaciones entre las tablas y configúrelas.

a) un contacto puede tener muchas transacciones, pero cada transacción sólo puede tener un contacto (uno-a-muchos relación)

b) una cuenta puede tener muchas de las transacciones, y una transacción puede afectar muchas cuentas; lineitem es la tabla de unión entre la tabla de transacciones y la tabla de cuentas (una relación de varios a varios)

c) una transacción puede tener muchas líneas de pedido, pero cada línea de pedido debe estar relacionada con una transacción. Tenemos el siguiente esquema (una relación de uno a muchos):

CONTACTO> --- --- TRANSACCIÓN < LINE_ITEM> --- CUENTA

3 Añadir campos correspondientes a cada mesa. Contacto (contactID, name, addr1, addr2, ciudad, estado, código postal, teléfono, fax, correo electrónico, etc.). Transacción (transactionId, fecha, memo1, Contact ID, ref, line_itemID. LINE_ITEM (line_itemID, transactionId, ACCOUNTID, cantidad, Memo2). Cuenta (ACCOUNTID, line_itemID, nombre_cuenta, ACCOUNT_TYPE).

4 Por ejemplo, para añadir una nueva transacción en la base de datos, agregue un nuevo registro en la tabla de transacciones y rellene los campos, seleccione un nombre de contacto, ingrese una fecha, etc. Luego, agregue registros secundarios nuevos al registro de transacciones principal para cada cuenta afectada. Cada registro de transacción debe tener al al menos dos registros secundarios (en un sistema de contabilidad de doble entrada). Si compré un poco de queso por $ 20 en efectivo, agregue un registro infantil al registro de la transacción, en el registro secundario, seleccione la cuenta Efectivo y registre -20.00 (negativo) en el campo de cantidad. Agregue un nuevo registro secundario, seleccione la cuenta de Comestibles y registre 20.00 (positivo) en el campo cantidad. La suma de los registros secundarios debe ser zer o (es decir, 20.00 - 20.00 = 0.00). Crea tantas transacciones nuevas como sea necesario.

5 Cree informes en la base de datos según los datos almacenados en las tablas anteriores. La consulta para proporcionar todos los registros en la base de datos organizados de modo que los registros secundarios de la línea de pedido de transacción se agrupen por cuenta, ordenados por fecha y luego por ID de transacción. Cree un campo de cálculo que proporcione el total acumulado del campo de importe en los registros line_items de la transacción y cualquier otro campo de cálculo que considere necesario. Si prefiere mostrar los importes en formato de débito/crédito, cree dos campos de cálculo en la consulta de la base de datos que tengan un campo llamado débito y otro crédito llamado. En el campo de cálculo de débito, ingrese la fórmula "si la cantidad en el campo cantidad de la tabla line_item es positiva, muestre la cantidad, de lo contrario, nulo". En el campo de cálculo de crédito, ingrese la fórmula "si el importe en el campo de importe de la tabla de artículo de línea es negativo, muestre la cantidad, de lo contrario, nulo".

Basado en este diseño de base de datos bastante simple, puede agregar continuamente más campos, tablas e informes para agregar más complejidad a su base de datos para rastrear el suyo o las finanzas de su empresa.

Cuestiones relacionadas