表格的布尔字段可以使用正面和负面来命名......
例如,调用字段:
"ACTIVE" , 1=on / 0=off
or
"INACTIVE" , 0=on / 1=off
问题: 是否有正确的方法来做出这种类型的表设计决策,还是任意的?
我的具体示例是带有bool字段(私有/公共)的消息表。当用户输入新消息时,将使用表单复选框设置此字段。命名“公共”与“私人”字段有什么好处吗?
感谢。
答案 0 :(得分:19)
我总是喜欢积极的名字,以避免代码中的双重否定。 “不活动”通常是阅读时双重拍摄的原因。 “不活动”总是可以写成“if(!Active)”,同时利用内置语言语义。
答案 1 :(得分:15)
我个人的偏好:
在您的特定用例中,该字段应命名为IsPublic或IsPrivate - 当用户勾选复选框时,无论哪个名称都会产生True答案。
答案 2 :(得分:2)
我不会不同意其他一些答案,但绝对避免错误的答案,而不是双重否定总是
答案 3 :(得分:1)
始终使用正面名称。
如果使用否定名称,您很快就会陷入双重否定。不是双重否定是火箭手术,但它是一个大脑循环,这些是有价值的:)
答案 4 :(得分:1)
始终使用正面。
这更简单。
将否定用于逻辑极端:如果InActive优于Active,那么为什么不InInActive或InInInActive?
因为它不那么简单。
答案 5 :(得分:1)
处理这些情况的正确方法是创建一个表来容纳与列关联的值,并在两个表之间创建外键关系。 IE:
WIDGETS
表:
WIDGET_ID
WIDGET_STATUS
(fk) WIDGET_STATUS_CODES
表:
WIDGET_STATUS_CODE
(pk)DESCRIPTION
如果可能,WIDGET_STATUS_CODE
将是一个自然键(IE:ACT表示“活动”,INA表示“非活动”)。这会使记录更具人性化,但并不总是可行的,因此您可以使用人工/代理键(如自动编号/序列/等)。
你想这样做是因为:
答案 6 :(得分:-1)
尽量避免数据库中的布尔字段。
一,RM通过布尔字段表示真值信息的方式要好得多:通过表中元组的存在。
两个,布尔字段在查询时是非常糟糕的鉴别器。索引它们几乎是完全疯狂的,因此在查询时,布尔字段的存在根本没有任何好处。