Каковы плюсы и минусы каждого способа?
Вариант 1. Я могу быть уверен, что основная категория для продукта действительно является одной из его категорий.Но может возникнуть проблема с обеспечением того, чтобы продукт имел не более одной основной категории.
Вариант 2. Это позволяет мне убедиться, что продукт имеет только одну основную категорию.Но тогда у меня, похоже, нет способа убедиться, что это одна из категорий этого же продукта.
Так что, я бы, наверное, выбрал третий вариант , используя таблицу Products_PrimaryCategories
:
Products_PrimaryCategories: product_id, category_id
Похоже на product_categories
, но имеет некоторые дополнительные свойства:
product_id
имеет связанный уникальный индекс, убедившись, чтоВы можете иметь только одну основную категорию для каждого продукта;
(product_id, category_id)
- это внешний ключ, ссылающийся на products_categories (product_id, category_id)
, гарантирующий, что основная категория продукта относится к его категории (что означает, что (product_id, category_id)
должен быть первичным ключом products_categories
).