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

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


推荐阅读
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社区 版权所有