【发布时间】:2009-08-27 22:47:05
【问题描述】:
假设我们有一个字段可以有多种类型,例如:字符串或日期或 XML 数据类型。
现在我们有两种方法可以将其存储在数据库中
1- 使用字符串类型字段 + 字段定义类型:失去“类型感知”排序功能,需要转换
2- 单独的表(StringValues、DateValues、Decimal、XML ...等):指向值的外键 + 定义类型的字段:有点复杂,性能
如果只存储唯一值,第二种方法可能有一个额外的优势:它可以用作索引。
你有什么想法吗?
注意1:最好考虑基于MS SQL Server 2008和Linq2SQL的项目
注2:也许我们会在另一个问题中讨论如何实现EAV,我问的是关系存储中的EAV。
注意3:类型可以改变,但不会频繁
【问题讨论】:
-
如果您使用转换并按转换类型排序,您不会失去字段定义类型的排序功能。听起来第二种方法就是你想要的。
-
但是SqlServer不完全支持ting,在代码端进行强制转换和排序会不会很高效?
标签: database-design architecture types entity-attribute-value