powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / проектирование меню
10 сообщений из 10, страница 1 из 1
проектирование меню
    #39471277
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как грамотно спроектировать таблицу(цы) меню, чтобы была неограниченая вложенность как узлов так и пунктов?
Или ткните ссылкой...
Что-то вроде такого:
узел1
пункт1
пункт2
узел2
узел1
пункт1
узел1
пункт1
пункт2
узел2
пункт1
пункт1
пункт2
пункт1
пункт2

Желательно с примером рекурсивного обхода:)
...
Рейтинг: 0 / 0
проектирование меню
    #39471279
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
узел1
пункт1
пункт2
узел1
      узел1
          пункт1
          пункт2
узел2
    пункт1
    пункт2
пункт3
узел3
    пункт1
    пункт2
...
Рейтинг: 0 / 0
проектирование меню
    #39471283
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем не устраивает классика ID, ParentID ?
...
Рейтинг: 0 / 0
проектирование меню
    #39471322
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да устраивает, но вдруг есть хорошая альтернатива.
...
Рейтинг: 0 / 0
проектирование меню
    #39471343
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosДа устраивает, но вдруг есть хорошая альтернатива.Разве что:
"Альтернатива - утки" (с) анек :)
...
Рейтинг: 0 / 0
проектирование меню
    #39471364
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeosДа устраивает, но вдруг есть хорошая альтернатива.

Альтернативы есть.
Если узлов и пунктов не много, можно хранить в строке путь.

Если вставка не важна, а важна выборка, то можно Nested Set
...
Рейтинг: 0 / 0
проектирование меню
    #39471669
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegeos Как грамотно спроектировать таблицу(цы) меню, чтобы была неограниченая вложенность как узлов так и пунктов?Если данным меню будут пользоватся люди, то неограниченная вложенность кончается где-то на 7-10 уровней иерархии (больше просто неудобно пользоватся). Так что материализованный путь наше все.
...
Рейтинг: 0 / 0
проектирование меню
    #39471944
kernA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЧем не устраивает классика ID, ParentID ?

Рано или поздно каждой роли(группа пользователей), в соответствии с правами, придётся давать доступ на определённые пункты.
В соответствии с этим, дерево меню для каждого роли будет уникальным.
Причём, хорошим моветоном считается случай, когда для своей роли мы можем назначить пункт в свой узел(логично, если пользователь часто обращается к пункту, то этот пункт должен ближе располагаться в меню) или взять местоположение, по умолчанию, из настроек.

Как минимум, будет ID, ParentID, RoleID
...
Рейтинг: 0 / 0
проектирование меню
    #39471951
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мы вот в MongoDB храним в виде nested array, и называется это не Menu, а Site Structure, а все меню уже по ней строятся :)
...
Рейтинг: 0 / 0
проектирование меню
    #39471964
kernA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас был реализован вариант(не айс), когда есть стандартное дерево меню, а из него для каждого пользователя вычитается пункты и узлы к которым пользователь не имеет доступа.

Дерево меню хранилось в таблице с id, parent_id.
Убираемые пункты пользователя хранились в отдельной таблице.
Обсчёт дерева меню пользователя происходил по схеме:
Сначала брался нижний уровень дерева(допустим, уровень пунктов) из него вычитались хранимые пункты.
Получали узлы с непустыми пунктами и так выше по дереву.
В итоге, получили очень длительный обсчёт дерева меню(около 30 секунд).

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


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