理解数据库的外键命名惯例

日期: 2010-04-08 作者:Dan Clamage翻译:姜传华 来源:TechTarget中国 英文

问:在命名外键列名时,是不是需要和他们所参考的父表列名一样?我如何能快速找到这个问题的答案?

  答:让我们从这个查询开始:

  SELECT uc.constraint_name
  ,ucc_child.table_name child_table_name
  ,ucc_child.column_name child_column_name
  ,ucc_parent.table_name parent_table_name
  ,ucc_parent.column_name parent_column_name
  FROM user_constraints uc
  INNER JOIN user_cons_columns ucc_child
  ON (ucc_child.owner = uc.owner
  AND ucc_child.constraint_name = uc.constraint_name
  AND ucc_child.table_name = uc.table_name)
  INNER JOIN user_cons_columns ucc_parent
  ON (uc.r_owner = ucc_parent.owner
  AND uc.r_constraint_name = ucc_parent.constraint_name)
  WHERE uc.constraint_type = ‘R’
  ORDER BY parent_table_name
  ,child_table_name
  ,child_column_name;

  执行这个查询之后,我添加以下过滤语句,来比较子/父列

    AND ucc_child.column_name != ucc_parent.column_name

  结果是我们的外键大约64%遵照了这种方式(使他们一致),其余的,子列的命名和父表是一样的,或者也有一些其它的情况(象参考列的缩短形式或者通过混合父表和子表名的混合格式)。不同的开发人员在设计和其次的名称转换时不一致,拥有固定的命名惯例确实能帮助你写出好的代码和加快开发速度(更不用说运行的更快和性能更高)。举个例子,当在父表和子表之间作连接时,这就容易很多并且更清晰。

  ON (child.key_id = parent.key_id)

  所有表明父表主键或唯一同样名字的外键是凭直觉获取的,编码快速、错误较少(比如偶然的连接了错误的列)。很快地,你就能看出那个正确连接的表。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐