《计算机数据库(经济会计类)二讲关系数据库随堂讲解.ppt》由会员分享,可在线阅读,更多相关《计算机数据库(经济会计类)二讲关系数据库随堂讲解.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 关系数据库 本章主要介绍关系数据库的相关概念,包括关系模型和关系代数。关系数据库采用了关系模型作为数据的组织方式,这就涉及关系模型中的一些基本概念。而对关系数据库进行查询时,若要找到需要的数据,就要对关系进行一定的运算。2.1 关系数据模型的基本概念 关系模型由数据结构、操作集合和完整性约束三部分组成。(关系模型的建立-第五章)1.数据结构 在用户看来,关系模型中数据的逻辑结构是一张二维表。关系模型中的一些术语:(1)关系:一个关系通常对应一张二维表。(2)元组:关系中的每一行称为一个元组。如:表中一个学生记录即为一个元组。(3)属性:关系中的每一列为一个属性,给每一个属性起一个名称即
2、属性名。如:表中属性(学号,姓名,性别,出生年月,籍贯)广东1986-8-13男 黄国度050104湖南1985-9-12女 李玉050103江苏1986-8-8男 王五050102广东1986-6-9男 张三秋050101籍贯 出生年月 性别 姓名 学号列:属性对应字段行:元组对应记录 关系对应二维表主键分量对应数据项关系模型与关系数据库的对应关系关系模式:学生(学号、姓名、性别、出生年月、籍贯)(4)键又称码,是关系模型中的一个重要概念,有以下几种:候选键:如果一个属性或属性集能唯一标识元组,且又不含多余的属性或属性集,那么这个属性或属性集称为关系模式的候选键。超键:能唯一标识元组的属性集
3、称为关系模式的超键。(可能存在多余的属性)例如:学号+姓名(就是超键,因为姓名实际是多余的)例如:学号(就是候选键,有的表中这类键可能有多个,如身份证号、银行账号等。)主键:多个候选键中用户指定的候选键称主键。例如:学生表中的“学号”外键:可作为其它关系模式的主键的属性或属性集称外键。例如:学生表中的“班级编号”(外键)可作为班级表中的主键。班级(班级编号,班级名称,班长姓名,专业,系编号)学生(学号,姓名,性别,出生年月,籍贯,班级编号)主键和外键也称为主码和外码。(5)域:属性的取值范围。例如:人的年龄一般在1150岁之间,性别的域是(男,女)等。(6)分量:元组中的一个属性值。例如:张三
4、秋、男等。(7)关系模式:对关系的描述。一般表示为:关系名(属性1,属性2,属性n)例如:学生(学号,姓名,性别,出生年月,籍贯)关系数据库:就是由一个或一个以上的关系或二维表彼此关联组成的。其中关系之间的联系是通过一个关系的主键与另一个关系的外键建立的。例如:学院(学院编号,学院名称,院长姓名,电话,地址)系(系编号,系名称,系主任,学院编号)班级(班级编号,班级名称,班长姓名,专业,系编号)学生(学号,姓名,性别,出生年月,籍贯,班级编号)关系模型的主要特点 关系中每一分量不可再分,是最基本的数据单位。每列分量属性相同,列按需要设,各列顺序任意。每一行由多个属性构成,各行的顺序可任意。一个
5、关系是一张二维表,不允许有相同的属性名和元组。广东1986-8-13男 黄国度050104湖南1985-9-12女 李玉050103江苏1986-8-8男 王五050102广东1986-6-9男 张三秋050101籍贯 出生年月 性别 姓名 学号 2.关系操作 关系操作是对数据库中各种数据操作的集合。如:查询、插入、删除和修改。3.关系完整性约束 实体完整性 是 对 关 系 中 元 组 的 唯 一 性 约 束,即 对 主 键 的 约束,关系中的主键不能是空值且不能有相同值。如:“学生”表中不允许有两个以上相同的学生编号存在,也不允许学生编号为Null。参照完整性 是 对 外 键 的 约 束,关
6、 系 中 的 外 键 必 须 是 另 一 个关系的主键有效值或空值(Null)。如:“班 级”表 与“学 生”表 是 一 对 多 关 系,“班 级”表 中 的 班 级 编 号 是 主 键,“学 生”表中 的 班 级 编 号 是 外 键,那 么,外 键 的 值 必 须 是主键的有效值。班 级(班 级 编 号,班 级 名 称,班 长 姓 名,专 业,系 编 号)学生(学号,姓名,性别,出生年月,籍贯,班级编号)用户自定义的完整性 用户自行定义的删除、更新、插入约束。如:在往学生表中插入数据时不允许学生名称为Null,性别只能是“男”或“女”等。关系代数是研究关系数据库的数学工具。关系代数的运算对象
7、是关系,运算结果亦为关系。2.2 关系代数 关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。关系代数的运算可分为两类:(1)传统的集合运算(2)专门的关系运算1.1.传统的集合运算传统的集合运算 传 统 的 集 合 运 算 包 括 四 种 运 算:并()、交()、差()、笛卡尔积(X)。R S 集合(1)并运算 关系R和S的并将产生一个包含R、S中所有不同元组的新关系,记作R S。关系R和关系S必须要有相同的属性,并且对应属性要有相同的域。(注:在进行并操作时,如有完全同的元组只保留一个。)例2.4 有 第1学 期 课 程 和 第2学 期 课 程 两 个 关
8、 系,要 将 两 个 关 系 合 并 为 一 个 关 系,可 用 并 运 算 实 现。即:新的课程第一学期课程第二学期课程(2)差运算 所 有 属 于 关 系R 但 不 属 于S 的 元 组组成的新关系,记作R S。R-S 集合 例2.5 有成绩大于60的学生学号和成绩大于90的学生学号两个关系,求成绩小于或等于90且成绩大于60的学生。即:表C表A表B。R-S 集合 例如:要将下面的成绩表中有关“数学”科目的元组删除。即求成绩表成绩表1成绩表2。成绩1 学号 课名 分数1数学801英语851政治902数学852英语802政治90成绩2 学号 课名 分数1数学802数学85学号 课名 分数1英
9、语851政治902英语802政治90成绩表1成绩2运算结果(3)交运算 属于R 也属于S 的元组组成的新关系,记作RS。RS 集合 例2.6 假设有“广东”籍学生和“男”学生两个表,要求检索广东的男学生,这个检索可以用交操作来实现。例如:在输入学生成绩时,为保证数据正确,常让两人重复输入成绩数据,形成两个成绩文件。由于两人同时对同一学生成绩输入出错而且输入的错误数据完全一样的概率几乎为0,因此认为,两人输人数据一致的部分是准确的,即求成绩1成绩2,其结果被认为是正确的。成绩1学号 课名 分数1 数学 801 英语 851 政治 902 数学 852 英语 802 政治 90成绩表1 成绩2运算
10、结果成绩1学号 课名 分数1 数学 801 英语 851 政治 922 数学 852 英语 802 政治 90学号 课名 分数1 数学 801 英语 852 数学 852 英语 802 政治 90(4)笛卡尔积运算 R 中 每 个 元 组 与S 中 每 个 元 组 连 接 组 成 的 新 关 系,记 作RS。如 果 关 系R 中 有m 个 元 组,S 中 有n 个 元组,则RS 中有mn 个元组。由 于R 和S 中 可 能 存 在 相 同 的 属 性 名,笛 卡 尔 积运算时需要在属性上附加该属性所来自的关系名称。例2.7 在 学 生 和 课 程 两 个 关 系 上,要 求 每 个 学生 必
11、须 选 修 所 有 课 程。这 个 选 修 关 系 可 以 用 两 个关系的笛卡尔积运算来实现。例2.8 表(a)、(b)分 别 为 关系R 和S。则(c)为 关 系R 与S 的并。(d)为 关 系R 与S 的 交。(e)为 关 系R 和S 的 差。(f)为 关 系R和S 的笛卡尔积。R S专门的关系运算:专门的关系运算:专门的关系运算包括四种运算即选择()、投影()、连接()和除法(),是关系数据库查询、统计等操作的基础。(1)选择 从关系R 中选取符合条件的若干元组(行)。选择操作可以表示为:()选择条件是由比较运算符构成的简单表达式。比较运算符:、如:性别=男 年龄=25 出生年月=25
12、 例2.9 对学生表进行选择操作。列出所有男同学的基本情况。选择的条件是:性别=男。用关系代数表示为:性别=男(学生)使用SQL语言:SELECT 学号,姓名,性别,出生年月,籍贯 FROM 学生 WHERE 性别=男选择操作选择操作结果 例如:对下图中教室表进行选择操作。星期=1(教室)使用SQL语言:SELECT*FROM 教室 WHERE 星期=1选择操作(2)投影 选择关系R 中的若干属性(列),并去掉重复元组。选取各个属性时不受关系中属性顺序的约束。投影操作可以表示为:()投影操作主要是从列的角度进行运算 例如:对下图中教室表的教室编号、课程编号、教师编号、星期和课节5个属性进行投影
13、操作。使用SQL语言:SELECT 教室编号,课程编号,教师编号,星期,课节 FROM 教室投影操作教室编号,课程编号,教师编号,星期,课节(教室)R S(3)连接 从两个关系的笛卡尔积中选取满足连接条件的元组。连接操作是对两个关系进行连接,同时生成一个新关系。设R 和S 是任意两个关系,则R 与S 的连接操作定义为:RS一般的连接操作是从行的角度进行运算 等值连接:如果连接条件中的所有比较运算符都是“=”,则将此种连接称为相等连接。(条件连接的特例)连接运算中有两种最为最为常用的连接,一种是等值连接,另一种是自然连接。自 然 连 接 是 一 种 特 殊 的 等 值 连 接。其 连 接 过程
14、将 取 消 重 复 列。自 然 连 接 操 作 是 最 常 用 的 一 种 连接,也是关系数据库中最重要的一种操作。例2.11 设 表(a)和(b)分 别 为关系R 和关系S。表(c)为一般连接的结果。表(d)为等值连接的结果。表(e)为自然连接的结果。A B Ca1b15a1b26a2b38a2b412B Eb13b27b310b32b52A R.B C S.B Ea1b15 b27a1b15 b310a1b26 b27a1b26 b310a2b38 b310(c)一般连接 R CE S(a)关系R(b)关系SA R.B C S.B Ea1b15 b13a1b26 b27a2b38 b310
15、a2b38 b32(d)等值连接 R R.B=S.B SA B C Ea1b15 3a1b26 7a2b38 10a2b38 2(e)自然连接 R S例2.12 表(a)、(b)分别是选课关系、课程关系和教师关系。学号 课程编号 教师编号 成绩050102 03001 30011 80050102 03333 30004 78050101 03001 30011 88050101 03356 30001 98050105 03001 30011 81050105 03357 30001 86课程编号 课程名 学时03001 大学英语 6403333 高等数学 6003356 计算机基础 600
16、3357 VB程序设计 64(a)选课(b)课程学号 选课.课程编号 成绩 课程.课程编号 课程名 学时 教师编号050101 03001 88 03001 大学英语 64 30011050101 03356 98 03356 计算机基础 60 30001050105 03357 86 03357 VB程序设计 64 30001学号选课.课程编号成绩课程.课程编号课程名 学时 教师编号050102 03001 80 03001 大学英语 64 30011050102 03333 78 03333 高等数学 60 30004050101 03001 88 03001 大学英语 64 300110
17、50101 03356 98 03356 计算机基础 60 30001050105 03001 81 03001 大学英语 64 30011050105 03357 86 03357 VB程序设计 64 30001学号 课程编号 成绩 课程名 学时 教师编号050102 03001 80 大学英语 64 30011050102 03333 78 高等数学 60 30004050101 03001 88 大学英语 64 30011050101 03356 98 计算机基础 60 30001050105 03001 81 大学英语 64 30011050105 03357 86 vb程序设计 64
18、 30001(d)一般连接 选课选课.课程编号=课程.课程编号 成绩=85课程(e)等值连接 选课选课.课程编号=课程.课程编号课程(e)自然连接 选课 课程教师编号 姓名 职务30001 王莉 助教30004 张琦 讲师30011 刘慧英 讲师(c)教师 应 用 举 例:设 学 生 信 息 数 据 库 中 包 含 表(a)、(b)、(c)三 个 表,应 用 关系代数完成下列条件的查询。学号 课程编号 教师编号 成绩050102 03001 30011 80050102 03333 30004 78050101 03001 30011 88050101 03356 30001 98050105
19、 03001 30011 81050105 03357 30001 86课程编号 课程名 学时03001 大学英语 6403333 高等数学 6003356 计算机基础 6003357 VB程序设计 64教师编号 姓名 职务30001 王莉 助教30004 张琦 讲师30011 刘慧英 讲师(a)选课(b)课程(c)教师 例2.13 查询选修了课程编号为“03001”或者“03356”的学生的学号。例2.14 查学号为“050102”选修而学号为“050101”没有选修的课程编号。例2.15 查询给学号为“050102”上过课的所有教师的姓名和他们的职务。学号(课程编号=03001(选课)课程
20、编号=03356(选课)或 学号(课程编号=03001 课程编号=03356(选课)课程编号(学号=050102(选课)课程编号(学号=050101(选课)姓名,职务(学号=050102(选课)教师)或 姓名,职务(学号=050102(选课 教师)例题,学生选课库的关系模式为:例题,学生选课库的关系模式为:学生(学号,姓名,性别,年龄);选课(学号,课程号,成绩)(1)求选修了课程号为“C2”课程的学生学号。学号(课程号=C2(选课)(2)求选修了课程号为“C2”课的学生学号和姓名。学号,姓名(课程号=C2(选课)(学生)或 学号,姓名(课程号=C2(选课 学生)(3)求没有选修课程号为“C2
21、”课程的学生学号。学号(学生)学号(课程号=C2(选课)该题不能写为:学号(课程号 C2(选课)(因为可能还有部分学生尚未选课,此答案不够准确)例题,学生选课库的关系模式为:例题,学生选课库的关系模式为:(4)求既选修“C2”课程,又选修“C3”课程的学生学号。学号(课程号=C2(选课)学号(课程号=C3(选课)该题不能写为:学号(课程号=C2(选课)课程号=C3(选课)(5)求选修课程号为“C2”或“C3”课程的学生学号。学号(课程号=C2(选课)学号(课程号=C3(选课)或 学号(课程号=C2(选课)课程号=C3(选课)或 学号(课程号=C2 课程号=C3(选课)(与例2.31类似)该题也不能写为:学号(课程号=C2 课程号=C3(选课)学生(学号,姓名,性别,年龄);选课(学号,课程号,成绩)