数据库系统教程——关系模型

简介: 数据库系统教程——关系模型

这里是理论,建议直接跳转到白话!!!



2.1 关系模型的基本概念



数据库管理系统:DBMS


基本术语


  • 1.关系模式名:用英文表示
  • 2.元组:关系的记录(表中的一行)
  • 3.关系:元组的集合(又称作实例)
  • 4.元数(Arity):属性的个数
  • 5.基数:元组记录的个数
  • 6.关键码:
    ①、超键:关键码(唯一标识元组的属性集合)
    ②、候选键:能选为表示符的属性
    ③、主键:已选为标识符的属性
    ④、外键:一个表中某一属性是另外一个表的主键。


约定俗成的内容:

用大写字母ABCD……来表示单个的属性

用……XYZ来表示属性集

用小写字母表示属性值

也有称关系为表或表格的

元组为行属性为列


关系的定义与性质


  • 关系的性质和定义
    1、关系:属性数目相同的元组集合
    2、性质:①、每个属性不可再分;②、不允许出现完全相同的元组
    ③、行列没有顺序区分


  • 关系模型的3类完整性原则
    1、实体完整性原则
    主码不能够为空
    2、参照完整性原则
    说明了主码外码的引用关系要正确
    3、用户定义的完整性规则
    由用户通过DBMS来完成


关系代数


关系代数的基本操作:

假设有R、S关系且属性相同



(∪):由属于关系R或S的元组组成

R∪S={t|t∈R∨t∈S}



差(-)由属于关系R而不属于关系S的元组组成

R-S={t|t∈R∧t∈S}



交(∩)由既属于关系R又属于关系S的元组组成

R∩S={t|t∈R∧t∈S}


笛卡尔积


假设:


R有m个属性,n个元组

S有h个属性,p个元组

SR就有m+h个属性,np个元组


011f6c51286d4cd6874ba6ccb105c4bf.png


投影操作


对关系列表的操作


8dd3f47765ab44ab8f43df2c3d98c022.png


选择


对关系表行的操作:


aa733b1ccbaa4b22a8f02aa5fd4e1f3a.png


连接


  • 条件连接


3d8095d77aff4be7b1dac619e40c2ca5.png

等值连接


22978767a3194dd786a4202b96500b18.png


自然连接


9e68b79f94de40d98adcc6d0394cfc0b.png


除法


除法是同时对行和列的操作

①充分必要条件:

设有R、S关系,R除S必须

<1> R中属性包含S中所有属性

<2>R中还有属性不出现在S中

②运算结果

<1>T中的属性有R中出现但是S中不出现的

<2>结果的元组由S中出现对应R中的元组组成

<3>T与S的笛卡尔积包含在R中


以下是白话建议直接跳转至此开始理解!!!




表示,就是把两个不一样的进行整合,最后表示在一个表格里面


R表

A B
1 2
3 4
5 6


S表

A B
1 2
7 8
5 8


R∪S为:

A B
1 2
3 4
5 6
7 8
5 8



表示:把相同的内容进行整合。

说明:这里还是使用并里面的R表和S表


R∩S表


A B
1 2



-进行表示,属于前面一个表不属于后面那个表的数据说明:这里还是使用并里面的R表和S表

也就是属于R表但是不属于S表的


A B
3 4
5 6


笛卡尔积


*进行表示,表头(属性值)相乘,然后里面的值(元组)逐个相乘

假设表头(属性)R表为(A,B),S表为(C,D)那么R×S就是A,B,C,D。也可以表示为(RA,RB,Sc,SD


R表

A1 B1
A1 A2
A3 A4


S表

A2 B2
B1 B2
B7 B8


R×S结果:

A1 B1 A2 B2
A1 A2 B1 B2
A1 A2 B7 B8
A3 A4 B1 B2
A3 A4 B7 B8


就是各个属性值相乘,各个元组交叉相乘。


投影


投影用π表示

就是获取对应的元素。


R表:

A B C
1 2 3
3 4 5
5 6 7
7 8 9
5 8 9


πA,B( R):

A B
1 2
3 4
5 6
7 8
5 8


选择


选择用σ表示,就是获取符合条件的值。

例如σA<5 (R )就是获取R表中A<5的所有值。

此处使用上面投影的R表进行示例


σA<5 (R )表:

A B C
1 2 3
3 4 5


连接


  • 条件连接等值连接
    在不同的表格链接过程中会出现条件,有的是元素和元素比如(B>A即RB>SA)也可以写成(2>1即R表的第2个元素大于S表的第1个元素)


R表


A B
1 2
3 4
5 6


S表

A B
1 2
7 8
5 8


32a3066d4e9543f0a2164991b166643c.png

2ea6a792e01f4875a8520b8f63c2e352.png

A B
1 2
5 6
5 8


自然连接


11d02621d45042f7918bd757662122d8.png


A B
1 2
3 4
5 6
7 8
5 8


除法


除法是里面最难理解的

可以理解为查询,大表为除数设为R表,小表为被除数设为S表。

基本上可以理解为在R中查找符合S的全部条件。但是只显示S表中没有的元素


R表

A B C
1 2 3
3 4 4
5 6 5


S表

A B
1 2
3 4


R/S表

A
3
4


实践例子展示



小技巧:

1、涉及选择、投影、连接的运算使用连接、乘法完成

πi…(σF(R*S))或a81825c7d8ec4152bbd85dfdd5663d28.png

2、涉及否定操作的要用差来表示

3、涉及全部操作的要用除法

现在有T、C、S、SC四个表

教师关系

T(T#,TANME,TITLE)

课程关系

C(C#,CNAME,T#)

学生关系

S(S#,SNAME,AGE,SEX)

选课关系

SC(S#,C#,SCORE)


(1)检索学习课程号为C2的学生学号与成绩

条件:课程号是C2(σc#=‘c2’( SC))使用选择的手法获得

要求是学生学号和成绩

已经获得了c2的选课内容就可以通过投影的方式获得结果

πS#,SCORE( σc#=‘c2’( SC))


(2)检索学习号是C2的课程的学生号和姓名

这里要的是学生号和姓名涉及的表为S表

学号和课程有关的是SC表。

这里就要SC和C表进行连接baeef5ef39124358b4f412a2b167af03.png

然后对学号进行筛选:b76fa060b9dd4ebf9207ebc6f6331246.png

最后对筛选的结果进行映射(获取要的数据)

1d88258dddc84bd897d730d8f464f8cc.png

检索学习全部课程的学生姓名

全部课程:πC#( C)

选课情况:πS#,C#( SC)

除法就是从大的那个表里面查找符合小的表的内容

也就是

选课情况÷全部课程

πS#,C#( SC) ÷ πC#( C)

这里得到的结果就是S#但是是符合要求的学号

使用拼接和映射进行来获得结果

首先:拼接:除法得到的是学号,要得到名字就要和S表进行拼接

和进行映射

8da200d6c061464493a9ab4f12c0b60b.png

这节课就到这里啦,有问题记得留言!

目录
相关文章
|
4月前
|
监控 Java 应用服务中间件
达梦数据库DEM监控部署教程分享
达梦数据库DEM监控部署教程分享
171 2
|
19天前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
2月前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
58 0
【入门级教程】MySQL:从零开始的数据库之旅
|
2月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
3月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
3月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
2月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
51 0
|
2月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
4月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
211 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
4月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。