Twitt
@Twitt

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

Есть у меня колонка в таблице, которая может быть не заполнена по желанию юзера. Причем например, на 10 000 записей, у 4000 строк она может быть не заполнена (null). Есть ли смысл от этой колонки в таблице, или сделать отдельную таблицу с этой колонкой, и туда будут попадать только те записи, у которых эта колонка должна быть заполнена?
Просто мне кажется, что если колонку оставить в существующей таблице, то это занимает лишнее место (у многих там просто null)
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
или сделать отдельную таблицу с этой колонкой, и туда будут попадать только те записи, у которых эта колонка должна быть заполнена?
нет

Просто мне кажется, что если колонку оставить в существующей таблице, то это занимает лишнее место (у многих там просто null)
преждевременная оптимизация
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Оставьте её в покое. Она не займёт места больше двух соседних.
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
она может быть не заполнена (null).

Она заполнена. NULL это валидное значение, такое же как и любое другое.

или сделать отдельную таблицу с этой колонкой

Лишнее. Это дополнительный запрос или JOIN. Выигрыша ноль.

Почитайте про кардинальность. Нету ничего плохого в том, чтобы часть записей имело NULL в колонке, которая не является обязательной. Вот если таких колонок становится много и их все условно можно отнести в категорию secondary/metadata - например, они не используются на выводе "все пользователи" (индекс), а нужны только при просмотре одного конкретного пользователя - вот тогда можно думать о том, чтобы выносить эти данные в отдельную таблицу. Например, будет users и user_data, в которой и будут эти колонки. На индексе вы будете запрашивать только users, на одном пользователе - обе таблицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы