Каков наилучший дизайн таблицы базы данных, которая может принадлежать двум разным ресурсам и, следовательно, нуждается в двух разных внешних ключах?

Мое приложение имеет настройки уведомлений для пользователей, которые могут принадлежать к группам. Администратор группы может определить параметры для всей группы, поэтому, когда любой пользователь выполняет действие, администратор получает уведомление. Администратор также может определить настройки для отдельного пользователя, которые будут переопределять настройки группы.

Прямо сейчас у меня есть база данных со столбцами:group_id, action1, action2, action3, ..., Действия являются логическими значениями, которые определяют, уведомлен ли администратор, когда это действие выполняется пользователем в его или ее группе.

Я мог бы сделать отдельную таблицу, принадлежащую модели User, а не модели Group, но кажется неэффективным хранить те же самые данные в совершенно отдельной таблице, за исключением измененияgroup_id кuser_id

Другой вариант - добавитьuser_id к таблице у меня уже есть, и разрешить нулевые значения дляgroup_id, При определении настроек уведомлений для пользователя приложение сначала выбирает настройку на основе пользователя, и возвращается к настройке, гдеgroup_id не является нулевым Это кажется неэффективным, потому что в базе данных будет много нулевых значений, но это определенно требует меньше работы с моей стороны.

Есть ли дизайн для этой ситуации, который более эффективен, чем два Яописал?

Ответы на вопрос(2)

Ваш ответ на вопрос