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

2020 年 9 月 22 日
 luxinfl

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

16716 次点击
所在节点    程序员
115 条回复
lazing
2020 年 9 月 23 日
有契约其实比较好。
比如 主表 primary.id 外键就叫 other.primary_id
主表是 table.code,外键 table_code
id 用 bigint code 用 varchar
THESDZ
2020 年 9 月 23 日
jasonding
2020 年 9 月 23 日
主表就叫 id,外键用 table_id
nekoneko
2020 年 9 月 23 日
@Rwing #9 有用到的,用来对表进行分组
lepig
2020 年 9 月 23 日
我个人倾向就是每个表都有一个 ID 主键,外键用 table_id
tf2
2020 年 9 月 23 日
postgres 里 id 就是一个单独的表。
liuxu
2020 年 9 月 23 日
香,结贴。
cs419
2020 年 9 月 23 日
这里的 `table 名+ID` 这个是指 user 表中 用 user_id 当 pk 么
如果是这种 那应该用的人比较少吧

大部分人应该都是 用 id 作为唯一标识
user 表的 pk 是 id
order 表 pk 是 id fk 是 user_id

同时用 id 和 code
id 是 pk 自然是唯一的
code 作为外部关联标识应当是唯一的
这样的话 不觉着 id 略显多余么 干脆别用 id 直接 code 作为 pk

通常表里还会加两个字段 创建时间 修改时间
查最新数据用 创建时间字段 比 id 字段 更恰当
Numbcoder
2020 年 9 月 23 日
这么用的基本都是野鸡程序员,凡是正规学过数据库课程的人都知道不存在语义问题
everhythm
2020 年 9 月 23 日
看情况,直接冗余也是可以的,1 个表 id 和 user_id 都有也正常,user_id 不是字符串的情况也是有的
bugFactory
2020 年 9 月 23 日
个人习惯吧
table a (id pk, b_id fk)
bugFactory
2020 年 9 月 23 日
@bugFactory table b (id pk)
mirrorpen
2020 年 9 月 23 日
个人倾向字段名统一,id 就 id,name 就 name,title 就 title,外键用 table_字段不就好了,而且不同表对应不同业务为啥会混淆。。
pastgift
2020 年 9 月 23 日
规范而已,不必大惊小怪。
一般规范都来源于血泪史,而每个人的血泪史都有所不同,所以有不同的规范很正常。
adoula
2020 年 9 月 23 日
根本不需要前缀,你们这些笨蛋,大笨蛋
mirrorpen
2020 年 9 月 23 日
@mirrorpen 有的时候表名太长,字段名前加表前缀是又丑又长..(暗指我司老项目的数据库设计)
malaohu
2020 年 9 月 23 日
统一规范。
列表直接叫 d 也可以。
forty
2020 年 9 月 23 日
“非要” 是指什么? 谁非要?你女朋友的要求,你领导的要求,还是团队的规范?
每个团队有自己的习惯和配套的工具等,进行统一要求能够带来一些便利。

叫 xxx_id 而不是 id 的好处就是可以单独用的时候也具备辨识度(包括语义、可读性),多表协同的时候能提供一部分便利。

你在一个系统里,统一规范就好,别一会东一会西。

如果你一般都是 select * from xxx order by id desc limit 1 这么简单的事情,那显然没必要纠结。

就像写个 hello world 没必要引入一大堆框架,搞上一大堆设计模式。
newmlp
2020 年 9 月 23 日
我的字段怎么定义关你屁事,这也要发帖?
cheng6563
2020 年 9 月 23 日
只叫 ID 就行了。加短前不就是匈牙利命名法么,缀稍微多几个表就要重名,然后要么要特殊设计记不住的前缀,要么还是要带上表名

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

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

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

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

© 2021 V2EX