|
|
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток, хочу получть от вас доброго совета))) В бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный. Счета обозначаются цифрами от 0 до 100. Разрешено создавать так называемые подсчета. Пример: 10 счет 10.1 подсчет 10 ого счета 10.1.1 и т.д. Есть таблица хозяйственных операций с ссылкой на корреспондирующие счета (2 счета из плана счетов). Бывает нужно извлечь операции с одним подсчетом, а бывает нужно извлеч операции по счету со свеми вложенными в него счетами. Вопрос как лучше организовать древовидность плана счетов. Что б максимально просто делать запросы из таблицы операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2009, 23:05 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Cheprasovкак лучше организовать древовидность плана счетов. Как вариант План счетовКодНомер счетаНазваниеКод старшего счета Т.о. рекурсивно можно построить дерево счетов. CheprasovЧто б максимально просто делать запросы из таблицы операций. Но с рекурсией "простоты" в запросе не получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 08:24 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Я вот именно так и реализовал. Выборка по счету и всем его подсчетам меня в скорости не устраивает. А что если в качестве ключа использовать реальный ключ типа целочисленное число от 0 до числа с n разрядом. Что думаете господа? Может кто то уже принимал решение? Что в итоге получилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 09:27 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Для работы с деревом очень удобно использовать строковые ф-ии, если каждый узел дерева хранит свой полный путь наверх по ID, разделенным каким-нибудь символом. При перемещении узла необходимо пересчитывать этот путь для всех его потомков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 09:28 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
П-Л, При таком методе выигрыш в скорости выборки индексов дочерних обьектов, но рекурсивный способ получения таких данных тоже очень быстр. Основное врямя уходин на выборку операций по счету из таблицы операций. Может для не большого обьема данных это не заметно но у меня операций 5 милионов а отчеты требуют как минимут две выборки по подобному условию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 09:37 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Cheprasov, в банковском софте принято использовать просто таблицу, но там есть один ньюанс, счета имеют фиксированную длинну. но в принципе и счета с разной длинной можно также уложить. работа становиться на порядок легче. так что подумайте об этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 10:01 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovЧто в итоге получилось? Если сделать некий функционал, который будет вычислять это значение и записывать в некое поле плана счетов - можно будет делать запросы аля "такое-то значение содержится в таком-то поле". Такие запросы будут выглядеть более простыми. Но целостность будет "страдать". Может кто-то корректировал план счетов но не запускал функционал, который правильно заполнит значения ключевого поля... Если это не критично - можно попробовать сделать так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 10:20 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
При хранении полного пути до верха я говорил не о скорости, а об удобстве выборок типа: все узлы до верха от текущего, все дочерние узлы от текущего, все узлы того же родителя от текущего. Все это можно решать рекурсивно, а можно через строковые ф-ии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 10:24 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovВ бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный.организационно, да, план счетов можно представить в виде дерева, однако, имхо, его программная реализация в виде дерева кроме геморроя, никакого выигрыша не даёт. Как совершенно справедливо заметил Dmitry6237 "в банковском софте принято использовать просто таблицу". Забейте на дерево, зачем оно вам здесь тут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 11:11 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
egorychCheprasovВ бухгалтерии есть такое понятие как план счетов. Это некий список, древовидный.организационно, да, план счетов можно представить в виде дерева, однако, имхо, его программная реализация в виде дерева кроме геморроя, никакого выигрыша не даёт. Как совершенно справедливо заметил Dmitry6237 "в банковском софте принято использовать просто таблицу". Забейте на дерево, зачем оно вам здесь тут? Ну может это в банковском. Но всетаки для ведения качественного управленческого учета удобно план счетов представлять в виде дерева. (если интересно где удобно могу рассказать боле подробно) Вот такой у меня вариант: Первичный ключ сделать целочисленным числом с макс кол-вом знаков - 10 (По опыту это более чем достаточно). И дерево будет выглядеть так 1000000000 - счет 1010000000 - под счет 1020000000 - еще подсчет Получается чтоб выбрать мне операции по 10 счету (включая все подсчета) необходимо будет задать условие типа): Код: plaintext Что думаете? Так какой сделать ключ чтоб запросы выполнялись быстро? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 12:57 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Cheprasovесли интересно где удобно могу рассказать боле подробнорасскажите, действительно интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 13:40 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
Cheprasov 1000000000 - счет 1010000000 - под счет 1020000000 - еще подсчет При таком подходе не лучше ли полей поболе наделать? Типа План счетовКодНазваниеСчетСубсчет 1Субсчет 2Субсчет 3... Думается так и скорость запросов увеличится и не нужно будет возиться с разрядностью цифр... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 13:46 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
egorychCheprasovесли интересно где удобно могу рассказать боле подробнорасскажите, действительно интересно Есть например счет коственных расходов у этого счета есть подсчета для распределения расходов по более мелким статьям. Пример: Аренда, свет, хоз инвентарьб и т.д. Когда расходы начислены и разложены по всем субщетам их следует списывать на продукцию, на прибыль, еще куданибудь. Списывать удобно с самого верхнего уровня счета, чтобы не проделывать операцию списания с каждого подсчета. Ну вот один пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 13:54 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
авторПри таком подходе не лучше ли полей поболе наделать? Типа План счетов Код Название Счет Субсчет 1 Субсчет 2 Субсчет 3 ... Думается так и скорость запросов увеличится и не нужно будет возиться с разрядностью цифр... А что тогда будет первичным ключом?? Счет,Субсчет 1,Субсчет 2,Субсчет 3. Тоже не удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 13:57 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovА что тогда будет первичным ключом?? Как вариант абстрактный "код"... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 13:58 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovЯ вот именно так и реализовал. Выборка по счету и всем его подсчетам меня в скорости не устраивает. А что если в качестве ключа использовать реальный ключ типа целочисленное число от 0 до числа с n разрядом. Что думаете господа? Может кто то уже принимал решение? Что в итоге получилось? А, старый знакомый! Моё категорическое приветствие! Я в своей базе естественных ключей не использую, и никому бы не посоветовал(например, ежли чего-нибудь надо будет потом поменять - это будет сущим наказанием). А почему скорость маленькая, ведь это обычное дерево по сути. Например, в одном из моих проектов надо выбирать все права группы по входящим подгруппам(рекурсивно). Я использую СТЕ. Первое выражение выбирает все подгруппы, потом по этой выборке строятся права. Нужные поля проиндексированы, никаких перегрузок вроде нет. Права у меня грузятся при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока пользователь в системе). Кстати, план счетов - сущность редко изменяемая, поэтому можно создать составной индекс по (id, parent_id) и упорядочить таблицу по нему. Попробуй, если не пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:44 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме)) Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:52 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, Права записываются в таблицу временную или в реальную? Получается при каждом запросе нужно читать эту таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:55 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНПрава у меня грузятся при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока пользователь в системе). т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте? Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:56 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме)) Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет. Алексей, с тобой работал который. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:57 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНCheprasovОКТОГЕН, Как зовут тебя? не узнаю тебя в гриме)) Я мысль по поводу составного первичного ключа интересная. Но кажется ускорения выбора операций не будет. Алексей, с тобой работал который. Я так и подозревал)) Приветствую. Ну что добавишь по моему вопросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:59 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
CheprasovОКТОГЕН, Права записываются в таблицу временную или в реальную? Получается при каждом запросе нужно читать эту таблицу? в реальную. Есть стобец с массивом, по которому потом идёт пересечение. Структуры по которым идёт поиск меняются относительно редко, поэтому отклик быстрый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 14:59 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ШайтанОКТОГЕНПрава у меня грузятся при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока пользователь в системе). т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте? Шайтан Если пользователю меняют права, то все данные авторизации очищаются, и пользователь должен перезайти заново, при этом вычислится новый набор прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 15:01 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ШайтанОКТОГЕНПрава у меня грузятся при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока пользователь в системе). т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте? Шайтан В момент выяснения можно еще насильственно отключить пользователя. или написать процедуру для обновления кэшированных привелегий и прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 15:03 |
|
||
|
Дерево. План счетов.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНШайтанОКТОГЕНПрава у меня грузятся при авторизации, (сохраняются в виде массива строк в таблице пользователя на время пока пользователь в системе). т.е., если выясняется, что юзверь - шпион, и ему обрубаются права, то юзверь продолжает шпионить, ибо права закэшированы на клиенте? Шайтан Если пользователю меняют права, то все данные авторизации очищаются, и пользователь должен перезайти заново, при этом вычислится новый набор прав. Права не кэшируются на клиенте, они кэшируются на сервере, залезть он туда не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2009, 15:04 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=80&tid=1542952]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 302ms |

| 0 / 0 |
