Скажем, я хочу, чтобы пользователи выбрали один или несколько способов связи (электронная почта, телефон, факс и т. д.). И если они выберут другой, то они могут ввести единственный способ связи самостоятельно. Каков наилучший способ сохранить это в базе данных? Я вижу три возможности:
- Используйте столбец заданного типа данных, а также один столбец varchar «other_contact» для хранения необязательного введенного пользователем значения.
- Используйте многие ко многим и столбец, введенный пользователем. Таким образом, будет таблица user, таблица contact_method и таблица user_contact_method, которая их соединяет. Плюс столбец varchar user.other_contact для хранения необязательного введенного пользователем значения.
- Просто используйте многие ко многим. Та же настройка, что и для 2, но пользователи могут добавлять записи в таблицу contact_method. Но это означает, что мне придется добавить столбец для отслеживания «системных» значений (они не могут быть изменены или удалены пользователями, и только они отображаются в раскрывающемся списке). Кроме того, мне придется добавить дополнительную логику, чтобы разрешить изменение введенных пользователем значений.
Любые комментарии к вышеизложенному или есть лучшее решение?