我正在建立一个调查系统的数据库。
我们有员工在调查中填写有问题的类别。员工可以给自己打分(例如6/10)。现在我们也有了教练,他们会为那个员工填写同样的考试。
我现在的数据库是这样的
+------------+------------+---------+-----------+
| EmployeeID | QuestionID | CoachID | Answer |
+------------+------------+---------+-----------+
| 1 | 10 | null | 5/10 |
| 2 | 11 | null | 8/10 |
| 3 | 12 | null | 6/10 |
| 1 | 10 | 1 | 5/10 |
| 2 | 11 | 1 | 8/10 |
| 3 | 12 | 1 | 6/10 |
+------------+------------+---------+-----------+
如您所见,只有1名员工、1名教练和3个问题提供这些行。
这会变得很大,我担心这个设置。
如果有40名员工,每2名教练和100多个问题怎么办。
有更好的办法吗?
杰森
我正在考虑使用json字段,它存储一个数组形式的分数表示,例如
[3,4,5,7]
但问题是我不能在那个领域做查询,对吧?
期待你处理这样一个数据库的方法。
谢谢您!
最佳答案
关系数据库可以处理数百万甚至数十亿行——这是一个非常狭窄的表(即只有几列)。即使有成千上万不同的员工和问题,这也算不上一张大桌子。在这方面我不会担心的。
如果你想让自己确信这一点,请设置一些测试数据。这是一个很好的实践,无论如何,太少的开发者尝试测试他们的系统的数据量相当于系统生存后的数量。如果你已经知道你将有40名员工,2名教练,和100个问题,那么你知道确切的测试数据设置。创建它并尝试一些与前端的查询匹配的查询。如果性能有问题,请检查索引之类的内容。
再进一步,想想这个系统在它的生命周期中会有多少数据。如果员工每年都会回答新的问题,那么想想这个系统需要保存多少年的历史数据。如果是5年,那就找40名员工,2名教练,500个问题。也许公司会有很大的发展,所以为了安全起见,你可以尝试100名员工,5名教练和500个问题。
建立这种类型的数据可能有点耗时,但如果你事先发现这些问题,而不是发现你选择了一个糟糕的数据模型,或者在上线后写了一些糟糕的查询,这将为你节省很多痛苦。在你的例子中,数据模型看起来足够简单——而且数量也足够小——所以你可能不会花那么长时间来建立和测试。
关于database - 存储大量“调查答案”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41041690/