动态工作流:将数据存储在静态表中,而不是创建动态表

时间:2018-04-14 08:50:18

标签: sql-server asp.net-mvc database workflow data-modeling

我有一个Web应用程序,用户可以在其中动态创建数据表单。该应用程序位于ASP.NET中,后端使用MSSQL。为了创建表单,用户必须为表单指定字段。为了添加字段,用户必须指定字段标签,字段的类型,例如(数字,金额,电子邮件)和其他属性。以下是动态表单配置的示例

表单名称:销售

字段标签:客户名称 字段类型:文字 长度:100

字段标签:金额 字段类型:money

我希望你能得到这个要点。可以有许多这样的形式。每个表单可以有数千行。字段配置存储在具有如下架构的表中:

表格:数据类型 列: DataTypeId int,DataTypeName varchar(100)

表: FormFields 列: FieldId int,FieldLabel varchar(100),DataTypeId int

我可以通过两种方式将表单值存储在数据库中。

方法1:将数据存储在静态表中作为键值对。使用这种方法,我的表格如下所示:

表: FormFieldValues 列: FieldId int,Numeric_value numeric(18,5),Text_Value varchar(500),Money_Value money

因此,FormFieldValues表中的一行将如下所示

字段ID | Numeric_Value | Text_Value | MONEY_VALUE

1 100.512
2 John Wayne

3 $ 200.50

这种方法的优点是,由于表结构是静态的,因此在获取行时不需要动态SQL。缺点是在代码中将行转换为列。

方法2 :使用字段配置,即时创建动态表。所以在上面的例子中,我可以创建一个表,如下所示

表格:Form1 :Id int,CustomerName varchar(100),金额,版本数字(15,5)

此表格中的一行如下所示

客户名称|金额|版本

John Wayne $ 200.50 100.512

此方法的优点是,每个列都是根据字段配置中指定的精确精度创建的。缺点是需要动态SQL来获取数据并存储它。

哪种方法更好?从长远来看,哪种方法更具可扩展性和性能友好性?

注意:SO不支持表格格式,因此表格可能看起来不合适但我希望读者能够获得要点

0 个答案:

没有答案