powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проектирование БУ
9 сообщений из 9, страница 1 из 1
Проектирование БУ
    #35079081
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В проектирование БД я создал топик http://www.sql.ru/forum/actualthread.aspx?tid=516822 решил его продублировать еще здесь т.к. я думаю что люди пишущие под cache могут мне подсказать в каком направление двигаться (сам я использую ООБД отличную от cache). Вопрос состоит в том как правильно спроектировать классы для задачи бухгалтерского учета с учетом что хранение данных будет производиться с помощью ООБД т.е. классы лягут в базу. Например нужен ли отдельный хранимый класс доступный из вне под проводку (полупроводку)?
...
Рейтинг: 0 / 0
Проектирование БУ
    #35080363
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>И теперь собственно вопрос, а как под нее спроектировать часть связанную с хранением проводок, остатков по счетам и т.п.

Хранение проводок, остатков по счетам, справочника самих счетов - реализуется на Таблицах, которые в Каше являются прямым отображением Классов, что позволяет помимо самой структуры таблиц инкапсулировать в класс методы и хранимые процедуры - по обработке проводок.

Где светяться объекты - так это документы по которым собственно производится учет.

В терминах ООП объявляется абстрактный класс (можно не один) - документ, который инкапсулирует в себе минимальный набор полей ,методы разноски документа по интересующим нас счетам, методы движения, возвратов, формирования серийных номеров и т.д. и т.п

Существующие документы можно вводить наследованием от этого класса, с добавлением необходимых полей - львиная доля функционала по учету и движению данного документа будет работать автоматически блогодоря наследованию.

С самими документами проще работать как с объектами - не забывая конечно о том что при необходимости можно работать и как с таблицей
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081550
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за ответ. Использование ОО подхода для документов понятно. А вот часть которая касается проводок остатков похоже ни какой выгоды от ОО не получит, а жалко...
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081568
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123А вот часть которая касается проводок остатков похоже ни какой выгоды от ОО не получит, а жалко...
Звучит как приговор...
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081775
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну для проводок я лично смысла не вижу ... их много - большинство операций производяться над наборами записей, а не над одним объектом.

Вот схему счетов или так называемую "фабрику" разноски на объектах сделать можно
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081905
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Звучит как приговор...


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

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


То что проводок много и меня вгоняет в ступор :) Как то противоестественно для меня думать о каждой проводке как об отдельном объекте.

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

Для затравки попробую привести часть своих мыслей которые у меня стали возникать когда я стал смотреть на эту задачу через призму ООП. И так такого понятия как проводка в принцыпе не существует для БУ имет значение понятие остака на счете на дату и оборотов по счету. Таким образом мы имеем объект счет который может вернуть свой текущий остаток и остаток на любую дату, остаток на счете может меняться с помощью документов, должна веститсь история изменения значения счета что бы мы могли его возвращать на дату (тут собственно и возникает нечто вроде полупроводки, но угол зрения несколько другой не что сродни ведению истории изменения значения и способы хранения здесь могут быть весьма различны т.к. ООБД в этом нам предоставляют большой выбор)... В такой структуре мы можем легко отвечать на вопрос по поводу суммы на счете, оборотов по счету (один остаток минус другой). Проблемы возникают при проведение документов задним числом (на мой взгляд тут ничего не разрешимого нет), трудно ответить на вопрос о том какие проводки сформировал документ но мы можем сказать какие счета он изменил и на сколько, не разрешимой проблеммой в данной структуре является ответ на вопрос каая сумма была переданна с одного счета на другой... Вот такие вот мысли на тему :)
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081944
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123Может у вас есть идеи?
У меня не большей опыт в бухгалтерских делах...
...
Рейтинг: 0 / 0
Проектирование БУ
    #35081998
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123
На самом деле очень интересно как данную задачу можно спроектировать используя друиге структры хранения чем реляционные таблицы.

Ну ... в случае Cach'e как минимум расположить проводки в дереве...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
//то есть выместо плоской структуры + набор индексов
^Jurnal(ID1) = (Период,Номер счета,Признак_Кредита_или_Дебита, Сумма, ID Документа, .....)
^Jurnal(ID2) = (Период,Номер счета,Признак_Кредита_или_Дебита, Сумма, ID Документа, .....)

// Можно использовать дерево

^Jurnal(Номер счета,Период,Признак_Кредита_или_Дебита, 0 )=счетчик узлов
^Jurnal(Номер счета,Период,Признак_Кредита_или_Дебита,ID1)=(Сумма, ID Документа, .....)
^Jurnal(Номер счета,Период,Признак_Кредита_или_Дебита,ID2)=(Сумма, ID Документа, .....)

// плюс можно хранить некоторые агрегаты в узлах - правда с блокировками сильно подумать придеться засада будет наверное

^Jurnal(Номер счета,Период,Признак_Кредита_или_Дебита,- 1 )=агрегат чего либо
^Jurnal(Номер счета,Период,- 1 )=агрегат чего либо
^Jurnal(Номер счета,- 2 )=агрегат чего либо
^Jurnal(Номер счета,- 1 )=агрегат чего либо

Запросы по проводкам в подавляющем числе случаем выполняются- для счета и периода - объем данных будет меньше - агрегаты считаются "быстрее" - структура прозрачно отоброжается на SQL - то есть SELECT-ы делать можно.

Вот новые индексы просто так не добавишь - другой вопрос что нужно крепко подумать, а потребуются ли они...
...
Рейтинг: 0 / 0
Проектирование БУ
    #35082029
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
// чего это я торможу ж :)) 
^Jurnal(Номер счета,Период,- 1 )=сальдо на начало периода 
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проектирование БУ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]