(数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
文章目录
- 一:关系
- (1)域
- (2)笛卡尔积
- (3)关系
- A:基本概述
- B:码相关概念
- C:关系的三种类型
- 二:关系模式
- 三:关系数据库
- (1)基本概念
- (2)关系数据库的型与值
前面说过,数据模型由以下三部分构成
- 数据结构
- 数据操作
- 数据的完整性约束条件
而如今最为重要的数据模型便是关系模型。本书所学的关系数据库就是支持关系模型的数据库系统,因此本章重点研究的也是以下三个部分
- 关系数据结构(本节介绍)
- 关系操作集合(第二节介绍)
- 关系完整性约束条件(第三节介绍)
然后第四节和第五节分别介绍关系代数和关系演算
一:关系
前面说过,关系模型建立在严格的数学概念之上,只包含单一的数据结构——关系,在用户看来关系就是一张二维表
(1)域
域:是一组具有相同数据类型的值的集合
- 如自然数、整数、实数
(2)笛卡尔积
笛卡尔积:是一种域上面的集合运算,得到每个域中元素的所有可能的组合,它可以表示为一张二维表,在笛卡尔积中有
- 元组:每一行是一个元组,比如 (张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组 ;
- 分量:每一行中每一个元素都是一个分量,比如张清玫、计算机专业、李勇、刘晨等都是分量
比如下面的D1D_{1}D1、D2D_{2}D2和D3D_{3}D3个域
如果让他们做笛卡尔积,也就是排列组合,那么就会形成下面一张二维表
由此可知,该笛卡尔积的基数为2×2×3=12,也即有12个元组
上面的笛卡尔积中很多元组是没有意义的(例如在实际情形中一个导师一般专注于一个研究方向)。所以该笛卡尔积的一个子集才是有意义的,才可以表示导师和研究生的关系,例如
- 表SAP
(3)关系
A:基本概述
关系:笛卡尔积(D1D_{1}D1×D2D_{2}D2,…,DnD_{n}Dn)的子集叫做在域D1D_{1}D1、D2D_{2}D2,…,DnD_{n}Dn的关系,表示为R(D1D_{1}D1、D2D_{2}D2,…,DnD_{n}Dn),其中
- R:关系名
- n:关系的目或度(n=1时称为单元关系,n=2时称为二元关系)
关系既然是笛卡尔积的子集(有限子集),所以关系也是一张二维表
- 表的每一行对应一个元组,表的每一列对应一个域
- 由于域可以相同,为了区分,必须对每列起一个名字,称为属性(比如上面的表中研究生和导师都是人,为了区分,所以才取了不同的名字)
B:码相关概念
以下面关系为例
候选码:若关系中的某一属性组(注意是组不是某单个属性,当然有时属性组也可能只有一个属性)能唯一地标识一个元组,而其子集不能,则该属性组称之为候选码
- 上面关系中,学号是无法区分的,因为学号虽然不重复,但一个学生可能会对应多个课程,这就导致学号无法唯一标识一个元组。因此这里(学号,课程名)可以作为一个候选码
- 需要注意的是候选码不一定只有一个,可能有多个,只要满足条件即可,但在本例中确实只有一个
超码:能够唯一标识一条记录的属性或属性集,超码是候选码的扩充,候选码是最小的超码
- 上面关系中,(学号、课程名)是候选码,那么它的超集,例如(学号、课程名、姓名)、(学号、课程名、性别)就是超码
主码:某个能够唯一标识一条记录的最小属性集(候选码中的“人选之子”)
- 候选码可能有多个,但是数据库设计者在设计时会根据实际需求选择一个候选码作为主码
外码:是本关系的属性且不是码,而是另一个关系的主码(后续会详细介绍)
全码:这是一种特殊情况:关系的所有属性组是这个关系模式的候选码
主属性和非属性:包含在候选码中的属性(注意是集合,不是某个候选码)称为主属性;不包含在候选码中的属性称为非主属性
- 上面关系中,姓名、性别和期末分数都是非主属性
C:关系的三种类型
关系可以有三种类型
- 基本关系(又称为基本表):实际存在的表,是实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
其中基本关系满足以下性质(作了解即可)
二:关系模式
在(数据库系统概论|王珊)第一章绪论-第三节:数据库系统的结构中讲过型和值的概念
- 型(type):对某一类数据的结构和属性的说明
- 值(value):是型的一个具体赋值
在关系数据库中,关系模式就是型,关系就是值,关系模式是对关系的描述,具体来说要描述以下方面
- 元组集合的结构(由哪些属性构成、这些属性来自哪些域、属性与域之间的映像关系)
- 元组语义以及完整性约束
- 属性之间的数据依赖关系
关系模式:关系模式就是对关系的描述,可以表示为
R(U,D,DOM,F)R(U,D,DOM,F)R(U,D,DOM,F)
- RRR:关系名
- UUU:组成该关系的属性名集合
- DDD:UUU中属性所来自的域
- DOMDOMDOM:属性向域的映像集合
- FFF:属性间数据的依赖关系集合(此部分属于第六章:关系数据理论的内容)
关系模式通常可以简记为(重点用)
R(U)R(U)R(U)
或
R(A1,A2,...,An)R(A_{1},A_{2},...,A_{n})R(A1,A2,...,An)
- RRR:关系名
- A1,A2,...,AnA_{1},A_{2},...,A_{n}A1,A2,...,An:属性名
- “域名”及“属性向域的映像”常常直接说明为属性的类型和长度
三:关系数据库
(1)基本概念
关系数据库:在一个给定的应用领域中,所有关系的集合构成的一个关系数据库
(2)关系数据库的型与值
关系数据库的型:也称为关系数据库模式,是对关系数据库的描述,包括
- 若干域的定义
- 在这些域上定义的若干关系模式
关系数据库的值:这些关系模式在某一时刻对应的关系的和,通常就叫做关系数据库
(数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义相关推荐
- 【梳理】数据库系统概论 第2章 关系数据库 2.1 关系数据结构及其形式化定义 2.2 关系操作 2.3 关系的完整性
教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社 注:文档高清截图在后 第2章 关系数据库 2.1 关系数据结构及其形式化定义 1.关系数据库系统是支持关系模型的数据库系统.关系模型 ...
- 数据库系统概论:第二章 关系数据库
2.1 关系数据结构及形式化定义 2.1.1 关系 1. 域(domain) 一组具有相同数据类型的值的集合 2. 笛卡儿积 域上的一种集合运算,笛卡儿积是不同域的所有元素的所有组合 一个域允许的不同 ...
- 《数据库系统概论》 第二章 关系数据库
2.1 关系数据结构及形式化定义 2.1.1 关系 1. 域(domain):一组具有相同数据类型的**值**的集合 2. 笛卡儿积:域上的一种集合运算 一个域允许的不同取值个数称为这个域的基数笛卡儿 ...
- 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作
考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...
- 【重识云原生】第二章计算第一节——计算虚拟化技术总述
云平台计算领域知识地图: 楔子:计算虚拟化技术算是云计算技术的擎天之柱,其前两代技术的演进一直引领着云计算的发展,即便到了云原生时代,其作用依然举足轻重. 一.计算虚拟化技术总述 1.1 虚拟化技 ...
- WEB前台架构教程(原创)第二章(第一节PS切图规划)
转自:http://hi.baidu.com/phpidea/blog/item/9666a754d8d05259574e0013.html 我在第一章介绍了页面设计要关注的几个点,重点位置突出.分栏 ...
- 第二章:第一节数据清洗及特征处理-自测
回顾&引言]前面一章的内容大家可以感觉到我们主要是对基础知识做一个梳理,让大家了解数据分析的一些操作,主要做了数据的各个角度的观察.那么在这里,我们主要是做数据分析的流程性学习,主要是包括了数 ...
- 第二章:第一节数据清洗及特征处理-课程
[回顾&引言]前面一章的内容大家可以感觉到我们主要是对基础知识做一个梳理,让大家了解数据分析的一些操作,主要做了数据的各个角度的观察.那么在这里,我们主要是做数据分析的流程性学习,主要是包括了 ...
- 【数据库系统】数据库系统概论====第六章 关系数据库理论
第六章 关系数据库理论 文章目录 第六章 关系数据库理论 6.1问题的提出 6.2规范化 6.2.1函数依赖 6.2.2码 6.2.3范式 6.2.4 2NF 6.2.5 3NF 6.2.6 BCNF ...
最新文章
- Oracle11g密码忘记处理方法
- 使用免费虚拟服务器建站并实现域名解析
- python第三方库大全win-Python标准库、第三方库和外部工具汇总
- Python 技术篇-用imageio库实现图片转gif动画,Gif录制屏幕操作实例演示
- Linux zip 加密压缩
- 简单介绍Linux下安装Tomcat的步骤
- Linux time ls命令:用户态内核态分别占用多长时间
- 存储变革 IBM V5000四大优势助用户破旧立新
- CSS 类选择器详解——CSS 多类选择器
- AMD中国:没有对拼多多及其平台上任何店铺授权
- java 拦截器和过滤器区别(转载)
- 扇贝和不背单词_你还没找到中意的背单词APP?我都试过,我来帮你盘点盘点
- 输出10000以内的质数C语言
- 第十二周:微信开放平台登录接口
- Operators(操作符)(创建、转换操作符)
- 重新开始噼里啪啦写小文字啦~
- 通知 | 2021 中国高校计算机大赛 —— 微信大数据挑战赛
- ssm药品大全网站的设计与实现毕业设计源码281128
- 长歌行 宋 郭茂倩收编的《乐府歌词》汉代民间诗歌
- 当华为云WeLink遇上P40,多屏协同全场景办公有多神奇?
热门文章
- 程序员7天长假出游指南
- 经典面试题(26):以下代码将输出的结果是什么?
- html 控制文字的标签,html里面有一个控制文字滚动的标签marquee,比较有用。
- RLock vs Lock
- CSP-J NOIP NOI数学与动态规划
- 第35课 水仙花数 《小学生C++趣味编程》
- Python中Text函数常用增删改查阅用法实例汇总
- JS实现的文章字符串中某个字符总个数统计在线小工具实例
- Java学习之文件操作
- python3.6.5安装tensorflow_Win10下用Anaconda安装TensorFlow(图文教程)