【发布时间】:2009-10-03 12:42:02
【问题描述】:
我们有一个基于 Web 的应用程序,由 MySQL 数据库支持。
我们正在编写的系统的一部分要求我们将一周中每一天的用户出席情况(即是/否)存储到会话中。例如,我们需要存储周一到周五,然后是每天早上、午餐、下午、晚上的时段等。所以本质上它是一个 2-dim 数组。
我想知道在数据库中存储这个最干净的方法是什么?
目前,从事此工作的人似乎倾向于将其存储为每天的一个 int,1 代表出席,0 代表不出席。我认为这样做的意思是使用位掩码(例如 13 表示 1101,所以除了下午之外的每个会话)。出于某种奇怪的原因,他们只是将其存储为实际的 0 和 1。
我认为将其存储为布尔列表(位/小整数)可能更容易,例如monday_morning、monday_lunch、monday_afternoon 等,因为它在语义上更“正确”(我认为?),它可能更容易扩展/维护,而且我似乎也是团队中唯一一个知道如何做位操作...大声笑。
我想的另一种方法是为每个用户提供一个 1:1 的表格,例如,列出他们正在参加的所有时间。这种方法的效率? (不确定是哪种读/写模式,但我猜读/修改的分布相当均匀)。
对此有什么建议?还是有更好的方法来存储这些数据?
另外,作为旁注,它可能是布尔值 - 值得怀疑的是,我们需要在表中存储比参加/不参加更多的状态,如果我们这样做,我们准备重新 -工作模式。还是人们强烈建议使用整数而不是位?
干杯, 维克多
【问题讨论】:
标签: database