前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL_关系的码,关系的完整性

MySQL_关系的码,关系的完整性

作者头像
用户10551528
发布2024-07-20 12:50:02
610
发布2024-07-20 12:50:02
举报
文章被收录于专栏:浴巾的学习分享贴

[toc]

关系的码

候选码

候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如:

  • 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名)都是候选码

候选码需要满足:

  1. 唯一性:唯一标识一个元组(注意不是说候选码只有一个)
  2. 最小性:构成候选码的属性个数最少,比如前面的(班级,姓名),再添加一个学号或其他属性就多此一举了
主码

主码是从候选键中选着一个作为查询、插入、删除元组操作的操作变量,也叫主键、主码、关系键、关键字 简单来说就是从候选码中选出的一个最具代表性的

  • 主属性:包含在任何一个候选码的各个属性称为主属性(也就是说,之前的(班级,姓名)中,班级和姓名都是主属性)
  • 非主属性:不包含在任何候选码中的属性
外码

关系R1,R2,其中属性集X是R1的非主码属性,但X是R2的主码,则称X是R1的外码(也叫外键、外部关系键),R1为参照关系,R2为被参照关系

  • 外码的取值是由被参照的关系的主码的域决定的,也就是外码的域来自“那个”主码的域(R1的外码和R2的主码必须在同一个域上)

注意一个地方,外码 只是 不是主码,不代表外码不能是主属性,通过下面的例子来对候选码、主码、外码进行说明:

如上三个关系表,分别为 学生(学号,姓名,性别,专业,年龄) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 黄色标记的是主码,可以看见的是,选课关系中主码由学号和课程号两个属性组成 而单个学号或者课程号是无法做到唯一标识的 因此学号或课程号不能单独作为主码 而学号和课程号分别是学生和课程的主码,则选课关系中,学号和课程号都是外码,并且学号和课程号是选课关系中的主属性

关系的完整性

为了维护关系数据库中数据与现实的一致性(完整性),需要对数据操作进行一定的约束。

有如下三类

  1. 实体完整性:主码的值不能为空或部分为空
  2. 参照完整性:外码来自被参照关系的主码,且可以为空,但作为被参考的关系的主码不能为空(外码可以为空时,外码通常是非主属性)
  3. 用户自定义完整性:针对某一具体关系数据的约束条件,比如规定取值范围

总结

关系的码对于后面创建数据库很重要,尤其是外码这一块很容易出错 在寻找主码时通常选择最具代表性的

  • 假设姓名没有重复,姓名学号都可以作为主码,这个时候还是选择学号方便,第一这样比较通性,第二,在构建选课关系用学号更便捷
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关系的码
    • 候选码
      • 主码
        • 外码
        • 关系的完整性
        • 总结
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档