这个表对mysql有什么好处吗?我想让这种类型的数据存储在未来变得灵活。在这种表结构中,您不能使用主键,而可以使用索引...
我是否应该将表格的格式更改为具有标题-主键、宽度、长度、空格、耦合...
ID_NUM Param Value
1 Width 5e-081
1 Length 12
1 Space 5e-084
1 Coupling 1.511
1 Metal Layer M3-0
2 Width 5e-082
2 Length 1.38e-061
2 Space 5e-081
2 Coupling 1.5
2 Metal Layer M310发布于 2011-11-29 23:39:00
不,对于关系数据库,这是一个糟糕的设计。这是Entity-Attribute-Value设计的一个例子。它很灵活,但它打破了关系数据库的大部分规则。
在深入EAV设计作为灵活数据库的解决方案之前,请阅读这个故事:Bad CaRMa。
更具体地说,EAV的一些问题包括:
在不查询任何给定constraints.
value不能使用MySQL数据类型;VARCHAR列必须是MySQL中的long VARCHAR,每个VARCHAR都存储在其自己的数据页上,因此这是非常浪费的。当您使用EAV设计时,查询也非常复杂。Magento,一个开源的电子商务平台,广泛使用EAV,许多用户说,如果你需要自定义报告,它非常慢,很难查询。
要成为关系型属性,您应该将每个不同的属性存储在其自己的列中,并使用其自己的名称和适当的数据类型。
我已经在我的presentation Practical Object-Oriented Models in SQL和我的博客文章EAV FAIL以及我的书SQL Antipatterns: Avoiding the Pitfalls of Database Programming中写了更多关于EAV的内容。
https://stackoverflow.com/questions/8313090
复制相似问题