数据库集合运算与关系代数
2016-03-17 15:45
507 查看
一:域:具有一组相同类型的数据集合。
二:笛卡尔积:域上定义的一种集合运算,就是将每个域中的元素与其它域中的元素分别去组合,组合得到的笛卡尔积中每一个元素叫做一个元组。如图,是D1和D2的笛卡尔积。
三:关系:在笛卡尔积中取出一个子集,可以构成关系。关系中的每个元素是关系中的元组,关系是笛卡尔积的真子集。
四:键
候选键:某个能唯一标识一个元组的属性值或者域称为候选键。
主键:从候选键中选出一个键成为主键。
全键:所有的属性组或者域是这个元组的候选键,我们叫全键。
外键:Y是R关系中的属性组,但不是R关系中的主键,但是是S关系中的主键,此时Y就叫做R关系的外键。
五:数据库的三条完整性规则
(1):实体完整性:若属性A是关系R的主属性,则A不能取空值。
(2):参照完整性:回忆外键的定义,若F是关系R的外键,它与关系S主键相对应,对于R中的每个元组在F上的取值,要么等于S中的主键值,要么为空 。
(3):用户定义的完整性:任何数据库都应该支持实体完整性和参照完整性,并且对于不同的应用我们应该加一些别的约束条件。
六:关系代数
1:
2:笛卡尔积也是这样的一种操作,m元关系就是有m个域。m元关系和n元关系进行笛卡尔积得到(m+n)元关系。
3:选择:选出在关系R中满足给定条件的诸元组。
4:投影:选出列组成新的关系,会指定选择的列号和集合名称。
5:连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
自然连接:自然连接是特殊的等值连接,它会去掉相同的属性组。
等值连接:条件是从R和S的笛卡尔积中选取A,B属性值相等的元组。
外连接:把应该舍弃的全部保留下来,在其他对应属性上用null。
6:除:对于两个关系R(X,Y)和S(Y,Z),R/S得到的是
R:
S:
X的象集是针对R中x的每一个取值而言的:实际上就是对应Y关系上的取值,X关系是A,Y关系是B和C。
找到了X分量上x的象集,我们继续找S在Y投影上的集和,在S关系中,S在Y关系上(也就是B和C关系上)的投影为:
下面我们只用x的象集和S在Y关系上的投影({(b1,c2)(b2,c1)})进行对比就行了,发现只有a1和a2的象集包含这个投影,也就是R/S= {a1,a2}
现在我们会计算除法了,它到底有什么意义:除的意义在于查询全部,就像我们的a的象集中完全包括S在Y关系上的投影的a的值才能被选出来,它们是完全符合S元素的。
D1=姓名集合(NAME)={yang,li} D2=年龄集合(AGE)={17,18}
二:笛卡尔积:域上定义的一种集合运算,就是将每个域中的元素与其它域中的元素分别去组合,组合得到的笛卡尔积中每一个元素叫做一个元组。如图,是D1和D2的笛卡尔积。
NAME | AGE |
---|---|
yang | 17 |
yang | 18 |
li | 17 |
li | 18 |
在D1XD2中取出来一个关系如下所示,关系才是有意义的。
NAME | AGE |
---|---|
yang | 17 |
li | 18 |
候选键:某个能唯一标识一个元组的属性值或者域称为候选键。
主键:从候选键中选出一个键成为主键。
全键:所有的属性组或者域是这个元组的候选键,我们叫全键。
外键:Y是R关系中的属性组,但不是R关系中的主键,但是是S关系中的主键,此时Y就叫做R关系的外键。
五:数据库的三条完整性规则
(1):实体完整性:若属性A是关系R的主属性,则A不能取空值。
学生(学号,姓名,性别,专业号) 学号为主键,则学号一定不能为空。
(2):参照完整性:回忆外键的定义,若F是关系R的外键,它与关系S主键相对应,对于R中的每个元组在F上的取值,要么等于S中的主键值,要么为空 。
学生(学号,姓名,性别,专业号) 主键:学号 专业(专业号,专业名) 主键:专业号 这里的专业号是学生的外键,它与专业的主键相对应,因此学生专业号就有两种取值,一是其专业对应中的专业号,二是空,表示此学生目前没有被分配专业。
(3):用户定义的完整性:任何数据库都应该支持实体完整性和参照完整性,并且对于不同的应用我们应该加一些别的约束条件。
六:关系代数
1:
并,差,交按照我们普通的集合运算的方式理解就好了。
2:笛卡尔积也是这样的一种操作,m元关系就是有m个域。m元关系和n元关系进行笛卡尔积得到(m+n)元关系。
3:选择:选出在关系R中满足给定条件的诸元组。
4:投影:选出列组成新的关系,会指定选择的列号和集合名称。
5:连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
自然连接:自然连接是特殊的等值连接,它会去掉相同的属性组。
等值连接:条件是从R和S的笛卡尔积中选取A,B属性值相等的元组。
外连接:把应该舍弃的全部保留下来,在其他对应属性上用null。
6:除:对于两个关系R(X,Y)和S(Y,Z),R/S得到的是
R在X上满足下面条件的投影,条件是:元素在X分量上x的象集包括S在Y投影上的集合。有关象集的定义在下面:
R:
A | B | C |
---|---|---|
a1 | b1 | c2 |
a2 | b1 | c2 |
a3 | b4 | c6 |
a1 | b2 | c1 |
a4 | b6 | c6 |
a2 | b2 | c1 |
B | C | D |
---|---|---|
b1 | c2 | d1 |
b2 | c1 | d1 |
a1的象集:(b1,c2)(b2,c1) a2的象集:(b1,c2)(b2,c1) a3的象集:(b4,c6) a4的象集:(b6,c6)
找到了X分量上x的象集,我们继续找S在Y投影上的集和,在S关系中,S在Y关系上(也就是B和C关系上)的投影为:
(b1,c2)(b2,c1)
下面我们只用x的象集和S在Y关系上的投影({(b1,c2)(b2,c1)})进行对比就行了,发现只有a1和a2的象集包含这个投影,也就是R/S= {a1,a2}
现在我们会计算除法了,它到底有什么意义:除的意义在于查询全部,就像我们的a的象集中完全包括S在Y关系上的投影的a的值才能被选出来,它们是完全符合S元素的。
相关文章推荐
- 数据库MySQL多个数据库服务冲突
- 扒扒数据库长长知识(下载资源组合看day2)之 07 (子查询重点+难点)(一般子查询)
- Redis+Nginx+Tomcat实现Session共享
- mysql explain用法和结果的含义(转)
- oracle数据库-修改表空间表数据文件
- java操作mysql实例 让代码跑起来
- MySQL 四种事务隔离级的说明
- MySql练习+加源代码
- mysql常用函数
- 100个MySQL优化技巧和提示
- WEB服务器连接不上MONGODB的常用诊断方法
- MYSQL--my.cnf配置中文详解
- oracle存储过程的基本语法
- Oracle高级查询之OVER (PARTITION BY ..)
- 解析MySQL数据库性能优化的六大技巧
- HQL && SQL
- MYSQL 5.7.9 开启慢查询日志
- MySQL的TIME_WAIT连接过多的解决方法
- mysql 先排序后分组再排序查询数据
- 从简单Sql探索优化之道