关系的码与关系的完整性

  • 关系的码
    • 1. 候选码
    • 2. 主码
    • 3. 外码
  • 关系的完整性
  • 总结

关系的码

1. 候选码

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

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

候选码需要满足:

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

2. 主码

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

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

3. 外码

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

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

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

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

关系的完整性

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

有如下三类

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

总结

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

  • 假设姓名没有重复,姓名学号都可以作为主码,这个时候还是选择学号方便,第一这样比较通性,第二,在构建选课关系用学号更便捷

之后有时间会添加一个寻找关系码的题目

数据库(笔记)——候选码、主码、外码以及关系的完整性相关推荐

  1. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码

    目录 什么是数据模型 什么是关系模型 什么是关系 候选码 Candidate Key 主码 Primary Key 外码 Foreign Key 什么是数据模型 模式是对数据的结构的抽象,模型是对模式 ...

  2. 关系的候选码、主码、外码以及关系的完整性

    关系的候选码.主码.外码 候选码 定义:能惟一标识关系中元组的一个属性或属性集,称为候选码(Candidate Key) "学生关系"中的学号能惟一标识每一个学生 "选课 ...

  3. 外码一定是被参照表的主码吗?

    学习数据库原理第二章 参照完整性中 "外码或者取空值或者等于被参照表的某个元祖主码值" 让我很懵. 我有这样的疑问:既然外码是被参照表的主码,为什么还能为空❓ 思考之后- 终于! ...

  4. 数据库笔记整理--基于《数据库系统概论》第五版王珊一书|复习提纲和错题整合

    数据库原理复习大纲 第一章 数据库概述 1.1 概述 1.基本概念 数据库(DB).数据库管理系统(DBMS).数据库系统(DBS)概念 数据库是存储在计算机内.有组织的.可共享的数据集合. 数据库管 ...

  5. 【数据库】码,超码,候选码与主码,外码

    码的作用 用于区分不同元组.也就是不同行,此表中则为区分不同学生. 超码 超码 是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组: e.g. 在上表中,{学号} 可唯一标 ...

  6. mysql 中外码和主码_数据库原理与应用(6)——关系的候选码、主码和外码、关系完整性、关系代数、元组关系的演算、域关系演算...

    一.关系的候选码 候选码(Candidate Key):能唯一标识关系中元组的一个属性或属性集 性质:唯一性,最小性 二.关系的主码和外码 主码(Primary Key):从多个候选码中选择一个作为查 ...

  7. 数据库之逻辑设计阶段(候选码、主码、外码、范式…)

    1.总览数据库的生命周期 1.1 需求分析阶段 分析用户需求,是整个数据库设计的基础. 阶段产出: ①分析用户活动,产生业务流程图. ②确定系统范围,产生系统关联图. ③分析用户活动涉及的数据,产生数 ...

  8. 数据库原理和应用(6)—— 候选码、主码和外码,关系的完整性、关系代数、关系的演算

    一.候选码.主码和外码 1. 候选码(Candidate Key) 定义:能唯一标识关系中元组的一个属性或属性集,称为候选码. 性质:具有唯一性和最小性. 2. 关系的主码和外码 主码 定义:从多个候 ...

  9. 数据库—属性 码 候选码 主码 外码 主属性 非主属性

    问题产生:在学习第6章关系数据理论时,由于之前关于码的各种概念不熟悉,导致不理解. 资料来源:数据库系统概论–王珊 概念及举例 (1):基础定义 实体:客观存在的物体 属性:一个实体的某个特征 码:能 ...

最新文章

  1. 深度学习静态图和静态图的区别以及优缺点是什么?
  2. 项目中常用的 19 条 MySQL 优化总结
  3. 宝塔同时安装苹果cms海洋cms_★苹果cms常见问题有哪些?100个常见问题的解决方法...
  4. Linux安装jupyter debugger+Conda设置proxy代理
  5. C# 执行查询语句,返回DataSet
  6. HALCON示例程序check_blister_mixed.hedv药品胶囊缺陷检测
  7. freemaker转word xml注意事项
  8. python正则化_如何最简单、通俗地理解Python的正则化?
  9. python程序如何执行死刑_「Python基础知识」Python生成器函数
  10. 【记忆化递归+DP】LeetCode 139. Word Break
  11. 有java基础学python-零基础应该选择学习 java、php、前端 还是 python?
  12. 全触摸模式,让你尽享ipad 开发出的精品
  13. Apache Jemeter 参数化
  14. java分页前端怎么实现_JavaWeb前端分页显示方法
  15. 电动自行车UL认证安全标准UL2849
  16. 手机端,跟pc 链接qq 客服
  17. 生产线平衡优化毕业论文【flexsim仿真】
  18. “为了买台手机,研究大半个月后仍然无从选择”
  19. nginx+docker+gunicorn+flask部署到云服务器
  20. maya中英文对照_Maya 2018 英汉速查手册

热门文章

  1. DNW FOR WIN7
  2. 行业网站十年改变了什么 电商网 -《电子商务世界》打造电子商务大社区
  3. Ubuntu中文输入法fcitx的配置与使用
  4. 小米Note4、小米8、一加6刷机(三方rec+rom+root)
  5. C++的File类文件操作(转)
  6. PHP的ES入门(一)—— Index的创建和删除
  7. 图片LSB隐写(java)
  8. python 实时抓取网页数据并进行 筛查
  9. 技术与市场脱钩?90%的程序员都错了!
  10. 一分钟了解蒙特卡洛方法