Разработка схемы базы данных для системы учета двойной записи? - PullRequest
46 голосов
/ 22 марта 2010

Кто-нибудь знает или имеет какие-либо ссылки на веб-сайты, описывающие детали того, как разработать схему базы данных для системы учета двойной записи ??.

Я нашел кучу статей, но они не были достаточно объяснительными. Буду признателен, если кто-то может помочь мне в этом.

Ответы [ 3 ]

45 голосов
/ 23 марта 2013

Создайте следующие таблицы

  • счет
  • сделка
  • Line_Item
  • контакт (может быть заказчиком, поставщиком или сотрудником).

Для простоты мы будем опускать таблицу account_type, contact_type и т. Д.

Определите связи между таблицами и настройте их

  • контакт может иметь много транзакций, но каждая транзакция может иметь только один контакт (отношение один ко многим)
  • учетная запись может иметь много транзакций, и одна транзакция может влиять на множество учетных записей; line_item - это таблица соединения между таблицей транзакций и таблицей счетов (отношение «многие ко многим»)
  • Транзакция может иметь много позиций, но каждая позиция должна относиться к одной транзакции.

У нас есть следующая схема (отношение один ко многим):

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

Добавить соответствующие поля в каждую таблицу

  • Контакт
    • ContactId
    • имя
    • addr1
    • addr2
    • город
    • состояние
    • молния * * тысяча пятьдесят один
    • телефон
    • факс
    • Адрес электронной почты
  • Сделка
    • TransactionID
    • дата
    • Memo1
    • ContactId
    • исх
  • Line_Item
    • line_itemID
    • TransactionID
    • ACCOUNTID
    • сумма
    • memo2
  • Счет
    • ACCOUNTID
    • account_name
    • ACCOUNT_TYPE

Создайте столько новых транзакций, сколько необходимо

Например, чтобы добавить новую транзакцию в базу данных, добавить новую запись в таблицу транзакций и заполнить поля, выбрать имя контакта, ввести дату и т. Д. Затем добавить новые дочерние записи в родительскую запись транзакции для затронут каждый аккаунт. Каждая запись транзакции должна иметь как минимум две дочерние записи (в системе учета двойной записи). Если я купил немного сыра за 20 долларов США, добавьте дочернюю запись в запись транзакции в дочерней записи, выберите Счет наличных денег и укажите -20,00 (отрицательно) в поле суммы. Добавьте новую дочернюю запись, выберите учетную запись бакалеи и запись 20,00 (положительный) в поле суммы. Сумма записей о детях должна быть равна нулю (т. Е. 20,00 - 20,00 = 0,00).

Создание отчетов в базе данных на основе данных, хранящихся в приведенных выше таблицах

Запрос на предоставление мне всех записей в базе данных, организованных таким образом, чтобы дочерние записи позиции строки транзакции были сгруппированы по учетной записи, отсортированы по дате, а затем по идентификатору транзакции. Создайте поле калькуляции, которое дает промежуточную сумму поля суммы в записях транзакции line_items и любых других полей калькуляции, которые вы считаете необходимыми. Если вы предпочитаете отображать суммы в формате дебет / кредит, создайте два поля расчета в запросе базы данных, в котором одно поле называется дебет, а другое - кредит. В поле расчета дебета введите формулу «если сумма в поле суммы из таблицы line_item положительна, показать сумму, в противном случае - ноль». В поле для расчета кредита введите формулу «если сумма в поле суммы из таблицы« Строка »является отрицательной, показать сумму, в противном случае - ноль».

Основываясь на этом довольно простом дизайне базы данных, вы можете непрерывно добавлять больше полей, таблиц и отчетов, чтобы повысить сложность вашей базы данных для отслеживания ваших или ваших финансов.

41 голосов
/ 22 марта 2010

Вот одна ссылка, которая может оказаться вам полезной:

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

Обновлено: Альтернативные ссылки (оригинальная, кажется, не работает):

9 голосов
/ 03 апреля 2011

Я подумал, что с таким же успехом могу нанести удар.Комментарии приветствуются - я буду дорабатывать дизайн, основываясь на отзывах кого-либо.Я собираюсь использовать синтаксис T-SQL для SQL Server (2005) на данный момент , но если кому-то интересны другие языки, дайте мне знать, и я добавлю дополнительные примеры.

В двойной системе учета основными элементами являются счета и транзакции.Базовой «теорией» является уравнение бухгалтерского учета : Собственный капитал = Активы - Обязательства.

Объединение элементов в уравнении бухгалтерского учета и двух типов номинальных счетов: доходы и расходы, основная организацияучетные записи - это просто лес вложенных учетных записей, корнем (как минимум) пяти деревьев является одно из: активы, обязательства, капитал, доходы и расходы.

[Я исследую хорошие схемы SQL для иерархийкак правило ... я уточню это позже.]

Один интересный проект иерархии описан в статье SQL Team Больше деревьев и иерархий в SQL .

Каждая транзакция состоит из сбалансированных дебетовых и кредитных сумм.Для каждой транзакции сумма дебетовых сумм и сумма кредитов должны быть в точности равны.Каждая сумма дебетования и кредитования привязана к одному аккаунту.

[Далее следовать ...]

...