首页 > 数据库 >关系数据库

关系数据库

时间:2024-06-22 09:03:17浏览次数:27  
标签:关系 运算 主码 元组 关系数据库 完整性 属性

关系模型的数据结构及其形式化定义

关系的形式化定义及其有关概念

  1. 域(Domain):域是一组具有相同数据类型的值的集合。
  2. 笛卡尔积(Cartesian Product):一个记录叫做一个元组(tuple),元组中每一个属性值,叫一个分量。允许其中某些域是相同的。
    D1,D2,…,Dn的笛卡尔积为:
    D1×D2×…×Dn =
    {(d1,d2,…,dn)|diDi,i=1,2,…,n}
    所有域的所有取值的一个组合不能重复
  3. 基数(Cardinal number):域的元素个数

关系的性质

关系是一种规范化了的二维表中行的集合

· 每一列中的分量必须来自同一个域,必须是同一类型的数据。
· 不同的属性可来自同一个域,不同的属性必须有不同的名字。
· 列的顺序可以任意交换。
· 关系中元组的顺序(即行序)可任意。
· 关系中不允许出现相同的元组。
· 关系中每一分量必须是不可分的数据项

关系模式

在这里插入图片描述

关系的码与关系的完整性

候选码(键)与主码(键)

  1. 候选码(Candidate key)
    若关系中的某一属性组的值能唯一地标识一个元组,其真子集不行,则称该属性 组为候选码。(最少属性的集合)
  2. 全码(All-key)
    最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
  3. 主码(Primary Key)
    从多个候选码中选择一个作为查询、插入或删除元组的操作变量,被选用的候选码称为 主码。
    注意:每个关系必须选择一个主码 ,且不能随意改变。
  4. 主属性(Prime Attribute)与非码属性(Non-Prime Attribute)
    主属性:包含在主码中的各个属性称为主属性
    非码属性:不包含在任何候选码中的属性称为非主属性(或非码属性)

外码

依赖于另一个关系的主码
在这里插入图片描述
例子:
在这里插入图片描述
外码并不一定要与相应的主码同名
当外码与相应的主码属于不同关系时,往往取相同的名 字,以便于识别

关系的完整性

数据库的完整性

数据库的完整性是指数据库中数据的正确性和相容性。为了保证数据库的完整性,数据库管理系统(DBMS)提供了各种机制,包括实体完整性、参照完整性、用户定义的完整性和域完整性。

  1. 实体完整性:确保每个表都有一个主键,并且主键列中的值是唯一的和非空的。实体完整性可以防止表中出现重复的记录。
    插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。包括:

    • 检查主码值是否唯一,如果不唯一则拒绝插入或修改
    • 检查主码值是否唯一,如果不唯一则拒绝插入或修改
  2. 参照完整性:确保外键列中的值必须与参照它的主键列中的某个值相匹配,或者为空。参照完整性可以防止引用不存在的记录。
    例如,对表SC和Student有四种可能破坏参照完整性的情况 :

    • SC表中增加一个元组,该元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等。
    • 修改SC表中的一个元组,修改后该元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等。
    • 从Student表中删除一个元组,造成SC表中某些元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等。
    • 修改Student表中一个元组的Sno属性,造成SC表中某些元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等 。
      在这里插入图片描述
  3. 用户定义的完整性:由用户定义的完整性规则,它反映了应用领域中的特定约束。例如,某个属性值必须在一定范围内,或者两个属性值必须满足某种关系。

  4. 域完整性:确保表中列的数据类型和约束是有效的。例如,某个列的数据类型为整数,那么这个列只能接受整数值。

数据库完整性对于维护数据的准确性和一致性至关重要,特别是在处理关键任务和敏感数据时。它还有助于减少数据冗余,提高数据查询的效率,并确保数据的可靠性。

关系代数

关系代数是一种抽象的查询语言 ;
关系代数的运算对象与运算结果都是关系。

关系代数的分类及其运算符

  1. 传统的集合运算:
    把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。
    包括并、差、交和笛卡尔积等运算

  2. 专门的关系运算:
    不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。
    包括选取、投影、连接和除法等运算。

在这里插入图片描述

传统的集合运算

设给定两个关系R、S,若满足:
(1) 具有相同的列数(或称度数)n;
(2) R中第i个属性和S中第i个属性必须来自同一个域。
则说关系R、S是相容的。除笛卡尔积外,其他的集合运算要求参加运算的关系必须满足上述的相容性定义。

  1. 并(Union)
    R 和S:
    具有相同的目n(即两个关系都有n个属性)
    相应的属性取自同一个域
    结果去重
    R∪S :
    仍为n目关系,由属于R或属于S的元组组成

      R∪S={t∣t∈R∨t∈S}
    
  2. 差(Difference)
    R和S
    具有相同的目n
    相应的属性取自同一个域
    R - S
    仍为n目关系,由属于R而不属于S的所有元组组成

      R−S={t∣t∈R∧t∈/S}
    
  3. 交(Intersection)
    R和S
    具有相同的目n
    相应的属性取自同一个域
    R∩S
    仍为n目关系,由既属于R又属于S的元组组成

      R∩S={t∣t∈R∧t∈S}
      R∩S=R–(R−S)
    
  4. 笛卡尔积
    严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
    R: n目关系,k 1 个元组
    S: m目关系,k2 个元组
    R×S
    列:(n+m)列元组的集合
    元组的前n列是关系R的一个元组
    后m列是关系S的一个元组
    行:k1 × k2 个元组

      R × S = { t r   t s ^ ∣ t r ∈ R ∧ t s ∈ S } R×S = \{\widehat{tr \ ts} |tr \in R ∧ ts \in S \}
      R×S={ tr ts∣tr∈R∧ts∈S}
    

专门的关系运算

由于传统的集合运算,只是从行的角度进行,而要灵活地实现关系数据库多样的查询操作,必须引入专门的关系运算。
在讲专门的关系运算之前,为叙述上的方便先引入几个概念。

  1. R,t∈R,t[Ai]
    设关系模式为R(A1,A2,…,An)
    employer(no,name,age)
    t∈R表示t是R的一个元组。 例如 {t/t∈R}
    t[Ai]则表示元组t中相应于属性Ai的一个分量
  2. A,t[A]
    若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。
    t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。
  3. tr ts
    R为n目关系,S为m目关系。
    tr ∈R,ts∈S, tr ts称为元组的连接。
    tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
  4. 象集Zx
    给定一个关系R(X,Z),X和Z为属性组。
    当t[X]=x时,x在R中的象集(Images Set)为:
    Zx={t[Z]|t ∈R,t[X]=x}
    它表示R中属性组X上值为x的诸元组在Z上分量的集合
    在这里插入图片描述

选取

在这里插入图片描述

投影

在这里插入图片描述

连接

在这里插入图片描述

  • 一般连接
    在这里插入图片描述

在这里插入图片描述

  • 等值连接在这里插入图片描述

  • 自然连接(Natural join)
    在这里插入图片描述
    在这里插入图片描述

注意:
1、自然连接一定是等值连接,但等值连接不一定是自然连接。

2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

  • 除法(Division)
    在这里插入图片描述

标签:关系,运算,主码,元组,关系数据库,完整性,属性
From: https://blog.csdn.net/Ownyourfuture/article/details/139824091

相关文章

  • 【java】为什么高并发下数据写入不推荐关系数据库?
    一、问题解析说到高并发写,就不得不提及新分布式数据库HTAP,它实现了OLAP和OLTP的融合,可以同时提供数据分析挖掘和关系查询。事实上,HTAP的OLAP并不是大数据,或者说它并不是我们印象中每天拿几T的日志过来用于离线分析计算的那个大数据。这里更多的是指数据挖掘的最后一环,也就是......
  • 数据库原理(关系数据库规范化理论)——(4)
    一、关系模式规范化的必要性1.关系可能出现的问题数据冗余大;插入异常;删除异常;更新异常;2.关系模式应满足的基本要求元组的每个分量必须是不可分割的数据项;数据库中的数据冗余应尽可能少;不要出现插入异常;不要出现删除异常;不要出现更新异常;数据库设计应考虑查询要求,数据组织要......
  • 深入解析关系数据库设计的艺术
    在数字信息的海洋中,关系数据库如同一座精心设计的图书馆,将繁杂的数据有序地分类、存储和检索。它不仅是计算机科学的一个重要分支,更是现代信息系统不可或缺的基石。今天,我们将一同探索关系数据库设计的奥秘,揭开它的面纱,理解其背后的原理与实践。一、关系数据库的基本概念关系......
  • 【数据库】【《数据库系统概论(第5版)》笔记】第二章:关系数据库
    文章目录@[toc]2.1|关系数据结构及形式化定义关系码关系类型基本关系的性质关系模式关系模型的存储结构2.2|关系操作查询关系语言的分类2.3|关系的完整性实体完整性参照完整性用户定义的完整性2.4|关系代数传统的集合运算并差交笛卡尔积专门的关系运算选择投影连接......
  • 关系数据库标准语言SQL难题整理
    文章目录1、查询选修三门以上课程的学生学号2、查询选修课程中至多一门>70分的学生学号3、查询平均成绩>=90分的学生学号和平均成绩4、查询成绩都大于70分学生的成绩5、找出每个学生超过他自己选修课程平均成绩的课程号6、查询非计算机科学系某一个学生年龄小的学生姓名......
  • 数据库原理与应用(SQL Server)笔记——第三章 关系数据库规范化
    目录一、关系数据库设计理论二、关系模式的形式化表示三、函数依赖四、关系模式规范化(一)规范化目的(二)范式(三)范式化过程一、关系数据库设计理论函数依赖、范式和模式设计是关系数据库设计理论中的主要内容,其中函数依赖起到核心作用,范式用来描述数据库结构的标准化程......
  • 实验一 关系数据库标准语言SQL
    第1关:创建数据库#代码开始CREATEDATABASEdemo;showdatabases;#代码结束第2关:创建表#代码开始#1.切换到demo数据库USEdemo;#2.分别创建s、p、j和spj数据表#创建s表:CREATETABLEs(snoCHAR(2),snameVARCHAR(10),statusINT,cityVA......
  • 初探OceanBase:一款高性能分布式(实时HTAP)关系数据库的技术剖析
    码到三十五:个人主页心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得!在数据驱动的时代,数据库作为存储和管理数据的核心组件,其性能、稳定性和扩展性都至关重要。OceanBase作为一款高性能的分布式关系数据库,以其出色的技术特性和卓越的性能表现,吸引了......
  • 关系数据库_3.关系数据库设计基本理论
        关系数据理论是指导数据库设计的基础,关系数据库设计是数据库语义学的问题。要保证构造的关系既能准确地反映现实世界,又有利于应用和具体的操作。关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可以方便地获取信息。1......
  • 数据库基础3 关系数据库与关系模型
    数据库系统的组成1.硬件平台2.软件3.人员(1)数据库管理员(DBA)(2)系统分析员、数据库设计人员(3)应用程序员(4)最终用户1.偶然用户2.简单用户3.复杂用户 关系数据库关系模型是从表(Table)的处理方式中抽象出来的在对传统表的操作上,进行数学化严格定义的基础上,......