第二章 关系模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. 若Di(i=1,2,……n)为有限集,Di中的集合元素个数称为Di的 Di(i=1 ……n 为有限集,Di中的集合元素个数称为Di的 基 数 , 用 mi ( i=1 , 2 , ……n ) 表 示 , 则 笛 卡 尔 积 i=1 ……n D1×D2×……×Dn的基数M(即元素(d1,d2,……dn)的个数) ……×Dn的基数M 即元素( ,d2 ……dn)的个数) 为所有域的基数的累乘之积, 为所有域的基数的累乘之积,即 M=
第二章 关系模型
上一章介绍了三种主要的数据模型: 上一章介绍了三种主要的数据模型: 三种主要的数据模型
层次模型 网状模型 关系模型 其中关系模型简单灵活,并有着坚实的理论基础,已 其中关系模型简单灵活,并有着坚实的理论基础,已 成为当前最流行的数据模型。 成为当前最流行的数据模型。
本章主要讲述: 本章主要讲述:
◎ 如上例中的教师—课程数据库的关系模型就是这样建 如上例中的教师— 立的。 立的。
2.2 关系的定义
在关系模型中, 数据是以二维表的形式存在的 , 在关系模型中 , 数据是以二维表的形式存在的, 这个二维表就叫做关系。 这个二维表就叫做关系。 关系理论是以 集合代数理论为基础的 , 因此 , 关系理论 是以集合代数 理论为基础的, 因此, 我 们可以用集合代数给出二维表的“关系”定义。 们可以用集合代数给出二维表的“关系”定义。 为了从集合论的角度给出关系的定义, 为了从集合论的角度给出关系的定义 , 我们先引 入域和笛卡尔积的概念。 笛卡尔积的概念。
4. 数学上关系是笛卡尔积的任意子集,但在实际应用中关系 数学上关系是笛卡尔积的任意子集, 是笛卡尔积中所取的有意义的子集。 例如在表2 是笛卡尔积中所取的有意义的子集 。 例如在表 2.1 中选取 一个子集构成如下关系, 一个子集构成如下关系,显然不符合实际情况
姓名 李力 李力 性别 男 女
在关系模型中,关系可进一步定义为: 在关系模型中,关系可进一步定义为:
由上例可以看出, 由上例可以看出 , 在一个关系中可以存放两类信 息:
◎ 一类是描述实体本身的信息 ◎ 一类是描述实体(关系)之间的联系的信息 一类是描述实体(关系)
在层次模型和网状模型中, 把有联系的实体 ( 在层次模型和网状模型中 , 把有联系的实体( 元 组 ) 用指针链接起来, 实体之间的联系是通过指 用指针链接起来 , 实体之间的联系是通过 指 针来实现的。 来实现的。 而关系模型则采用不同的思想, 即用 二维表来表 而关系模型则采用不同的思想 , 即用二维表 来表 示实体与实体之间的联系, 示实体与实体之间的联系 , 这就是关系模型的本 质所在。 质所在。 所以, 在建立 关系模型时 所以 , 在建立关系模型 时 , 只要把的所有的实体 及其属性用关系框架来表示, 及其属性用关系框架来表示 , 同时把实体之间的 关系也用关系框架来表示, 关系也用关系框架来表示 , 就可以得到一个关系 模型。 模型。
2.2.3 关系(Relation) 关系(Relation) 笛卡尔积D 笛卡尔积 D1×D2×…×Dn的任一子集称为定义 Dn 的任一子集称为定义 在域D 在域 D1 , D2 , …Dn 上的n 元 关系 ( Relation ) , Dn上的 n 关系( Relation) 可用R 可用R(D1,D2……Dn)表示 ……Dn) ◎ 如上例D1×D2笛卡尔积的子集可以构成教师关系T1, 如上例D 笛卡尔积的子集可以构成教师关系T
2.2.1 域(Domain) Domain) 域是一组具有相同数据类型的值的集合, 域是一组具有相同数据类型的值的集合 , 又称为 值域。 值域。(用D表示) 表示)
◎ 例如整数、实数、字符串的集合。 例如整数、实数、字符串的集合。
域中所包含的值的个数称为域的基数 ( 域中所包含的值的个数称为域的 基数( 用 m 表 示)。 关系中用域表示属性的取值范围。 关系中用域表示属性的取值范围。例如:
教师关系T
TNO 教师号 TN 姓名 SEX 性别 AGE 年龄 PROF 职称 SAL 工资 COMM 岗位津贴 DEPT 系别
课程关系C 课程关系C
CNO 课程号 CN 课程名 CT 课时
授课关系TC 授课关系TC
TNO 教师号 CNO 课程号
图2.1 教师—课程数据库的关系模型 教师—
从各个关系的框架中, 从各个关系的框架中 , 我们可以很容易看出哪两 个关系之间有联系。 个关系之间有联系。例如:
关系模型的数据结构 关系的定义和性质 关系数据库的基本概念 关系运算
2.1 关系模型
关系模型就是用二维表格 结构来表示实体及实体 关系模型就是用 二维表格结构来表示实体及实体 之间联系的模型。 之间联系的模型。 关系模型是各个关系的框架的集合, 关系模型是各个关系的框架的集合 , 即关系模型 是一些表格的格式 , 其中包括关系名 、 属性名 、 是一些 表格的格式, 其中包括关系名、 属性名、 关键字等。 关键字等。 例如, 例如 , 教学数据库中教师与课程的关系模型如图 2.1所示。 所示。
◎ D1={李力,王平,刘伟} ={李力,王平,刘伟} m1=3 ◎ D2={男,女} ={男 m2=2 ◎ D3={47,28,30} ={47,28,30} m3=3 ◎ 其中,D1, D2, D3为域名 ,分别表示教师关系中姓 其中, 为域名, 名、性别、年龄的集合。 性别、年龄的集合。
域名无排列次序, 域名无排列次序,如D2={男,女}={女,男} ={男 }={女
2.3 关系的性质
尽管关系 与 二维表格、 传统的 数据文件是非常类 尽管 关系与 二维表格 、 传统的数据文件 是非常类 似的,但它们之间又有重要的区别。 似的,但它们之间又有重要的区别。 严格地说, 关系是种规范化了的 二维表中行的集 严格地说 , 关系 是种规范化了的二维表中行的集 合 , 为了使相应的数据操作简化, 在关系模型中 , 为了使相应的数据操作简化 , 在关系模型中, 对关系作了种种限制, 对关系作了种种限制,关系具有如下特性:
定义在域D 定义在域 D1 , D2 , ……Dn( 不要求完全相异 ) 上的关系由关 ……Dn ( 不要求完全相异) 系头(Heading)和关系体(Body)组成。 系头(Heading)和关系体(Body)组成。
◎ 关系头:由属性名A1,A2,…,An的集合组成,每个属性Ai正好 关系头:由属性名A An的集合组成,每个属性Ai正好 对应一个域Di(i=1 对应一个域Di(i=1,2,…,n),关系头,也称关系框架,相对 关系头,也称关系框架, 固定,是关系的数据结构的描述。 固定,是关系的数据结构的描述。 ◎ 关系体:是指关系结构中的内容或者数据,并非固定不变,它随 关系体:是指关系结构中的内容或者数据,并非固定不变, 元组的建立、删除或修改而变化。 元组的建立、删除或修改而变化。
如表2 如表2.2所示:
姓名 李力 王平 刘伟 性别 男 女 男
表2.2 关系T1 关系T1
几点说明: 1. R为关系名,n称为关系的目或度(Degree)。 为关系名, 称为关系的目或度(Degree) 当n=1时,称为单元关系。 n=1 称为单元关系。 当n=2时,称为二元关系。 n=2 称为二元关系。 … 当n=n时,称为n元关系。 n=n时 称为n元关系。 如上例为二元关系,关系名为T 如上例为二元关系,关系名为T。
◎ 1. 元素中的每一个di叫做一个分量(Component),来 元素中的每一个di叫做一个分量(Component), 自相应的域(di∈Di) 自相应的域(di∈Di) ◎ 2. 每一个元素(d1,d2,d3,…,dn)叫做一个n元 每一个元素( dn)叫做一个n 组 (n-tuple) , 简称 元组( Tuple) 。 但元组不是di的 tuple) 简称元组 ( Tuple) 但元组不是di的 集合,元组的每个分量(di)是按序排列的。 集合,元组的每个分量(di)是按序排列的。如: ◎ (1,2,3)≠(2,3,1)≠(1,3,2); ◎ 而集合中的元素是没有排序次序的,如(1,2,3)= 而集合中的元素是没有排序次序的, (2,3,1)=(1,3,2)。
2.2.2 笛卡尔积(Cartesian Product) 笛卡尔积(Cartesian 给定一组域D 给定一组域 D1 , D2 , … , Dn( 它们可以包含相 Dn ( 同的元素, 即可以完全不同 , 同的元素 , 即可以完全不同, 也可以部分或全部 相 同 ) 。 D1 , D2 , … , Dn 的 笛 卡 尔 积 为 D1×D2×……×Dn={ ( d1 , d2 , … , dn ) ……× |di∈Di,i=1,2,…,n}。 |di∈Di,i=1 n}。 由定义可以看出,笛卡尔积也是一个集合。 由定义可以看出,笛卡尔积也是一个集合。 其中:
◎ 教师关系和授课关系有公共的属性“教师号”,则表 教师关系和授课关系有公共的属性“教师号” 明这两个关系有联系。 明这两个关系有联系。 ◎ 而课程关系和授课关系有公共的属性“课程号”,则 而课程关系和授课关系有公共的属性“课程号” 表明这两个关系也有联系。 表明这两个关系也有联系。 ◎ 至于元组之间的联系,则与具体的数据有关。只有在 至于元组之间的联系,则与具体的数据有关。 公共属性上具有相同属性值的元组之间才有联系。 公共属性上具有相同属性值的元组之间才有联系。
2. 该子集中的元素是关系中的元组,用r 表示,关系中元组 该子集中的元素是关系中的元组, 表示, 个数是关系的基数。 个数是关系的基数 。 如 ( 李力 , 男 ) , ( 王平, 女 ) , 李力, 王平 , (刘伟,男)为三个元组,关系T的基数为3。 刘伟, 为三个元组,关系T的基数为3
(1)如果一个关系的元组个数是无限的,则称为无限关系; 如果一个关系的元组个数是无限的, (2)如果一个关系的元组个数是有限的,则称为有限关系。 如果一个关系的元组个数是有限的,则称为有限关系。 (3)由于计算机存储系统的限制,我们一般不去处理无限关系,而 由于计算机存储系统的限制,我们一般不去处理无限关系, 只考虑有限关系。 只考虑有限关系。
3. 同样可以把关系看成一个二维表。其中, 同样可以把关系看成一个二维表。其中,
(1)表的框架由域Di(i=1,2,……n)构成; 表的框架由域Di(i=1 ……n (2)表的任意一行对应一个元组; (3)表的每一列来自同一域; (4)域可以相同,为了加以区别,每列起一个名字,称为属性,n 域可以相同,为了加以区别,每列起一个名字,称为属性, 目关系有n 个属性,属性的名字唯一,属性的取值范围Di(i=1 目关系有n 个属性,属性的名字唯一,属性的取值范围Di(i=1 , 2,…,n)称为值域 称为值域 (5)具有相同关系框架的关系成为同类关系,例如,有另一个关系 具有相同关系框架的关系成为同类关系,例如, T2,如表2.3所示: 如表2 姓名 性别 张雪 女 张兰 女 T1和T2是同类关系。 是同类关系。
∏m
i =1
nΒιβλιοθήκη Baidu
i
例如:上述表示教师关系中姓名、 例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为: D1×D2={(李力,男),(李力,女),(王平,男),(王平, ={(李力, 李力, 王平, 王平, 女),(刘伟,男),(刘伟,女)} 刘伟, 刘伟, 其中: 李力、王平、刘伟、 李力、王平、刘伟、男、女都是分量 (李力,男),(李力,女)等是元组 李力, 李力, 其基数M=m1 其基数M=m1×m2=3*2=6 元组的个数为6 元组的个数为6
4. 笛卡尔积可用二维表的形式表示。 笛卡尔积可用二维表的形式表示。 例如,上述的6个元组可表示成表2 例如,上述的6个元组可表示成表2.1。
姓名 李力 李力 王平 王平 刘伟 刘伟 性别 男 女 男 女 男 女
表2.1 D1和D2的笛卡尔积 D1和D2的笛卡尔积
由上例可以看出, 笛卡尔积实际是一个二维表, 由上例可以看出 , 笛卡尔积实际是一个二维表 , 表的 框架由域构成, 表的任意一行就是一个元组, 框架由域构成 , 表的任意一行就是一个元组 , 表中的 每一列来自同一域, 如第一个分量来自D 每一列来自同一域, 如第一个分量来自D1, 第二个分 量来自D 量来自D2。