Василий М.
Новичок
Привет всем, давно меня не было тут, надеюсь ещё не забыли =)
Вчера у нас с коллегами разрозился спор. Прошу компетентного мнения.
Итак. Имеется таблица USERS с 25 полями, 1 500 000 записей. Появляется задача - хранить для каждого пользователя некий параметр (в нашем случае - промокод, который согласно текущей бизнес-логики у пользователя может быть только один).
Возникает вопрос - где хранить этот параметр?
Мое предложение: хранить в USERS.
Обоснования:
- отдельная таблица для хранения данных нужна только для случаев, если есть связь один ко многим. Например, у пользователя ВСЕГДА будет только один пол, возраст, имя и фамилия, рост, вес, размер обуви. Подобные параметры всегда имеют связь один к одному.
И некий параметр, который всегда у пользователя будет в единичном экземпляре, нужно хранить в USERS. Нет никаких очевидных приемуществ хранить такой параметр где-то ещё.
- высокая нагрузка и клиентский код не должны влиять на структуру хранение данных
Предложения коллег: cоздать таблицу USERS_PROPERTIES со структурой
user_id | property_key | property_value
и тянуть данные простыми SELECT-ами.
Обоснования:
- не нужно каждый раз делать ALTER TABLE USERS в случае, если нужно добавить столбец. В данный момент на боевой базе с 1.5 млн. записей этот процесс очень долго идет.
- простые запросы будут легче чем SELECT * FROM users
- некий параметр нужен не всегда и лучше его хранить отдельно
Вчера у нас с коллегами разрозился спор. Прошу компетентного мнения.
Итак. Имеется таблица USERS с 25 полями, 1 500 000 записей. Появляется задача - хранить для каждого пользователя некий параметр (в нашем случае - промокод, который согласно текущей бизнес-логики у пользователя может быть только один).
Возникает вопрос - где хранить этот параметр?
Мое предложение: хранить в USERS.
Обоснования:
- отдельная таблица для хранения данных нужна только для случаев, если есть связь один ко многим. Например, у пользователя ВСЕГДА будет только один пол, возраст, имя и фамилия, рост, вес, размер обуви. Подобные параметры всегда имеют связь один к одному.
И некий параметр, который всегда у пользователя будет в единичном экземпляре, нужно хранить в USERS. Нет никаких очевидных приемуществ хранить такой параметр где-то ещё.
- высокая нагрузка и клиентский код не должны влиять на структуру хранение данных
Предложения коллег: cоздать таблицу USERS_PROPERTIES со структурой
user_id | property_key | property_value
и тянуть данные простыми SELECT-ами.
Обоснования:
- не нужно каждый раз делать ALTER TABLE USERS в случае, если нужно добавить столбец. В данный момент на боевой базе с 1.5 млн. записей этот процесс очень долго идет.
- простые запросы будут легче чем SELECT * FROM users
- некий параметр нужен не всегда и лучше его хранить отдельно
Последнее редактирование: