@bysobi

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

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

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

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

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

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

Подскажите, пожалуйста, как лучше реализовать таблицу.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 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), но при этом последние два друг на друга ссылаться не будут, ибо разные группы.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы