Sql server 工作流/业务流程应用程序的数据模型

Sql server 工作流/业务流程应用程序的数据模型,sql-server,database,database-design,entity-attribute-value,Sql Server,Database,Database Design,Entity Attribute Value,工作流应用程序的数据模型应该是什么?目前,我们在SQL Server 2000中使用基于实体属性值的模型,用户可以创建动态表单(在asp.net上),但随着数据的增长,性能会下降,很难生成报告,如果有太多用户同时查询数据(EAV),则会更糟 通常,当您的数据库模式变得非常大,并且多个用户试图以多种不同的方式访问相同的信息时,会应用该模式以减少数据库服务器上的主要负载。与传统模式不同,传统模式更可能使用规范化来保持数据的完整性,数据仓库针对速度进行了优化,并存储了数据的多个副本。尝试使用数据的关系

工作流应用程序的数据模型应该是什么?目前,我们在SQL Server 2000中使用基于实体属性值的模型,用户可以创建动态表单(在asp.net上),但随着数据的增长,性能会下降,很难生成报告,如果有太多用户同时查询数据(EAV),则会更糟

通常,当您的数据库模式变得非常大,并且多个用户试图以多种不同的方式访问相同的信息时,会应用该模式以减少数据库服务器上的主要负载。与传统模式不同,传统模式更可能使用规范化来保持数据的完整性,数据仓库针对速度进行了优化,并存储了数据的多个副本。

尝试使用数据的关系模型。它是有效的。

正如您可能已经意识到的那样,EAV模型的问题是表变得非常大,查询变得非常复杂。例如,基于EAV的查询通常需要大量的子查询来获取相同的数据,如果您使用的是更传统的结构化表,那么选择这些数据就很简单了

不幸的是,很难转移到传统的结构化关系模型,同时保留旧的表单进行修改

<>强>因此,我的建议:考虑对已建立的表单的关闭更改,并将它们的数据移动到标准化的、标准化的表中。例如,如果您有一组不太可能更改的发货表单(或者您可以通过更改应用程序来管理其更改,因为它很少发生),那么您可以创建一个固定表,然后从EAV表中复制现有数据。这将A)提高报告能力,B)减少现有EAV表中的数据量,C)提高支持并发用户的能力/提高性能,因为您可以在数据中构建更合适的索引

简而言之,将基于EAV的动态系统看作是收集用户需求的一种方式(他们通过构建表单来告诉您),而不是作为永久存储。当表单演变为最终形式时,为了获得上面讨论的好处,您需要转换到固定表

最后一件事。如果所有这些都不可能,您是否考虑过将EAV表分割为多个特定于类别的表?例如,将所有发货表单放在一个表中,将人员表单放在另一个表中,等等。这不会解决查询结构问题(需要子查询),但有助于缩小表并提高性能


我希望这能有所帮助——我确实同情你的困境,因为我自己也处于类似的处境

很明显,这是一个笑话的回答,意在搞笑。哈哈哈。我敢肯定,这对这次行动有很大帮助。