[英]Is it more common to use table_id or id in database design
我有一种情况想知道使用 table_id 还是只使用 id 更常见? (在我看来,如果它是外键,使用 table_ 会引起轻微的混淆)。 人们更喜欢哪一个,两者之间真的有什么区别吗? 还是应该只选择一个并保持一致?
在命名表中的列方面有两个主要趋势:
该策略是 70 年代记录数据库“数据字典”的团队构想的传统策略。 这个想法是列的名称本身告诉您它在整个模式或数据库中属于哪个表。 例如, CLIENT_NAME
代表CLIENT
表中的客户端名称。
这种策略有多种变体,其中有限数量的字母被指定为前缀(特别是对于 M:N 关系表),因为当时许多数据库中的列名被限制为 6 或 8 个字符。 例如,客户购买汽车的日期可以采用CLI_CAR_DATE
、 CLICAR_DATE
甚至CLCADT
的形式。
例子:
CAR_ID
。CAR_ID
。 这允许使用自然连接; 然而,应该指出的是,有令人信服的理由不惜一切代价避免自然连接,此处不予讨论。PERSON_BUYER_ID
和PERSON_SELLER_ID
因为两者不能具有相同的名称PERSON_ID
; 它不再允许自然连接(好)。在此策略(较新的)中,列名不包括它们所属的实体的名称,而仅包括它们的属性名称。 此策略更符合 object 设计,并生成更短的名称(即更少键入)。 提及列时必须注明表名。 例如,您需要在表CLIENT
上说出列NAME
。
例子:
ID
。CAR_ID
; 这与之前的策略相同。BUYER_ID
和SELLER_ID
。 他们可以像以前的策略一样遵循较长的名称,但这里的目标通常是使用较短的名称,以便应用程序源代码更易于编写和调试。我个人喜欢第二种,但有些球队同时采用这两种策略,而且没有明显的赢家。 我倾向于第二个 [我认为] 第一个的缺点是名称更长(输入更多)、更长的 SQL(更多错误)、神秘名称(它们不能很好地与 ORM 和应用程序对象一起使用)和外键不能很好地遵循策略。 事实上,无论具体实体如何,我数据库中的几乎所有主键都被命名为ID
。
但另一方面,一些团队非常重视仅通过查看就知道列的表名的想法。 这对于可能变得相当复杂的大型数据库(具有 200-1000 个关系事实表)非常有用,特别是对于团队的新成员。
但最重要的是,选择一个并保持一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.