采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
用户、章节、标题作为复合主键,三者合起来不同有相同的,但是万一有这个情况,某个用户在在同一章节下,起了一个相同的标题,但是此时他内容不一样的,这不是违反第二范式嘛,我想的是标题肯定不可能设置成唯一性,那么是不是在新增笔记的时候,会判断复合主键是否存在,如果存在的话,相当于,不是往笔记表中去新增笔记了,而是根据这复合主键,去更新其他列的值,这样就保证了,复合主键的唯一性,是这样嘛
业务主键本身是带有一定业务规则的,比如说要求业务主键的值不能重复,所以我们可以把业务主键设置成唯一索引,这样如果有重复的业务主键是无法写入的表中的。所以不用我们人为的通过程序进行判断,不知道我的回答是你要问的吗?
可能是我想多了,设置了主键,肯定是不能为空,且这里的三者合起来肯定不能出现重复的,有些可以,可我想到是在写业务代码的时候,怕用户再次填写相同的,就先判断下,有重复给前端返回个错误,提示该条笔记已经存在,或者更新已有的记录,就像用户注册,用户名不能相同,得先交验一下,感觉自己想的太多,跑远了,不是数据库这边了?,不好意思
其实这种情况不用程序提前判断,这样会增加程和数据库的交互次数,利用好唯一索引,有重复的自然插入不进去?
老师我想问下:比如用户名 密码 手机号 3个设置为联合唯一索引!有可能出现2个一样的密码么! MD5加密 那出现数据能插入的进去么? 如果插入进去?那用户名是不是也可以重复? 手机号也可以重复那该怎么办
使用唯一索引作为主键就可以解决这个问题,不需要用复合主键
登录后可查看更多问答,登录/注册
掌握SQL优化与慢查询优化,具备独当一面的能力
959 21
1.5k 15
1.2k 14
1.3k 13
1.1k 11