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

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

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

14288 次点击
所在节点    程序员
115 条回复
b0644170fc
2020-09-23 13:46:42 +08:00
@lichao 表加前缀还是有点用的。以前我们用简短的业务单词当表前缀,相同业务的表一搜就出来
chenzheyu
2020-09-23 14:01:21 +08:00
id 我是可以接收的,但是写成 ID 我就想骂娘了
laminux29
2020-09-23 14:16:33 +08:00
1.无论选择哪种方案,都有自己的优缺点。

2.一个团队,人多了,每个人的思路可能会不一样。这种事情,在开发之前,大家商量讨论一下,把规范定下来就 OK 。
foxni
2020-09-23 14:43:45 +08:00
都叫 ID 不够明确啊,虽然有些表里纯粹做主键用途的可能不会被用到,但是等你关联多个表之后想要使用他排序的时候。。。
BeFun
2020-09-23 14:43:52 +08:00
@lichao “t_”的这种是因为还有视图这种东西,为了不搞混加的,现在的项目都不用视图,存储过程了吧
wupher
2020-09-23 15:00:05 +08:00
习惯

桌面 App 时期,大多数业务逻辑都使用数据库+存储过程形式实现。复杂过程实现中,数据库表一多,写存储过程时都叫 id 就容易出错,需要指定别名,因此那时一般要求主键使用“表名+id”形式。

现在 WEB App 时代中,大多建议使用程序 ORM 框架来实现类型业务查询与计算,避免过多使用存储过程、视图等技术,就没这项要求了。实际上,新一代的 ORM 框架,比如 Rails 、GORM 推荐表名主键就叫 id 。
ShangL
2020-09-23 15:27:30 +08:00
用表名做 id,还是有好处的,比如多表关联查询的时候,不需要在去写新的实体去单独映射这个字段
zwj2885
2020-09-23 15:29:44 +08:00
好多数据库 ID 是保留字
KarlChen2015
2020-09-23 15:48:18 +08:00
直接叫 id 比较好,只作为每行记录技术上的区分
业务唯一键另外定义,比如 user 表 就可以叫 user_id 或者 user_code
KarlChen2015
2020-09-23 15:50:13 +08:00
@ShangL 你这个问题 根本原因归结于设计表结构的时候“偷懒”,把其他表的 id 作为业务字段使用了。单论 MySQL,id 字段理论上不应该有业务含义
fatcube404
2020-09-23 16:01:56 +08:00
不叫 id 的情况就在于,多表联查时你知道这个 id 是个啥,但规则这东西说白了现在的公司除非有那种非常一板一眼的 pm 给你抠字段名,否则一定是乱丁日 起名,兄弟把自己劝一下,忍一手过去得了。
MarioLuo
2020-09-23 16:36:29 +08:00
@b0644170fc 业务模块前缀有区分能力,t_就不行
namelosw
2020-09-23 20:53:52 +08:00
从 SQL 的角度 foo_id 好点,因为 join 的时候不用专门指定.

从代码的角度 id 好点,代码处理 entity 的时候会简单很多,不需要很复杂的代码或者框架.

其实区别不大,就是感觉 foo_id 有点老气,不过别人让我用我也没啥意见.
CasualYours
2020-09-24 09:33:25 +08:00
个人倾向于直接使用 id,可以避免表名太长时的命名焦虑。
aguesuka
2020-10-01 16:13:10 +08:00
《 sql 反模式》 4.5.1 。一百多楼都没提到?

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

https://tanronggui.xyz/t/709455

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

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

© 2021 V2EX