Задать вопрос
@bysobi

Как правильно спроектировать связь БД между двумя товарами?

Здравствуйте!
Есть товар (белье), у товара есть опции размера (двухспальное, односпальное).
Задача №1 (СДЕЛАНО!) : разъединить товар по опциями (создать для каждой опции отдельный товар со своим урлом). В итоге у нас два товара:
- ID 10 Белье двухспальное
- ID 15 Белье односпальное

Задача №2 (Не сделано): на странице этих товаров сделать друг на друга ссылку (сделать вид, что они связаны между собой как раньше опциями), но по факту - это разные товары.

Вопрос: как мне правильно спроектировать таблицу для связей между этими товарами. Чтобы каждый из этих товаров ссылался друг на друга?
Я вижу это так:

linking_options (таблица)
product_id | linking_product_id
--------------------------------------
10 | 15
15 | 10

В таком случае, мы связываем два товара. Но, если связать нужно будет 3 или 4 товара вместе? Тогда добавлять дополнительные столбцы(глупо как по мне)....

Подскажите, пожалуйста, как лучше реализовать таблицу.
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Вопрос: как мне правильно спроектировать таблицу для связей между этими товарами. Чтобы каждый из этих товаров ссылался друг на друга?

CREATE TABLE groups_of_goods (
    group_id BIGINT UNSIGNED NOT NULL,
    product_id BIGINT UNSIGNED NOT NULL,
    PRIMARY KEY (group_id, product_id),
    FOREIGN KEY fk_product (product_id) REFERENCES product (product_id)
);


Соответственно если твои труселя входят в одну группу и ссылаются друг на друга, то в таблице будут 2 записи - (123, 10) и (123, 15).

Кстати, такая схема обеспечивает и принцип "вассал моего вассала ...". Т.е. "пиджак малиновый" может ссылаться на "брюки малиновые" (через группу 456) и "пиджак в полоску" (через группу 789), но при этом последние два друг на друга ссылаться не будут, ибо разные группы.
Ответ написан
Ваш ответ на вопрос

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

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