关系数据库——关系数据语言

关系

  1. 域:一组具有相同数据类型的值的集合(即取值范围)

  2. 笛卡尔积:域上的一种集合运算。结果为一个集合,集合的每一个元素是一个元组,元组的每一个分量来自不同的域。

  3. 基数:一个域允许的不同取值个数。

  4. 笛卡尔积的基数:每个域不同取值的个数的乘积,或者说元组的个数

  5. 关系:域的笛卡尔积的子集叫做在域上的关系,域的个数叫做关系的目或度。(即列数,属性的数目),注意广义上的笛卡尔积一般不能称为关系,因为存在无效的数据。

  6. 关系:表

    列:属性

    行:元组

  7. 候选码:某一属性组的值能唯一地标示一个元组,而其子集不能,则称该属性组为候选码

  8. 主属性:候选码中的属性都称为主属性,注意:主属性非空。

  9. 非主属性:候选码之外的属性称为非主属性

  10. 全码:关系模式的所有属性是这个关系模式的候选码

  11. 主码:从候选码中选取一组能唯一确定一个元组的属性组作为主码。

  12. 三类关系:

    1)基本关系:实际存在的表,是实际存储数据的逻辑表示

    2)查询表:查询结果对应的表

    3)视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

    注意:关系数据模型中的关系必须是有限集合。

    关系的每一个列必须附加一个属性名,属性名不能重名,这种方法取消了关系属性的有序性。

  13. ① 列是同质的(Homogeneous):每一列中的分量来自同一个域,是同一类型的数据

    ② 不同的列可出自同一个域

    • 其中的每一列称为一个属性

    • 不同的属性要给予不同的属性名

    ③ 列的顺序无所谓, 列的次序可以任意交换

    ④ 任意两个元组的候选码不能相同:相同就不是候选码了

    ⑤ 行的顺序无所谓,行的次序可以任意交换

    ⑥ 分量必须取原子值(不允许表中套表)

关系模式

 

  1. 关系模式:对关系的描述,是静态的、稳定的

  2. 关系:是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的,指后边的那个关系

  3. 关系模式的形式化表示:

//关系模式
R(U, D, DOM, F)
R       关系名
U       组成该关系的属性名集合
D       属性组U中属性所来自的域
DOM  	属性向域的映象集合
F       属性间的数据依赖关系集合//可以简记为
R (U)    或    R (A1,A2,…,An)
R: 关系名
A1,A2,…,An  : 属性名
注:域名及属性向域的映象常常直接说明为属性的类型、长度

关系数据库

  1. 在一个给定的应用领域中,所有关系的集合构成一个关系数据库

  2. 关系数据库的型与值,不是关系的型与值

    1)关系数据库的型也称关系数据库模式,是对关系数据库的描述

    2)关系数据库的值是关系模式在某一时刻对应的关系的集合,简称为关系数据库

基本的关系操作

  1. 常用的基本操作:

    **查询:**选择、投影、连接、除、并、交、差

    **数据更新:**插入、删除、修改

  2. **5种基本操作:**选择、投影、并、差、笛卡尔积 注意:不算交

  3. 关系操作的特点:

    集合操作方式:操作的对象和结果都是集合,一次一集合的方式,操作对象是集合,操作结果亦为集合。

 

关系的完整性

实体完整性(即主属性非空)

  1. 若属性A是基本关系R的主属性,则属性A不能取空值

参照完整性

  1. 关系间的引用:关系与关系之间存在着联系

  2. 外码:设F是基本关系R的一个或一组属性,但不是关系R的主码Ks是基本关系S的主码。如果F与Ks相对应,则称F是基本关系R的外码,外码所在的基本关系叫做参照关系,Ks所在的关系叫做被参照关系。

    注:

    1)R、S不一定是不同的关系。

    2)目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上

    3)外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别

    4)外码的取值:如果外码是参照关系的主属性,则不能为空(实体完整性),只能为被参照关系中主码的取值。如果外码不是参照关系的主属性,则可以取空或者被参照关系主码的取值

  3. 两个不变性:指实体完整性和参照完整性

用户定义完整性

  1. 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求

  2. 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能

关系代数

传统的集合运算

  1. 传统的关系运算:

    并、交、差、笛卡尔积

  1. 操作对象关系:

    操作方式:同数学中的并、交、差、笛卡尔积。只不过操作对象的元素是元组。另外需要注意能进行运算所需要满足的条件。

    对于并、交、差需要满足的关系:1)属性的数目相同;2)相应的属性取自同一个域

专门的关系运算

常见的关系运算有选择、投影、连接、除

选择:

在关系R中选择满足给定条件的诸元组。

表达式:$\sigma_F(R) = {t | t \in R \and F(t) = ''true''}$

F:为选择条件,是一个逻辑表达式,基本形式为:$X_1 \theta Y_1$,其中$\theta$为大于、小于、等于、不等于等。

举例:

选择:$\sigma_{Sdept = "IS"}(Student)$

​​​​​​​

投影:

从R中选择出若干属性列组成新的关系

表达式:$\prod_{A} (R)= {t[A] | t\in R}$

A为属性列,即从R中选择A中属性列的元组,当然选择之后可能会删掉一些元组,因为避免重复。

举例:还是上方的关系,经过投影$\prod_{Sname, Sdept}(Student)$,结果如下:

 1

连接

 

1)**一般连接:**从两个关系的笛卡尔积中选取属性间满足一定条件的元组

(1)表达式:$R\bowtie_ {A \theta B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] \theta t_s[B] }$

(2)A和B:分别为R和S上度数相等且可比的属性组

(3)$\theta$表示比较运算符,

(4)连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组

2)**等值连接:**当上述的运算符为等于号的时候

(1)含义:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:

(2)表达式:$R\bowtie_ {A = B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$

(3)仍然是从行的角度进行运算,而不涉及列

(4)属性组可以不同

3)**自然连接:**一种特殊的等值连接

(1)与等值连接的不同:两个关系R和S必须具有相同的属性组

(2)将结果中相同的属性列去掉

(3)表达式:$R\bowtie S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$

4)由自然连接所引发的一系列问题:

(1)悬浮元组:在做自然连接的时候被舍弃的元组

(2)外连接:如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接,外连接 = 左外连接 + 右外连接

(3)左外连接:如果只把左边关系R中要舍弃的元组保留就叫做左外连接

(4)右外连接:如果只把右边关系S中要舍弃的元组保留就叫做右外连接

1)除运算的意义:

(1)假设关系R,S,RS,R关系拥有的属性是姓名,S关系拥有的属性是课程,RS关系拥有的属性是姓名和课程的联系,则RS/S表示选出所有至少选了表S中所列课程的学生的元组。

(2)如下图:

注:RS/S得到的关系:张三和李四构成的表,表示选修了全部课程的同学的集合。

举例:

R:

ABC
a1b1c2
a2b3c7
a3b4c6
a1b2c3
a4b6c6
a2b2c3
a1b2c1

S:

BCD
b1c2d1
b2c1d1
b2c3d2

R÷S

A
a1

(1) 找S与R的共同属性,即公式中的Y属性

(2)计算R中每个X属性的象集,如果某个象集包含S在Y属性上的投影,则该属为R/S结果中的一个值。

解答如下:

在关系R中,A可以取四个值{a1,a2,a3,a4},其中:

a1的象集为:{(b1,c2),(b2,c3),(b2,c1)}

a2的象集为:{(b3,c7),(b2,c3)}

a3的象集为:{(b4,c6)}

a4的象集为:{(b6,c6)}

S在(B,C)上的投影为{(b1,c2),(b2,c3),(b2,c1)}。

显然只有R的象集a1包含S在(B,C)属性组上的投影,所以R÷S={a1}。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习问题总结(01)

文章目录1.请描述推荐系统中协同过滤算法CF的原理2.请描述决策树的原理、过程、终止条件,以及如何防止过拟合2.1决策树生成算法2.2 剪枝处理(防止过拟合)2.3 停止条件2.4 棵决策树的生成过程2.5 决策树的损失函数3.请描述K-means的原理&#…

Python实例讲解 -- 解析xml

Xml代码 <?xml version"1.0" encoding"utf-8"?> <info> <intro>信息</intro> <list id001> <head>auto_userone</head> <name>Jordy</name> <number&g…

python(22)--面向对象1-封装

python面向对象1面向过程/面向对象2面向对象核心概念-类3类的设计3.1类三要素-类名、属性、方法3.2面向对象基础语法3.2.1查看对象的常用方法3.2.2类定义3.2.3创建类对象3.2.4__init__()方法3.2.5 self参数3.2.6类内置方法和属性_del_()方法--销毁对象_str_()方法--定制化输出对…

机器学习问题总结(02)

文章目录1.stacking模型以及做模型融合的知识1.1 从提交结果中融合1.2 stacking1.3 blending2. 怎样去优化SVM算法模型的&#xff1f;2.1 SMO优化算法2.2 libsvm 和 Liblinear3.现有底层是tensorflow的keras框架&#xff0c;如果现在有一个tensorflow训练好的模型&#xff0c;k…

C/C++常见面试题(四)

C/C面试题集合四 目录 1、什么是C中的类&#xff1f;如何定义和实例化一个类&#xff1f; 2、请解释C中的继承和多态性。 3、什么是虚函数&#xff1f;为什么在基类中使用虚函数&#xff1f; 4、解释封装、继承和多态的概念&#xff0c;并提供相应的代码示例 5、如何处理内…

机器学习问题总结(03)

文章目录1.struct和class区别&#xff0c;你更倾向用哪个2.kNN&#xff0c;朴素贝叶斯&#xff0c;SVM的优缺点&#xff0c;各种算法优缺点2.1 KNN算法2.2 朴素贝叶斯2.3SVM算法2.4 ANN算法2.5 DT算法3. 10亿个整数&#xff0c;1G内存&#xff0c;O(n)算法&#xff0c;统计只出…

redis——新版复制

sync虽然解决了数据同步问题&#xff0c;但是在数据量比较大情况下&#xff0c;从库断线从来依然采用全量复制机制&#xff0c;无论是从数据恢复、宽带占用来说&#xff0c;sync所带来的问题还是很多的。于是redis从2.8开始&#xff0c;引入新的命令psync。 psync有两种模式&a…

Python(23)-面向对象2-继承,多态

面向对象基本概念2--继承、多态1.继承基本概念2.子类重写父类方法2.1完全重写2.2扩展父类方法--super()3.多继承4.新式类和旧式类5.多态基本概念6.类属性、类方法-classmethod6.1类属性6.2类方法classmethod7.静态方法staticmethod8.案例分析本系列博文来自学习《Python基础视频…

机器学习问题总结(04)

文章目录1、MLP的BP过程2、maxpool层BP怎么做的2.1 **mean pooling**2.2 max pooling3、opencv遍历像素的方式&#xff0c;讲两种&#xff1f;4、传统图像处理有了解过吗&#xff0c;比如去噪 特征提取5、问在linux下写过代码吗&#xff1f; 问用了什么软件工具6、LDA&#xff…

持续更新的Zookeeper知识总结

简介 Zookeeper为分布式应用 提供了高效且可靠的分布式协调服务&#xff0c;提供了诸如统一命名服务、发布订阅、负载均衡、配置管理和分布式锁等分布式的基础服务。 设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效可靠的原语集&#xf…

机器学习问题总结(05)

文章目录1. Hadoop、Spark1.1 hadoop1.2 spark1.3 MapReduce1.3.1 概念1.3.1 MapReduce执行流程2、机器学习场景3、推荐系统&#xff08;预测电影等级&#xff09;4、CTR&#xff08;点击通过率 -> 广告&#xff09;5、SVM5.1 svm的原理5.2 SVM的核技巧6、K-means6.1 K-mean…

基于Socket的UDP和TCP编程介绍

一、概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(streamsocket)的一种。 UDP:用户数据报协议。U…

Java多线程——基本概念

线程和多线程 程序&#xff1a;是一段静态的代码&#xff0c;是应用软件执行的蓝本 进程&#xff1a;是程序的一次动态执行过程&#xff0c;它对应了从代码加载、执行至执行完毕的一个完整过程&#xff0c;这个过程也是进程本身从产生、发展至消亡的过程 线程&#xff1a;是比…

textCNN初探

文章目录目录1.什么是textCNN1.1 textCNN 提出的背景1.2 textCNN 合理性分析2.textCNN相比于传统图像领域的CNN有什么特点&#xff1f;3.textCNN例子讲解3.1 参数和超参数3.2 textCNN的数据3.3 textCNN的网络结构定义3.4 代码目录 1.什么是textCNN 1.1 textCNN 提出的背景 我…

词嵌入初探

文章目录目录1.词嵌入产生的背景1.1 NLP关键&#xff1a;语言的表示1.2 NLP词的表示方法类型1.2.1 独热表示one-hot1.2.2 词的分布式表示distributed representation1.3 NLP中的语言模型1.4 词的分布表示1.4.1 基于矩阵的分布表示1.4.2 基于聚类的分布表示1.4.3 基于神经网络的…

VIM使用系列之一——配置VIM下编程和代码阅读环境

作者&#xff1a;gnuhpc from http://blog.csdn.net/gnuhpc http://gnuhpc.wordpress.com/ 本文环境&#xff1a;ubuntu 10.10/vim7.2 前言&#xff1a;一年前写过一篇关于VIM的C/C编程环境的文字&#xff0c;一年中又接触了很多东西&#xff0c;深入使用中发现其实还是需要有…

fastText初探

目录&#xff1a;1、应用场景2、优缺点3、FastText的原理4、FastText词向量与word2vec对比 目录&#xff1a; 1、应用场景 fastText是一种Facebook AI Research在16年开源的一个文本分类器。 其特点就是fast。相对于其它文本分类模型&#xff0c;如SVM&#xff0c;Logistic …

python中使用“if __name__ == '__main__'”语句的作用

首先用最简洁的语言来说明一下 if __name__ __main__: 的作用&#xff1a;防止在被其他文件导入时显示多余的程序主体部分。 先举个例子&#xff0c;如果不用if __name__ __main__: 会发生什么事&#xff1a; 首先在yy.py中调用cs.py #yy.pyimport csprint(引用cs)cs.cs()p…

redis——sentinel

什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理/多个 Redis 服务器,该系统执行以下三个任务: 监控: 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒:当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他…

FM,FFM及其实现

在推荐系统和计算广告业务中&#xff0c;点击率CTR&#xff08;click-through rate&#xff09;和转化率CVR&#xff08;conversion rate&#xff09;是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值&#xff0c;增加广告及电商收入有重要的指导作用。业界…