数据库中布尔值的约定

时间:2015-08-16 20:04:38

标签: mysql sql orm

我是第一次创建数据库,这很令人兴奋,但我的问题来自布尔或二进制变量的约定。在我的数据库中,用户从服务器发出请求需要几个小时才能解决(因为另一端的人必须与之交互)。有几种方法可以标记打开或关闭的请求。名为open的列可以设置为True或False,或者我可以将名为status的列填充为字符串“open”或“closed”。有没有这样的惯例,还是我迂腐?

2 个答案:

答案 0 :(得分:2)

你不是很迂腐,最好根据它的使用方式预先设计数据库。

我的建议是拥有StatusChanges表。每次状态发生变化时,您都会(至少):

  • 状态更改记录的唯一ID
  • 受影响的帐户
  • 新状态(可能是旧状态)
  • 日期/时间戳
  • 进行更改的人

获取任何用户当前状态的能力可能很重要。如果是这样,您可以将该信息存储在用户记录中。或者,您可以在StatusChanges表上执行稍微复杂的查询。或者,您可以通过为每条记录设置有效和结束日期来将其变为缓慢变化的维度。

我想提出的关键点是你应该把历史记录与历史的重要特征保持一致。

答案 1 :(得分:0)

我们通常使用bit的数据类型,True,false。该列可以被称为Opened ...,默认值为((0)),因此默认为False。然后,当采取行动时,您可以手动将其更改为True,或者构建一个人可以“翻转开关”的页面。所以它现在是真的。正如下面提到的那样,添加一个表来记录这些变化,可以创建一个"状态历史记录",改变它的用户,他们改变了它的内容,以及日期时间信息。