我正在编写一个小的测验应用程序,并试图构建数据库。 基本思想是使用户的回答率为固定数量的问题(1-10个回答),并根据这些回答生成结果。
我在数据库结构的实现上遇到了一些麻烦-我不确定是否将所有答案都放在一行中,但要放在不同的列中,或者对于每个答案来说都是一行(结果是很多行只有三行)或四列)
我在想的数据库图如下:
一个用户只能有一个结果,而一个结果属于一个用户
一个用户可以回答许多问题,一个答案属于一个用户
每个答案仅属于一个问题,但是一个问题可以有多个答案(许多用户在回答)
这些是我具有此实现的数据库表:
| ResultID (PK) | UserID (FK) | TotalScore | ResultText|
| UserID (PK) | Name | Email | Name |
| AnswerID (PK) | QuestionID (FK) | UserID (FK) | Answer |
| QuestionID (PK) | Question |
此结构为完成的测验创建了九个新行,如果可以使用每个问题的列(问题1-问题9)将它们放入一行,则数据库中似乎有很多不必要的“空格”。 / p>
但是,这给JPA和Hibernate带来了一些问题,因为我必须为每个问题创建变量(导致大量冗余)。这种方法至少应该让我只有一个List数组来保存所有9个问题。
我担心的是将占用数据库的行数。大约有10000-15 000人回答此测验,那么仅此简单实现的9万多行会影响数据库查询的速度吗?还是将其保持在上述水平是可以的吗?
答案 0 :(得分:1)
这里的要点是,您不需要答案表。由于其中的数据将永远不会更新。因此,您只能使用一列来表示用户的所有答案,例如JSON
列。
使用postgresql
可以通过添加JSON列来实现,但是如果使用NoSQL,则可以做得更好。由于您将用户的结果分开,因此我认为没有必要单行回答。这是无法修改的值。
希望有帮助。