《数据库原理与应用(第3版)》——3.3 关系模型的形式化定义

本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第3章,第3.3节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 关系模型的形式化定义

在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型来表示——关系。关系模型是建立在集合代数的基础上的,本节我们将从集合论的角度给出关系数据结构的形式化定义。

3.3.1 形式化定义

为了给出关系的形式化的定义,首先定义笛卡儿积。
设D1,D2,…,Dn为任意集合,定义笛卡儿积D1,D2,…,Dn为:
D1×D2×…×Dn = {(d1,d2,…,dn) | di ∈Di,i = 1,2,…,n }
其中每一个元素(d1,d2,…,dn)称为一个n元组(n-tuple),简称元组。元组中每一个di称为一个分量。
D1={计算机系,信息系}
D2={李勇,刘晨,吴宾}
D3={男,女}
则D1×D2×D3笛卡儿积为:
D1×D2×D3={(计算机系,李勇,男),(计算机系,李勇,女),

       (计算机系,刘晨,男),(计算机系,刘晨,女),
       (计算机系,吴宾,男),(计算机系,吴宾,女),
       (信息系,李勇,男),(信息系,李勇,女),
       (信息系,刘晨,男),(信息系,刘晨,女),
       (信息系,吴宾,男),(信息系,吴宾,女)}

其中(计算机系,李勇,男)、(计算机系,刘晨,男)等都是元组。“计算机系”、“李勇”、“男”等都是分量。
笛卡儿积实际上就是一个二维表,上述笛卡儿积的运算如图3-2所示。

screenshot

图3-2中,笛卡儿积的任意一行数据就是一个元组,它的第一个分量来自D1,第二个分量来自D2,第三个分量来自D3。笛卡儿积就是所有这样的元组的集合。
根据笛卡儿积的定义可以给出一个关系的形式化定义:笛卡儿积D1,D2,…,Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。
形式化的关系定义同样可以把关系看作二维表,给表的每个列取一个名字,称为属性。n元关系有n个属性,一个关系中的属性的名字必须是唯一的。属性Di的取值范围(i = 1,2,…,n)称为该属性的值域(domain)。
比如上述的例子,取子集:
R = {(计算机系,李勇,男),(计算机系,刘晨,男),(信息系,吴宾,女)}
就构成了一个关系。二维表的形式如表3-3所示,把第一个属性命名为“所在系”,第二个属性命名为“姓名”,第三个属性命名为“性别”。
screenshot

从集合论的观点也可以将关系定义为:关系是一个有K个属性的元组的集合。

3.3.2 对关系的限定

关系可以看作二维表,但并不是所有的二维表都是关系。关系数据库对关系是有一些限定的,归纳起来有如下几个方面。
1)关系中的每个分量都必须是不可再分的最小数据项。即每个属性都不能再被分解为更小的属性,这是关系数据库对关系的最基本的限定。例如表3-4就不满足这个限定,因为在这个表中,“高级职称人数”不是最小的数据项,它是由两个最小数据项(“教授人数”和“副教授人数”)组成的一个复合数据项。对于这种情况只需要将“高级职称人数”数据项分解为“教授人数”和“副教授人数”两个数据项即可,如表3-5所示。
screenshot

2)表中列的数据类型是固定的,即每个列中的分量是同类项的数据,来自相同的值域。
3)不同的列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。
(4)关系表中列的顺序不重要,即列的次序可以任意交换,不影响其表达的语义。比如将图3-5中的“教授人数”列和“副教授人数”列交换并不影响这个表所表达的语义。
5)行的顺序也不重要,交换行数据的顺序不影响关系的内容。其实在关系数据库中并没有第一行、第二行等这样的概念,而且数据的存储顺序也与数据的输入顺序无关,数据的输入顺序不影响对数据库数据的操作过程,也不影响其操作效率。
6)同一个关系中元组不能重复,即在一个关系中任意两个元组的值不能完全相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值