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