Ahm*_*laf 3 architecture database-design types entity-attribute-value
假设我们有一个可以有多种类型的字段,例如:字符串或日期或XML数据类型.
现在我们有两种方法将它存储在数据库中
1-使用字符串类型字段+字段定义类型:丢失"类型感知"排序功能,需要强制转换
2-个单独的表(StringValues,DateValues,Decimal,XML ...等):指向值+字段定义类型的外键:某种程度上复杂,性能
如果仅存储唯一值,则第二种方法可能具有额外的优势:它将作为索引使用.
你有什么想法吗?
注1:最好考虑基于MS SQL Server 2008和Linq2SQL的项目
注2:也许我们将讨论如何在另一个问题中实现EAV,我在关系存储中询问EAV.
注3:类型可以更改,但不经常更改
听起来你正在设计一个EAV解决方案,你的表存储多个属性的值,每行一个值.
EAV是一种非关系设计.关于关系数据库设计的正确规则,没有"正确"的方法来做到这一点.
正确的设计是将每个属性存储在一个表的单独列中.为每列提供正确的数据类型和描述性名称.仅在每列中存储相同逻辑类型的值.
如果需要动态属性,请使用非关系数据管理解决方案.