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

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


推荐阅读
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
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社区 版权所有