由于 status 和 type 是 MySQL 中的保留键,我需要一个类似于 status 的列名来标识行的状态。
我知道有办法忽略这个问题,但是在不同的语言和不同的框架中,它会以不同的方式突然出现这个问题,所以我需要忽略这个词,需要一个听起来几乎相同并且可以从名称中理解的相似词。
我的用例的潜在值是真/假。您建议如何命名定义该行状态的布尔列?
这里的状态是定义该行是否处于活动状态。并不是我为此目的使用状态列的每个地方,Somewhere 状态列定义状态是否为待处理、当前、已确认、已应用、已拒绝等。就像这个短键一样。
正如a_horse_with_no_name评论的那样:
...最好在这些列名称中包含更多信息,以使它们更易于理解。
例如,您在用户表中可以有一个
user_status
anduser_type
列,这些名称将清楚地定义您所指的状态和类型。user_status
如果那些列使用参考表(例如和),它会更加有用user_type
。这些只是例子。可以修改表名以表明它是参考表,例如
r_user_status
或user_status_ri
。或者可以努力使其更通用(但仍然比 更具描述性status
),以便它可以用于更多表。这还允许您删除可能需要更新的重复数据,并将更新移动到单个表中,以便您可能需要更改现有状态的文本。最后,避免诸如状态和类型之类的通用名称将使后来加入项目的开发人员更容易理解数据及其关系。
社区维基回答:
地位
类型
如果您正在寻找同义词,我不清楚。如果是这样,并且您将来只需要同义词,请查看English Language & Usage Stack Exchange上的单词选择标签。
您可能需要小心使用此类列名称,因为它们可能会使用户感到困惑,因为它们的含义可能与行状态或记录类型不同。
附加下划线
SQL 标准明确承诺绝不在任何关键字或保留字上使用尾随下划线。
所以命名你的列
status_
和type_
.我以这种方式命名我的所有表和列,因此我不必担心与各种数据库保留的数千个单词中的任何一个发生冲突。我发现了一个有益的副作用:消除一些歧义。在讨论、电子邮件和应用程序编程中,当我们专门提到数据库表或列时,例如
customer_
与客户的概念或名为customer
.不幸的是,我不能引用 SQL 规范,因为它受版权保护。
underscore
即可。尽量避免它像瘟疫一样。
is_active
并将其设置为true
orfalse
。这不仅更有意义,而且提供了一种性感的语法SELECT * FROM t WHERE is_active
。如果它意味着挂起,创建is_pending
或is_current
。SELECT * FROM listings WHERE status IN ( 'sold', 'terminated', 'active' );
等。在这种情况下,我会接受@Joe W 对listing_status
. 这里有一个附录,如果这是您需要的,您应该查看ENUM
type。listing_status_id
并链接到一个外表listing_status
。这正是@Joe W. 所建议的