热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库笔记2————关系数据库(关系代数)

数据库笔记2————关系数据库(关系代数)一.主要内容知识框架二.关系数据结构按照数据模式的三个要素,关系数据模型由关系数据结构,关系数据操作,和关系完整性约束3部分组成。

数据库笔记2————关系数据库(关系代数)

一.主要内容/知识框架

这里写图片描述

二.关系数据结构

  • 按照数据模式的三个要素,关系数据模型由关系数据结构,关系数据操作,和关系完整性约束3部分组成。

1.关系的定义

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

  • D1 = {丁中, 王芳 ,李兵};
    D2 = {男,女};
    D3 ={17,18,19};
b.笛卡尔积
  • 定义:A×B={(x,y)|x∈A∧y∈B}

  • D1XD2XD3={
    (丁中,男,17)(丁中,男,18)(丁中,男,19)(丁中,女,17)(丁中,女18)(丁中,女,19)
    (王芳,男,17)(王芳,男,18)(王芳,男,19)(王芳,女,17)(王芳,女,18)(王芳,女,19)
    (李兵,男,17)(李兵,男,18)(李兵,男,19)(李兵,女,17)(李兵,女,18)(李兵,女,19)
    }
c.关系
  • 关系的定义:从笛卡尔中抽出一个子集,可以构成关系。
  • 其他相关概念:
    • 元组:关系中的元素
    • 候选键:关系中某个属性的值能够唯一识别一个元组。
    • 主键:选定候选键中的一个属性作为识别元组的键

  • 从上面笛卡尔积中选出一些元组作为关系
    {(丁中,男,19),(王芳,女,17),(李兵,男,18)}

2.关系的性质

  1. 任意两个元组(行)不能完全重复
  2. 关系中的元组(行)的次序是不重要的,可以任意交换
  3. 关系中的属性(列)的次序也是不重要的,可以任意交换
  4. 同一列中的分量必须来自同一个域。
  5. 属性必须有不同的名字,但不同的属性可以来自相同的域。

三.数据结构操作

1.关系中的基本操作

  • 主要是查询,和增删改数据更新这两个部分
  • 查询中包括:选择,投影,连接,除,并,交,差,笛卡尔积等

2.关系数据语言

  • 关系代数:是用对关系的运算来表达查询要求的方式
  • 关系演算:是通过谓词来表达查询要求的方式
  • SQL:介于关系的代数和关系演算之间的结构化查询语言,同时还包括数据定义和数据控制功能。

四.关系的完整性

  • 关系完整性分为实体完整性规则,参照完整性规则,用户定义的完整性

1.实体完整性规则

  • 规则:若属性A是关系R的主属性(主键),则属性A不可以取空值。

2.参照完整性规则

  • 定义:设F是关系R的一个或一组属性,但不是关系R的键。如果F和关系S的主键相对应,则称F是关系F的外键
  • 规则:若属性(或属性组)F是关系R的外键,它与关系S的主键相对性,则对于R中每个元组,在F上的值要么等于S中元组的主键值,要么取空值。
    例: 主键是斜体,外键用粗体标出
    学生( 学号,姓名,性别, 专业号,年龄)
    专业( 专业号,专业名)
    按照参照完整性,学生关系中的每个元组”专业号”属性只能取下面两种可能
    1.空值,表示尚未给该同学分配专业
    2.非空:这个值必须和专业关系中某个元组的“专业号”值相同

3.用户定义的完整性

  • 规则:由用户自定义进行约束。

  • 成绩属性范围是0~100,性别属性只能是男女。

4.在进行数据库的操作时,检查约束性的顺序

  • 执行插入操作时:先检查实体完整性约束,然后检查参照约束性,最后检查用户定义完整性。
  • 执行删除操作时:只需要检查参照完整性
  • 执行更新数据时:可以看做先删除然后插入。

五.关系代数

1. 定义

  • 关系代数是一种抽象的查询语言,是关系数据操作语言的一种传统表达方式,它是用运算来表达查询。

2.四种基本运算

  • 包括:并,差,交,笛卡尔积
    这里写图片描述
1.并
  • 定义:R∪S={t|t∈R∨t∈S}
  • 例:R∪S
    这里写图片描述
2.差
  • 定义:R-S={t|t∈R∧t∉S}
  • 例:R-S
    这里写图片描述
3.交
  • 定义:R∩S={t|t∈R∧t∈S}
  • 例:R∩S
    这里写图片描述
4.笛卡尔积
  • 定义:A×B={(x,y)|x∈A∧y∈B}
  • 例:A×B
    这里写图片描述

3.四中专门运算

  • 包括:选择,投影,连接,除
1.选择σ
  • 定义: σF(R) = {t|t∈R ∧ F(t)=’真’}
  • 例1:对与关系R,查询它A=‘a’的元组,R还是上面的R
σA='a'(R)或者σ1='a'(R)

这里写图片描述

  • 例2:对与关系R,查询它A=‘a’并且B属性大于3的元组
σA='a'^B>3(R)或者σ1='a'^2>3(R)

这里写图片描述

2.投影π
  • 定义: πA(R) = { t[A] | t∈R }
  • 例1:输出S的AB两个属性,S还是上面的S
πA,B (S)或者π1,2(S)

这里写图片描述

  • 例2:输出S的AC两个属性(重复的元组只留一个)
πA,C (S)或者π1,3(S)

这里写图片描述

3.连接
  • 定义:S⋈R(AθB)
  • 例:

这里写图片描述

S⋈R(B 这里写图片描述

a.等值连接:
  • 定义:θ为“=”号时,即从S和R中的笛卡尔积中选出AB属性相等的元组
  • 例:
    这里写图片描述
b.自然连接
  • 定义:一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复属性去掉。
  • 例:
    这里写图片描述
c.外链接
  • 定义:将自然连接舍弃的属性也保存在结果关系中,而其他属性上填上“空值”

  • 这里写图片描述
d.左外链接
  • 定义:只把左边关系R要舍弃的属性保留

  • 这里写图片描述
e.右外链接
  • 定义:只把右边关系S要舍弃的属性保留

  • 这里写图片描述
4.除
  • 定义:
    这里写图片描述
  • 计算过程:

    • 设有关系R、S 如图所示,求R÷S 的结果
      这里写图片描述
    • 第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下
      这里写图片描述
    • 第二步:被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影为{X1,X2};
    • 第三步:求关系R中X属性对应的像集Y:根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图
      这里写图片描述
    • 第四步:判断包含关系
      R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现:
      X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;
      而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2
      这里写图片描述
  • 说明 :

    • R÷S的新关系是由属于R但不属于S的所有属性构成的
    • R÷S的任一元组都是R中某元组的一部分,但必须满足下列要求:即任取属于R÷S的一个元组t,则t与S的任一元组连接后,结果都是R的一个元组
    • R(X,Y)÷S(X, Z)=R(X,Y)÷πY(S)

呼~~~~,画的图最多的一个博客,写了一天半,终于完了,撒花。


推荐阅读
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文通过一系列实验,探讨了Oracle 11g数据库中密码错误验证延迟特性对用户登录速度的影响。实验旨在验证当某个用户因输入错误密码而触发延迟时,是否会影响其他用户的正常登录速度。 ... [详细]
  • SQL查询与事务管理:深入解析
    本文详细介绍了SQL查询的基本结构和高级特性,包括选择、分组查询以及权限控制等内容,并探讨了事务管理中的并发控制策略,旨在为数据库管理员和开发人员提供实用指导。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有