比如一张 User 表,主键命名为 id 还是 userId 好呢?
每张表都叫 id ,而不叫 xxxId,这样即使表名比较复杂也没关系。
用户表跟实体映射时,如果表中是 user_id ,实体变量叫做 userId ,显然更清楚一点。而且也方便一些工具生成代码
还听说了一些其他方案:
请教大家的习惯的方案,目前我的方案是,数据表叫做 id ,实体对象变量叫做 userId 。外键叫做 user_id
另外请教大家:有没有一些实际的设计规范可以参考的呢?
![]() |
1
ysc3839 105 天前 via Android
id
|
![]() |
2
ysc3839 105 天前 via Android
|
3
laikick 105 天前
规定好就行. 别一下是 id 一下是 userId
|
![]() |
4
fengsi OP @ysc3839 #2 感谢前辈回复,学到了。我多问一句,变量名我用 userId 的原因是为了返回数据给前端考虑,返回 userId 前端就可以很清楚的这是 user 的 id 了,前辈是推荐直接返回 id 吗?
|
![]() |
5
ysc3839 105 天前 via Android
|
![]() |
6
adoal 105 天前 ![]() 表内字段一般没必要带上表名作前缀
|
![]() |
7
Vegetable 105 天前
实践上来看都是 id 。
`user`.`user_id`这种命名方式让我觉得很奇怪且多余 |
8
godleon 105 天前
客观评价一下吧,我觉得应该根据业务来说;
以 mysql 为例; 一张表使用 uid mid sid 或者 id 作为主键,其实没什么性能上的区别,哪怕你映射实体不过是一个别名而已,从代码设计上,你用 userId 和 id 我觉得没啥标准的吧; 但是在你的业务,存在拆表 分库分表 分布式等架构,这个时候你每个表都有一个 id 然后再有一个 业务的 uid 或者 mid sid 这类是这个业务的表示, 当你有分布式跨库全局唯一 ID 或者设计行锁 表锁 分布式事务等 这个 id 的存在就有很大意义了; |
![]() |
9
ksc010 105 天前
一般用 id ,但是 user 这个表比较特殊,习惯用 userid
|
![]() |
11
NewMoorj 105 天前
我用 user_id ,这样全表命名都比较统一,所有 ID 之前都加命名,方便识别。
|
12
foolishcrab 105 天前 via iPhone
显然是 id 好,实体类的字段是不可能脱离主体来使用的,加上 user 并无意义。
延伸一下,有些人喜欢 xxxXxxxxXxxxResponseType.responseStatusType.responseStatusMetaType 而不是 xxxxXxxxResponse.status.meta 前者看着恶心,代码逻辑还没开始写就换行了 |
13
kkwa56188 105 天前
大项目, 表多, 关系复杂的, 用 user_id, 参见 数据库老祖宗 Oracle 的 E-business Suite, 或者大型 ERP 顶流 SAP, 的设计实践.
没做过的就不要说了. 小项目 小数据库的, 无所谓 怎么都行. |
14
hendry 104 天前 via Android
UID 可以吗不
|
![]() |
15
neptuno 104 天前 via iPhone
我一般用 id ,之前有人跟我说过全部用 id ,联表可能可读性差一点,不过我觉得还行,联表的时候,别名写的清楚一点就好了。
|
![]() |
16
BeijingBaby 104 天前
user.user_id ,这样很蛋疼,不如 user.id
|
![]() |
17
mwjz 104 天前
每一个表都是实体, 用 id 就代表当前实体的主键,规则清晰。 连表外键用 userId ,xxxId, 如果都用 xxxId ,会很疑惑
|
![]() |
18
wanguorui123 104 天前 via iPhone
用 User ID 比较方便,用 ID 比较规范,有时候方便比规范重要
|
![]() |
19
akira 104 天前
按公司定的规范来。。
|