Создание базы данных интернет магазина
Подскажите, пожалуйста, как будет лучше сделать "атрибуты" для товаров, например цвет, размер и т.д. Я сделал так:
AttributeType
[id]
[Name]
AttributeValue
[Id]
[Value]
ProductAttribute
[Id]
[AttributeValueId]
[ProductId]
[IsInStock]
[AttributeTypeId]
У товара не обязательно должны быть какие-то атрибуты. Отдельно сделал таблицы AttributeType и AttributeValue чтобы не надо было для каждого товара заново добавлять те же значения размеров/цветов и т.д.
Я столкнулся с такой проблемой: на странице товара, при наличии цветов, нужно сделать кружочки с цветами(ну типо как на маркетплейсах бывает). Но как мне понять, что это цвет? Планируется, что будут "модераторы", которые могут на сайте менять, добавлять и атрибуты и товары. Сравнивать Name у AttributeTypе со строкой "color" не лучший вариант, ибо неизвестно что туда введет модератор, вдруг опечатается или еще что-то. Как можно это реализивать?
Ответы (2 шт):
Где-то должно быть зафиксировано значение AttributeTypeId, которое будет считаться главным, выводимым в кружочках.
Можно добавить его непосредственно в таблицу Product, и заполнять для каждого товара.
Когда проектировал совой абстрактный интернет-магазин, пришёл к мысли, что должен быть справочник категорий товаров (возможно иерархический), и справочник соответствий для каких категорий применимы какие атрибуты.
В таком случае можно закрепить главный (выводимый в кружочке) атрибут в таблице категорий.
По своему опыту: я бы ещё посоветовал к каждому ID в таблицах дописать имя таблицы, чтоб потом не путаться в ID при сборе запросов или обращении к данным, к примеру, в таблице AttributeType не просто id, а idAttributeType. в таблице ProductAttribute - idProductAttribute