关于数据库主键和外键 终于弄懂啦
一、什么是主键、外键
关系型数据库中的一条记录中有若干个属性若其中某一个属性组(注意是
组)能唯一标识一条记录该属性组就可以成为一个主键
比如
学生表(学号姓名性别班级)
其中每个学生的学号是唯一的学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录学号和课程号的组合才可
以唯一标识一条记录所以学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键但它和学生表中的学号相对应并且
学生表中的学号是学生表的主键则称成绩表中的学号是学生表的外键
同理成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性总结一下
1.主键是能确定一条记录的唯一标识比如一条记录包括身份正号姓
名年龄。
身份证号是唯一能确定你这个人的其他都可能有重复所以身份证号
一、什么是主键、外键
关系型数据库中的一条记录中有若干个属性若其中某一个属性组(注意是
组)能唯一标识一条记录该属性组就可以成为一个主键
比如
学生表(学号姓名性别班级)
其中每个学生的学号是唯一的学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录学号和课程号的组合才可
以唯一标识一条记录所以学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键但它和学生表中的学号相对应并且
学生表中的学号是学生表的主键则称成绩表中的学号是学生表的外键
同理成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性总结一下
1.主键是能确定一条记录的唯一标识比如一条记录包括身份正号姓
名年龄。
身份证号是唯一能确定你这个人的其他都可能有重复所以身份证号
是主键。
2.外键用于与另一张表的关联。是能确定另一张表记录的字段用于保持
数据的一致性。
比如A表中的一个字段是B表的主键那他就可以是A表的外键。
二、主键、外键和索引的区别
主键、外键和索引的区别?
主键外键索引
定义唯一标识一条记录不能有重复的不允许为空表的外键是另一表
的主键,外键可以有重复的,可以是空值该字段没有重复值但可以有一个空值
作用用来保证数据完整性用来和其他表建立联系用的是提高查询排序的
速度
个数主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引
聚集索引和非聚集索引的区别?
聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。
聚集索引在索引页里直接存放数据而非聚集索引在索引页里存放的是
索引这些索引指向专门的数据页的数据。
三、数据库中主键和外键的设计原则
主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外
键的设计对物理数据库的性能和可用性都有着决定性的影响。
必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和
外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环
境就很难对这些键进行修改所以在开发阶段就设计好主键和外键就是非常
必要和值得的。
主键
关系数据库依赖于主键---它是数据库物理模式的基石。
主键在物理层面上只有两个用途
1.惟一地标识一行。
2.作为一个可以被外键有效引用的对象。