日期:2014-05-17  浏览次数:20473 次

问个数据库的初级问题
有必要将表属性命名成“表名_属性名”吗?

例如 user表 的 uname 有必要命名为 user_uname 吗?

我听一个数据库大拿说这么做方便日后XXXXXX(XXX代表忘了+各种不理解)

请问有必要这么命名吗?有什么好处?这样会不会名字变得很长?不利于某些操作?
初级问题

------解决方案--------------------
一般好像不需要加上表名。

就像你说的,太长了,比如我原来公司的一个表是:rpt_dist_rule ,里面有个字段store_id,

那么按照这个规则,这个字段就不需要写成:rpt_dist_rule_store_id 但是这样太长了,这个表的名称还不算长的,要是再长,估计写到后面,你都会烦了。



------解决方案--------------------
我觉的这个规则的初衷,应该是指,比如多个表关联的时候,那么你一看这个字段,就知道了这个字段是属于哪个表的。

我觉得本意是好的,但是这个规则是用一个所谓的规则,掩盖了另一个真正需要的规则,那就是比如:

select wd.store_id,wd.status,wm.org_id
from wc_dist_rule wd
inner join wc_mdm_status wm
        on wd.id = wm.id

这个应该是在写sql语句时候,通过表的别名,比如上面的wd,和wm,来引用字段,那么就知道上面的store_id是wd的,也就是wc_dist_rule表的。

而不应该通过把字段写成 wc_dist_rule_store_id来实现。
------解决方案--------------------
引用:
有必要将表属性命名成“表名_属性名”吗?

我们常会这样命名如"属性_表名",我觉得意义差不多。表格名之前还会加t_, View之前会加v_等,如果光是数据库层面的开发,那么确实有多此一举的嫌疑,但是对于日后维护,特别是对于刚入职的员工,这么做就一目了然了,如果需要更改表格,或者视图,那么就能很快找到相应的位置。

这样的话,开发维护的时候确实会方便很多,效率提高很多。
------解决方案--------------------
引用:
有必要将表属性命名成“表名_属性名”吗?

例如 user表 的 uname 有必要命名为 user_uname 吗?

我听一个数据库大拿说这么做方便日后XXXXXX(XXX代表忘了+各种不理解)

请问有必要这么命名吗?有什么好处?这样会不会名字变得很长?不利于某些操作?
这些东西没有绝对的答案,唯一要确保的是团队内部的命名统一,如果经过沟通协调,大家都同意这样做,那就这样做。不过单从我个人经历来说,user表的Uname没必要命名成那样,直接uname就可以了。关联的时候加个别名比如u.uname来准确定位即可。除非user表有多个name,需要区分