В наши дни это делается путем объединения пользователей и групп в «роли».Все, что у вас есть, - это роли и связывание ролей с другими ролями.Для некоторых ролей установлен флаг true для входа в систему, что делает их действительными пользователями, в то время как роли, для которых не установлен флаг входа в систему, больше похожи на группы.
Основная идея заключается в том, что все становится проще.Вам не нужно поддерживать две отдельные концепции или сущности (пользователь и группа), а только одну концепцию: роль.Затем вы используете этот флаг «login» для пользователей.
EDIT : Для структуры таблицы посмотрите на первый параметр, предоставленный @XIVSolutions, он объясняет то, что я упоминал выше.Он отвечает на ваш вопрос о размещении одной роли в любом количестве других ролей.Вторая таблица, перекрестная ссылка, перечисляет роль и ее родителя.Если у роли есть несколько родителей, то есть несколько записей в этой таблице, это похоже на наличие одного пользователя во многих группах.
# DIT : Также повторяйте: @XIVSolutions дизайн таблицы, эта третья таблица является совершенно законным способом иметь пользователей (логины) в качестве отдельно управляемых объектов.