2.1 关系数据结构及形式化定义

  • 关系数据库系统是支持关系模型的数据库系统。(关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成)

2.1.1 关系

1-域

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

eg.{0, 1}; {man, woman}

2-笛卡尔积

  • 笛卡尔积是域上的一种集合运算

eg.给定一组域D1,D2,D3,,,,则其笛卡尔积为:D1*D2*D3...={(d1,d2,d3,....) | di∈Di}

  1. 没一个元素(d1,d2,d3...,dn)叫做一个n元组(简称元组),元组的每一个值di叫做一个分量。
  2. 一个域允许的不同取值个数称为这个域的基数

3-关系

  • D1*D2*D3...*Dn的子集叫做域在D1,D2,...,Dn上的关系,表示为:R(D1,D2,...,Dn)

  • R表示关系的名字,n表示关系的目或度

  • 若关系中的某一属性组能唯一标识一个元组,而其子集不可以,则称该属性组为候选码

  • 候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。

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

  • 关系可以有三种类型:基本关系(基本表或基表),查询表和试图表。

    1. 基本表:实际存在的表,实际存储数据的逻辑表示
    2. 查询表:查询结果对应的表
    3. 试图表:由基本表或其他试图表导出的表,虚表,不对应实际存储数据。
基本关系的六条性质:
  1. 列是同质的:每个列中的分量是同一类型的数据,来自同一个域。
  2. 不同的列可出自同一个域,此时每一个列为一个属性
  3. 列的顺序无所谓:列的次序可以任意调换
  4. 任意两个元组的候选码不能取相同的值
  5. 行的顺序无所谓
  6. 分量必须取原子值,每一个分量都必须是不可分的数据项。

2.1.2 关系模式

关系模式是型,关系是值。关系模式是对关系的描述。

  • 关系的描述称为关系模式,表示为:R(U,D,DOM,F)

    1. R:关系名
    2. U:组成该关系的属性名集合
    3. D:U中属性所来自的域
    4. DOM: 属性向域的影响集合
    5. F:属性间数据的依赖关系集合
  • 关系是关系模式在某一时刻的状态和内容。关系模式是静态稳定的,关系是动态随时间变化的(关系操作不断更新着数据库中数据)。

2.1.3 关系数据库

  1. 关系数据库的型也成为关系数据库模式,是对关系数据库的描述
  2. 关系数据库的值是这些关系模式在某一时刻对应的关系的集合 - 关系数据库。

2.2 关系操作

2.2.1 基本关系操作

  1. 查询:集合操作方式,即操作的对象和结果都是集合

    • 查询的五种基本操作:选择、投影、并、差、笛卡尔积
  2. 插入
  3. 删除

2.2.2 关系数据语言的分类

  1. 关系代数语言(ISBL)
  2. 关系演算语言
    1. 元组关系演算语言(ALPHA,QUEL)
    2. 域关系盐酸语言(QBE)
  3. 关系代数和关系演算双重特性:SQL
    • SQL是一种结构查询语言,集查询、数据定义、数据操纵和数据控制于译题的关系数据语言。(高度非过成化)
  4. 修改

2.3 关系完整性

  • 关系模型由三类完整性约束:实体完整性、参照完整性(关系的两个不变性)和用户定义的完整性。

2.3.1 实体完整性

  • 实体完整性规则:若属性A是基本关系R的主属性,则A不能取空置(null)

2.3.2 参照完整性

若F为基本关系R的一个或一组属性但不是R的码,Ks是基本关系S的主码。若F与Ks相对应,则F是R的外码,R为参照关系,S是被参照关系或目标关系。(RS可为同一关系)

  • 参照完整性规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须:

    1. 取空值(F中每个属性值均为空值):尚未给F分配Ks
    2. 等于S中某个元组的主码值:被参照关系中的一个具体值

2.3.3 用户定义完整性

用户定义完整性即为针对某一具体关系数据库的约束条件,其反映某一具体应用所涉及的数据必须满足的语义要求。

2.4 关系代数

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

  • 关系代数表达式:关系代数中运算经有限次复合后形成的表达式。

2.4.1 传统集合运算(二目运算)

  1. 并:R∪S={t|t∈R V t∈S}
  2. 差:R-S={t|t∈R ⋀ t ∉ S}
  3. 交:R∩S={t|t∈R ⋀ t∈S}
  4. 笛卡尔积:R*S={tr⌒ts|tr∈R⋀ts∈S}

2.4.2 专门的关系运算

1-符号引入

  1. 设关系模式为R(A1,A2...An),其一关系设为R,t∈R标识t是R的一个元组。t[Ai]表示元组t中相应于属性Ai的一个分量
  2. 若R为n目关系,S为m目关系。tr∈R,ts∈S,tr⌒ts称为元组的链接或元组的串接,其是一个n+m列的元组
  3. 若A={Ai1,Ai2,Ai3,...,Aik},Ain为Ai中的一部分,则A称为属性列或属性组。t[A]=(t[Ai1],t[Ai2],t[Ai3]...)表示元组t在属性列A上诸分量的集合,A平均表示{A1,A2,...}去除{Ai1,Ai2,...}后剩余的属性组。
  4. 给定关系R(X,Z),XZ为属性组。当t[X]=x时,x在R中的象集定义为:Zx={t[Z]|t∈R,t[X]=x},表示R中属性组X上值x的诸元组在Z上分量的集合。

2-关系运算定义

  1. 选择(限制)
  2. 投影:关系R上的投影是从R中选择若干属性列组成新得关系
  3. 连接(join):两个关系的笛卡尔积中选取属性间满足一定条件的元组
  4. 除运算:设关系R除关系S结果为关系T,则T包含所有在R但不在S中的属性和值,且T的元组与S的元组的所有组合都在R中

3-符号整理

U2-关系数据库的更多相关文章

  1. 关系数据库SQL之可编程性触发器

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程.事务,本文来介绍一下触发器的使用.(还是以 ...

  2. 前端开发必学技能之一———非关系数据库又像关系数据库的MongoDB快速入门第一步下载与安装

    数据库总的来说,分为两个方向:关系数据库和非关系数据库.我们常见的MySQL.Oracle.SQLSerever以及IBMDB2都是属于关系数据库,这里的关系值得是二维表的结构,但是由于随着web的应 ...

  3. 关系数据库SQL之可编程性事务

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程,本文来介绍一下事务的使用.(还是以前面的银 ...

  4. 关系数据库SQL之可编程性存储过程

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数,本文来介绍一下存储过程的创建.执行.删除.(还是以前 ...

  5. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  6. 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询

    前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...

  7. MongoDB是一个介于关系数据库和非关系数据库之间的产品

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  8. NoSQL数据库探讨之一 - 为什么要用非关系数据库?

    随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2 ...

  9. InfluxDb系列:几个关键概念(主要是和关系数据库做对比)

    https://docs.influxdata.com/influxdb/v0.9/concepts/key_concepts/  #,measurement,就相当于关系数据库中的table,他就是 ...

  10. Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具

    Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...

随机推荐

  1. .NET 6 全新指标 System.Diagnostics.Metrics 介绍

    前言 工友们, .NET 6 Preview 7 已经在8月10号发布了, 除了众多的功能更新和性能改进之外, 在 preview 7 版本中, 也新增了全新的指标API, System.Diagno ...

  2. 【设计模式】DDD 设计理念

    From: https://liudongdong1.github.io/ 微服务架构,在集中式架构中,系统分析.设计和开发往往是独立进行的,而且各个阶段负责人可能不一样,那么就涉及到交流信息丢失的问 ...

  3. ubunt中,使用命令su命令切换root账户,提示认证失败

    报错截图: 解决方法: sudo passwd 重新设置root账户的密码,确认root账户的密码(再次输入密码),然后su ,输入root账户刚刚设置的密码即可切入到root账户:

  4. docker运行gerrit(代码审查工具)

    gerrit是什么? Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. gerrit背景 Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软 ...

  5. C#托管堆和垃圾回收

    垃圾回收 值类型 每次使用都有对应新的线程栈 用完自动释放 引用类型 全局公用一个堆 因此需要垃圾回收 操作系统 内存是链式分配 CLR 内存连续分配(数组) 要求所有对象从 托管堆分配 GC 触发条 ...

  6. git推送文件到gitee

    注册gitee账号 设置姓名.个人空间地址 点击头像旁边的加号,新建仓库 安装git # 设置姓名和邮箱,姓名是注册gitee时设置的姓名,邮箱是注册gitee的邮箱 git config --glo ...

  7. 剖析虚幻渲染体系(11)- RDG

    目录 11.1 本篇概述 11.2 RDG基础 11.2.1 RDG基础类型 11.2.2 RDG资源 11.2.3 RDG Pass 11.2.4 FRDGBuilder 11.3 RDG机制 11 ...

  8. zabbix 历史数据处理

    问题描述 zabbix server 平稳运行有一段时间了,但是最近问题却来了,今天早上收到zabbixserver磁盘空间不足的告警.通过查看之后发现是大部分数据是zabbix 库的的数据 在进一步 ...

  9. 数据库CPU 100%处理记录

    问题描述 2020年7月13日一大早收到告警,测试环境数据库CPU告警. 登录aws查看监控如下图   问题分析 出现这种cpu 100%的问题,都是因为sql性能问题导致的, 主要表现于 cpu 消 ...

  10. shell循环之跳出循环

    1.break break命令允许跳出所有循环(终止执行后面的所有循环). 下面的例子中,脚本进入死循环直至用户输入数字大于5.要跳出这个循环,返回到shell提示符下,需要使用break命令. #! ...