大佬们的主键字段名是怎么定义的?难道不叫 ID 还会有什么好处么??
1
kiracyan Sep 22, 2020
语义更明确吧
|
2
alexmao Sep 22, 2020 当你有 10 个表的时候,都叫`ID`你记得过来吗?
|
3
laravel Sep 22, 2020
我合作的小伙连 id 都没有
|
4
lichao Sep 22, 2020 还有类似的,表名用 t_User, t_Customer
|
6
islxyqwe Sep 22, 2020
有外键查询时键名能统一
|
8
qq292382270 Sep 22, 2020
表多了好认
|
9
Rwing Sep 22, 2020
是的,我觉得没必要,楼上说的 t_前缀也没必要,当初提出 t_前缀时是为了区分 view 和 sp,现在都不用了
|
11
luxinfl OP @qq292382270 我们不用 id 关联,所以我是选择性忽略了麽
|
15
qwerthhusn Sep 22, 2020
xxx 对象,表名 xxx,字段名 xxx_id xxx_name xxx_???
这样做,一个是有些属性像 order name status 这些可能是 DB 的关键字,有时候工具或者代码高亮显示的很奇怪,但是基本上不报错 另外一个原因就是表连接的时候,两个表可能有一样的字段,需要表(别)名点字段(当然平常也应该加上别名) |
16
ztxcccc Sep 22, 2020 user 表如果主键叫 user_id,topic 表里的用户字段就该叫 topic_user_id,这么写 SQL 不反人类?
|
18
baobao1270 Sep 22, 2020
叫 ID:ORM 自动映射
不叫:手写 SQL 连表查询方便 看你是手写 SQL 还是用 ORM 咯 |
19
u6pM63mMZ34z32cE Sep 22, 2020
科普一下, SQL 有个 AS 关键词
|
20
THESDZ Sep 22, 2020 当然没必要了,开发了 n 个项目,直接 ID,root-class,反而开发效率更高,封装起来更容易,前端对接也不用关心,缩写啊什么的臭毛病
|
21
yogogo Sep 22, 2020 谁设计的听谁的,背锅也不会是你
|
26
netnr Sep 22, 2020
个人强烈推荐字段按表统一加前缀
|
27
jintianfengda Sep 22, 2020 关注,我个人是倾向主键就叫 id
|
28
lazypu Sep 22, 2020
只要项目里统一口径就行, 各有好处吧.
除了 id, 还有很多其他单词也是很高频的字段名, 难道都要加上 table 名吗 |
29
libracloud Sep 22, 2020
用 rails 习惯后,我什么都是按 rails 的来的
|
30
THESDZ Sep 22, 2020 @alexmao
1. 不觉得,规整应该指的是同一套标准,而非同一个名字. 2. 顺带:良好的代码应该简介的同时可以自解释,`ID`在当前表就是主键,没人看不懂,而`USER_ID`明显就是`USER`表的主键 3. `ID`一般都没有业务含义,统一的好处是在处理统一的非业务逻辑的时候,不需要考虑一些异化的问题,从我有限的开发经验中,我认为全部使用`ID`效率更高. |
31
chendy Sep 22, 2020 自己的 id 就叫 id,关联到别人的字段叫 xxx_id
其实怎么叫不是很重要,主要还是要有统一的命名规范 |
32
zhaokun Sep 22, 2020
我们更奇葩
主键用 pk_表名全称 外键用 fk_表名全称 定这规则的人说是 10 年高德地图的都这么用,现在是 2020 年了 |
33
NO9527 Sep 22, 2020
喜欢 ID
当一个 table 很长的适合,取一个很长的 table_id 感觉不舒服 |
34
crist Sep 22, 2020
我™天王老子来了我也直接叫它 id !
|
35
sonxzjw Sep 22, 2020
貌似表名+id 的命名方法很早很早了吧,不过很早很早之前我就只用 id 了
也符合命名简单明了的规范(当然这是单表角度) 但是多表角度的话都会有 表明.字段名,so 个人觉得还是 id 合适 |
37
dr1q65MfKFKHnJr6 Sep 22, 2020
记得 powerdesinger 里面建模,默认检查有效性的时候,不同表相同名字的字段是有警告⚠
|
39
woodensail Sep 22, 2020
我看了下,好像没人提逻辑主键和业务主键的区分。
说白了楼主是用逻辑主键的,所以主键不参与关联,是个无意义字段,自然一个 id 就行。 而楼里面提倡「 table 名+id 」的则是用业务主键,主键中包含表名易于关联。 所以无所谓对错,只是逻辑主键和业务主键两种不同的习惯而已。 |
40
whx20202 Sep 22, 2020
就叫 id,没什么问题,多表关联时候带上表名就行了
|
41
draguo Sep 22, 2020
直接用 id 吧,我 orm 用的多,用其他字段得手动指定,带表名也就联查方便了一点点
|
42
OneMan Sep 22, 2020
规矩问题,非原则问题,没什么大不了和讨论的,看什么菜下什么锅即可
|
43
MarioLuo Sep 22, 2020 via Android
目前感觉唯一有用的地方 select xxx_name, yyy_name ...join a.xxx_id=b.yyy_id,个人倾向不加前缀,毕竟谁不使用 ORM 了
|
44
tsingke Sep 22, 2020
差别是不大,但是 id 省事好用,完胜啰嗦的 xxx_id,当然用 id,不会真有人用 xxx_id 吧,正经人谁用 xxx_id 是吧?
|
45
dayFvckingByte Sep 22, 2020 via iPhone
统一叫”ID 不香么”
|
46
lin07hui Sep 22, 2020
多表查询时,字段可以不用 AS 。他可能不知道 AS 的存在,也可能他就是看不起 AS 。
|
48
RickyC Sep 22, 2020
世界从来不是有序的, 而是从无序中寻找有序, 人们将这称为"劳动".
|
49
littlewing Sep 22, 2020
自增主键 id 应该是一个和业务无关的字段,所以叫 id 就好
|
50
jorneyr Sep 22, 2020
平时用 id 或者 table_name_id 选一个就好了,但考虑分库分表时,使用 table_name_id,作为 sharding key 会比较好用
|
51
gadsavesme Sep 22, 2020
就是在关联表里看起来舒服点吧,不然主表叫 id,关联子表里叫 xxid,语义上不是很友好
|
52
akira Sep 22, 2020
叫 id,自增,不参与任何业务
|
53
ZXCDFGTYU Sep 22, 2020
user: id,username,pwd,salt
|
54
ZXCDFGTYU Sep 22, 2020
@ZXCDFGTYU user_info: id, user_id,phone
id 每个表的 id 为 pk,table+_id 为关联字段 id,我个人习惯感觉还好,如果要是表名太长的话,可以用其他意思相近的英文单词替代。这样的话,能够单看 field 就能知道这个字段关联的哪个表,更方便一点。 |
55
ZXCDFGTYU Sep 22, 2020
楼上说的单独的关联表也可以,user_info_rel,table1+table2+_rel,字段里就是 user_id ( user.id ),user_info_id(user_info.id)。
|
56
ZXCDFGTYU Sep 22, 2020
以上为个人习惯
|
57
songco Sep 22, 2020 via iPhone
同一个项目统一风格就好
真码农有能力制定项目命名规则,就按自己偏好来,自己制定不了,学会适应 现代编辑器比较先进,各种风格差别不大 |
58
lithiumii Sep 22, 2020 via Android
这么喜欢统一主键名,mongodb 欢迎你
|
59
lululau Sep 23, 2020 via iPhone 别争了,本表主键名称以加表名作前缀的就是沙雕行为,没有任何好处
|
60
qiumaoyuan Sep 23, 2020
讨论技术问题最烦“规整”、“太重”、“奇怪”这类不明所以的形容词,我 TM 都不知道这些人到底在说啥,标准都让你定了,别人讨论个尖儿。
|
61
whenwind Sep 23, 2020 tp 连表查询重名的会哭死
|
62
h82258652 Sep 23, 2020
都叫 id,不然用 orm 还得去配列名映射。
|
63
hbolive Sep 23, 2020
统一叫 id,主键自增,没有觉得不方便或者有混淆的地方
|
64
SAnii Sep 23, 2020
遇到项目里表特别多联查的时候,有前缀就很方便清晰明了.
|
65
sambawy Sep 23, 2020
爱怎么用就怎么用,都没错,风格统一就完事了
|
66
darknoll Sep 23, 2020
我就叫 id,谁不服谁自己写
|
67
fpure Sep 23, 2020
这样连表查询的时候很直观,一眼就知道连哪张表哪个字段
|
68
Outshine Sep 23, 2020
当前表的主键就叫 ID 啊,外键才会带上表名,比如文章表的用户 ID 就叫 user_id 或者 creator_id
主键带当前表的表名就很沙雕(还有表前缀) |
69
zhuweiyou Sep 23, 2020
当前表 id, 其他表 xxx_id
|
70
zppass Sep 23, 2020
擦,刚想说点啥,发现自己项目中的也是用 ID,如果不是关键字什么的其实应该没多大问题,像什么 ISXXX 之类的尽量不要用,有的框架会解析错误,表名啥的尽量能做到见词知意。
|
71
guanhui07 Sep 23, 2020 我个人是倾向主键就叫 id, 查询可以别名 as
|
72
greg0220 Sep 23, 2020 via iPhone
我们使用的 id 。但是感觉这个字段除了唯一性没什么其他用处了。
|
73
xpol Sep 23, 2020 via iPhone
我司基本上有 id 列,但不用。额外添加一列名曰 code 或者表名+code 。字符串类型,值是缩写加数字。手动实现一个后面的数字的自增。
|
74
zhuyichen1017 Sep 23, 2020
听领导说是百度先带出来的
|
75
0bit Sep 23, 2020
主键不叫 id 的都是异教徒😂
|
76
alexmao Sep 23, 2020
照你们这么说,user_name, artical_name, category_name,都叫 name 得了?反正 sql 的时候都带着表名。
|
77
7654 Sep 23, 2020
前人栽树后人乘凉,前人挖坑后人遭殃
|
78
ritaswc Sep 23, 2020
我觉得 id 好用啊,每次在 Orm 里面用到主键的时候,还要想一下是什么。八成设计表的人害怕 join 的时候主键冲突吧,笑
|
79
Still4 Sep 23, 2020
user_info: id, name, company_id, phone_id
company_info: id, name company_structure: company_id, user_id, user_level phone_info: id, name 联表一查,喵喵喵? |
81
lazing Sep 23, 2020
有契约其实比较好。
比如 主表 primary.id 外键就叫 other.primary_id 主表是 table.code,外键 table_code id 用 bigint code 用 varchar |
82
THESDZ Sep 23, 2020
|
83
jasonding Sep 23, 2020
主表就叫 id,外键用 table_id
|
85
lepig Sep 23, 2020
我个人倾向就是每个表都有一个 ID 主键,外键用 table_id
|
86
tf2 Sep 23, 2020
postgres 里 id 就是一个单独的表。
|
87
liuxu Sep 23, 2020
香,结贴。
|
88
cs419 Sep 23, 2020
这里的 `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 字段 更恰当 |
89
Numbcoder Sep 23, 2020
这么用的基本都是野鸡程序员,凡是正规学过数据库课程的人都知道不存在语义问题
|
90
everhythm Sep 23, 2020
看情况,直接冗余也是可以的,1 个表 id 和 user_id 都有也正常,user_id 不是字符串的情况也是有的
|
91
bugFactory Sep 23, 2020
个人习惯吧
table a (id pk, b_id fk) |
92
bugFactory Sep 23, 2020
@bugFactory table b (id pk)
|
93
mirrorpen Sep 23, 2020
个人倾向字段名统一,id 就 id,name 就 name,title 就 title,外键用 table_字段不就好了,而且不同表对应不同业务为啥会混淆。。
|
94
pastgift Sep 23, 2020 via iPhone
规范而已,不必大惊小怪。
一般规范都来源于血泪史,而每个人的血泪史都有所不同,所以有不同的规范很正常。 |
95
adoula Sep 23, 2020
根本不需要前缀,你们这些笨蛋,大笨蛋
|
97
malaohu Sep 23, 2020
统一规范。
列表直接叫 d 也可以。 |
98
forty Sep 23, 2020
“非要” 是指什么? 谁非要?你女朋友的要求,你领导的要求,还是团队的规范?
每个团队有自己的习惯和配套的工具等,进行统一要求能够带来一些便利。 叫 xxx_id 而不是 id 的好处就是可以单独用的时候也具备辨识度(包括语义、可读性),多表协同的时候能提供一部分便利。 你在一个系统里,统一规范就好,别一会东一会西。 如果你一般都是 select * from xxx order by id desc limit 1 这么简单的事情,那显然没必要纠结。 就像写个 hello world 没必要引入一大堆框架,搞上一大堆设计模式。 |
99
newmlp Sep 23, 2020
我的字段怎么定义关你屁事,这也要发帖?
|
100
cheng6563 Sep 23, 2020 via Android
只叫 ID 就行了。加短前不就是匈牙利命名法么,缀稍微多几个表就要重名,然后要么要特殊设计记不住的前缀,要么还是要带上表名
|