正确的方法存储在数据库中

时间:2012-03-29 17:21:55

标签: database database-design

我正在开发一个在线网站(使用Django和Mysql)。我有一个测试表和用户表。

我在表格中有50个测试,每个用户按照自己的节奏完成测试。 如何在我的数据库中存储测试的状态?

我想到的一个想法是在User表中创建一个额外的列。该列包含由逗号或任何其他分隔符分隔的testid。

userid | username | testscompleted
1        john       1, 5, 34
2        tom        1, 10, 23, 25

另一个想法是创建一个单独的表来存储userid和testid。所以,我只有2列,但只有数千行(没有测试*没有用户),它们总是会继续增加。

userid | testid
1        1
1        5
2        1
1        34
2        10 

2 个答案:

答案 0 :(得分:0)

您的第二个选项非常受欢迎...您的第一个解决方案会因为尝试在单个字段中存储多个值而导致normalization rules中断,这会让您头疼。

第二个表不仅在尝试添加或删除值时更容易维护,而且由于您能够有效地索引这些列,因此也可能表现得更好。

答案 1 :(得分:0)

有两个短语应该自动取消任何数据库设计理念。

  • 根据[所有]
  • 创建一个表
  • 包含以逗号分隔的[任何]的列

单独的桌子,两列 - 你在那里正确的轨道。