У меня есть 3 таблицы MySQL для системы членства.
users
: Минимальные требования, чтобы быть пользователем, связанные только с информацией об аккаунте (email, пароль, is_activated, etc)user_profiles
: Личная информация, предоставленная пользователем (имя, адрес, телефон...)user_member_profiles
: Информация, строго управляемая администраторами (оплаченный регистрационный взнос, посещенные встречи и т.д.)Эти данные можно было бы объединить в одну таблицу, избавив меня от головной боли и сохранив мой код чистым - но я чувствую, что лучше оставить их по отдельности, поскольку они служат немного разным целям.
Вариант 1: Оставить все как есть и продолжать делать JOIN
ы и утомительные UPDATE
ы (эта часть данных идет в эту таблицу, эта часть идет в другую и т.д.). Больше работы для меня, но, возможно, это имеет больше смысла?
Вариант 2: Объединить все в одну таблицу.
Я бы предположил, что использование одной таблицы будет быстрее, не нужно объединять таблицы. Может быть, это зависит от данных? Каждая таблица имеет около 12-20 полей, поэтому объединенная таблица будет большой.
Каждый пользователь имеет не более 1 профиля из каждой таблицы, но может и не иметь профиля вообще (или иметь только 1 общий).
Чтобы добавить немного контекста к этому: Это для постоянно развивающейся CMS, написанной на PHP, и мне нужно будет вносить изменения в таблицы для каждой установки. Администраторам нужно управлять пользователями в форме speadsheet, поэтому я буду выбирать до 200 пользователей за раз.
Каков правильный подход к этому с точки зрения производительности, дизайна или организации?