Database 存储大套';调查答案';

Database 存储大套';调查答案';,database,database-design,Database,Database Design,我正在为一个调查系统建立一个数据库 我们有员工在调查中填写有问题的类别。员工可以给自己打分(例如6/10)。现在我们还有教练,他们将为该员工填写相同的测试 我当前的数据库如下所示 +------------+------------+---------+-----------+ | EmployeeID | QuestionID | CoachID | Answer | +------------+------------+---------+-----------+ |

我正在为一个调查系统建立一个数据库

我们有员工在调查中填写有问题的类别。员工可以给自己打分(例如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 我正在考虑使用JSON字段,该字段存储类似数组的分数表示,例如

[3,4,5,7]
但问题是我不能在这个领域进行查询,对吗

期待您处理这样一个数据库的方式。
谢谢大家!

关系数据库可以处理数百万甚至数十亿行,这是一个非常窄的表(即只有几列)。即使有数千名不同的员工和问题,这也算不上一张大桌子。在这方面我不会担心

如果你想让自己放心,设置一些测试数据。无论如何,这是一个非常好的实践——很少有开发人员尝试使用与系统上线后的数据量相当的数据量来测试他们的系统。如果您已经知道您将有40名员工、2名教练和100个问题,那么您就确切地知道要设置哪些测试数据。创建它并尝试一些与来自前端的查询相匹配的查询。如果您有性能问题,请检查索引之类的内容

更进一步,想想在这个系统的生命周期中会有多少数据。如果员工每年都会回答新的问题,那么想想这个系统需要保存多少年的历史数据。如果是5年,那么就有40名员工、2名教练和500个问题。也许人们的期望是公司会有很大的发展,所以为了安全起见,你可以尝试100名员工、5名教练和500个问题

设置这类数据可能有点费时,但如果您提前发现这些问题,而不是在上线后发现您选择了一个糟糕的数据模型或编写了一些查询,则会为您节省很多痛苦。在您的例子中,数据模型看起来足够简单,而且数量也足够小,因此可能不会花费您那么长的时间来设置和测试