《数据库系统概论》十一章汇总--基于《数据库系统概论》第五版王珊一书|第二章--关系数据库

简介: 该系列的博客都是基于《数据库系统概论》第五版王珊一书,进行的知识总结和课后习题汇总,从第一章到第十一章,如果觉得不错记得收藏点个赞吧~你的小小支持,是我的大大动力

第二章:关系数据库


了解

关系数据结构及形式化定义、关系操作、关系的完整性、关系代数


掌握


关系模型的三个组成部分及各部分所包括的主要内容 关系数据结构及其形式化定义 关系的三类完整性约束 关系代数及其运算,包括并、交、差、选择、投影、连接、除、广义笛卡儿积

关系模型三个组成部分


关系数据结构 关系操作集合 关系完整性约束

3.1实体完整性规则:

若属性A是基本关系R的主属性,则属性A不能取空值参照完整性规则:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值(一句话就是:外键要么为空,要么为关联表的主键值)


3.2用户定义的完整性:

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求 关系数据语言的特点和分类 关系代数语言 关系演算语言


具有关系代数和关系演算双重特点的语言 域、笛卡儿积、关系、元组、属性 域:域是一组具有相同数据类型的值的集合

笛卡儿积:D1D2…*Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}(一句话:跟我们学的组合基本一样,形成的结果就是笛卡尔积) 关系:在域D1,D2,…,Dn上笛卡儿积D1D2…*Dn的子集,表示为R(D1,D2,…,Dn) 元组:关系中的每个元素是关系中的元组 属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,对每列起一个名字,称为属性 候选码、主码、外码 候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)(一句话:可以理解成候选总统) 主码:若一个关系有多个候选码,选定其中一个为主码(primary key)(总统,也就是主键) 外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外部码(foreign key),简称外码(也就是外键)

候选码和主码的关系

若关系中的某一属性组的值能唯一标识一个元组,该属性组称为候选码


关系模式?关系?关系数据库?

关系是关系模式在某一时刻的状态或内容

关系模式:关系的描述称为关系模式(relation schema),

关系模式形式化表示为R(U,D,DOM,F)。R为关系名,U为组成该关系的属性名集合,D为属性组U中属性来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合关系:在域D1,D2,…,Dn上笛卡儿积D1D2…*Dn的子集,表示为R(D1,D2,…,Dn)


关系数据库:关系数据库也有型和值之分。

关系数据库的型:称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。 关系数据库的值:是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。


关系模式和关系的区别

关系模式是型;关系是值,是关系模式的实例


等值连接与自然连接区别和联系

自然连接是一种特殊的等值连接,它要求两个关系中进行比较分量,即连接属性必须是相同的属性组,并且要在结果中去掉其中一个的重复属性 例如:R(a,b,c)U(a,b,d)自然连接就是 Z(a,b,c,d)b在U里已经有了,所以去掉重复的。

等值连接就是 R.a R.b R.c U.a U.b U.d


代数运算,用基本运算表示其他运算

基本运算(与我们所学的数学的集合基本一致)

  • 【并】:RUS仍为n目关系,由属于R或属于S的元组组成
  • 【差】:R-S仍为n目关系,由属于R而不属于S的所有元组组成
  • 【笛卡儿积】(全排列组合):RS列:(n+m)列元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组,行:k1k2各元组【投影】:从R中选择出若干属性列组成新的关系

πA® = { t[A] | t∈R } 例:查询学生的姓名和所在系,即求Student关系上学生姓名和所在系两个属性上的投影 πSname,Sdept(Student)

  • 【选择】:在关系R中选择满足给定条件的诸元组

σF® = {t|t∈R∧F(t)= ‘真’} F:选择条件,是一个 例:查询信息系(IS系)全体学生 σSdept = ‘IS’ (Student) 特别说明:π投影是竖着取, σ选择是横着取,也特别好记,选择的尾巴向右所以形象的看成横着取值

其他运算

  • 【交】:RnS仍为n目关系,由既属于R又属于S的元组组成
  • 【连接】:从两个关系的笛卡儿积中选取属性间满足一定条件的元组
  • 【除】:给定关系R(X,Y) 和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,R÷S = {tr[X] | tr∈R ∧ πY(S) 真包含于 Yx }


课后习题


关于关系模型

一个关系至少要有一个候选码 行、列的次序可以任意交换 一个列的值只能来自一个域 不同的列应有不同的列名 一个码是【可有多个或者一个其值能够唯一表示该关系模式中任何元组的属性组成】 实体以及实体之间的联系都可以使用相同的结构类型来表示 非主属性不可能出现在任何候选码中 候选码都可以唯一地标识一个元组 关系操作中,操作的对象和结果都是【集合】 “性别”属性要求只能取“男”/“女”,这属于【用户定义的完整性】 两个关系R(A,B,C)和S(B,C,D)自然连接,得到结果包含【4】列 在左外连接中,保留的是左边关系中所有的元组 在关系模型中,关系操作包括【查询】【插入】【修改】【删除】 关系模型包括8种查询操作,【并】【笛卡儿积】【选择】【投影】【差】是基本操作 职工([职工号],姓名,年龄,部门号)和部门([部门号],部门名称)存在引用关系,其中【职工】是参照关系,【部门号】是外码

什么是关系完备性?关系演算在语言表达能力上是完备的吗? 关系完备性是指一个查询语言能够表示关系代数可以表示的所有查询。 关系演算具有完备的表达能力 现有如下关系:患者(患者编号,患者姓名,性别,出生日起,所在单位);医疗(患者编号,患者姓名,医生编号,医生姓名,诊断日期,诊断结果)其中,医疗关系中的外码是【医生编号和患者编号】 现有一个关系:借阅(书号,书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本,则该关系模式的外码是【书号+读者号+借期】 关系模型中实现实体间 N:M 联系是通过增加一个【关系】实现 关系代数运算是以【集合运算】为基础的运算 关系数据库管理系统应能实现的专门关系运算包括【选择、投影、连接】

五种基本关系代数运算是【∪ - × σ π】(并,差,笛卡尔积,投影,选择) 其他三种交,连接,除都可以通过基本五种关系代数运算实现

关系代数表达式的优化策略中,首先要做的是【尽早执行选择运算】 关系数据库中的投影操作是指从关系中【抽出特定字段】 从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是【选择】操作 关系代数中的连接操作是由【选择和笛卡尔积】操作组合而成 自然连接是构成新关系的有效方法。一般情况下,当对关系R和S是用自然连接时,要求R和S含有一个或者多个共有的【属性】 假设有关系R和S,在下列的关系运算中,【R×S】运算不要求:“R和S具有相同的元数,且它们的对应属性的数据类型也相同” 假设有关系R和S,关系代数表达式R-(R-S)表示的是【R∩S】 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是【πS_ID,SCORE (σ age>22 (SC) ) 】【πS_ID,SCORE (σ age>22 (πS_ID,SCORE,AGE (SC) ) ) 下面四个关系表达式是等价的,是判别它们的执行效率【E3最快】 E1 =πA (σ B=C ∧ D=E′ (R×S) )E2 =πA (σ B=C (R× σD=E′ (S) )E3 =πA (R∞B=CσD=E′(S) )E4 =πA (σD=E′ (R∞B=C S) )

特别补充:如何确定谁是主码,可以画图,如果没有箭头指向都是主码。例如A->B B->C 那么只有A没有箭头被指,那么A就是主码(也就是入度为0)

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
目录
相关文章
|
7月前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
169 10
|
4月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
8天前
|
安全 关系型数据库 MySQL
体验自建数据库迁移到云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」正式开启!本方案旨在帮助用户将自建数据库平滑迁移至阿里云RDS MySQL,享受稳定、高效、安全的数据库服务,助力业务快速发展。完成指定任务即可赢取桌面置物架等奖励,限量供应,先到先得。活动时间:2024年12月3日至12月31日16点。
|
7月前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
404 6
|
4月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
97 2
|
4月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
109 2
|
4月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
92 0
|
5月前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
264 49
|
6月前
|
消息中间件 关系型数据库 Serverless
函数计算产品使用问题之如何通过vpc来连接rds数据库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。