数据库的主键字段名叫`ID`不香么,为什么非要`table 名+ID`、`table 名缩写+ID`?

2020-09-22 15:53:08 +08:00
 luxinfl

大佬们的主键字段名是怎么定义的?难道不叫 ID 还会有什么好处么??

13404 次点击
所在节点    程序员
115 条回复
kiracyan
2020-09-22 15:55:27 +08:00
语义更明确吧
alexmao
2020-09-22 15:55:52 +08:00
当你有 10 个表的时候,都叫`ID`你记得过来吗?
laravel
2020-09-22 15:57:21 +08:00
我合作的小伙连 id 都没有
lichao
2020-09-22 15:57:43 +08:00
还有类似的,表名用 t_User, t_Customer
wangyzj
2020-09-22 15:58:40 +08:00
@laravel #3 又看到这个 id 了
islxyqwe
2020-09-22 16:00:11 +08:00
有外键查询时键名能统一
luxinfl
2020-09-22 16:00:52 +08:00
@alexmao 你说的 10 个表什么场景?写查询 sql ?用别名不行麽?
qq292382270
2020-09-22 16:01:31 +08:00
表多了好认
Rwing
2020-09-22 16:01:33 +08:00
是的,我觉得没必要,楼上说的 t_前缀也没必要,当初提出 t_前缀时是为了区分 view 和 sp,现在都不用了
luxinfl
2020-09-22 16:02:33 +08:00
@islxyqwe 可是我们不用 id 当做外键关联,我们都是用表里面定义的唯一业务编号 code 关联
luxinfl
2020-09-22 16:04:27 +08:00
@qq292382270 我们不用 id 关联,所以我是选择性忽略了麽
tabris17
2020-09-22 16:04:57 +08:00
@alexmao 都叫 id 为什么会记不住?你想表达的是不宜区分吧,t1.id AS t1_id 不可以吗?
wd
2020-09-22 16:07:57 +08:00
比较下 where t1.id = t2.user_id 和 where t1.user_id = t2.user_id
lichao
2020-09-22 16:10:23 +08:00
@wd

当然是 where user.id = topic.user_id 好
qwerthhusn
2020-09-22 16:15:26 +08:00
xxx 对象,表名 xxx,字段名 xxx_id xxx_name xxx_???

这样做,一个是有些属性像 order name status 这些可能是 DB 的关键字,有时候工具或者代码高亮显示的很奇怪,但是基本上不报错
另外一个原因就是表连接的时候,两个表可能有一样的字段,需要表(别)名点字段(当然平常也应该加上别名)
ztxcccc
2020-09-22 16:17:21 +08:00
user 表如果主键叫 user_id,topic 表里的用户字段就该叫 topic_user_id,这么写 SQL 不反人类?
ColinZeb
2020-09-22 16:22:03 +08:00
@wd 又不是代码生成器,为什么叫 t1t2,user 可以简写 u,topic 简写 t,所以就是 u.id = t.userid
baobao1270
2020-09-22 16:22:52 +08:00
叫 ID:ORM 自动映射
不叫:手写 SQL 连表查询方便

看你是手写 SQL 还是用 ORM 咯
mebtte
2020-09-22 16:26:37 +08:00
科普一下, SQL 有个 AS 关键词
THESDZ
2020-09-22 16:28:35 +08:00
当然没必要了,开发了 n 个项目,直接 ID,root-class,反而开发效率更高,封装起来更容易,前端对接也不用关心,缩写啊什么的臭毛病

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX