假设我有一张桌子可以存放问题。现在我想跟踪人们平均每个问题花费多少时间以及有多少人提出了正确的解决方案。
- 我会将每个问题花费的时间存储在 table_questions 本身还是不同的问题中。
- 我会将答案存储在 table_questions 中还是单独的一个中,甚至可能花费时间。
我犹豫的原因有两个。首先,我不希望用户能够对我的问题执行更新查询。但是在不同的表格中将花费的时间和“回答好”分开对我来说似乎很奇怪,因为它们是问题所固有的?
有正常化天赋的人(不像我)知道什么是好方法吗?
假设我有一张桌子可以存放问题。现在我想跟踪人们平均每个问题花费多少时间以及有多少人提出了正确的解决方案。
我犹豫的原因有两个。首先,我不希望用户能够对我的问题执行更新查询。但是在不同的表格中将花费的时间和“回答好”分开对我来说似乎很奇怪,因为它们是问题所固有的?
有正常化天赋的人(不像我)知道什么是好方法吗?
我的建议:
不要命名表 TABLE_QUESTIONS 或 TABLE_USERS 或类似的名称,除非你有充分的理由,而且我现在想不出一个。只需称他们为问题和用户。
如果您实际上有一个 USERS 表,并且您关心谁回答正确(根据问题的措辞我无法判断),那么我认为您还应该有一个 USER_QUESTIONS 表。这些表可能如下所示:
QUESTIONS
---------
Question_Id
Question_Descr
USERS
-----
User_Id
User_Name
USER_QUESTIONS
--------------
Question_Id
User_Id
Answer
Grade
StartTime
EndTime
然后问题(并且只有问题)进入他们自己的表格,用户(并且只有用户)进入他们自己的表格。但是当用户回答问题时,它会进入混合表。
用户和问题之间存在多对多关系,创建这样的中间表是解决该问题的正常方法。