powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дерево. План счетов.
25 сообщений из 63, страница 1 из 3
Дерево. План счетов.
    #36337959
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток, хочу получть от вас доброго совета)))

В бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный.
Счета обозначаются цифрами от 0 до 100. Разрешено создавать так называемые подсчета.

Пример:
10 счет
10.1 подсчет 10 ого счета
10.1.1 и т.д.

Есть таблица хозяйственных операций с ссылкой на корреспондирующие счета (2 счета из плана счетов).
Бывает нужно извлечь операции с одним подсчетом, а бывает нужно извлеч операции по счету со свеми вложенными в него счетами.
Вопрос как лучше организовать древовидность плана счетов. Что б максимально просто делать запросы из таблицы операций.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338175
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheprasovкак лучше организовать древовидность плана счетов.

Как вариант

План счетовКодНомер счетаНазваниеКод старшего счета
Т.о. рекурсивно можно построить дерево счетов.

CheprasovЧто б максимально просто делать запросы из таблицы операций.

Но с рекурсией "простоты" в запросе не получить.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338222
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот именно так и реализовал. Выборка по счету и всем его подсчетам меня в скорости не устраивает. А что если в качестве ключа использовать реальный ключ типа
целочисленное число от 0 до числа с n разрядом.

Что думаете господа? Может кто то уже принимал решение? Что в итоге получилось?
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338224
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для работы с деревом очень удобно использовать строковые ф-ии, если каждый узел дерева хранит свой полный путь наверх по ID, разделенным каким-нибудь символом. При перемещении узла необходимо пересчитывать этот путь для всех его потомков.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338230
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л, При таком методе выигрыш в скорости выборки индексов дочерних обьектов, но рекурсивный способ получения таких данных тоже очень быстр. Основное врямя уходин на выборку операций по счету из таблицы операций. Может для не большого обьема данных это не заметно но у меня
операций 5 милионов а отчеты требуют как минимут две выборки по подобному условию.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338265
Dmitry6237
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheprasov,

в банковском софте принято использовать просто таблицу, но там есть один ньюанс, счета имеют фиксированную длинну. но в принципе и счета с разной длинной можно также уложить.
работа становиться на порядок легче. так что подумайте об этом
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338298
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovЧто в итоге получилось?

Если сделать некий функционал, который будет вычислять это значение и записывать в некое поле плана счетов - можно будет делать запросы аля "такое-то значение содержится в таком-то поле". Такие запросы будут выглядеть более простыми.
Но целостность будет "страдать".
Может кто-то корректировал план счетов но не запускал функционал, который правильно заполнит значения ключевого поля... Если это не критично - можно попробовать сделать так.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338305
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При хранении полного пути до верха я говорил не о скорости, а об удобстве выборок типа: все узлы до верха от текущего, все дочерние узлы от текущего, все узлы того же родителя от текущего. Все это можно решать рекурсивно, а можно через строковые ф-ии.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338421
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovВ бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный.организационно, да, план счетов можно представить в виде дерева, однако, имхо, его программная реализация в виде дерева кроме геморроя, никакого выигрыша не даёт. Как совершенно справедливо заметил Dmitry6237 "в банковском софте принято использовать просто таблицу". Забейте на дерево, зачем оно вам здесь тут?
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338699
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychCheprasovВ бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный.организационно, да, план счетов можно представить в виде дерева, однако, имхо, его программная реализация в виде дерева кроме геморроя, никакого выигрыша не даёт. Как совершенно справедливо заметил Dmitry6237 "в банковском софте принято использовать просто таблицу". Забейте на дерево, зачем оно вам здесь тут?

Ну может это в банковском. Но всетаки для ведения качественного управленческого учета удобно план счетов представлять в виде дерева. (если интересно где удобно могу рассказать боле подробно)

Вот такой у меня вариант:
Первичный ключ сделать целочисленным числом с макс кол-вом знаков - 10 (По опыту это более чем достаточно). И дерево будет выглядеть так

1000000000 - счет
1010000000 - под счет
1020000000 - еще подсчет
Получается чтоб выбрать мне операции по 10 счету (включая все подсчета) необходимо будет задать условие типа):

Код: plaintext
Where int(Ключ/ 10000000 )= 10 

Что думаете?
Так какой сделать ключ чтоб запросы выполнялись быстро?
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338838
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheprasovесли интересно где удобно могу рассказать боле подробнорасскажите, действительно интересно
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338854
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheprasov
1000000000 - счет
1010000000 - под счет
1020000000 - еще подсчет

При таком подходе не лучше ли полей поболе наделать? Типа

План счетовКодНазваниеСчетСубсчет 1Субсчет 2Субсчет 3...

Думается так и скорость запросов увеличится и не нужно будет возиться с разрядностью цифр...
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338885
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychCheprasovесли интересно где удобно могу рассказать боле подробнорасскажите, действительно интересно

Есть например счет коственных расходов у этого счета есть подсчета для распределения расходов по более мелким статьям. Пример: Аренда, свет, хоз инвентарьб и т.д. Когда расходы начислены и разложены по всем субщетам их следует списывать на продукцию, на прибыль, еще куданибудь.
Списывать удобно с самого верхнего уровня счета, чтобы не проделывать операцию списания с каждого подсчета. Ну вот один пример.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338889
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПри таком подходе не лучше ли полей поболе наделать? Типа
План счетов
Код
Название
Счет
Субсчет 1
Субсчет 2
Субсчет 3
...

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

А что тогда будет первичным ключом??
Счет,Субсчет 1,Субсчет 2,Субсчет 3. Тоже не удобно.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36338894
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovА что тогда будет первичным ключом??

Как вариант абстрактный "код"... ;)
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339056
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovЯ вот именно так и реализовал. Выборка по счету и всем его подсчетам меня в скорости не устраивает. А что если в качестве ключа использовать реальный ключ типа
целочисленное число от 0 до числа с n разрядом.

Что думаете господа? Может кто то уже принимал решение? Что в итоге получилось?
А, старый знакомый! Моё категорическое приветствие!
Я в своей базе естественных ключей не использую, и никому бы не посоветовал(например,
ежли чего-нибудь надо будет потом поменять - это будет сущим наказанием).
А почему скорость маленькая, ведь это обычное дерево по сути. Например, в одном из моих
проектов надо выбирать все права группы по входящим подгруппам(рекурсивно).
Я использую СТЕ. Первое выражение выбирает все подгруппы, потом по этой выборке строятся
права. Нужные поля проиндексированы, никаких перегрузок вроде нет. Права у меня грузятся
при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока
пользователь в системе).
Кстати, план счетов - сущность редко изменяемая, поэтому можно создать составной индекс по
(id, parent_id) и упорядочить таблицу по нему. Попробуй, если не пробовал.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339087
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме))

Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339104
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕН, Права записываются в таблицу временную или в реальную? Получается при каждом запросе нужно читать эту таблицу?
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339108
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНПрава у меня грузятся
при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока
пользователь в системе).
т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте?

Шайтан
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339111
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме))

Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет. Алексей, с тобой работал который.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339123
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕНCheprasovОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме))

Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет. Алексей, с тобой работал который.

Я так и подозревал)) Приветствую. Ну что добавишь по моему вопросу?
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339124
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovОКТОГЕН, Права записываются в таблицу временную или в реальную? Получается при каждом запросе нужно читать эту таблицу? в реальную. Есть стобец с
массивом, по которому потом идёт пересечение. Структуры по которым идёт поиск меняются
относительно редко, поэтому отклик быстрый.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339133
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШайтанОКТОГЕНПрава у меня грузятся
при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока
пользователь в системе).
т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте?

Шайтан
Если пользователю меняют права, то все данные авторизации очищаются, и пользователь
должен перезайти заново, при этом вычислится новый набор прав.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339145
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШайтанОКТОГЕНПрава у меня грузятся
при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока
пользователь в системе).
т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте?

Шайтан

В момент выяснения можно еще насильственно отключить пользователя. или написать процедуру для обновления кэшированных привелегий и прав.
...
Рейтинг: 0 / 0
Дерево. План счетов.
    #36339149
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНШайтанОКТОГЕНПрава у меня грузятся
при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока
пользователь в системе).
т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте?

Шайтан
Если пользователю меняют права, то все данные авторизации очищаются, и пользователь
должен перезайти заново, при этом вычислится новый набор прав.
Права не кэшируются на клиенте, они кэшируются на сервере, залезть он туда не может.
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дерево. План счетов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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