当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL:小编浅谈关系代数中的语义

MYSQL
mysql "too many connections" 错误 之 mysql解决方法
MySQL: mysql is not running but lock exists 的解决方法
使用mysql中遇到的几个问题
MySQL一个索引最多有多少个列?真实的测试例子
MySQL里Create Index 能否创建主键 Primary Key
MySQL 创建索引(Create Index)的方法和语法结构及例子
MYSQL 优化常用方法
linux mysql 找回密码
mysql 动态执行存储过程语句
MySQL 查找价格最高的图书经销商的几种SQL语句
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
mysql 查询表中平均分最低的班级
mysql 左连接、右连接和内连接
Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
Mysql 插入中文及中文查询 (修改+调试)
mysql 数据表中查找重复记录
MySql .frm数据库文件导入的问题
解决hibernate+mysql写入数据库乱码
mySQL UNION运算符的默认规则研究

MYSQL 中的 MySQL:小编浅谈关系代数中的语义


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 79 ::
收藏到网摘: n/a

关系代数的语义,也行对刚刚入门的新手来说是个不小的帮助,所以今天和大家分享关系代数中的语义!

文章中的语义中操作符为:并、交、差、积。下面和大家一一谈及。希望对大家有所帮助。

1.

数学中两个集合的并是这两个集合的所有元素组成的集合。因为一个关系是(或更确切

地说是包含)一个集合,即一个元组的集合,所以构造这样两个集合的并是完全可能的;所

得结果包含了出现在任一个或两个原关系中的所有元组。例如,出现在关系变量S中的供应

商元组的集合与出现在关系变量P中的零件元组的集合的并当然是一个集合。

然而,尽管这一结果是一个集合,却不是一个关系;关系不能含有不同类型的元组,其

中的元组必须是同类的。当然,我们希望结果是一个关系,因为要保持封闭性。所以,关系

代数中的并,不是通常数学中的并;它是一种特殊类型的并,要求两个参与操作的关系是同

一类型—即它们或者都包含供应商元组,或者都包含零件元组,而不能是两者的混合。如

果两个关系属于同一类型,那就可以进行并操作,得到的结果是一个相同类型的关系;换句

话说,封闭的特性被保持了下来。

下面是关系并操作的定义:给定两个相同类型的关系AB,两者的并即A UNION B是相同类型的一个关系,关系的主体由出现在A中或B中或同时出现在两者之中的所有元组组成。

2.

由于和并基本相同的原因,关系交操作符的操作对象必须是相同类型的。给定类型相同的关系AB,它们的交A INTERSECT B是一个相同类型的关系,关系的主体包含同时出现在AB中的所有元组。

3.

像并和交一样,关系的差操作符也要求操作对象是同一类型。给定两个类型相同的关系AB,它们的差A MINUS B(两者有先后次序)是一个与它们的类型相同的关系,关系的主体包含属于A但不属于B的所有元组。

4.

数学里的两个集合的笛卡尔积是满足如下条件的有序对的集合:每个有序对的第一个元素来自于第一个集合,第二个元素来自第二个集合。因此,两个关系的笛卡尔积可粗略地说是有序元组对的集合。但我们想保持封闭的特性;换句话说,我们想要结果包含元组本身,而不是有序的元组对。因此,关系的笛卡尔积是对这一操作的一个扩充,其中的每个有序元

组对代替以两个相关元组相并得出的一个元组(这里的“并”是一般集合理论上的并,而不是特殊的关系意义上)。因此给定:

A 1 : a 1A 2 : a 2?A m : a m

B 1 : b 1B 2 : b 2?B n : b n

两者的并是一个单个元组:

A 1 : a 1A 2 : a 2?A m : a mB 1 : b 1B 2 : b 2?B n : b n

笛卡尔积连接中的另一个问题是:需要结果关系有一个正确形式的表头(即正确的关系类型)。现在已明确的是结果的表头包含了两个输入关系的所有属性。如果两个关系的表头有共同的属性名,问题就会出现了;如果操作允许,结果的表头会有两个相同名称的属性,这就不再是一个“好的形式”(w e l l - f o r m e d)。如果对两个有相同属性名称的关系进行笛卡尔积操作,必须首先用R E N A M E操作符适当地更改属性的名称。