@almassar
web программист

Как хранить данные в базе данных неопределенного типа?

У меня есть сущность атрибут товара (размер, длина, состав, вес и т.д). Они могут быть разного типа например размер - это целое число, вес товара - дробное число, состав может быть строкой. Можно сделать разные столбцы в таблице attribute_products например value_int, value_decimal, value_string. Но тогда трудно делать update.

На данный момент я сделал так:
Таблица attributes (id, name, type) - type это перечисляемый тип его значения (int, decimal, string)
Таблица attribute_products (id, id_attribute, id_product, value_int, value_decimal, value_string)
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ponaehal
Хех... Не бывает абсолютно правильного ответа вне контекста решаемых задач.
Например, если необходимо часто эти данные извлекать, да еще и сортировкой (наверное нет необходимости объяснять разницу в порядке сортировки строковых и числовых значений), то Ваше текущее решение может оказаться наиболее правильным. Если значения всех характеристик упаковать в одно поле, то будут проблемы с извлечением, т.к. индекс по текстовому полю строить видимо бессмысленно (ввиду разнородности хранимой информации)
С другой стороны, если не планируете часто сортировать товары по значению одной из характеристик (например, по весу, габаритам), то и Бог бы с ним - делайте текстовое поле

ЗЫ Вот интересно что Вы такое пишите? Вроде бы уже куча интернет-магазинов написано под разные CMS. Ан нет, нужно сделать свое, родное....
Ответ написан
Ваш ответ на вопрос

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

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