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

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

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

14288 次点击
所在节点    程序员
115 条回复
lazing
2020-09-23 10:31:58 +08:00
有契约其实比较好。
比如 主表 primary.id 外键就叫 other.primary_id
主表是 table.code,外键 table_code
id 用 bigint code 用 varchar
THESDZ
2020-09-23 10:34:09 +08:00
jasonding
2020-09-23 10:36:28 +08:00
主表就叫 id,外键用 table_id
nekoneko
2020-09-23 10:38:24 +08:00
@Rwing #9 有用到的,用来对表进行分组
lepig
2020-09-23 10:47:06 +08:00
我个人倾向就是每个表都有一个 ID 主键,外键用 table_id
lambdaq
2020-09-23 10:50:44 +08:00
postgres 里 id 就是一个单独的表。
liuxu
2020-09-23 10:54:04 +08:00
香,结贴。
cs419
2020-09-23 10:54:39 +08:00
这里的 `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-09-23 10:59:47 +08:00
这么用的基本都是野鸡程序员,凡是正规学过数据库课程的人都知道不存在语义问题
everhythm
2020-09-23 11:04:34 +08:00
看情况,直接冗余也是可以的,1 个表 id 和 user_id 都有也正常,user_id 不是字符串的情况也是有的
bugFactory
2020-09-23 11:11:32 +08:00
个人习惯吧
table a (id pk, b_id fk)
bugFactory
2020-09-23 11:12:00 +08:00
@bugFactory table b (id pk)
mirrorpen
2020-09-23 11:24:31 +08:00
个人倾向字段名统一,id 就 id,name 就 name,title 就 title,外键用 table_字段不就好了,而且不同表对应不同业务为啥会混淆。。
pastgift
2020-09-23 11:27:06 +08:00
规范而已,不必大惊小怪。
一般规范都来源于血泪史,而每个人的血泪史都有所不同,所以有不同的规范很正常。
adoula
2020-09-23 11:27:14 +08:00
根本不需要前缀,你们这些笨蛋,大笨蛋
mirrorpen
2020-09-23 11:29:30 +08:00
@mirrorpen 有的时候表名太长,字段名前加表前缀是又丑又长..(暗指我司老项目的数据库设计)
malaohu
2020-09-23 11:34:57 +08:00
统一规范。
列表直接叫 d 也可以。
forty
2020-09-23 11:43:34 +08:00
“非要” 是指什么? 谁非要?你女朋友的要求,你领导的要求,还是团队的规范?
每个团队有自己的习惯和配套的工具等,进行统一要求能够带来一些便利。

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

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

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

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

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

https://tanronggui.xyz/t/709455

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

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

© 2021 V2EX