Как настроить таблицы базы данных с несколькими похожими атрибутами - PullRequest
0 голосов
/ 18 февраля 2010

Есть товары, разделы и атрибуты.

Каждый атрибут может иметь до 5 или 6 параметров.

Пример: Мощность

10 Volt
15 Volt
20 Volt

А всего около 10 продуктов, к каждому продукту применено до 17 атрибутов.

Пример: Продукт 1

power - 10 volt
color - red, yellow
link - online, offline

Как бы вы настроили таблицы? Я в тупике. Я думал о том, чтобы иметь отдельную таблицу для каждого атрибута, затем таблицу продуктов и таблицу разделов.

Таблица продуктов будет содержать внешние ключи для атрибутов, которые с ней связаны, и разделов. Имеет ли это смысл?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2010

Это довольно часто.Вы можете иметь таблицу базовых продуктов с некоторыми общими атрибутами, такими как ...

Product
-------
ProductID
ProductName 
Description
Price

Затем вы можете расширить таблицу для различных типов продуктов.Таким образом, у вас может быть таблица типа

ProductElectrical 
-----------------
ProductID
Voltage
Watts
BatterySize

Или ...

ProductApparel
---------------
ProductID
Color
Size
Material

Затем, при необходимости, вы можете присоединить таблицы расширений к основной таблице продуктов, как эта ...

select p.ProductID, p.ProductName, p.Description, pa.Color, pa.Size, pa.Material
from Product p
join ProductApparel pa
on pa.ProductID = p.ProductID
where pa.Size = "XXL"

Таким образом, вы можете использовать компактную таблицу основных продуктов, используемую в вашей системе.Когда вам нужно увидеть дополнительные атрибуты, вы можете легко присоединить их к основной таблице Product.

0 голосов
/ 18 февраля 2010

Я думал о том, чтобы иметь отдельную таблицу для каждого атрибута,

Не создавайте отдельную таблицу для каждого атрибута, это не будет служить вашей цели.

Создайте отдельные таблицы для каждого из продуктов, разделов и атрибутов и соедините их соответствующим образом, используя PK и FK.

...