Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库中布尔值的约定_Mysql_Sql_Orm - Fatal编程技术网

Mysql 数据库中布尔值的约定

Mysql 数据库中布尔值的约定,mysql,sql,orm,Mysql,Sql,Orm,我第一次做了一个数据库,这很令人兴奋,但我的问题是布尔变量或二进制变量的约定。在我的数据库中,用户从服务器发出一个需要几个小时才能解决的请求(因为另一端的人必须与之交互)。有几种方法可以标记打开或关闭的请求。一个名为open的列可以设置为True或False,或者我可以用字符串“open”或“closed”填充一个名为status的列。是否有一个惯例,或者我是学究?你不是学究,最好根据数据库的使用方式提前设计数据库 我的建议是有一个StatusChanges表。每次状态更改时,您(至少): 状

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

你不是学究,最好根据数据库的使用方式提前设计数据库

我的建议是有一个
StatusChanges
表。每次状态更改时,您(至少):

  • 状态更改记录的唯一id
  • 受影响的帐户
  • 新状态(可能还有旧状态)
  • 日期/时间戳
  • 做出改变的人
获取任何用户的当前状态的能力可能很重要。如果是这样,您可以将该信息存储在用户记录中。或者,您可以在
StatusChanges
表上执行稍微复杂的查询。或者,您可以通过为每条记录指定一个生效日期和结束日期,将其转变为一个缓慢变化的维度


我想说的关键一点是,您应该使用历史的重要特征来保存历史。

我们通常使用bit、True、false等数据类型。可以使用默认值((0))调用该列,因此默认情况下该列为False。然后,在采取操作后,您可以手动将其更改为True,或者构建一个页面,让用户可以“翻转开关”,使其现在为True。正如下面的帖子所提到的,添加一个表来记录这些更改的想法是创建一个“状态历史记录”,记录更改的用户、更改的内容以及日期时间信息