热门标签 | 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)

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


推荐阅读
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了如何使用libpq库与PostgreSQL后端建立连接。通过探讨PQconnectdb()函数的工作原理及其在实际应用中的使用方法,帮助读者理解并掌握建立高效、稳定的数据库连接的关键步骤。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
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社区 版权所有