数据库(笔记)——候选码、主码、外码以及关系的完整性
关系的码与关系的完整性
- 关系的码
- 1. 候选码
- 2. 主码
- 3. 外码
- 关系的完整性
- 总结
关系的码
1. 候选码
候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键
如:
- 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名)都是候选码
候选码需要满足:
- 唯一性:唯一标识一个元组(注意不是说候选码只有一个)
- 最小性:构成候选码的属性个数最少,比如前面的(班级,姓名),再添加一个学号或其他属性就多此一举了
2. 主码
主码是从候选键中选着一个作为查询、插入、删除元组操作的操作变量,也叫主键、主码、关系键、关键字
简单来说就是从候选码中选出的一个最具代表性的
- 主属性:包含在任何一个候选码的各个属性称为主属性(也就是说,之前的(班级,姓名)中,班级和姓名都是主属性)
- 非主属性:不包含在任何候选码中的属性
3. 外码
关系R1,R2,其中属性集X是R1的非主码属性,但X是R2的主码,则称X是R1的外码(也叫外键、外部关系键),R1为参照关系,R2为被参照关系
- 外码的取值是由被参照的关系的主码的域决定的,也就是外码的域来自“那个”主码的域(R1的外码和R2的主码必须在同一个域上)
注意一个地方,外码只是不是主码,不代表外码不能是主属性,我通过下面的例子来对候选码、主码、外码进行说明:
如上三个关系表,分别为
学生(学号,姓名,性别,专业,年龄)
课程(课程号,课程名,学分)
选课(学号,课程号,成绩)
黄色标记的是主码,可以看见的是,选课关系中主码由学号和课程号两个属性组成
而单个学号或者课程号是无法做到唯一标识的
因此学号或课程号不能单独作为主码
而学号和课程号分别是学生和课程的主码,则选课关系中,学号和课程号都是外码,并且学号和课程号是选课关系中的主属性
关系的完整性
为了维护关系数据库中数据与现实的一致性(完整性),需要对数据操作进行一定的约束。
有如下三类
- 实体完整性:主码的值不能为空或部分为空
- 参照完整性:外码来自被参照关系的主码,且可以为空,但作为被参考的关系的主码不能为空(外码可以为空时,外码通常是非主属性)
- 用户自定义完整性:针对某一具体关系数据的约束条件,比如规定取值范围
总结
关系的码对于后面创建数据库很重要,尤其是外码这一块很容易出错
在寻找主码时通常选择最具代表性的
- 假设姓名没有重复,姓名学号都可以作为主码,这个时候还是选择学号方便,第一这样比较通性,第二,在构建选课关系用学号更便捷
之后有时间会添加一个寻找关系码的题目
数据库(笔记)——候选码、主码、外码以及关系的完整性相关推荐
- 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
目录 什么是数据模型 什么是关系模型 什么是关系 候选码 Candidate Key 主码 Primary Key 外码 Foreign Key 什么是数据模型 模式是对数据的结构的抽象,模型是对模式 ...
- 关系的候选码、主码、外码以及关系的完整性
关系的候选码.主码.外码 候选码 定义:能惟一标识关系中元组的一个属性或属性集,称为候选码(Candidate Key) "学生关系"中的学号能惟一标识每一个学生 "选课 ...
- 外码一定是被参照表的主码吗?
学习数据库原理第二章 参照完整性中 "外码或者取空值或者等于被参照表的某个元祖主码值" 让我很懵. 我有这样的疑问:既然外码是被参照表的主码,为什么还能为空❓ 思考之后- 终于! ...
- 数据库笔记整理--基于《数据库系统概论》第五版王珊一书|复习提纲和错题整合
数据库原理复习大纲 第一章 数据库概述 1.1 概述 1.基本概念 数据库(DB).数据库管理系统(DBMS).数据库系统(DBS)概念 数据库是存储在计算机内.有组织的.可共享的数据集合. 数据库管 ...
- 【数据库】码,超码,候选码与主码,外码
码的作用 用于区分不同元组.也就是不同行,此表中则为区分不同学生. 超码 超码 是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组: e.g. 在上表中,{学号} 可唯一标 ...
- mysql 中外码和主码_数据库原理与应用(6)——关系的候选码、主码和外码、关系完整性、关系代数、元组关系的演算、域关系演算...
一.关系的候选码 候选码(Candidate Key):能唯一标识关系中元组的一个属性或属性集 性质:唯一性,最小性 二.关系的主码和外码 主码(Primary Key):从多个候选码中选择一个作为查 ...
- 数据库之逻辑设计阶段(候选码、主码、外码、范式…)
1.总览数据库的生命周期 1.1 需求分析阶段 分析用户需求,是整个数据库设计的基础. 阶段产出: ①分析用户活动,产生业务流程图. ②确定系统范围,产生系统关联图. ③分析用户活动涉及的数据,产生数 ...
- 数据库原理和应用(6)—— 候选码、主码和外码,关系的完整性、关系代数、关系的演算
一.候选码.主码和外码 1. 候选码(Candidate Key) 定义:能唯一标识关系中元组的一个属性或属性集,称为候选码. 性质:具有唯一性和最小性. 2. 关系的主码和外码 主码 定义:从多个候 ...
- 数据库—属性 码 候选码 主码 外码 主属性 非主属性
问题产生:在学习第6章关系数据理论时,由于之前关于码的各种概念不熟悉,导致不理解. 资料来源:数据库系统概论–王珊 概念及举例 (1):基础定义 实体:客观存在的物体 属性:一个实体的某个特征 码:能 ...
最新文章
- 深度学习静态图和静态图的区别以及优缺点是什么?
- 项目中常用的 19 条 MySQL 优化总结
- 宝塔同时安装苹果cms海洋cms_★苹果cms常见问题有哪些?100个常见问题的解决方法...
- Linux安装jupyter debugger+Conda设置proxy代理
- C# 执行查询语句,返回DataSet
- HALCON示例程序check_blister_mixed.hedv药品胶囊缺陷检测
- freemaker转word xml注意事项
- python正则化_如何最简单、通俗地理解Python的正则化?
- python程序如何执行死刑_「Python基础知识」Python生成器函数
- 【记忆化递归+DP】LeetCode 139. Word Break
- 有java基础学python-零基础应该选择学习 java、php、前端 还是 python?
- 全触摸模式,让你尽享ipad 开发出的精品
- Apache Jemeter 参数化
- java分页前端怎么实现_JavaWeb前端分页显示方法
- 电动自行车UL认证安全标准UL2849
- 手机端,跟pc 链接qq 客服
- 生产线平衡优化毕业论文【flexsim仿真】
- “为了买台手机,研究大半个月后仍然无从选择”
- nginx+docker+gunicorn+flask部署到云服务器
- maya中英文对照_Maya 2018 英汉速查手册