这是空间与时间的问题,我想。派生属性应该作为列进行复制还是每次计算?
考虑一个在线测验应用程序。在浏览测验中,对于每个测验,我都希望展示它有多少个问题。
- 如果测验有10个问题,我可能会将其显示为“10个问题”或“中等测验时间测验”。
- 如果测验有5个问题,我可能会将其显示为“5个问题”或“短期测验”。
在Quiz
表中,我没有用于存储问题数量的列。 要找出一些问题,我可以做
SELECT COUNT(question_id)
FROM Quiz
NATURAL JOIN Quiz_data
WHERE quiz_id = '$quiz_id'
注意Quiz_data
是Quiz
和Question_bank
交叉表(即它同时存储2表的PKS)。
请注意,如果我在测验中存储了* number_of_question *,则可以从测验中添加/减去问题。因此,除了delete
和insert
之外,还需要update
。
问题:我应该每次计算一次还是将值存储在Quiz
表中?帖子标题说明了一般意义上的同一个问题。
由于问题的数量很少发生变化,并且准确性不重要(对于'中等'/'小'),我会去存储在一列中。谢谢! – 2012-04-28 14:56:50