@FimozMozga

Как лучше хранить много свойств в бд?

Есть некоторые сущности, у которых помимо обычных свойств типа title, photo и тд, есть дополнительные свойства, которые задают дизайн сущности на фронте. Обычные css стили, которых насчитывается уже сейчас более 150 и периодически добавляются новые.

Создавать под каждое свойство поле в бд как то сильно режет глаза, не нравятся большие таблицы.

Поэтому сейчас все хранится в 1 текстовом поле, в котором находится сериализованный массив. Из минусов пока что только большое кол-во ключей, и приходится вести еще дополнительную документацию по ключам и иногда ключа может и не быть, например когда добавили новое css свойство, приходится на фронте проверять есть ли ключ.

Второй вариант это создать отдельную таблицу под css свойства и туда уже пихать 100+ полей

Какой из вариантов оптимальный для такой задачки? Или мб есть какой ни будь еще вариант?)
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 4
Maksclub
@Maksclub
maksfedorov.ru
Комментировать
@PiloTeZ
...
Не обязательно под каждое свойство создавать поле. Можно сделать таблицу в формате ключ-значение. Например entity_styles с полями id, code, value, entity_id. И тогда можно будет хранить неограниченное количество значений.

Что бы значение гарантированно было, можно создать модель со свойствами соответствующими стилям и заполнить ее данными из таблицы. Например EntityStyles (background, color и т.п., со значениями по умолчанию).

Для более подходящего решения нужно больше информации о контексте. Где, зачем, примеры
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Если это просто сет документов - то и надо брать документно-ориентированные БД.
MongoDb например или CouchDb.
Ответ написан
@rPman
Обычные css стили, которых насчитывается уже сейчас более 150
что то тут не так, в нормальной ситуации это слишком много.

Поддаются ли эти атрибуты группировке (т.е. клиент запрашивает эти атрибуты сразу пачкой)? существует ли необходимость одновременного редактирования атрибутов из одной группы нескольким пользователям, есть ли вообще многопользовательское редактирование?

Например если задача - стилизация аккаунтов пользователей, т.е. это не 150 стилей, это по условные 10 атрибутов у каждого пользователя, то сериализуй все атрибуты группами на каждого пользователя в тот же json и храни в одном поле
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы