Sql server 实体属性值模型插入更新读取所有属性及其关联值SQL Server 2012

Sql server 实体属性值模型插入更新读取所有属性及其关联值SQL Server 2012,sql-server,entity-relationship,entity-attribute-value,Sql Server,Entity Relationship,Entity Attribute Value,我使用的是SQL Server 2012,我有一个E-A-V数据库模型,需要能够对其执行crud操作。我愿意使用用户定义函数的任意组合来完成任务。数据类型是具有各自值的单个表。我创建了一个函数来获取与属性关联的表名,这样我就知道值应该在哪个表中。 我已经创建了一个设计图,下面是图表(有更多的数据类型,但这是为了简洁) 对于任何给定的实体,我希望得到的结果是属性名、值、最小值、最大值-假设列的名称相同,数据类型不同-不确定这将如何影响结果 我不确定我的模型是否是实现这一点的最佳方法,我考虑将值存储

我使用的是SQL Server 2012,我有一个E-A-V数据库模型,需要能够对其执行crud操作。我愿意使用用户定义函数的任意组合来完成任务。数据类型是具有各自值的单个表。我创建了一个函数来获取与属性关联的表名,这样我就知道值应该在哪个表中。 我已经创建了一个设计图,下面是图表(有更多的数据类型,但这是为了简洁)

对于任何给定的实体,我希望得到的结果是属性名、值、最小值、最大值-假设列的名称相同,数据类型不同-不确定这将如何影响结果

我不确定我的模型是否是实现这一点的最佳方法,我考虑将值存储为文本,并在通过存储过程或函数存储和检索时使用强制转换-我需要对数据进行一些值比较。也许这种设计会使查询和更新更容易

任何指导或示例都非常感谢

1实体可以有多个属性,每个定义的属性只能有一个数据类型。 1属性可以属于多个实体-每个属性的值对于该属性都是唯一的

实体1具有属性1到属性5。
实体2具有属性1到5(属性值可以不同于实体1中的值)。
实体3具有属性1、4、8、9、10、11、20

我偶然发现了这个概念:也许是个好方法。


基本上,使用EAV,您可以在数据库中重新构建数据库管理系统。不管你做什么,它都会很难看。e、 g.选择一行数据需要N个列的N个连接。有时,EAV是正确的选择,但请记住这是一条艰难的道路。有关EAV为何如此糟糕的讨论,请参阅,有关毁掉一家蓬勃发展的公司的EAV系统设计的真实恐怖故事,请参阅。@marc_s I重视并尊重您的意见;我同意EAV是复杂的。我拥有的属性相当长,在设计时并不是所有的属性都是已知的,将来还会进行添加。1实体许多属性(与其他属性不同)对于ex.requirements,有属性和值(可以是文本、整数、小数等),即requirement_Id、名称、值[ValueType(text、Int、decimal)]我需要能够对该集合执行比较。基本上,我试图实现一个需求表,并根据这些需求验证其他数据。灵活到足以添加需求。只是想知道您是否需要研究其他方法,例如,可能需要将这些不同的属性存储在XML或JSON或类似的格式中,而不是EAV方法。@marc_s是的,我已经看过这些方法;如果值存在于xml文件中,则必须对其进行查询(我在db中使用xml的经验是不存在的),并且我有很短的时间来实现一些东西。没有一种方法能让我开胃,我所有的阅读结果都是“它们都不好——只是每种方法都有一个坏的权衡”——我真的很喜欢简单,不幸的是,在这种情况下,我似乎陷入了困境。