过早客
  • 首页
  • 节点
  • 成员
  • 广告投放
  • 登录
  • 注册

这种情况应该用“联合主键”?

IT技术 • mfanming • 发表于 8 年前 • 最后回复来自 augusts8988 • 8 年前

id name linkid
1 jack 223
2 rose 12
3 tom 323
4 rose 111
5 jack 223

id 是自增的,是目前的主键
需求:不出现 id=1 和 id=5 的情况,就是 name 和 linkid 都一样

刚才试了一下,把 name 和 linkid 设为主键,提示必须有一个自增字段
就不懂了...
(mysql数据库)

加入收藏 新浪微博 分享到微信 ❤赞 1656 次点击 0 人赞 0 人收藏

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

共收到9条回复
coconne 8 年前 #1 赞 0

插入数据前,可以先过滤重复数据啊?

topology 8 年前 #2 赞 0

1楼正解

topology 8 年前 #3 赞 0

@coconne 插入前没法过滤数据,效率太低

tracymcladdy 8 年前 #4 赞 1

建议用 uuid 做主键,然后 name + linkid 做唯一索引。
多罗嗦几句,建议所有表都 uuid 做主键,然后不要搞什么外键,范式那套已经不吃香了。数据库就是简单的持久化功能(最多用唯一索引做去重的双保险),别的业务逻辑全部用程序去实现。

mfanming 楼主 8 年前 #5 赞 0

@coconne
之前也是过滤重复数据,但是过了俩月发现一个BUG,还是出了重复数据
为了保证不再出现BUG,所以想在数据库端也处理一下。
因为这个表出现重复,其它数据表也乱了

mfanming 楼主 8 年前 #6 赞 0

@tracymcladdy 别的不会,倒省事了:)

mfanming 楼主 8 年前 #7 赞 0

@tracymcladdy 顺便问一句,uuid是指什么?

mfanming 楼主 8 年前 #8 赞 0

@jjboomsky btree 和hash选哪个好一点呢?

augusts8988 8 年前 #9 赞 0

@tracymcladdy 赞,做了这么多年的数据仓库,最烦业务系统id用123456这种自增序列的,low爆了,uuid那么好用,另外国内现在开发很少先建模设计了,都是走一步看一部,系统开发下来,开发自己都不知道成什么样子了。

请绑定手机号后,再发言,点击此处
Guozaoke.com—源自武汉的高端交流分享社区
相关主题
真的不喜欢python
大家现在新项目用java的话,用哪个版本的jdk
推荐大家使用 claude code + qwen3-coder 可以抛弃 Cursor了
实践 react router v7
大家用的什么AI code啊,有无白嫖途径?
CurSor不能使用claude模型了??????
claude真不错
Claude Code 公益镜像站白票使用教程
搞了个网站,帮助大家找到自己想要的互联网资源!
能搭Wordpress的国内服务器求推荐

过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号