数据库系统教程——关系模型[亲测有效]

数据库 (72) 2023-06-11 19:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说数据库系统教程——关系模型[亲测有效],希望能够帮助你!!!。

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

    • 这里是理论,建议直接跳转到白话!!!
    • 2.1 关系模型的基本概念
      • 基本术语
      • 关系的定义与性质
      • 关系代数
      • 笛卡尔积
      • 投影操作
      • 选择
      • 连接
      • 除法
    • 以下是白话建议直接跳转至此开始理解!!!
      • 笛卡尔积
      • 投影
      • 选择
      • 连接
      • 除法
    • 实践例子展示

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

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个元组
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第1张

投影操作

对关系列表的操作
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第2张

选择

对关系表行的操作:
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第3张

连接

  • 条件连接
    数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第4张

  • 等值连接
    数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第5张

  • 自然连接
    数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第6张

除法

除法是同时对行和列的操作
①充分必要条件:
设有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

数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第7张

数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第8张

A B
1 2
5 6
5 8
  • 自然连接
    数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第9张
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))或
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第10张
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表进行连接
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第11张
然后对学号进行筛选:
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第12张
最后对筛选的结果进行映射(获取要的数据)
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第13张
检索学习全部课程的学生姓名
全部课程:πC#( C)
选课情况:πS#,C#( SC)
除法就是从大的那个表里面查找符合小的表的内容
也就是
选课情况÷全部课程
πS#,C#( SC) ÷ πC#( C)
这里得到的结果就是S#但是是符合要求的学号
使用拼接和映射进行来获得结果
首先:拼接:除法得到的是学号,要得到名字就要和S表进行拼接
和进行映射
数据库系统教程——关系模型[亲测有效]_https://bianchenghao6.com/blog_数据库_第14张
这节课就到这里啦,有问题记得留言!

发表回复