Проектирование учетных систем
От: Willi  
Дата: 14.02.02 18:09
Оценка:
Привет, всем.

Посоветуйте, пожалуйста, книги (можно на английском), сайты в нете, вообще любую инфу по проектированию учетных ситем.

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

В общем интересует любая теоретическая и практическая информация связанная с автоматизацией финансового учета.

Заранее благодарен.
\/\/i||i
Re: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 14.02.02 19:54
Оценка: 10 (1)
Здравствуйте Willi, Вы писали:

W>Привет, всем.


W>Посоветуйте, пожалуйста, книги (можно на английском), сайты в нете, вообще любую инфу по проектированию учетных ситем.


W>Мы тут пытаемся спроектировать очередную учетную систему (с использованием двойной записи), хочется сделать ее максимально гибкой. Очень большие трудности вызывает отражение двойной записи в реляционной модели.


А надо? Двойная запись вообще-то, если ее пытаться воспроизвести в ERD, создаст нечто вроде денормализации с дополнительным ограничением целостности, то есть, от чего стоит избавляться.

W>В общем интересует любая теоретическая и практическая информация связанная с автоматизацией финансового учета.


А Баркера вы уже читали?

Он основоположник, один из авторов метода описания сущность-связь. В книжках его я видел разные шаблонные подходы к созданию реляционных моделей (можно сказать — паттерны). Книжки его я видел на тырнете в электронном виде, но с ходу сейчас найти не могу.
GS
Re[2]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 14.02.02 19:55
Оценка:
Здравствуйте George_Seryakov, мы писали:

GS>А Баркера вы уже читали?


GS>Он основоположник, один из авторов метода описания сущность-связь. В книжках его я видел разные шаблонные подходы к созданию реляционных моделей (можно сказать — паттерны). Книжки его я видел на тырнете в электронном виде, но с ходу сейчас найти не могу.


ftp://ftp.opennet.ru/pub/docs/casemeth.zip
GS
Re[3]: Проектирование учетных систем
От: Willi  
Дата: 15.02.02 10:38
Оценка:
Здравствуйте George_Seryakov, Вы писали:

GS>Здравствуйте George_Seryakov, мы писали:


GS>>А Баркера вы уже читали?


GS>>Он основоположник, один из авторов метода описания сущность-связь. В книжках его я видел разные шаблонные подходы к созданию реляционных моделей (можно сказать — паттерны). Книжки его я видел на тырнете в электронном виде, но с ходу сейчас найти не могу.


GS>ftp://ftp.opennet.ru/pub/docs/casemeth.zip


Спасибо огромное.

Я так понимаю он пишет о проектировании вообще?
Ну а что ни будь более тесно связанное с учетными системами можешь посоветовать?
\/\/i||i
Re[4]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 15.02.02 14:50
Оценка:
Здравствуйте Willi, Вы писали:

GS>>>А Баркера вы уже читали?

GS>>ftp://ftp.opennet.ru/pub/docs/casemeth.zip

W>Спасибо огромное.


W>Я так понимаю он пишет о проектировании вообще?


И вообще и, местами, в частности. Чем и интересен.

W>Ну а что ни будь более тесно связанное с учетными системами можешь посоветовать?


Например, покопаться в моделях Oracle Financial. Или еще у IBM была модель банковской деятельности. Посмотреть, как они там двойную запись поддерживают.
GS
Re[5]: Проектирование учетных систем
От: Tiger  
Дата: 15.02.02 19:47
Оценка:
Здравствуйте George_Seryakov, Вы писали:

GS>Например, покопаться в моделях Oracle Financial. Или еще у IBM была модель банковской деятельности. Посмотреть, как они там двойную запись поддерживают.


Для меня тема это почти что жизненная :). Если Oracle Financial я еще могу найти то может быть вы могли сузить мне немного рамку поиска по поводу модели IBM? :???:
Re[6]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 15.02.02 20:48
Оценка:
Здравствуйте Tiger, Вы писали:

T>Здравствуйте George_Seryakov, Вы писали:


GS>>Например, покопаться в моделях Oracle Financial. Или еще у IBM была модель банковской деятельности. Посмотреть, как они там двойную запись поддерживают.


T>Для меня тема это почти что жизненная :). Если Oracle Financial я еще могу найти то может быть вы могли сузить мне немного рамку поиска по поводу модели IBM? :???:


Эта штука, если я не ошибаюсь, называется Financial Services Data Model. Помню, когда я работал банковским технологом в Сбере, IBM-ы пытались продать нам ее. Сначала дали совершенно бесплатно некое подмножество этой модели, так, тысячи три квадратиков. Полная модель стоила десятки тысяч(?)... Или сотни? Десяток старушек — рупь, но надо же и честь знать. Зампредам на мерсы не хватает!

На самом деле я не советую лезть в OF и FSDM, хотя ответы там, безусловно, содержатся. Внимательное чтение Баркера с последующим размышлением может дать куда больше.
GS
Re[2]: Проектирование учетных систем
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.02 22:39
Оценка:
Здравствуйте George_Seryakov, Вы писали:

GS>А надо? Двойная запись вообще-то, если ее пытаться воспроизвести в ERD, создаст нечто вроде денормализации с дополнительным ограничением целостности, то есть, от чего стоит избавляться.


Это с чего же "Двойная запись ...создаст нечто вроде денормализации"?

Делаем тупо...
Таблица проводок (Tran)
ID_Tran      ID_BbAcct   ID_CrAcct    TranDate   TranSum TranComment
-------------------------------------------------------------------
      1             51          50  01.01.2001      2000 Взнос денег из кассы на р.с.
      2             50          62  02.01.2001       200 Оплпта по договору наличными.


И где здесь денормализация?

Если заменить бух. счета на некоторые аналитические регистры, то можно добиться очень тонкого аналитического учета...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 16.02.02 05:26
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте George_Seryakov, Вы писали:


GS>>А надо? Двойная запись вообще-то, если ее пытаться воспроизвести в ERD, создаст нечто вроде денормализации с дополнительным ограничением целостности, то есть, от чего стоит избавляться.


VD>Это с чего же "Двойная запись ...создаст нечто вроде денормализации"?


VD>Делаем тупо...

VD>
VD>Таблица проводок (Tran)
VD>ID_Tran      ID_BbAcct   ID_CrAcct    TranDate   TranSum TranComment
VD>-------------------------------------------------------------------
VD>      1             51          50  01.01.2001      2000 Взнос денег из кассы на р.с.
VD>      2             50          62  02.01.2001       200 Оплпта по договору наличными.
VD>


VD>И где здесь денормализация?


Э, нет. Сначала расскажи, где здесь двойная запись.
GS
Re[4]: Проектирование учетных систем
От: IT Россия linq2db.com
Дата: 16.02.02 05:59
Оценка: 15 (1)
Здравствуйте George_Seryakov, Вы писали:

VD>>Таблица проводок (Tran)

VD>>И где здесь денормализация?

GS>Э, нет. Сначала расскажи, где здесь двойная запись.


Эх, бюстгалтерия............................
Где моя молодость... Читаю топик и плакаю... дебит... кредит... читаю и плакаю... а ведь аналитику по уму я так и не доделал... читаю и плакаю... но зато язычок встроенный мы таки забацали, на C++ очент похож, пи-код, панимаишь, не то что щас всякие там скрип-инжины... читаю и плакаю...
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Проектирование учетных систем
От: alexm1202 Россия  
Дата: 16.02.02 06:18
Оценка:
Здравствуйте George_Seryakov, Вы писали:

VD>>И где здесь денормализация?


GS>Э, нет. Сначала расскажи, где здесь двойная запись.


А что не так? Каждая хозоперация подлежит отражению в одной и той же сумме одновременно по дебету одного счета и кредиту другого. Имхо это оно и есть. Просвети если не так, пожалуйста.

BR, Alex.
BR, Alex.
Re[5]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 16.02.02 21:52
Оценка:
Здравствуйте alexm1202, Вы писали:

A>Здравствуйте George_Seryakov, Вы писали:


VD>>>И где здесь денормализация?


GS>>Э, нет. Сначала расскажи, где здесь двойная запись.


A>А что не так? Каждая хозоперация подлежит отражению в одной и той же сумме одновременно по дебету одного счета и кредиту другого. Имхо это оно и есть. Просвети если не так, пожалуйста.


Покажи мне тогда записи по одному счету и по другому, и где там будет хозоперация, отраженная и там и там в одной и той же сумме.

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

A>BR, Alex.
GS
Re[6]: Проектирование учетных систем
От: alexm1202 Россия  
Дата: 18.02.02 06:07
Оценка: 10 (1)
Здравствуйте George_Seryakov, Вы писали:

GS>>>Э, нет. Сначала расскажи, где здесь двойная запись.


A>>А что не так? Каждая хозоперация подлежит отражению в одной и той же сумме одновременно по дебету одного счета и кредиту другого. Имхо это оно и есть. Просвети если не так, пожалуйста.


GS>Покажи мне тогда записи по одному счету и по другому, и где там будет хозоперация, отраженная и там и там в одной и той же сумме.


А почему должны быть "записи"? Имхо, достаточно одной, в которой мы бы видели счет, с которого берем средства, счет, на который их относим, сумму и время проведения операции. Все это было в той табличке, с которой начался разговор.

GS>Итальянцы, которые так придумали делать, писали разные счета на разных листочках, и если один счет (листочек книги) оказывался испорчен (съел сквишъ), то его возможно было восстановить по остальным счетам.


И что ты предлагаешь? Завести под каждый счет отдельную табличку на случай утраты данных?

BR, Alex.
BR, Alex.
Re[7]: Проектирование учетных систем
От: Tiger  
Дата: 18.02.02 07:49
Оценка:
ЭЭЭЭЭЭЭЭЭЭЭ!!!!! Господа шорошие Олл!!!!

Все это прекрасно, но как говориться в анектдоте — Есть ньюанс!!!!
Во первых товарищь из зала ;) весьма верно подметил про аналитики. Т.е. единственное решение (ИМХО конечно) это сделать плоскую таблицу (id_проводки, дебет, кредит, сумма, аналитика1, ... аналитикаN) НО таблица получается громоздкой. В ней всяких пустот образуется немерянно так как разные счета имеют разные аналитики. Дальше хуже. (Ну уж я не говорю о тяжеловестности запросов, в смысле оптимальности выполнения и тяжести создания запросов). А вот то-что количество аналитик оказывается жестко фиксированным это плохо, так как по некоторым сведениям если организация начинает наращивать количество аналитик по счетам то их возрастание происходит экспоненцияльно!!!. А писать динамические запросы которые позволят вам менять количество аналитик это получается такоооооой изврат, что самому тошно становиться. Есть некое шестое^2 чувство что просто структура таблиц должна быть совсем не такой как в классическом варианте плоского журнала проводок. Но вот какой — сие есть тайна!!! По крайне мере пока. Это и заставляет искать хоть что-то (любую информацию). И кстати!!! Еще есть проблема откатов и удалений из журнала проводок. Воооот проблемка. мне начинет казатся, что здесь уже начинает играть роль фундаментальные ограничения баз данных — то что кортежи (записи) должны быть взаимонезависимы. А если мы хотим изменить историю проводок задним числом то получаем что у нес "поедет" все последующая история. За сим "поедет" крыша у кое-кого (програмиста, бухгальера, начальника — по вкусу выбрать :) а также "поедут" доходы в виде зарплат огромных в вечнозеленых единицах и проча, и проча..., и проча... :(. Так что кто чем может просьба помочь (чуть не добавил не корости ради а токому любопытства для!!!) :crash:
Re[5]: Проектирование учетных систем
От: Willi  
Дата: 18.02.02 11:43
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте George_Seryakov, Вы писали:


IT>Эх, бюстгалтерия............................

IT>Где моя молодость... Читаю топик и плакаю... дебит... кредит... читаю и плакаю... а ведь аналитику по уму я так и не доделал... читаю и плакаю... но зато язычок встроенный мы таки забацали, на C++ очент похож, пи-код, панимаишь, не то что щас всякие там скрип-инжины... читаю и плакаю...
IT>


Пять баллов IT !!!

Я и сам не верил что жизнь заставит меня вернуться к этой теме. В свое время так рад был с нее спрыгнуть. Но... никогда не знаешь, где найдешь, где потеряешь.
\/\/i||i
Re[7]: Проектирование учетных систем
От: George_Seryakov Россия  
Дата: 18.02.02 16:43
Оценка:
Здравствуйте alexm1202, Вы писали:

GS>>Покажи мне тогда записи по одному счету и по другому, и где там будет хозоперация, отраженная и там и там в одной и той же сумме.


A>А почему должны быть "записи"? Имхо, достаточно одной, в которой мы бы видели счет, с которого берем средства, счет, на который их относим, сумму и время проведения операции. Все это было в той табличке, с которой начался разговор.


Достаточно для учета, недостаточно для рабского воспоизведения принципа двойной записи.

A>BR, Alex.
GS
Re[4]: Проектирование учетных систем
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.02 00:11
Оценка:
Здравствуйте George_Seryakov, Вы писали:

VD>>Это с чего же "Двойная запись ...создаст нечто вроде денормализации"?


VD>>Делаем тупо...

VD>>
VD>>Таблица проводок (Tran)
VD>>ID_Tran      ID_BbAcct   ID_CrAcct    TranDate   TranSum TranComment
VD>>-------------------------------------------------------------------
VD>>      1             51          50  01.01.2001      2000 Взнос денег из кассы на р.с.
VD>>      2             50          62  02.01.2001       200 Оплпта по договору наличными.
VD>>


VD>>И где здесь денормализация?


GS>Э, нет. Сначала расскажи, где здесь двойная запись.


Ты что в танке?

Таблица проводок (Tran)
ID_Tran ID_BbAcct ID_CrAcct TranDate TranSum TranComment
-------------------------------------------------------------------
1 51 50 01.01.2001 2000 Взнос денег из кассы на р.с.
2 50 62 02.01.2001 200 Оплпта по договору наличными.
[/ccode]

Ото что? Однорная??? Или тройная?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Проектирование учетных систем
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.02 00:12
Оценка:
Здравствуйте George_Seryakov, Вы писали:

GS>Итальянцы, которые так придумали делать, писали разные счета на разных листочках, и если один счет (листочек книги) оказывался испорчен (съел сквишъ), то его возможно было восстановить по остальным счетам.


Ну, так потому и славятся одними мафиозями.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Проектирование учетных систем
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.02 00:23
Оценка:
Здравствуйте George_Seryakov, Вы писали:

A>>А почему должны быть "записи"? Имхо, достаточно одной, в которой мы бы видели счет, с которого берем средства, счет, на который их относим, сумму и время проведения операции. Все это было в той табличке, с которой начался разговор.


GS>Достаточно для учета, недостаточно для рабского воспоизведения принципа двойной записи.


Не, ну если ты систему эмулящии рабовлодельчиского строя создаешь, то ... Или я до твоей философии недотягиваю.

PS

Мы еще в 1996 г. спроектировали ядро которое позволяло учитывать любые данные на предприятии и центральная таблица прободок была очень похожа на ту которую я приводил (ну, по шире..., ну, по ядренее, ну, счета не напрямую тауда заволились). Короче, чувствую у понутнов доводы кончились... Переходят на философию.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Проектирование учетных систем
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.02 01:18
Оценка: 30 (2)
Здравствуйте Tiger, Вы писали:

T>Все это прекрасно, но как говориться в анектдоте — Есть ньюанс!!!!

T>Во первых товарищь из зала ;) весьма верно подметил про аналитики. Т.е. единственное решение (ИМХО конечно) это сделать плоскую таблицу (id_проводки, дебет, кредит, сумма, аналитика1, ... аналитикаN) НО таблица получается громоздкой. В ней всяких пустот образуется немерянно так как разные счета имеют разные аналитики. Дальше хуже. (Ну уж я не говорю о тяжеловестности запросов, в смысле оптимальности выполнения и тяжести создания запросов). А вот то-что количество аналитик оказывается жестко фиксированным это плохо, так как по некоторым сведениям если организация начинает наращивать количество аналитик по счетам то их возрастание происходит экспоненцияльно!!!. А писать динамические запросы которые позволят вам менять количество аналитик это получается такоооооой изврат, что самому тошно становиться. Есть некое шестое^2 чувство что просто структура таблиц должна быть совсем не такой как в классическом варианте плоского журнала проводок. Но вот какой — сие есть тайна!!! По крайне мере пока. Это и заставляет искать хоть что-то (любую информацию). И кстати!!! Еще есть проблема откатов и удалений из журнала проводок. Воооот проблемка. мне начинет казатся, что здесь уже начинает играть роль фундаментальные ограничения баз данных — то что кортежи (записи) должны быть взаимонезависимы. А если мы хотим изменить историю проводок задним числом то получаем что у нес "поедет" все последующая история. За сим "поедет" крыша у кое-кого (програмиста, бухгальера, начальника — по вкусу выбрать :) а также "поедут" доходы в виде зарплат огромных в вечнозеленых единицах и проча, и проча..., и проча... :(. Так что кто чем может просьба помочь (чуть не добавил не корости ради а токому любопытства для!!!) :crash:

Ну, весь этот стон души от недостатка в опыта проектирования. Реляционные БД конечно не венец творения, но и на них можно многое сделать если мозгами покумекать.

Я так понимаю у тебя главное непонимание в том как в приведенном варианте аналитику считать. Да? Тогда продаю часть своих идей образца 1996 года...

Мы имеем убогую таблицу описанную тобой: id_проводки, дебет, кредит, сумма, аналитика1, ... аналитикаN.

Анализируем ошибки... Хотя зачем? Ты и так все верно подметил. Но (!) почему ты считаешь, что аналитические признаки должны быть отделены от дебета и кредита?
Это главная твоя ошибка и большинство ваятелей бухгалтерий (ну, и КИС). Бьюсь об заклад, что смогу переформулировать любую постановку задачи, так чтобы в проводке были только дебетовые и кредитовые аналитические признаки! (подсказка: обычно это делается добавлением промежуточных проводок).

Теперь просто воспользуемся опытом и знаниями из умных книжек... Применим принцип денормализации и получим не одну убогую таблицу, а две (и не убогие). Первая описана выше, но вместо дебетового и кредитового счета введем понятие дебетового и кредитового аналитического признака. В 1996 я назвал их Z-объектами (почему Z? Об этом я скажу потом...). Вторая таблица содержит эти самые аналитические Z-объекты (и их атрибуты).

Z-объект – это минимальный аналитический признак на котором можно подбить микро-баланс, т.е. все операции (проводки) по такому объекту рано или поздно в сумме дадут нуль (от сюда и Z-объект). Так как меньше этой операции в системе не регистрируется, то можно смело оставить в проводке только дебетовый и кредитовый Z-объект. Зато на Z-объекты можно навесить аналитику любого уровня сложности. Самым универсальным способом будет добавить еще одну таблицу которая содержит ссылку на Z-объект и список справочных значений. Примерами Z-объектом могут быть: заказ, расчетный счет (или некоторый минимальный признак на этом счет, если ведется аналитика по р.с.), авансовый отчет и много другое.

Ниже приведена упрощенная ER-схема БД реализующей описанные выше принципы.
ftp://ftp.optim.ru/pub/Tests/ZObj/shem1.GIF
Tran – таблица проводок.
ZObj – Z-объекты. (Tran имеет две ссылки на ZObj, так как Z-объекты проходят и по дебету и по кредиту проводки... шо поделаешь та самая двойная запись ;) ).
ZObjType – типы Z-объектов.
Ref – справочники. Здесь представлено упрощенно. Реально это отдельная песня (считайте, что вместо этой таблицы присутствует крутая структура хранящая все справочники учетной системы, а это их инкапсулированное представление).
ExtRef – список дополнительных аналитических признаков. Может быть любой длинны. В реальной учетной системе нужно описать какие и сколько справочных значений можно присвоить к Z-объекту каждого типа.

У меня есть желание создать конструктор который позволит собирать учетные приложения визуально. Основу этого конструктора представляет несколько доработанная схема представленная выше. Подробнее о планах и идеях можно прочесть здесь: http://www.optim.ru/Software/rus/ascConcept/ascconcept.asp

Если кому интересно, то пишите мы открыты для сотрудничества.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.