Здравствуйте, подскажите по архитектуре БД и релейшенам?
У меня есть товар и его свойства, конкретно цвет и размер
у одного товара может быть сколько угодно цветов и размеров на цену это никак не влияет
Делаю таблицу товаров
products
id,name,slug.....
Делаю таблицу цветов
colors
id, name, hex
Делаю таблицу размеров
sizes
id, name, length, width, height
Делаю таблицу, в которой храню товар, его цвет, его размер
product_params
id, product_id, color_id, product_id
те в ней планирую записи типа
товар_1, красный, 10*10*10
товар_1, синий, 10*10*10
товар_1, зеленй, 10*10*10
.....
много строк на 1ин товар
я думаю сделать так, или можно как-то лучше?
при этом в модели товара я не очень понимаю как сделать релейшен
я бы хотел иметь их 2 на цвет и на размер
но у меня это все в одной таблице, может целесообразнее сделать один релейшен и разом все получать (эконичнее)?
типа
product->colors - отдает коллекцию цветов
product->sizes - отдает коллекцию размеров
но color и size в одной таблице(product_params), зачем их получать отдельными запросами, можно как-то получить одним?
Такая промежуточная таблица предполагает, что количество размеров равно количеству цветов. Лучше сделать две таблицы. Ну, или можно одну полиморфную (product_id, relation_type, relation_id), но это в данном случае нерационально.
Тип отношения называется many-to-many