Добрый день есть следующая схема БД:
т.е. пользователь входит в группу, а у группы есть список меню отображаемых в интерфейсе. В данном случае мы можем узнать список меню у конкретного пользователя. Но иногда требуется добавить отдельное меню пользователю вне зависимости от группы. Как это лучше хранить в БД?
такие особые случаи лучше хранить отдельно, например user_custom_menu, и там сохраняете user и menu, а потом через union all присоединяете результат к основному запросу. В принципе то же, что и Roman Kitaev во втором варианте предложил.
Вариант без изменения схемы: добавить юзера в группу, где будет только он один, навешать нужные меню.
Вариант со схемой: М2М на меню и юзера (так же, как и user_group и group_menu)
В таблицу group_menu добавьте поле id_user. Когда меню назначается через группу, то оно будет равно null, если через пользователя - id_group=null. И да, название таблицы уже не будет соответствовать содержанию - можно переименовать. Запрос возвращающий меню потребуется переписать соответственно.