假设我有一个名为ReportGenerator
的应用程序,它允许用户输入多少字段和字段值。例如,他们可以拥有jobApplicationReport
,因此,他们可以定义以下几个字段:jobTitle
,expectedSalary
。
所以,在DB中,我会有这样的事情:
表名:UserReport
并包含以下字段:id
,title
,fields
。
数据会是这样的:
1
,jobApplicationReport
,jobTitle,expectedSalary
此外,我有UserReportData
个字段,id
,userReportId
,value
并且数据将是这样的:
1
,1
,jobTitle:programmer,expectedSalary:200K
2
,1
,jobTitle:projectManager,expectedSalary:400K
所以,我的问题是,value
中的UserReportData
字段似乎非常愚蠢,因为它无法充分利用SQL数据库,也无法使用索引来提高表现。
我可能认为另一个解决方案是,当用户添加新报告时,我可以再创建一个表。在这个例子中,我可能没有抽象的UserReportData
表,而是拥有UserReportData_jobApplicationReport
表。并拥有我想要的多个领域。
但是单个用户可能有很多报告,所以,我的数据库会有很多表。有什么办法可以解决这个问题吗?感谢。
答案 0 :(得分:0)
您可以为report_fields创建一个额外的表格:
report_id,field_id,value
以及对于领域:
field_id,name
所以在你将拥有的领域中:
1, jobTitle
2, expectedSalary
和您的report_fields:
1,1,programmer
1,2,200k
2,1,projectManager
2,1,400k