关系型数据库理论基础

信息世界中的基本概念

1)实体(entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。
2)属性(attribute)
实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
3)码(key)
唯一标识实体的属性集称为码。
4)实体型(entity type)
具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
5)实体集(entity set)
同一类型实体的集合称为实体集。
6)联系(relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反应为实体(型)内部的联系和实体(型)之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。

概念模型的一种表示方法:实体-联系方法

概念模型是对信息世界建模,所以概念模型应该能够方便、准确的表示出信息世界中的常用概念,概念模型的表示方法有很多,其中最为常用的是P.P.S.Chen于1976年提出的实体-联系方法(Entity-Relationship approach)。该方法用E-R图来描述现实世界概念模型。

关系型数据库

1970年,E.F.Codd再美国计算机学会会刊《Communications of the ACM》上发表了题为"A Relational Model of Data for Shared Data Banks"的论文,开创了数据库系统的新纪元。ACM 1983年把这篇论文列为从1958年以来的四分之一世纪中具有里程碑意义的25篇研究论文之一。此后,E.F.Codd连续发表了多篇论文,奠定了关系数据库的理论基础。

域(domain)

定义: 域是一组具有相同数据类型的值的集合。

笛卡尔积(cartesian product)

笛卡尔积是域上的一种集合运算。
定义: 给定一个域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡尔积为
D 1 × D 2 × ⋯ × D n = { ( d 1 , d 2 , ⋯ , d n ) } ∣ d i ∈ D i i = 1 , 2 , ⋯ , n D_1 \times D_2 \times \cdots \times D_n=\{(d1,d2,\cdots,d_n)\} | d_i \in D_i i=1,2, \cdots,n D1​×D2​×⋯×Dn​={(d1,d2,⋯,dn​)}∣di​∈Di​i=1,2,⋯,n
其中,每一个元素 ( d 1 , d 2 , . . . , d n ) (d_1,d_2,...,d_n) (d1​,d2​,...,dn​)
叫做一个n元组(n-tuple),或简称元组(tuple)元素中的每一个值di叫做一个分量(component)
一个域允许的不同取值个数成为这个域的基数(cardinal number)
若 D i ( i = 1 , 2 , ⋯ , n ) D_i(i=1,2,\cdots,n) Di​(i=1,2,⋯,n)为有限集,其基数为 m i ( i = 1 , 2 , ⋯ , n ) m_i(i=1,2,\cdots,n) mi​(i=1,2,⋯,n)则 D 1 × D 2 × ⋯ × D n D_1 \times D_2 \times \cdots \times D_n D1​×D2​×⋯×Dn​
的基数M为 M = ∏ i = 1 n m i M= \prod_{i=1}^{n}m_i M=∏i=1n​mi​

关系(relation)

定义:
D 1 × D 2 × ⋯ × D n D_1 \times D_2 \times \cdots \times D_n D1​×D2​×⋯×Dn​的子集叫做在域 D 1 , D 2 , ⋯ , D n D_1,D_2, \cdots ,D_n D1​,D2​,⋯,Dn​上的关系,表示为 R ( D 1 , D 2 , ⋯ , D n ) R(D_1,D_2,\cdots,D_n) R(D1​,D2​,⋯,Dn​)
这里R表示关系的名字,n是关系的目或度(degree)。

  • 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)。

  • 若一个关系有多个候选码,则选定其中一个为主码(primary key)。

在简单的情况下,候选码只包含一个属性,在最极端的情况下,关系模式的所有属性是这个关系模型的候选码,称为全码(all-key)

关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。

基本关系具有如下性质:
1)列是同质的(homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
2)不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
3)列的顺序不所谓,即列的次序可以任意交换。
4)任意两个元组的候选码不能取相同的值。
5)行的顺序无所谓,即行的次序可以任意交换。
6)分量必须取原子值,即每一个分量都必须是不可分的数据项。

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类

集合运算符

运算符 含义
∪ \cup ∪
-
∩ \cap ∩
× \times × 笛卡尔积

关系运算符

运算符 含义
σ \sigma σ 选择
∏ \prod ∏ 投影
⋈ \Join ⋈ 连接
÷ \div ÷

传统集合运算

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量, t ∈ R t \in R t∈R表示t是R的一个元组。
1)并(union)
关系R与关系S的并记作

R ∪ S = { t ∈ R ∨ t ∈ S } R \cup S=\{t \in R \vee t \in S \} R∪S={t∈R∨t∈S}

其结果仍未n目关系,由属于R或属于S的元组组成。
2)差(except)
关系R与关系S的差记作

R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t|t \in R \wedge t \notin S \} R−S={t∣t∈R∧t∈/S}
其结果关系仍未n目关系,由属于R而不属于S的所有元组组成。
3)交(intersection)
关系R与关系S的交记作
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S=\{t|t \in R \wedge t \in S \} R∩S={t∣t∈R∧t∈S}
其结果关系仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示,即
R ∩ S = R − ( R − S ) R \cap S=R-(R-S) R∩S=R−(R−S)
4)笛卡尔积(cartesian product)
两个分别为n目和m目的关系R和S的笛卡尔积是一个(n+m)列的元组的集合。
元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有 k 1 k_1 k1​个元组,S有 k 2 k_2 k2​个元组,则关系R和关系S的笛卡尔积有 k 1 × k 2 k_1 \times k_2 k1​×k2​个元组。记作
R × S = { t r t s ‾ ∣ t r ∈ R ∧ t s ∈ S } R \times S=\{ \overline {t_rt_s}| t_r \in R \wedge t_s \in S \} R×S={tr​ts​​∣tr​∈R∧ts​∈S}

专门的关系运算

首先引入几个记号:
1)设关系模式为 R ( A 1 , A 2 , ⋯ , A n ) R(A_1,A_2,\cdots,A_n) R(A1​,A2​,⋯,An​),他的一个关系设为R。 t ∈ R t \in R t∈R表示 t 是R的一个元组。 t [ A i ] t[A_i] t[Ai​]则表示元组t中相应于属性A_i的一个分量
2)若 A = { A i 1 , A i 2 , ⋯ , A i k } A=\{A_{i1},A_{i2},\cdots,A_{ik} \} A={Ai1​,Ai2​,⋯,Aik​},其中 A i 1 , A i 2 , ⋯ , A i k A_{i1},A_{i2},\cdots,A_{ik} Ai1​,Ai2​,⋯,Aik​是 A 1 , A 2 , ⋯ , A n A_1,A_2,\cdots,A_n A1​,A2​,⋯,An​中的一部分,则A称为属性列或属性组。 t [ A ] = ( t [ A i 1 ] , t [ A i 2 ] , ⋯ , t [ A i k ] ) t[A]=(t[A_{i1}],t[A_{i2}],\cdots,t[A_{ik}]) t[A]=(t[Ai1​],t[Ai2​],⋯,t[Aik​])表示元组t在属性列A上诸分量的集合, A ‾ \overline{A} A表示 { A 1 , A 2 , ⋯ , A n } \{A_1,A_2,\cdots,An \} {A1​,A2​,⋯,An}中去掉 { A i 1 , A i 2 , c d o t s , A i k } \{A_{i1},A_{i2},cdots,A_{ik}\} {Ai1​,Ai2​,cdots,Aik​}后剩余的属性组
3)R为n目关系,S为m目关系。 t r ∈ R , t s ∈ S t_r \in R,t_s \in S tr​∈R,ts​∈S, t r t s ‾ \overline{t_rt_s} tr​ts​​称为元组的连接或元组的串接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
4)给定一个关系R(X,Z),X和Z为属性组。当 t [ X ] = x t[X]=x t[X]=x时,x在R中的象集(images set)定义为 Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x=\{t[Z]|t \in R, t[X]=x \} Zx​={t[Z]∣t∈R,t[X]=x}它表示R中属性组X上职位x的诸元组在Z上分量的集合。

选择(selection)

选择又称为限制(restriction)。它是在关系R中选择满足给定条件的诸元组,记作$\sigma_F®={t|t \in R \wedge F(t)=‘真’ } $,其中F表示选择条件,他是一个逻辑表达式,取逻辑值“真”或“假”。

投影(projection)

在关系R上的投影是从R中选择出若干属性列组成的新的关系,记作 ∏ A ( R ) = { t [ A ] ∣ t ∈ R } \prod_A(R)=\{t[A] | t \in R \} ∏A​(R)={t[A]∣t∈R}其中A为R中的属性列。
投影操作是从列的角度进行运算。

连接(join)

连接也称为 θ \theta θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,记作 R ⋈ A θ B S = { t r t s ‾ t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R \Join_{A \theta B} S=\{\overline{t_rt_s} t_r \in R \wedge t_s \in S \wedge t_r[A]\theta t_s[B] \} R⋈AθB​S={tr​ts​​tr​∈R∧ts​∈S∧tr​[A]θts​[B]}
其中,A和B分别为R和S上列数相等且可比的属性组, θ \theta θ是比较运算符。连接运算从R和S的笛卡尔积 R × S R \times S R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系 θ \theta θ的元组。

除运算(division)

设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
R与S的除运算得到一个新的关系P(X),P是R中满足条件的元组在X属性上的投影:元组在X上分量值x的象集 Y x Y_x Yx​包含S在Y上投影的集合。记作 R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ ∏ Y ( S ) ⊆ Y x } R \div S=\{t_r[X]|t_r \in R \wedge \prod_Y(S) \subseteq Y_x \} R÷S={tr​[X]∣tr​∈R∧∏Y​(S)⊆Yx​},其中 Y x Y_x Yx​为x在R中的象集, x = t r [ X ] x=t_r[X] x=tr​[X]

关系型数据库理论基础阐释相关推荐

  1. 从属关系mysql_关系型数据库基础概念:MySQL系列之开篇

    一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定 ...

  2. python引入redis_实操演练解读非关系型数据库—Redis

    在互联网发展的早期,那还是一个各路军阀混战,实战为王的时代,没有所谓正规军,搞定问题才是王道. 当然,那个时期也没有那么多问题,互联网还是个新鲜的词汇,能被称作是网民的人也都是"稀有物种&q ...

  3. 关系型数据库由哪三部分组成_关系数据库| 第2部分

    关系型数据库由哪三部分组成 关系数据库理论 (Theory of relational databases) The foundations of the theory of relational d ...

  4. Day 36: 关系型数据库和MySQL概述

    关系型数据库和MySQL概述 关系型数据库概述 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失. 数据库发展史 - 网状数据库.层次数据库.关系数据库.NoSQ ...

  5. 关系型数据库由哪三部分组成_关系数据库| 第1部分

    关系型数据库由哪三部分组成 使用关系数据库 (Using The Relational Database) A relational database is used for electronic d ...

  6. mysql 应用前景_图数据库在企业应用中前景如何,相比关系型数据库有哪些优势?...

    图数据虽然在国内的应用还不是非常广泛,但发展前景还是很可观的. 跟以Oracle为代表的传统关系型数据相比,图的逻辑可以很好的解决绝大多数底层数据分析问题, 图数据的数据逻辑维度要远高于关系型数据,所 ...

  7. mysql类exadata功能_几类关系型数据库的数据解决方案

    今天聊下几类关系型数据库的数据解决方案,算是抛砖引玉,近期也要对技术方向上做一些扩展,也算是前期的小结吧. 1 3 Oracle 目前市面上的主流版本应该还是11gR2,记得很多年前有个网站做过一次调 ...

  8. Mac MySQL 数据库配置(关系型数据库管理系统)

    本文已停止更新,点击此链接查看本文最新内容 !!! 前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13 ...

  9. 关系型数据库设计要领(值得收藏)

    欢迎关注方志朋的博客,回复"666"获面试宝典 摘要 本文讨论关系数据库设计相关的一些内容,涉及关系模型,表结构设计等内容,以学生选修课程讲述设计过程,在尽量讲清楚设计要领的前提下 ...

最新文章

  1. 使用OpenCV加载TensorFlow2模型
  2. ShardedJedis 错误使用
  3. Trie(前缀树/字典树)及其应用
  4. 递归神经网络不可思议的有效性
  5. 食品、快速消费品行业的ERP兄弟们来此跟帖交流,开发实施路上的点点滴滴
  6. 附件文件无法保存到服务器,可能是目录属性设置问题,请与管理员联系,Discuz不能上传过大文件的解决办法...
  7. [Matlab] PDETool 的 Set Formula 的元素排列顺序会影响 Boundary 的判定
  8. tar 解压_关于Ubuntu下解压tar.xz方法记录
  9. UIKit Particle Systems in iOS 5 Tutorial ( 附雨的粒子效果 )
  10. 4 转推流格式_网络互联互通直播系统 分会场直播一体机 各地连线直播推流
  11. “互联网+”时代,网络安全市场将达千亿级别
  12. SRCNN 图像超分辨率重建(tf2)
  13. vbm 分析_VBM
  14. 数值分析第二次作业-求解系数矩阵为Hilbert 矩阵的线性方程组
  15. 机器学习之广义线性模型
  16. matlab高通滤波器除噪声,基于MATLAB的FIR滤波器的设计及应用(信号去噪).doc
  17. cad直线和圆弧倒角不相切_在cad绘制倒圆角的方法技巧步骤详解
  18. codecombat计算机科学入门二(python)
  19. Hadoop1.0,2.0,3.0区别
  20. 什么是GCC,ICC,IAR

热门文章

  1. MTK android 9.0半屏显示 单手模式
  2. 几款自制SDR的USB耗电测试
  3. mysql清除表数据
  4. TOPSIS法中正负理想解、正负理想距离如何计算?
  5. 磁盘清理中的Windows更新清理
  6. 温州商人有哪些生意经?
  7. 整理 刘汝佳紫书第三章习题代码 未完待续
  8. 关于System.Windows.Baml2006.TypeConverterMarkupExtension引发的异常
  9. 马云:我们唯一拥有的就是相信梦想,Never give up!
  10. 《论语》原文及其全文翻译 学而篇2