0

假设我有一个名为 的应用程序ReportGenerator,它允许用户输入多少个字段以及字段值。例如,他们可以有一个jobApplicationReport,所以,他们可以定义几个这样的字段:jobTitle, expectedSalary.

所以,在数据库中,我会有这样的东西: 表名:UserReport并有这些字段:id, title, fields

数据会是这样的: 1, jobApplicationReport,jobTitle,expectedSalary

而且,我有一个字段UserReportData,,,,id数据 会像这样 :,,,userReportIdvalue11jobTitle:programmer,expectedSalary:200K

2, 1,jobTitle:projectManager,expectedSalary:400K

所以,我的问题是, 中的value字段UserReportData似乎很愚蠢,因为它不能充分利用 SQL 数据库,也不能使用索引来提高性能。

我可能认为另一种解决方案是,当用户添加新报告时,我可以再创建一个表。在这个例子中,我可能没有抽象UserReportData表,而是有一个UserReportData_jobApplicationReport表。并拥有我想要的尽可能多的领域。

但是一个用户可能有很多报告,所以,我的数据库会有很多表。有什么解决方案可以解决这个问题?谢谢。

4

1 回答 1

0

您可以为 report_fields: report_id,field_id,value 和字段创建一个额外的表: field_id,name

因此,在字段中,您将拥有:

1, jobTitle
2, expectedSalary

和你的报告字段:

1,1,programmer
1,2,200k
2,1,projectManager
2,1,400k
于 2012-10-09T11:07:53.363 回答