База данных продуктов с несколькими атрибутами, а не с большим количеством таблиц базы данных - PullRequest
0 голосов
/ 12 июля 2020

Я начал создавать базу данных для продуктов для полов, и я задаю здесь вопрос, потому что мне не удалось найти дизайн / шаблон схемы, который позволяет продуктам иметь "атрибуты", такие как цвет, материал, размер, цена типа на метр и так далее, и в моем первоначальном дизайне я закончил с таблицами базы данных для каждого из вышеперечисленных атрибутов, что, как я знаю, не может быть лучшим или даже правильным способом сделать это.

Это есть ли способ добиться этого без множества таблиц? Я подозреваю, что это может быть сделано с одной или двумя таблицами, но я не могу думать об отношениях, поэтому мой неудачный поиск дизайна или шаблона.

Barry

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Самый простой способ - сохранить атрибуты в отдельных столбцах таблицы products. Если конкретный продукт не имеет атрибута, то значение будет NULL.

Иногда этого подхода недостаточно, часто по одной из двух причин:

  • Там Атрибутов много, и они делятся на разные группы.
  • Вам нужно добавлять новые атрибуты по запросу.

В этом случае у вас есть два варианта:

  • Хранить атрибуты в таблице значений атрибутов объекта (EAV). В основном это три столбца: продукт, имя атрибута и значение. Это может быть удобно и гибко, но недостатком является то, что столбец «значение» имеет только один тип в таблице SQL.
  • Сохраняйте атрибуты, используя «гибкий» механизм хранения, например JSON или XML.

Иногда я использую гибридный подход, когда у меня есть таблица products с основными атрибутами. Затем есть столбец JSON для более гибких / специфичных c атрибутов.

0 голосов
/ 12 июля 2020

Поскольку у вас будет разное количество атрибутов, я бы сделал таблицу для продукта, а другую - для атрибутов с отношением «многие к одному» [один продукт имеет много атрибутов].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...