列太多设计问题

1 sql

我有一个设计问题.

我必须在一个表中存储大约100个不同的属性,这些属性也应该是可搜索的.因此,每个属性都将存储在自己的列中.每个属性的值总是小于200,所以我决定使用TINYINT作为每个属性的数据类型.

创建一个大约有100列(每个TINYINT)的表是一个好主意吗?这个设计可能有什么问题?

或者我应该将属性分类到一些组(说4组)并将它们存储在4个不同的表中(每个表大约有25列)

或者我必须遵循的任何其他数据存储技术.

例如,表格是Table1,它包含每个TINYINT数据类型的Column1,Column2 ... Column100列.

由于每行的大小将非常小,我可以按照上面的说明进行操作吗?

我只是想知道它的优点/缺点.

如果您认为拥有100列的表不是一个好主意,那么请建议其他替代方案.

请注意,我不想以复合形式存储信息(例如,几个xml列)

提前致谢

小智 5

这里的多对多设置不会有效吗?

假设表A将有一个小部件列表,您的属性将应用于该小部件

表B包含您的属性类型(颜色,大小,重量等),每个属性作为不同的行(不是列)

表C具有widget ID(表A)和属性类型(表B)的外键,然后它实际上具有属性值

这样,当您有一个要添加的新属性时,您不必更改表结构,只需向表C添加一个新的属性类型行

  • 它使搜索查询变得更复杂,但仍然有任何至少具有1年sql经验的人应该能够毫无困难地处理它. (2认同)