Я хотел бы знать, что может быть лучшим подходом для моделирования ролевых отношений между пользователями и другими объектами.Давайте возьмем страницу Facebook, например: у пользователя могут быть разные роли на странице.Он может быть администратором, модератором и т. Д.
Как должны быть разработаны Коллекции для такого случая?Должно быть легко запрашивать все страницы, для которых данный пользователь выполняет одну конкретную роль.Также должно быть легко проверить разрешения на уровне базы данных.
Я думал о разных подходах:
A: Хранить страницы / роли в коллекции User
- Легко запрашивать все страницы для данного пользователя
- Возможно раздутая модель
User
B: Хранить пользователей с их ролями в коллекции Pages
- Легко запрашивать все пользователей / ролей для данной страницы
- Возможно раздутая
Pages
модель
C: Использовать коллекцию отношений PageRoles
- Выигралне раздувать доменные модели
- Требуется дополнительный запрос для проверки ролей
Если мы говорим об A или B, у нас снова два возможных подхода:
A: Использование плоских массивов
Пример:
{
name: 'A Page',
admins: [],
moderators: [],
}
B: Использование объектов
Пример:
{
name: 'A Page',
roles: {
// maps userId to the users role
1: 'admin',
5: 'admin',
6: 'moderator'
}
}
Какие могут быть плюсы и минусыиз этих разных подходов?
Спасибо за любой вклад.