当谈到SQL DB架构时,添加更多“布尔”字段是一种更好的做法,还是更好地保留一个字段并使其成为代表不同组合的“模式”?无论哪种情况,你能详细说明为什么它更好吗?
由于
答案 0 :(得分:1)
如果你关心具体的事物价值观。 。 。 IsActive
,IsBlue
,IsEnglishSpeaking
,然后每个都有一个单独的标记。
在少数情况下,使用组合模式"可能是有益的。但是,在大多数情况下,您希望列表示您关心的变量。你不希望有特殊的逻辑来剖析特定的价值观。
在MySQL中,boolean
值实际占用1个字节(8位)。 MySQL有其他数据类型,如枚举和集合,可能会做你想要的。 bit
数据类型,尽管名称如此,但似乎并没有将标志打包到单个字节中(在其他数据库上发生)。
答案 1 :(得分:0)
我想我得到了你来自的地方......答案是:对has_property
场景使用布尔值,对其他所有场景使用其他东西。
基本上,你在谈论的是“旗帜”与“变量”。标志是布尔值。其他一切都有其他类型(整数,日期时间等)。数据库具有严格的类型,因此要么使用严格类型的语言,要么确保传递给数据库的数据输入正确。 DB也具有令人难以置信的灵活性。例如,BLOBs可以存储任意二进制数据(如pickled Python)。