Я перерабатываю интерфейс и базу данных для базы данных продуктов среднего размера, чтобы она могла поддерживать категории / подкатегории, линейки продуктов, производителей, поддерживаемое программное обеспечение и атрибуты продуктов.Прямо сейчас есть только таблица продуктов.Там будут страницы для продуктов по линиям, по категориям / подкатегориям, по производителям, поддерживаемым программным обеспечением (необязательно).Каждая страница будет иметь дополнительную фильтрацию на основе других классификаций.
Категории / подкатегории (многоуровневые) Продукты и линейки продуктов могут быть назначены нескольким деревьям категорий.Поддерживается до 5 уровней.
Линии продуктов (одноуровневые) Группы продуктов.Продукт может быть только в одной линейке продуктов.
Производители (один уровень) Продукты и линейки продуктов могут быть назначены одному производителю.
Поддерживаемое программное обеспечение (один уровень) Некоторые продукты работают только с одним илибольше программ, поэтому продукт / линейка могут быть назначены ни одному, одному или нескольким программам.
Атрибуты (тип / опции - можно обрабатывать, чтобы каждый тип был категорией, а элементы - дочерними). Продукты и линейки продуктов могутбыть назначены атрибуты (например, - цвет> красный / синий / зеленый).Атрибуты должны иметь возможность присваиваться одной или нескольким категориям.
Поскольку все эти элементы в основном являются типами подкатегорий, я должен поместить их все вместе в основную таблицу ИЛИ разделить их на отдельные таблицы для каждой?
Идея мастер-таблицы:
ClassificationTypes (линейка продуктов, категория / подраздел, производитель, программное обеспечение, атрибут будут все типы)-TypeID-Имя
Классификации-ID класса-TypeID-ParentClassID-Имя
КлассификацияПродукцияАссоциации-Код товара-ClassID
Мне все еще понадобится хотя бы еще одна таблица для связи типов (например, для связи атрибутов с категорией) и способ связать линии продуктов с различными типами.
Если яиспользуйте таблицу для каждого типа, она может быстро запутаться, и мне все равно понадобится способ связать все вместе.
Настройка нескольких таблиц:
Категории-CategoryID-Название-ParentCategoryID
КатегорииАссоциации-CategoryID-Код товара-ProductLineID?
Атрибуты-AttributeID-Название-ParentAttributeID (используйте это, поскольку родительский будет "color", а child будет "red")
AttributesAssociations-AttributeID-Код товара-CategoryID (мне также нужно связать категорию с родительским атрибутом?)
CompatibleSoftware-SoftwareID-Имя
Совместимое программное обеспечение Ассоциации-SoftwareID-Код товара-ProductLineID?
Производители-ManufacturerID-Имя
ProductLines-ProductLineID-ManufacturerID-Имя
Продукты-Код товара-ProductLineID-ManufacturerID-Name
Другой вариант для ассоциаций - иметь одну таблицу связей, чтобы связать таблицы выше:
Основные ассоциации-Код товара-ProductLineID-ManufacturerID-CategoryID-SoftwareID-AttributeID
Какое лучшее решение?