请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

复合主键

用户、章节、标题作为复合主键,三者合起来不同有相同的,但是万一有这个情况,某个用户在在同一章节下,起了一个相同的标题,但是此时他内容不一样的,这不是违反第二范式嘛,我想的是标题肯定不可能设置成唯一性,那么是不是在新增笔记的时候,会判断复合主键是否存在,如果存在的话,相当于,不是往笔记表中去新增笔记了,而是根据这复合主键,去更新其他列的值,这样就保证了,复合主键的唯一性,是这样嘛

正在回答

2回答

sqlercn 2019-04-14 21:58:51

业务主键本身是带有一定业务规则的,比如说要求业务主键的值不能重复,所以我们可以把业务主键设置成唯一索引,这样如果有重复的业务主键是无法写入的表中的。所以不用我们人为的通过程序进行判断,不知道我的回答是你要问的吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 奶茶三兄弟d #1
    可能是我想多了,设置了主键,肯定是不能为空,且这里的三者合起来肯定不能出现重复的,有些可以,可我想到是在写业务代码的时候,怕用户再次填写相同的,就先判断下,有重复给前端返回个错误,提示该条笔记已经存在,或者更新已有的记录,就像用户注册,用户名不能相同,得先交验一下,感觉自己想的太多,跑远了,不是数据库这边了?,不好意思
    回复 有任何疑惑可以回复我~ 2019-04-14 22:20:40
  • sqlercn 回复 提问者 奶茶三兄弟d #2
    其实这种情况不用程序提前判断,这样会增加程和数据库的交互次数,利用好唯一索引,有重复的自然插入不进去?
    回复 有任何疑惑可以回复我~ 2019-04-15 06:03:49
  • 老师我想问下:比如用户名 密码  手机号 3个设置为联合唯一索引!有可能出现2个一样的密码么! MD5加密  那出现数据能插入的进去么? 如果插入进去?那用户名是不是也可以重复? 手机号也可以重复那该怎么办
    回复 有任何疑惑可以回复我~ 2019-09-19 13:22:58
我是没有昵称 2023-06-27 13:52:33

使用唯一索引作为主键就可以解决这个问题,不需要用复合主键

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信