关系型数据库基本原理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-11-3
2.3.4 完整性规则检查 为了维护数据库中数据的完整性,在对关系数据库执行插入、 删除和修改操作时,就要检查是否满足以上三类完整性规则。 当执行插入操作时 首先检查实体完整性规则,插入行的主码属性上的值,是否已 经存在。若不存在,可以执行插入操作;否则不可以执行插入操作。 再检查参照完整性规则,如果是向被参照关系插入,不需要考 虑参照完整性规则;如果是向参照关系插入,插入行在外码属性上 的值是否已经在相应被参照关系的主码属性值中存在。若存在,可 以执行插入操作;否则不可以执行插入操作,或将插入行在外码属 性上的值改为空值后再执行插入操作(假定该外码允许取空值)。 最后检查用户定义完整性规则,检查被插入的关系中是否定义 了用户定义完整性规则,如果定义了,检查插入行在相应属性上的 值是否符合用户定义完整性规则。若符合,可以执行插入操作;否 则不可以执行插入操作。
2011-11-3
参照完整性规则 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基 本关系S的主码KS相对应,则对于R中的每个元组在F上的值必须满足: 或者取空值(F的每个属性均为空值),或者等于S中某个元组的主 码值。 例如,在授课系统 的关系模型中,关系教师中的外码“课号”只能 是下面两类值: (1) 空值。表示还未给该教师安排课。 (2) 非空值,但此值必须为被参照关系课程中某一门课程的“课 号”。
m
借阅
借阅(读者编号,图书编号,借期,还期)
还期
n 图书 图书(编号,书名,出版社,出版日期,定价)
编号
书名
出版社
定价
出版日期
2011-11-3
2.3 关系模型的三类完整性约束
2.3.1 实体完整性 实体完整性规则: 若属性A是关系R的主属性,则A不能取空值。 2.3.2 参照完整性规则 外码和参照关系 设F是基本关系R的一个或一组属性,但不是关系R的主码(或 候选码)。如果F与基本关系S的主码KS相对应,则称F是基本关系R 的外码,并称基本关系R为参照关系,称基本关系S为被参照关系。 例如:在授课系统的关系模型中: 课程(课号,课名,学分) 课号关系课程的主码 教师(工号,姓名,职称,课号) 课号是关系教师的外码 参考书(书号,书名,课号) 关系教师是参照关系,关系课程是被参照关系。
学号 姓名 性别 年龄 所在系
学生
学生(学号,姓名,性别,年龄,所在系) 选课(学号,课程号,成绩)
m
成绩
选课
Baidu Nhomakorabea
n
课程
课程号 课程名
课程(课程号,课程名,学分)
学分
2011-11-3
【例2-13】将图书借阅系统的E-R模型转换为关系模型。
编号 姓名
读者类型 已借数量
读者
借期
读者(编号,姓名,读者类型,已借数量)
主码(Primary key) 关键字 (Primary key)
2011-11-3
关系是一个行与列交叉的二维表,每一列(属性)的所有数据 都是同一种数据类型的,每一列都有惟一的列名,列在表中的顺序 无关紧要;表中的任意两行(元组)不能相同,行在表中的顺序也 无关紧要。
表2-2以图书借阅系统为例给出了一个表的实例
2) 由于该例中的联系是一对多联系,所以可以将联系合并到实 体对应的关系中。 课程(课号,课名,学分) 教师(工号,姓名,职称,课号) 参考书(书号,书名,课号)
2011-11-3
多对多(m:n)联系 多对多(m:n)联系 (m 将联系转换成一个关系模式。与该联系相连的各实体的码及联 系本身的属性转换为关系的属性,而关系的码为各实体码的组合。 【例2-12】将学生选课系统的E-R模型转换为关系模型。
E-R模型向关系模型转换时,除了将实体转换为关系外,还要 考虑如何将实体之间的联系正确的转换为关系。 一对一联系 ( 1:1) 一般是将联系与任意一端实体所对应的关系模式合并,需要在 该关系模式的属性中加入另一个实体的码和联系本身的属性。
2011-11-3
【例2-10】实体部门(编号,名称)与实体经理(工号,姓名)之 间的任职联系是1:1联系。E-R模型如图2-1所示。将其转换为关系 模型。
课程
1
讲授
n
教师
1
参考书
2011-11-3
该E-R模型中有3个实体和1个多元联系。可以用两种方法转换为 关系模型: 1) 将联系转换为一个单独的关系。则该E-R模型对应的关系模型 包含4个关系模式: 课程(课号,课名,学分) 教师(工号,姓名,职称) 参考书(书号,书名) 讲授(工号,课号,书号)
表2-1给出了实体集、关系、表等一系列术语之间的对照关系 给出了实体集、关系、
概念模型中 关系理论中 关系数据库中 表(Table) 行(Row) 列(Col) 某些软件中 表(或数据库文件) 记录(Recode) 字段(Field) 关键字(Primary key)
实体集(Entity set) 关系(relation) 实体(Entity) 属性(Attribute) 主码(Primary key) 元组(Tuple) 属性(Attribute)
2011-11-3
E2.2 E-R模型到关系模型的转换
E-R模型可以向现有的各种数据库模型转换,对不同的数据库 模型有不同的转换规则。这里只讨论E-R模型向关系模型的转换方 法。E-R模型向关系模型转换的规则是: 实体 一个实体类型转换成一个关系模式。实体的属性就是关系的属 性,实体的码就是关系的码。
2.1 2.2 2.3 2.4
关系数据模型 EE-R 模型到关系模型的转换 关系模型的三类完整性约束 案例1 案例1:活期储蓄管理系统数据库设计
2011-11-3
2.1 关系数据模型
2.1.1 关系模型的结构 关系(relationship) 关系(relationship) 关系是满足一定条件的二维表。表中的一行称为关系的一个元 组,用来存储事物的一个实例;表中的一列称为关系的一个属性, 用来描述实体的某一特征。表是由一组相关实体组成的集合。所 以,表和实体集这两个词常常可以交替使用。
2011-11-3
当执行删除操作时 一般只需要检查参照完整性规则。如果是删除被参照关系中的 行,则应检查被删除行在主码属性上的值是否正在被相应的参照 关系的外码引用,若没被引用,可以执行删除操作,若正在被引 用,有三种可能的做法:不可以执行删除操作(拒绝删除),或将 参照关系中相应行在外码属性上的值改为空值后再执行删除操作 (空值删除),或将参照关系中相应行一起删除(级联删除)。 当执行修改操作时 因为修改操作可看成先执行删除操作,再执行插入操作,因此 是上述两种情况的综合。
编号 书名
作者 刘凌志 王云晓 梁晓峰 张大海 马志刚 张大海 梁晓峰 梁晓峰
出版社 青山 蓝天 碧水 碧水 青山 蓝天 青山 青山
出版日期 2002.5 2002.5 2003.10 2004.7 2004.7 2004.8 2004.10 2004.10
定价 21.80 22.00 28.00 20.80 24.50 26.30 22.00 22.00
2011-11-3
F12.245 计算机文化基础 F33.33 G22.12 G11.22 F23.55 G11.11 G12.08 G12.09
2011-11-3
数据结构实用教程 Visual Basic实用教程 Java程序设计实用教程 数据结构(C语言版) C语言程序设计 C语言程序设计 C语言程序设计
关系的特点: 关系的特点: 关系的每一行定义实体集的一个实体,每一列定义实体的一 个属性。 每一行必须有一个主码,主码是一个属性组(可以是一个属 性),它能惟一的标识一个实体。 每一列表示一个属性,且列名不能重复。 列的每个值必须与对应属性的类型相同。 列有取值范围,称为域。 列是不可分割的最小数据项。 行、列的顺序对用户无关紧要。
编号 名称
1
部门(编号,名称)
部门
1
任职日期
1
任职
1
经理
经理(工号,姓名,编号,任职日期)
姓名 工号
图2-1
2011-11-3
一对多( 一对多(1:n)联系 一般是将该联系与n端实体所对应的关系模式合并。合并时需 要在n端实体的关系模式的属性中加入1端实体的码和联系本身的 属性。 【例2-11】 将授课系统中的E-R模型转换为关系模型。
注意:在实际应用中,外码不一定与对应的主码同名。 在关系数据库中,表与表之间的联系是通过公共属性实现的。这 个公共属性往往是一个表的主码,同时是另一个表的外码。
2011-11-3
2.3.3 用户定义的完整性 用户定义的完整性就是针对某一具体要求来定义的约束条件, 它反映某一具体应用所涉及的数据必须满足的语义要求。 例如,某个属性必须取惟一值;某些属性之间应满足一定的函数 关系;某个属性的取值范围在0—400之间等。关系模型应提供定义 和检验这类完整性的机制,以便系统用统一的方法处理它们,而不 需要由应用程序来承担这一功能。 所以,用户定义的完整性通常是定义属性取值的约束,即对属 性的值域的约束。对属性的值域的约束也称为域完整性规则是指对 关系中属性取值的正确性限制。包括数据类型、精度、取值范围、 是否允许空值等。
2011-11-3
关系中的术语 候选码(Candidate Key) 若关系中的某一属性组(或单个属性)的值能惟一的标识 一个元组,则称该属性组(或属性)为候选码。 选择一个候选码作为关系的主码。 主属性(Prime Attribute)和非主属性 关系中包含在任何一个候选码中的属性称为主属性。不包 含在任何一个候选码中的属性称为非主属性。