数据库的复合主键、多主键
来源:互联网 发布:物品寄存服务 知乎 编辑:程序博客网 时间:2024/05/22 10:29
最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?
其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。
阅读全文
0 0
- 数据库的复合主键、多主键
- 数据库的复合主键
- hibernate 映射无主键和复合主键的数据库表
- 数据库为何要有复合主键(多主键)
- 数据库为何要有复合主键(多主键)
- 数据表的复合主键
- hibernate的主键和复合主键
- Mysql 多列形成主键(复合主键
- 联合主键 复合主键
- 复合主键
- 复合主键
- 复合主键
- 复合主键
- 复合主键
- 复合主键
- 对逻辑主键、业务主键和复合主键的思考
- 对逻辑主键、业务主键和复合主键的思考
- Hibernate复合主键的处理
- 九度OJ-题目1502:最大值最小化
- 计算广告资料汇总
- 分段低次插值
- GraphQL分享
- Nginx安装-让文件服务器fastdfs提供有web方式的上传下载功能
- 数据库的复合主键、多主键
- 关于hibernate最新版本无法序列化
- 采集电脑摄像头和mic,rtp端口推送音视频工具
- 超实用的CAD技巧,教你如何将CAD转换成PDF
- 把数组排列成最小的数
- 进制转换
- pycharm错误运行报告(完善中)
- 安卓调用手机自带的浏览器
- Tesseract-OCR 安装