如何在这个用例中设计数据库?

时间:2012-10-09 10:48:25

标签: mysql database database-design

假设我有一个名为ReportGenerator的应用程序,它允许用户输入多少字段和字段值。例如,他们可以拥有jobApplicationReport,因此,他们可以定义以下几个字段:jobTitleexpectedSalary

所以,在DB中,我会有这样的事情: 表名:UserReport并包含以下字段:idtitlefields

数据会是这样的: 1jobApplicationReportjobTitle,expectedSalary

此外,我有UserReportData个字段,iduserReportIdvalue 并且数据将是这样的: 11jobTitle:programmer,expectedSalary:200K

21jobTitle:projectManager,expectedSalary:400K

所以,我的问题是,value中的UserReportData字段似乎非常愚蠢,因为它无法充分利用SQL数据库,也无法使用索引来提高表现。

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

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

1 个答案:

答案 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