一般用户表的用户 ID,是不是设计成字符串的比较多

2023 年 3 月 1 日
 cjbi

如题,请说明理由,表关联也是用字符串吗?

6328 次点击
所在节点    数据库
59 条回复
ktqFDx9m2Bvfq3y4
2023 年 3 月 1 日
整型自增。

放心,系统下线了用户都不会有那么多。
zoharSoul
2023 年 3 月 1 日
不是, 基本都是整形
shyangs
2023 年 3 月 1 日
別和百度貼吧踩同一個坑。

哪天產品拍腦袋, 說百度帳號(用戶名)要可以讓使用者自由地更名, 你要學貼吧在 username 裡加各種符號避免重複?
shyangs
2023 年 3 月 1 日
承上,所以區分 id 和 name,

id 用整型自增,系統決定,使用者不可更改 id ,只能改 name 。
justfindu
2023 年 3 月 1 日
自增, 如果你要避免被扫, 那就 uuid 呗
op351
2023 年 3 月 1 日
因为用主键的整型自增列会暴露其他用户,所以不会用主键的整型自增列
而是自增列之外设计一个单独的用户 ID 列 使用三方库根据日期之类的生成不会重复的字符串
xiaoliu926
2023 年 3 月 1 日
@op351 我这边的项目都是雪花算法生成主键 id 的,安全的很
LeegoYih
2023 年 3 月 1 日
bigint
实际接口都会鉴权,不存在通过 ID 被暴力遍历的情况
op351
2023 年 3 月 1 日
@xiaoliu926
不用整型自增就行
我也是之前用 fiddler 分析某 app 的接口才意识到直接使用自增会导致用户信息泄露-。-
NoKey
2023 年 3 月 1 日
有时候对外叫 userID ,他实际不是 id ,用户 id ,要区分业务层面的 id ,和数据层面的 id ,你讲的是哪一个?😆
cjbi
2023 年 3 月 1 日
@NoKey 上面都提到了,主要怕被看出规则,我目前有个项目是用自增做关联字段,另外弄个字段+随机字符串作为用户唯一 ID ,总感觉很奇怪
chendy
2023 年 3 月 1 日
自增,怕被爆破就在接口层加一层编码规则处理,变成火星文(比如加上固定前后缀然后取字节然后翻转然后 base64 啥的)
superedlimited
2023 年 3 月 1 日
为什么 mongodb 自动生成的_id 是一串字符串呢
abelyao
2023 年 3 月 1 日
已经习惯了能用 uuid 就用 uuid 了,或者 nanoid - https://github.com/ai/nanoid
god7d
2023 年 3 月 1 日
guid
melkor
2023 年 3 月 1 日
用自增 ID 的这些建议,不考虑横向 sharding 问题吗?雪花生成全局唯一 ID 就行了
fiypig
2023 年 3 月 1 日
我第一家公司就用字符串的 用户账号, 现在的用自增,也有用 UUID ,我还没遇到过。。
manasheep
2023 年 3 月 1 日
无脑 GUID ( UUID )就可以了,MongoDB 的话用它自己的 ObjectID 也行
dk7952638
2023 年 3 月 1 日
id 是给系统用的编码,no 是给人用的编码
id 最好是自增,如果是分布式可以用雪花算法,自增可以提高数据库性能,还能实现游标分页
no 一般都是有意义的,比如快递单号
tool2d
2023 年 3 月 1 日
爆破很好处理的,你 api 加密一下就可以了。或者加个一次性访问权限,nonce 那种参数。

只要索引建的好,字符串查找速度也不慢的。

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

https://www.v2ex.com/t/920125

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

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

© 2021 V2EX