1.3 关系数据库 关系模型 关系完整性约束
1.3.1 关系模型 关系的基本特点 关系的操作 关系模型的优点
1. 关系模型的基本概念(1) 关系数据库系统是支持关系数据模型的数据库系统。 学习Access理由: 免费的关系数据库系统 简单、易学习。 MySQL http://www.mysql.com/ SQLite http://www.sqlite.org/ 学习Access理由: 简单、易学习。 具备关系数据库系统的基本概念。 缺点:商业版权的桌面级数据库
1. 关系模型的基本概念(2) (1)关系 一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名。 学号 姓名 性别 出生 日期 成绩 民族 籍贯 班号 贷款否 简历 照片 S0102590 刘嘉美 女 1991-8-10 670 汉族 北京 会计学101 Yes S0082581 石茂麟 男 1991-6-20 浏阳 会计学081 No S0100574 王莉莉 1992-2-2 642 龙岩 与技术101 S0102589 郭玉坤 1991-2-17 壮族 百色 S0082580 吴静婷 1990-3-11 南昌 S0080594 叶志威 1990-1-13 喀什 计算机081 S0092514 张小东 1991-7-25 623 长春 会计学091 …
本书使用的关系模型
待解释关系模型关键词 关系名 属性 主键 外键
本书使用的关系表 四张贯穿教案的数据表,“班级表”、“学生表”、“课程表”和“成绩表”。 问题:此模式图中成绩表设计有悖于我们通常的理解,如何解释? 数据库模式设计需要复杂的数学知识,称为数据库范式理论(Normal Formula Theory)。如同博客中95%的看客,5%的写客一样,数据库模式的设计为专业人员工作。 只需会使用即可。
班级表 班号 学院 专业 年级 人数 班主任 会计学081 会计学院 会计学 2008 会计学091 2009 会计学101 2010 计算机科学与技术081 信息管理学院 计算机科学与技术 计算机科学与技术091 计算机科学与技术101
学生表 学号 姓名 性别 出生 日期 成绩 民族 籍贯 班号 贷款否 简历 照片 S0102590 刘嘉美 女 1991-8-10 670 汉族 北京 会计学101 Yes S0082581 石茂麟 男 1991-6-20 湖南浏阳 会计学081 No S0100574 王莉莉 1992-2-2 642 福建龙岩 计算机101 S0102589 郭玉坤 1991-2-17 壮族 广西百色 S0082580 吴静婷 1990-3-11 江西南昌 S0080594 叶志威 1990-1-13 新疆喀什 计算机081 S0092514 张小东 1991-7-25 623 吉林长春 会计学091 …
课程表 课程号 课程名 简称 学分 课时 课程简介 A0101 计算机引论 jsjyl 5 32 A0301 数据结构 sjjg 4 64 Java程序设计 javacxsj B0101 基础会计 jckj 48 B0301 会计电算化 kjdsh B0501 税法 sf C0101 大学英语I dxyyI 6 C0301 线性代数 xxds C0501 高等数学III gdsxIII
成绩表 学号 课程号 成绩 S0080521 A0501 63 C0501 74 S0080567 78 70 S0080568 S0080594 75 S0080596 67 …
班级表属性数据类型 数据表属性数据类型功能 确定具有的运算 其常量表示方法
学生表属性数据类型
课程表属性数据类型
成绩表属性数据类型
1. 关系模型的基本概念(3) (2)元组 (3)属性 二维表的每一行在关系中称为元组。在Access中,一个元组对应表中一个记录。
1. 关系模型的基本概念(4) (4)域 属性的取值范围称为域。域作为属性值的集合,其类型与范围由属性的性质及其所表示的意义具体确定。同一属性只能在相同域中取值。
1. 关系模型的基本概念(5) (5)关键字 关系中能唯一区分、确定不同元组的属性或属性组合,称为该关系的一个关键字。单个属性组成的关键字称为单关键字,多个属性组合的关键字称为组合关键字。需要强调的是,关键字的属性值不能取“空值”。所谓空值就是“不知道”或“不确定”的值,因而空值无法唯一地区分、确定元组。
1. 关系模型的基本概念(6) (6)候选关键字 (7)主关键字(Primary Key--PK) 关系中能够成为关键字的属性或属性组合可能不是唯一的。凡在关系中能够唯一区分、确定不同元组的属性或属性组合,称为候选关键字。 (7)主关键字(Primary Key--PK) 在候选关键字中选定一个作为关键字,称为该关系的主关键字。关系中主关键字是唯一的。
1. 关系模型的基本概念(7) (8)外部关键字(Foreign Key--FK) (9)关系模式 关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。 外键功能用来实现表间约束。 (9)关系模式 对关系的描述称为关系模式,其格式为: 关系名(属性名1,属性名2,…,属性名n)
2. 关系的基本特点(1) 在关系模型中,关系具有以下基本特点: (1)关系必须规范化,属性不可再分割。 规范化是指关系模型中每个关系模式都必须满足一定的要求,最基本的要求是关系必须是一张二维表,每个属性值必须是不可分割的最小数据单元,即表中不能再包含表。 (2)在同一关系中不允许出现相同的属性名 Access不允许同一个表中有相同的字段名。
2. 关系的基本特点(2) (3)关系中不允许有完全相同的元组。 (4)在同一关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义。 (5)在同一关系中属性的次序无关紧要。任意交换两列的位置也并不影响数据的实际含义,不会改变关系模式。
3. 关系的操作(1) 和算术运算一样。 关系运算中,关系作为操作数,关系运算符作为操作符。关系运算的结果是一个新的关系。 如:1+2=3中 1、2为操作数,+为操作符。结果为操作数。 关系运算中,关系作为操作数,关系运算符作为操作符。关系运算的结果是一个新的关系。 关系作为一张二维表,其可进行的操作包括:选择、投影、自然联接。
3. 关系的操作(2) 关系操作根据参与操作的数据表分为: 一元操作符:仅一个数据表参与操作 二元操作符:有二个数据表参与操作
3. 关系的操作(3) 选择操作和投影操作为一元操作符 1.选择操作 2.投影操作 给定一个关系,从中筛选出满足某种条件的记录(或元组)的过程称为选择。 如下图所示的选择操作是所有少数民族的学生 2.投影操作 给定一个关系,从中只检索期望得到的字段(或属性)的过程称为投影。 如下图所示的投影操作是从学生表得到只有三个字段(学号、姓名、入学成绩)的关系。
3. 关系的操作(3) 自然联接操作要求二个关系参与运算,即为二元操作符。 前提条件 通常这二个关系中,有一个公共的属性(称为联接属性),在一个关系(称为一表)中它是主键,而在另一个关系(称为多表)中它是外键。如 “班级表”(一表)中主键是班级号,而班级号在“学生表”(多表)中是外键。
3. 关系的操作(4) 自然联接操作的结果: 在属性上是二个参与运算关系的属性叠加; 在元组上是在多表元组的记录基础上,扩展联接属性相同时的一表对应的数据值。即以多表为准。
3. 关系的操作(5) 自然联接的结果 前提条件:二个表间存在一个外键约束。 学生表 姓名 性别 班级表 出生日期 班级号 专业名称 少数民族否 班级号 籍贯 入学成绩 简历 照片 班级表 班级号 专业名称 年级 班主任姓名 所在学院 班级人数
3. 关系的操作(6) 自然的等值联接的结果集仍是一个关系 该关系的属性(字段)是两个关系的叠加; 该关系的元组(记录)是以多表为准。 学生表 姓名 性别 出生日期 少数民族否 班级号 籍贯 入学成绩 简历 照片 自然的等值联接的结果集仍是一个关系 该关系的属性(字段)是两个关系的叠加; 该关系的元组(记录)是以多表为准。 班级表 班级号 专业名称 年级 班主任姓名 所在学院 班级人数 专业名称 年级 班主任姓名 所在学院 班级人数
4. 关系模型的优点 关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。 关系模型的概念单一,无论实体还是实体之间的联系都用关系表示。对数据的检索结果也是关系(即表)。所以其数据结构简单、清晰,用户易懂易用。 关系模型的存取路径对用户透明(用户无需关心数据存放路径),从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
1.3.2 关系完整性约束 实体完整性 参照完整性 域完整性 用户定义完整性
1.实体完整性 实体完整性是指一个关系中不能存在两个完全相同的记录。一个关系对应现实世界中一个实体集。 实体完整性是通过关系的主关键字(PK)来实现的。应具有某种唯一性标识。 注意:主关键字(主属性)不能取“空值”。否则,表明关系模式中存在着不可标识的实体(因空值是“不确定”的),这与“唯一性标识”相矛盾。
2. 参照完整性 是二个表之间的约束。 参照完整性是指多表外部关键字的取值必须与一表中某元组主关键字的值相同,否则违反了参照完整性约束。 使用FK实现
问题 如何理解实体完整性和参照完整性? 1.具备完整性检查功能的数据库是具备行为能力的数据库,如果插入(修改)的元组违反定义的完整性则数据库系统将不会执行插入(修改)操作。 2.检查是否违法实体(参照)完整性的情况: 实体完整性:涉及一个数据表,其不存在主键值相同的两个元组。 参照完整性:涉及二个数据表,参照完整性是指多表外部关键字的取值必须与一表中某元组主关键字的值相同。
3.域完整性 域完整性是指取值范围必须满足的约束条件。 例如,学生表中的“出生年月”字段,你可以对该字段使用域完整性约束,要求年龄在12到70岁之间,在此范围之外的年龄数据都违法了域完整性要求,数据库将不允许数据进行插入或更新操作。
4.用户定义完整性 用户定义完整性是指针对某一具体业务规则提出的关系数据库必须满足的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
4.用户定义完整性2 例如,有二个数据表, 其中一个数据表A的某个属性X存放明细内容; 另一个数据表B存放属性X的求和值, 则数据表B中存放的求和值必须等于数据表A中属性X的求和值,否则数据表B中的求和值就没有意义。 用户定义完整性由于涉及一些复杂的应用领域知识的表示问题,在现有数据库系统中实现功能上不是很完美。
本书使用的关系模型
本书使用的关系模型 小钥匙表示主键 表间连线表示参照完整性 标记“1”表示一 标记“∞”表示多
1.4 数据库系统应用模式(1) 客户/服务器 应用模式Client/Server System-C/S) 银行一人服务台
1.4 数据库系统应用模式(2) 浏览器/服务器应用模式(Browser/Server System-B/S) 目前流行的方式 网上逃犯追查系统 选课系统 学籍系统
小结 关系 元组 主键 外键 实体完整性 参照完整性 投影、选择 自然联接