|
|
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Собсно сабж. Одновременно очень простая задача, и немножко "сложная". К сожалению я абсалютно не уверен что я сделал правильно. По сему интересует кто как это делает. Применительно к бюджету. По сути интересны следующие моменты. 1. Структура базы. 2. Ввод бюджета/статей/подстатей/лимитов? 3. Чем и на каком этапе контролируется введённая сумма лимита? 4. Очень интересует как правильно сделать нумерацию статей и подстатей. Опять же как это контролировать? 5. Ну и собственно говоря отображение. В виде дерева или грида? Например.... Сначала (понятное дело) создаём бюджет. Потом вводим статьи для бюджетов. Например вводим стать номер "1". Вводим её лимит скажем 1000. Это говорит о том что сумма лимитов всех подстатей равна 1000. Теперь для первой статьи вводим подстатью "1.1" Водим её лимит. Вот тут я не могу определиться как делать контроль ввода "1.1"(и как это хранить в базе) ну и соответственно лимит как контролировать. И так далее. Например я сделал так, наверно самый простой вариант, надо было сделать очень быстро, внешне работающее. Таблица бюджетов(айди, название, примечание). Таблица статей(айди, айди парента, айди бюджета, лимит, номер статьи(текстовое поле), название, примечание). Они связанны один ко многим. Таблица статей завязана на себя(один ко многим). Что мене абсалютно не нравится(но как сделать не знаю) это хранение вот этого номера статьи, сейчас храниться как текст. При получении с базы такого-то бюджета я просто делаю ордербай по полю "номеру статьи" и Если всё введёно корректно, то понятное дело что всё показывается чётко. Лимиты пока опять же никак не контролирую. Первое что в голову пришло это сделать кнопку, типа првоерить на лимиты валидность. Обходить дерево и считать лимиты. Но думаю что это надо сделать по другому, ещё на этапе ввода отсекать неправильные суммы. Показываю в гриде. Короче поделитись плиз правильной организацией дерева! Заранее сенкс! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 15:38 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Мне нравится дерево, организованное в одной таблице с обычной парой "код вершины", "Код родителя" и некоторыми долнительными полями для отображения и ускорения выборки из базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 20:18 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Почему то рисунок не приклеился. Попытка №2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 20:20 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Похоже, что не проходит рисунок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 20:23 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
PVPПохоже, что не проходит рисунок. жаль... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:46 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Павел_Щ Хм. Имхо тема немного великовата, чтобы говорить о "правильно" и "неправильно" вообще, без конкретики. Например, сугубо от балды, чем Вас не устраивает следующее решение? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:47 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
Ну во первых поиск по форуму со словом "дерево" даст исчерпывающую информацию кто и как деревья хранит. В кратце, есть два подхода, тот что вы описали (ID - ParentID) и так называемые Целко(Селко) деревья, основанные на теории вложенных множеств. В одном из проектов я использовал оба подхода. Например наличие ParentID позволяет быстро отрисрвывать дерево "как дерево", а дополнительные ключи Целко позволяют например просуммировать одним запросом лимиты по всей ветке дерева, независимо от вложенности. Павел_Щ Например вводим стать номер "1"... Теперь для первой статьи вводим подстатью "1.1 А по частным вопросам я бы предложил хранить два номера отдельно, один это реальный номер статьи(подстатьи), а другой "синтетический", собранный из номеров всех родительских записей, через разделитель. Т.е. вности статью 1 - номер статьи 1 синтетический номер 1. Вности подстатью - номер подстатьи 1 синтетический номер 1.1. ... подстатья третьего уровня, номер 59 синтетический номер 1.1.59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:52 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
PVP Попытка №2 Попытка №3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 11:29 |
|
||
|
Кто как хранит бюджет(дерево)?
|
|||
|---|---|---|---|
|
#18+
PVP PVP Попытка №2 Попытка №3Последняя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 11:32 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=142&tid=1545432]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 372ms |

| 0 / 0 |
