MySQL数据库的主键与外键

MySQL数据库的主键与外键

在数据库中,数据的增删改查是数据管理的日常操作,也是数据库设计是否科学的一个检验标准。这里以MySQL数据库“学生成绩管理系统”为例来说明数据的增删改查可能出现的一些问题,进而说明数据表主外键约束的意义。这里“学生成绩管理”数据库设置了如下数据表:班级表、学生信息表、课程信息表、成绩表。其中“学生信息表”的外键“班号”引用了“班级表”的主键“班号”,“成绩表”的外键“学号”引用了“学生信息表”的主键“学号”,“成绩表”的外键“课程号”引用了“课程信息表”的主键“课程号”,而“成绩表”以“学号”和“课程号”两个字段为复合主键。下来我们看看在数据的增删改查中会出现哪些问题?主外键的影响是什么?

  • 数据的添加

数据的添加看起来只涉及一张表,初学者可能并未意识到其中的玄机。其实数据添加也是受主外键约束的。如果输入的两条记录主键值相同,系统是不容许你保存的。例如,给学生信息表添加记录,如果新添加的记录的学号值已存在,是无法添加成功的。再如,输入的学生信息记录中“班号”外键值是所引用的主键表“班级表”中不存在的“班号”主键值,系统也是不容许你保存的。

  • 数据的修改

数据修改也看似是对一张表的操作,其实是受表间关系约束的。比如要修改的属性是表的主键,则系统会检查有没有引用此主键值的外键值,如果有,则默认不容许修改,除非对外建设置了级联更新(即ON UPDATE CASCADE)。如果要修改外键值,则要确保修改的外键值在对应的主键表中存在。

  • 数据的删除

表间主外键约束同样在删除数据时维护了数据的有用性。例如在删除“学生信息表”的记录时,如果“选课表”中的外键值引用了要删除的记录的“学号”主键值,则系统默认不容许删除,除非对外建设置了级联删除(即ON DELETE CASCADE)。

  • 数据的查询

在多表查询中,表间主外键约束起到了桥梁和纽带的作用,这种主外键关系使得两个以上的表能够按照主键值和外键值的对应关系将多张表的数据组合成新的临时表输出。如内连接查询和左外连接、右外连接查询。

从以上表述中大家可以看到,正是因为主外键关系的存在,使得数据库在大量的增删改查操作中很少产生由于主键表记录删除更新导致外键表产生残留无用的垃圾数据,也避免了在外键表中添加不存在主键值的垃圾数据。也正是这些主外键关系,使得灵活多变的多表查询得以实现。所以,在设计数据库时,正确的主外键关系是科学高效的数据管理的前提,一定要仔细分析,合理设计。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值