如何设置具有多个类似属性的数据库表

时间:2010-02-18 04:21:38

标签: php mysql database database-design data-structures

有产品,部分和属性。

每个属性最多可包含5个或6个选项。

示例:电源

10 Volt
15 Volt
20 Volt

总共有大约10种产品,每种产品最多可以应用17种属性。

示例:产品1

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

您如何设置表格?我很难过。我想为每个attrubute设一个单独的表,然后是产品表和section表。

products表将包含与其相关的属性的外键和部分。这有意义吗?

2 个答案:

答案 0 :(得分:0)

  

我在考虑分开   每个attrubute的表格,

不要为每个属性创建单独的表,这不会为您的目的服务。

为每个产品,部分和属性创建单独的表,并使用PK和FK相应地连接它们。

答案 1 :(得分:0)

这很常见。您可以拥有一个基本产品表,其中包含一些常规属性,如...

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表。