|
|
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
Как грамотно спроектировать таблицу(цы) меню, чтобы была неограниченая вложенность как узлов так и пунктов? Или ткните ссылкой... Что-то вроде такого: узел1 пункт1 пункт2 узел2 узел1 пункт1 узел1 пункт1 пункт2 узел2 пункт1 пункт1 пункт2 пункт1 пункт2 Желательно с примером рекурсивного обхода:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:06 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:10 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
Чем не устраивает классика ID, ParentID ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:21 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
Да устраивает, но вдруг есть хорошая альтернатива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 10:28 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
olegeosДа устраивает, но вдруг есть хорошая альтернатива.Разве что: "Альтернатива - утки" (с) анек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 10:47 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
olegeosДа устраивает, но вдруг есть хорошая альтернатива. Альтернативы есть. Если узлов и пунктов не много, можно хранить в строке путь. Если вставка не важна, а важна выборка, то можно Nested Set ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 11:05 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
olegeos Как грамотно спроектировать таблицу(цы) меню, чтобы была неограниченая вложенность как узлов так и пунктов?Если данным меню будут пользоватся люди, то неограниченная вложенность кончается где-то на 7-10 уровней иерархии (больше просто неудобно пользоватся). Так что материализованный путь наше все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 17:40 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
LSVЧем не устраивает классика ID, ParentID ? Рано или поздно каждой роли(группа пользователей), в соответствии с правами, придётся давать доступ на определённые пункты. В соответствии с этим, дерево меню для каждого роли будет уникальным. Причём, хорошим моветоном считается случай, когда для своей роли мы можем назначить пункт в свой узел(логично, если пользователь часто обращается к пункту, то этот пункт должен ближе располагаться в меню) или взять местоположение, по умолчанию, из настроек. Как минимум, будет ID, ParentID, RoleID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:03 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
А мы вот в MongoDB храним в виде nested array, и называется это не Menu, а Site Structure, а все меню уже по ней строятся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:13 |
|
||
|
проектирование меню
|
|||
|---|---|---|---|
|
#18+
У нас был реализован вариант(не айс), когда есть стандартное дерево меню, а из него для каждого пользователя вычитается пункты и узлы к которым пользователь не имеет доступа. Дерево меню хранилось в таблице с id, parent_id. Убираемые пункты пользователя хранились в отдельной таблице. Обсчёт дерева меню пользователя происходил по схеме: Сначала брался нижний уровень дерева(допустим, уровень пунктов) из него вычитались хранимые пункты. Получали узлы с непустыми пунктами и так выше по дереву. В итоге, получили очень длительный обсчёт дерева меню(около 30 секунд). При выборе схемы исходили из того, что пользователи имеют доступ к подавляющему большинству форм(пунктов) - примерно 35 из 40, дальше изменение пунктов меню пользователей будет производится силами программистов( для экономии их временеми, изменения должны быть минимальны). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:27 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39471283&tid=1540163]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 395ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...