第2章 关系数据库基本原理
1 1
本章内容 2.1 关系数据库基本原理
2.2 关系代数的基本原理 2.3 关系模式的分解 2.4 关系模型的完整性约束
2.5 数据库的设计方法
2 2
2.1 关系数据库概述 关系数据模型
数据模型的任务是描述现实世界中的实体及其联系。关系 数据模型就是采用一个有序数组描述实体及其属性,用这种 有序数组的集合描述一个实体集合,而采用定义在两个集合 上的关系反映不同实体间的联系。表2-1 关系模型示例部门编号 D001 部门名称 总经理办 员工编号 E001 员工姓名 钱达理 性别 男 住址 东风路78号
D001D002 D003 D004
总经理办市场部 销售部 仓储部
E002E003 E004 E005
东方牧郭文斌 肖海燕 张明华
男男 女 男
五一北路25号公司集体宿舍 公司集体宿舍 韶山北路55号3 3
关系数据模型 关系数据库系统是支持关系模型的数据库系统
关系模型的组成关系数据结构 关系操作集合
关系完整性约束
4 4
单一数据结构 课程(课程号,课程名,学分) 学生(学号,姓名,所在系) 选修(课程号,学号,成绩) 01 02 03 04 03001 02210 03123 02221 数据结构 C语言 数据库 操作系统 张三 李四 王五 田七 4 3 3 3 CS MA CS IE 01 01 03001 02210
课程
选修 学生 95 88
0102 02 03 03 04
0312302210 03123 03001 02221 03123
7490
98 895 5
2.1 关系数据库概述 关系数据库基本概念
定义:关系数据库就是一些相关的二维表和其他数据库 对象的集合。在这个定义中明确,关系数据库中的所有信息都存储在 二维表格中;一个关系数据库可能包含多个表;除了这种二 维表外,关系数据库还包含一些其他对象,如视图等。 关系模型的基本概念: 1.关系 一个关系就是一张二维表,通常将一个没有重复行、重 复列的二维表看成一个关系,每个关系都有一个关系名。6 6
2.1 关系数据库概述2.元组 二维表的每一行在关系中称为元组(Tuple)。一行描述了 现实世界中的一个实体,或者描述了不同实体间的一种联系。 3.属性 二维表的每一列在关系中称为属性(Attribute),每个属性 都有一个属性名,各个属性的取值称为属性值。每个属性有 一定的取值范围,称为值域。 4.关键字 关系中能惟一区分、确定不同元组的属性或属性组合, 称为该关系的一个关键字。关键字又称为键或码(Key)。
7 7
2.1 关系数据库概述5.外部关键字
如果关系中某个属性或属性组合并非关键字,但却是另 一个关系的主关键字,则称此属性或属性组合为本关系的外 部关键字或外键(Foreign Key)。在关系数据库中,用外部关 键字表示两个表间的联系。
8 8
2.1 关系数据库概述
关系数据库基本特征
有坚实的理论基础数据结构简单、易于理解 对用户提供了较全面的操作支持
得到了众多开发商的支持
9 9
关系模型的完整性约束 实体完整性 所谓实体完整性,就是一个关系模型中的所有元组都是 惟一的,没有两个完全相同的元组,也就是一个二维表中没 有两个完全相同行,也称为行完整性。 域完整性 域完整性就是对表中列数据的规范,也称列完整性,用 于限制列的数据类型、格式以及取值范围。 参照完整性 当一个数据表中有外部关键字(即该列是另外一个表的关 键字)时,外部关键字列的所有值,都必须出现在其所对应 的表中,这就是参照完整性的含义 。 用户定义完整性10 10
实体完整性 实体完整性规则
若属性A是基本关系R的主属性,则属性A不能取空值课程(课程号,课程名,学分) 选修(课程号,学号,成绩)
01 0203 04
数据结构 C语言数据库 操作系统 JAVA语言
4 33 3 3
0101 01 02 02 03
0300102210 03123 02210 03123 03001
95 88 74 90 98
0304
0222103123
89
11 11
参照完整性 参照完整性示例 StudentSno 03001 02210 … 02221 Sname 张三 李四 … 田七 Ssex 男 男 … 女 Sage 20 21 … 20 Sdept CS MA … IE
外码不是 student 的主码, 但是 departme nt的主码
Department 主码Sdept CS IS MA … Sloc A楼 B楼 C楼 … Sname 计算机 信息 数学 …
12 12
用户定义的完整性 除了实体完整性和参照完整性以外的完整性规则
关系模型应提供定义和检验这类完整性的机制例如教授的工资不低于2000 性别只能是男或女
13 13
2.2 关系代数的基本原理 关系数据结构的形式化定义 1.域(集合) 域是一组具有相同数据类型的值的集合。 2.元组 几个元素组成的一个有序组称为一个元组,通常元组用 圆括号括起来的一些元素表示,元素间使用逗号分隔。 例如(3,5,6)和(E001,钱达理,男,东风路78号)是元组的例 子。 在关系数据库中,可以把一个表的每一行看作一个元组。
14 14
2.2 关系代数的基本原理3.笛卡尔积 给定一组域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取自对应的 集合Di。 元组中的每一个值di称作一个分量(component) 若di为有限集,其基数为mi(i=1,2,3…n),则D1×D2×…×Dn的 基数为
m=∏mii=1
n
例如,设A={1,2},B={a,b},则A×B={(1,a),(1,b),(2, a),(2,b)}。15 15
2.2 关系代数的基本原理4.笛卡尔积可表示为一个二维表,表中的每行对应一个 元组
,每列对应一个域. 5.关系 关系是一个集合,其组成元素是元组而不是组成元组的 元素。 D1×D2×…×Dn的子集叫做在域D1、D2、…、Dn 上的关系,用R( D1、D2、…、Dn )表示,其中R表示关 系的名字,n表示关系的目或度。 当n=1时,称为单元关系 当n=2时,称为二元关系 关系是笛卡尔积的子集,所以关系也是一个二维表16 16