Правильный способ сохранить несколько флажков в MySQL (Laravel 5.3)

Использование Laravel 5.3 и MySQL 5.7.19.

Я хочу сохранить несколько вариантов (true / false) в моем User модель.

Они будут использоваться для определения того, будут ли определенные уведомления отправляться пользователю или нет. Мне никогда не нужно будет фильтровать Users этими флагами. Существует вероятность того, что будут введены новые флаги, но я не думаю, что количество флагов должно когда-либо превышать 20-50.

1. Моя первая идея — сохранить каждый из вариантов как отдельный tinyint(1) колонка, но это будет выглядеть очень, очень уродливо, даже если я добавлю к ним что-то вроде notification_flags_,

2. Вторая идея состоит в том, чтобы сохранить значения в виде целочисленного столбца и использовать побитовые операции для вывода свойства с использованием PHP. Это займет немного больше времени для реализации, но будет выглядеть чище. Не уверен насчет производительности, но, вероятно, медленнее, чем метод 1.

3. Третий вариант — использовать другую таблицу для флагов (давайте назовем это NotficationFlag модель) и подключить каждый User к этой таблице через сводную таблицу (используя вспомогательный метод / метод manyToMany от Laravel (не уверен в правильном имени)). Эта опция дала бы мне большую гибкость (которая мне не нужна, учитывая природу проблемы), и я думаю, что она будет самой медленной, но я действительно не знаю.

4. Четвертый вариант будет иметь отношение oneToOne с NotificationFlag модель и в этой модели иметь столбец для каждого флага. Это кажется мне тем же, что и в первом варианте, но немного приятнее и медленнее.

Каков наилучший способ сделать это? Мне кажется, что первый вариант — лучший, но что-то внутри меня говорит мне, что должен быть более хороший путь. Есть?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]