Дизайн таблицы пользователей базы данных, для конкретного сценария

Я знаю, что на этот вопрос задавали и отвечали много раз, и я потратил приличное количество времени на чтение следующих вопросов:

Проблема в том, что, похоже, существует несколько равномерное распределение сторонников для нескольких классов решений:

  • Вставьте пользовательские настройки в одну таблицу, пока она нормализуется
  • Разделите его на две таблицы с номерами от 1 до 1, например "users" и "user_settings"
  • Обобщите это с помощью некоторой системы ключ-значение
  • Придерживайтесь флагов установки в битовом поле или другой сериализованной форме

Поэтому, рискуя задать повторяющийся вопрос, я бы хотел описать свой конкретный сценарий и, надеюсь, получить более конкретный ответ.

  • В настоящее время мой сайт имеет одну пользовательскую таблицу в MySQL, около 10-15 столбцов (идентификатор, имя, адрес электронной почты, пароль...)

  • Я хотел бы добавить набор настроек для каждого пользователя для отправки уведомлений по электронной почте для различных типов событий (notify_if_user_follows_me, notify_if_user_messages_me, notify_when_friend_posts_new_stuff...)

  • Я ожидаю, что в будущем я буду редко добавлять по одному индивидуальным настройкам, которые в основном составляют 1: 1 для пользователей.

Я склоняюсь к созданию второй таблицы user_settings и вставляю туда "несущественную" информацию, такую ​​как настройки уведомлений по электронной почте, для того, чтобы сделать основной пользовательский стол более читабельным, но очень любопытно услышать, что ожидают сказать.

2 ответа

Решение

Кажется, ваша дилемма состоит в том, чтобы разделить пользовательскую таблицу по вертикали или нет. Вы можете также прочитать это SO Q/A.

Я собираюсь отдать свой голос за добавление двух таблиц... (некоторая система значений ключей sota)

предпочтительнее (для меня) добавлять данные вместо столбцов... так что,

добавить новую таблицу, которая связывает пользователей с настройками, а затем добавить таблицу для настроек...

эти вещи: notify_if_user_follows_me, notify_if_user_messages_me, notify_when_friend_posts_new_stuff. станет вставкой строк с идентификатором, и вы можете ссылаться на них в любое время и расширять их по мере необходимости, не меняя схему.

Другие вопросы по тегам