第2章 关系数据库数学模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EER模型到关系模式的转换
实体类型的转换 每种实体型可由一个关系模式来表示。 实体类型的属性为关系的属性; 实体类型的主键作为关系的主键。 如前面所述“学生”实体类型可以由如下关系模 式表示: 学生(学号,姓名,性别,出生年月,入学时间, 系) 二元关系的转换 分析一个1:n 的二元关系:
EER模型到关系模式的转换(续II)
转换方法 对于强制性成员类 如果一个实体是某个联系的强制性成员,则在 二元关系转化为关系模式的实现方案中要增加 一条完整性约束。具体操作为:如果实体类型 E2在实体类型E1的n:1联系中是强制性成员, 则的E2关系模式中要包含E1的主属性。 如规定每一项工程必须有一个部门管理,则实 体类型Project是联系”Runs”的强制性成员, 因而在Project的关系模式中包含部门 Department的主属性。
不同的列用不同的名字来区分,称为属 性。n目关系有n个属性。 如: R1={(a,1),(b,2)} R2={(a,1),(a,2),(b,1),(b,3)} 关系是元组的集合,是笛卡尔积的子集。 一般来说,一个关系只取 笛卡尔积的子集才具有意义。此外,还要对 关系的要求进行规范,将没有实际意义的元 组排除。(假如上面A为教师,B为课程,同 时限制一个教师只允许教一门课程的处理)
பைடு நூலகம்经理
1
管理
n
职工
EER模型到关系模式的转换(续I)
强制性成员 如果一种联系表示实体类型的各种实例必须具有 这种联系,则说明该实体的成员类在这种联系下 是强制性的。 上述1:n的“管理”联系表示了一个经理管理许多 职工。如果规定每个职工必须有一个管理者,则 “职工”中的成员类在联系“管理”中是强制性 的。 非强制性成员 与上述定义相对应的概念。 上述1:n的“管理”联系中,如果允许存在不用管 理者的职工,则“职工”中的成员类在联系“管 理”中是非强制性的。
关系完整性(续I)
样例: 学生(学号,姓名,年龄,性别,专业号) 专业(专业号,专业号) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩)
实体完整性规定基本关系的所有主属性不能取空值。
参照完整性规定基本关系的外码取值。如上述学生关系 的“专业号”属性与专业关系的主码“专业号”对应, 因此“专业号”属性是学生关系的外码。它的取值规定 如下: a.空值表示尚未给该学生分配专业 b.非空值 必须是目标关系-专业关系中某个元 组的“专业号”值。
关系(续III)
在许多实际的数据库产品中,基本表并不 完全具有上述性质。如Oracle、Foxpro等,它 们都允许关系表中存在两个基本点完全相同的 元组,除非用户特别定义了相应的约束条件。 关系模型还要求关系必须是规范化的,即 必须满足一定的规范条件。基本条件:关系的 每一个分量必须是一个不可分的数据项。
通常简记为:R(U)或R(A1,A2,…,An) 其中A1,A2,…An为属性名。D及Dom则直接 说明为属性 的类型和长度。
关系模式(续I)
关系模式 - 型 关系 - 值(内容) *有时混用,但可从上下文进行区分。 关系是关系模式在某一个时刻的状态或 内容。关系模式是静态的、稳定的,而关系 是动态的、随时间不断变化的,因为关系操 作在不断地更新着数据库中的数据。实际当 中,常把关系模式和关系都称为关系。
关系(续I)
候选玛(Candidate key):可唯一 标识每一元组的属性(组)。 主码( Primary key):候选码中选 择其一称为主码。相应属性组为主 属性。 非码属性(Non-key attribute):不 包含在任何候选码中的属性。 全码(All-Key):用所有属性来唯一 标识表中元组时的候选码。
A a a a b b b
B 1 2 3 1 2 3
关系
3.关系
D1 x D2 x…x Dn的子集叫做在域 D1,D2,..Dn上的关系。
表示为: R(D1,D2,…,Dn) 其中,R为关系名;n为关系的度或目。 关系中的每个元素是关系中的元组,通常用t表示。 n=1,单元关系(unary relation); n=2,二元关系(Binary relation)。 关系为卡积的有限子集,也为二维表,行对应元 组,列对应于域。
D1 x D2 x…x Dn={(d1,d2,…,dn) | di∈Di, i=1,2,…,n} (d1,d2,…,dn) --------n元组(n-tuple) di--------元组的每一分量(Component) Di为有限集时,其基数为mi,则卡积的基 数为M=m1*m2*…*mn
多对多的二元关系 m:n的二元关系通常要引入一个分离关系 来表示两个实体类型之间的联系,该关系 由两个实体类型的主属性及其联系属性组 成。如学生与课程的m:n联系及学生选课 的关系转换。
EER模型到关系模式的转换(续V)
实体内部之间联系的转换 实体内部之间1:1的联系 如非强制性的婚姻关系,可引入一个分离关系 实体内部之间1:n的联系 如职工与管理人员的联系。分强制与非强制联系。 实体内部之间m:n的联系 一般要引入分离关系
三元关系的转换 一般要引入分离关系 如公司、产品和国家之间的m:n:p的三元关系及销 售联系。
关系代数
关系代数概述 关系代数的运算符 集合运算符
并U 交∩ 差 专门的关系运算符
笛卡尔积 × 选择σ 投影π 连接 除 算术比较符
> ≥ < ≤ = ≠ 逻辑运算符
非¬ 与^ 或v
范式(Normal Form):规范化的关系。
关系模式
关系模式(Relation schema)
对关系的描述 关系是元组的集合(属性、域及其映象关系) 元组语义(使n目谓词<属性>为真的卡积 中的元素的全体) 形式化定义:R(U, D, dom, F) 5元组 R 关系名 完整性约束 U 组成关系的属性名的集合 D 为属性组U中属性的域 Dom为属性向域的映象集合 F 为属性间数据的依赖关系集合
1
On_Load
n
Book
可以转换为以下两个模式 Borrower(B#,Name,Address,……) Book(ISBN,B#,Title,……) 关系Book中的外键B#表明借书者的信息, 但图书馆的书很多,可能有许多书没有借出, 则B#的值为空。此时,对于不能处理空值的 DBMS,会出现问题。
关系(续II)
关系分类 基本关系(基本表、基表)- 数据库 中实际存在的表 查询表 - 查询结果集 视图 - 由多个表导出(虚表)
关系性质
1)关系必须是有限集; 2)卡积无交换率,通过给属性命名 取消元组分量的有序性;
a.列同质(homogeneous)----分量同 类型; b.不同列可出自同一域; c.列的顺序无所谓 d.任意两个元组不能完全相同; e.行的顺序无所谓; f.分量必须取原子值。
关系数据库
实体自身及实体间的联系都用关系来表 示; 在DBMS中,关系对应于多个表。
关系完整性
关系的完整性约束条件 实体完整性 (Entity Integrity) 若属性A是基本关系R的主属性,则属性A不 能为空值; 如学生关系中的“学号”属性。
参照完整性 (Referential Integrity ) 外码(Foreign key) 设F是关系R的非码属性(组)。如果F与关系 S的主码K相对应(定义在同一个(组)域 上),则称F是关系R的外码。 参照关系(Referencing Relation) 如上述关系R 被参照关系(或目标关系)(Referenced Relation) 如上述关系S 规则: 定义外码与主码之间的引用规则,即外码 F取值。 1)空NULL; 2)目标关系中存在的值; *表内属性间的参照也要有存在的值;
EER模型到关系模式的转换(续IV)
为此,本例中引入一个分离关系On_Load(借 出的书),可以避免空值的出现。 这样,存在以下三个关系模式: Borrower(B#,Name,Address,……) Book(ISBN,Title,……) On_Load(ISBN,B#,Date1,Date2) 只有借出的书才会出现在关系On_Load中, 避免空值 的出现,并把属性Date1和Date2加到 关系On_Load中。
2)删除Delete;
3)修改
关系代数语言 - 用对关系的运算来表达查询要求 关系数据语言 关系演算语言 – 用谓词来表达查询要求 双重特点语言 如SQL(集查询、DDL、DML、DCL为一体)
关系数据模型概述(续II)
三类完整性约束 实体、参照 —— 用户自定义
DBMS保证
特点 关系:集合方式(操作对象和结果都是关系—— 元组的集合——关系) 非关系:层次/网状,以记录为操作单位。
此外,还须注意: 外码并不一定与目标关系的主码同名; 参照关系与目标关系可以是同一个关系。如学生关 系(学号,姓 名,性别,年龄,班长)中,“班 长”属性的取值情况。
关系完整性(续II)
用户自定义完整性(User-defined Integrity) 根据客观实际的一些约束条件。 例:性别(男,女) 年龄(15-25) ……
关系数据结构及形式化定义(续I)
若 A={a, b}, B={1, 2, 3} 则A x B= {(a,1), (a,2), (a,3), (b,1), (b,2), (b,3) } 卡积D1 x D2 x…x Dn={(d1,d2,…,dn) | di∈Di, i=1,2,…,n} 从每一集合中抽一个元素做组合;(有 序) 卡积没有交换率; 亦可看成是一个二维表;基数,二维表 的行数,集合元素的个数; 参考离散数学。 上述AxB卡积的6个元组可以排成:
关系数据结构及形式化定义
关系数据结构及形式化定义(集合论角度)
关系 1.域(Domain) 一组具有相同数据类型的值的集合。 例:自然数,实数,英文字母
2.笛卡尔积(Cartesian Product)---Descartes CPT:给定一组域D1,D2,…,Dn,这些域中可以有 相同的。则 D1,D2,…,Dn的笛卡尔积为:
即: Project(P#,DName,Title,Start_Date,End_Date, ……) 这里DName既是关系Department的主属性,又是 关系Project的外键。 对于非强制性成员类
如果一个实体是某个联系的非强制性成员,则 通常新建一个分离关系来表示这种联系和属性。 具体操作为:如果
EER模型到关系模式的转换(续III)
实体类型E2在与实体类型E1的n:1联系中是一个 非强制性的成员,引入一个分离模式来表示联系 和属性。分离的关系模式包含E1和E2的主属性。 如在图书馆数据库的EER模型中,有两个实体类 型借书者(Borrower)和书(Book)之间的联系如下:
Borrower
关系——二维表(行列),实体及其联系 都用关系表示。在用户看来关系数据的逻辑模 型就是一张二维表。
关系数据模型概述(续I)
关系操作 查询: 1)选择Select; 4)除Divide; Intersection; 编辑: 1)增加Insert; Update;
2)投影Project; 3)连接Join; 5)并Union; 6)交 7)差Difference;
第二章 关系数据库数学模型
内容
关系数据模型 关系数据结构与形式化定义 关系完整性 EER模型到关系模式的转换
关系代数
关系演算
关系数据模型概述
关系数据库系统是支持关系模型的数据库系统。 关系数据模型概述( RDBMS)
关系模型: 关系数据结构 关系操作集合 关系完整性约束 关系数据结构 单一的数据结构——关系