数据库关联表名命规范

1、背景

之前在建数据库表的时候,不止一次遇到一个问题,现有:A、B两个表,其中A表中有一个字段是关联B表的,而这个A表中关联B表的字段到底该如何名命的问题。问过几个同事,他们各有自己的说法,但也各有自己的疑惑。

2、例子

先看几个例子,假如说我们现在有个部门表叫dept,再来个用户表user。如果部门表中dept中关联了一个用户,通常情况下,我们的选择是再dept中建一个字段叫user_id就好了;如果是关联多个用户(多个用户id同特定的字符串进行分割,如“;”、“,”等),此时,习惯将其命名为user_ids;这么看好像没有什么争议,但是dept这张表中,有个字段叫创建者或更新者,此时,看过一些开源框架,他们此时用create_user和update_user;当然之前见过有人用create_user_id或update_user_id,个人觉得这种名命不是很妥当,通常情况下,我们说的一般是某表的id,而明显create_user和update_user这两张表并不存在,它真正用的是user这张表,可是直接用user或user_id名命的化,其缺陷很明显,对,就是重复,光这个缺陷就直接否定了,该方案。

所以个人觉得此时将其名命为create_user和update_user反而是最好的选择,此时,又有另外一个问题,就是create_user毕竟比较特殊,我们都知道它指向的是user表,如果我们不熟悉这张表的指向怎么办,如下图这样

客户签订人和我司签订人,但从名命上根本看不出来指向那张表,确实存在这种问题,所以在注释中表明了指向表。

3、总结

说了这么多可能有些人有点糊涂,到底该怎么名命,首先我们遵循一个原则,“表中的字段,第一要义是要表述清楚语义”,也就是说我们得知道某个字段在某个业务表中,到底是个啥意思,这是第一要务。这个明确了之后,我们再来总结一下这个字段到底如何名命:

(1)如果A表中的关联B表中的字段,在A表中的“语义”与B表相同,那么将该字段名命为B_id或B_ids。

例如,下图该表有一个字段叫所属机构,而恰巧系统中有另外一张表就叫机构表,那么我们就将其名命为org_id;org是机构表的表名。

(2)如果A表中的关联B表中的字段,在A表中的“语义”与B表不相同,那么将该字段按照A表的语义进行自定义名命,并在注释中写明所指向的表。

例如,下图该表有一个字段叫“我司”(我们公司的意思),其实它还是记录的机构表中id,此时为了表述清楚语义,将其自定义名命为“our_co”,同时在注释中,注明了表指向为机构表

4、番外

这是自己和几个同事一起商讨出的结果,如果各位有更好的关于此名命的规范,欢迎交流,我们一起改进,谢谢

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<每天一点>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值