Таблица oc_product_to_category
Таблица oc_product_to_category является классическим примером связующей таблицы в реляционной базе данных. Она реализует отношение многие-ко-многим между таблицами товаров (oc_product) и категорий (oc_category). Это означает, что один товар может принадлежать нескольким категориям, и в одну категорию может входить множество товаров.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_id |
int |
Идентификатор товара. Внешний ключ, ссылается на product_id в таблице oc_product.
|
category_id |
int |
Идентификатор категории. Внешний ключ, ссылается на category_id в таблице oc_category.
|
Как это работает
Когда администратор добавляет товар в магазине, он может назначить ему одну или несколько категорий. Для каждой выбранной категории в таблицу oc_product_to_category добавляется отдельная запись, содержащая пару product_id - category_id.
Например, если товар "Смартфон Samsung" (product_id = 123) добавлен в категории "Смартфоны" (category_id = 15) и "Техника Samsung" (category_id = 27), в таблице появятся две записи:
(123, 15)
(123, 27)
При отображении товара на сайте система проверяет эту таблицу, чтобы определить, в каких категориях его показывать. Аналогично, при просмотре категории система ищет все товары, связанные с её category_id.
Первичный ключ для этой таблицы составляет комбинация полей (product_id, category_id), что гарантирует уникальность каждой связи и предотвращает дублирование записей.
Пример SQL-запроса
Получить все товары, принадлежащие к конкретной категории (например, ID=15), можно с помощью JOIN:
SELECT p.*
FROM oc_product p
INNER JOIN oc_product_to_category p2c ON p.product_id = p2c.product_id
WHERE p2c.category_id = 15;
Получить все категории, к которым принадлежит конкретный товар (например, ID=123):
SELECT c.*
FROM oc_category c
INNER JOIN oc_product_to_category p2c ON c.category_id = p2c.category_id
WHERE p2c.product_id = 123;
Смотрите также
-
таблицу
oc_product,
которая содержит основную информацию о товарах -
таблицу
oc_category,
которая хранит информацию о категориях -
таблицу
oc_product_description,
которая содержит языковые описания товаров -
таблицу
oc_category_description,
которая содержит языковые описания категорий