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

Как лучше хранить контактные данные пользователей в базе данных для вашего пет-проекта на Java Spring, где пользователи могут указывать phoneNumber и telegramUsername при регистрации? Можно ли использовать класс ContactInfo с полями phoneNumber и telegramUsername, что может привести к несоответствию 3НФ из-за возможного наличия пустых полей? Либо предпочтительнее создать два отдельных класса (таблицы) для phoneNumber и telegramUsername, связанных с классом User "0..1 к 1", хотя это может быть избыточным и сложным в сопровождении? Какой из этих подходов оптимальнее для вашего проекта, и существуют ли еще какие-то альтернативные варианты решения данной задачи?
  • 2 мая 2024 г. 10:20
Ответы на вопрос 2
Для хранения контактной информации в базе данных лучше всего использовать отдельную таблицу для контактных данных пользователей, чтобы избежать возможных проблем с производительностью и структурой данных.

В случае вашего пет-проекта на Java Spring, где пользователи могут указывать phoneNumber и telegramUsername при регистрации, предпочтительнее использовать отдельную таблицу для хранения контактной информации пользователей. Вы можете создать класс ContactInfo с полями phoneNumber и telegramUsername, который связывается с классом User "0..1 к 1". Этот подход позволит вам легко получать и обновлять контактные данные пользователей.

Создание отдельных таблиц для phoneNumber и telegramUsername может быть избыточным и усложнить структуру базы данных, так как в вашем случае оба поля могут быть заполнены одновременно или одно из полей может остаться пустым. Такой подход может привести к дублированию данных и усложнению запросов к базе данных.

Оптимальным решением для вашего проекта будет создание отдельной таблицы для контактной информации пользователей, где будут храниться оба поля phoneNumber и telegramUsername. Это позволит вам эффективно хранить и управлять контактной информацией пользователей, избежать дублирования данных и упростить запросы к базе данных.

Есть также альтернативный вариант решения данной задачи, который заключается в создании дополнительного столбца в таблице User для хранения контактной информации. Однако этот подход может быть менее структурированным и менее эффективным с точки зрения управления данными.
Есть ещё третий путь: 
И номер телефона и юзернейм - это обычные строки. Собственно любой другой контакт тоже будет строкой.
=> Можно сделать таблицу Contact с колонками:
contact_id, user_id, contact_type, contact_value

contact_type - енам

PS: так теоретический вопрос или практический?)
Похожие вопросы