1、管理信息系统(实验),彭祖成 TEL:13388322029 QQ:359230708 E-mail:pzc_,管理信息系统,第一部分 数据库设计(理论基础),第1章 关系数据库,1.1 关系模型 1.2 关系模式 1.3 关系代数 1.4 关系数据库规范化理论,内 容,1.1 关系模型,1.1.1 关系数据结构 1.1.2 关系操作 1.1.3 完整性约束,1.1.1 关系数据结构,一个关系模型的逻辑结构是一张二维表,它由行和列组成。 关系:对应通常所说的二维表; 元组:表中的一行即为一个元组; 属性:表中的一列即为一个属性; 主关键字:表中的某个属性组,它可唯一确定一个元组; 域:属性的取
2、值范围; 分量:元组中的一个属性值; 关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,属性n) 在关系模型中,实体以及实体间的联系都是用关系来表示的。, ,学生登记表,1.1.2 关系操作,关系操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一个集合的方式。 非关系数据模型的数据操作则为一次一个记录的方式。 常用的关系操作包括: 选择、投影、连接、除、并、交、差等查询操作和增、删、改操作两部分。 查询的表达能力是其中最重要的部分。, ,1.1.3 完整性约束,关系模式 设有一名为R的关系,它有属性A1,A2,An,其对应的域分别为D1,D2,Dn,则关系模式
3、可表示为: R=(A1,A2,An) 上式是对关系R的型的描述,称关系R的模式。其中: n是R的属性的个数称为关系的目; Ai(1in)是属性名,在同一关系中不能同名。, ,完整性约束:在RDB中,完整性约束用于确保数据的准确性和一致性。1. 域完整性约束2. 实体完整性约束3. 参照完整性约束4. 用户定义完整性约束 其中:实体完整性约束和参照完整性约束是关系模型必须满足的完整性约束条件。,1.域完整性约束,限定属性的取值范围,并由语义决定一个属性值是否允许为空值“NULL”。 空值“NULL”用来说明在数据库中某些属性值可能是未知的,即“不知道” 或在某些场合下是不适应即“无意义”的一种标
4、记。空值不是空格值,它是跳过或不输的属性值。 例:教师关系(教师号,教师名,年龄,职称,系部号)中,对一个新调入的教师在未分配具体单位之前,属性系部号一列可取空值(NULL)。 域完整性约束是最简单、最基本的约束。在当今的RDBMS中,一般都有域完整性约束检查功能。,2. 实体完整性约束,实体完整性约束:指任一关系中主关键字的值不能为空值“NULL”并且取值惟一。 实体完整性约束能保证实体的唯一性。 实体完整性约束能保证实体的可区分性。 大部分DBMS支持实体完整性约束检查,但不是强制的和彻底的。如果用户的数据模式中说明了主关键字,则DBMS可以进行这项检查。 但有些DBMS允许用户在数据模式
5、中不说明主关键字,在此情况下无从进行实体完整性约束检查。甚至当插入大量元组时,为了改善性能,有些DBMS手册还推荐用户在此时暂且撤销主关键字的说明。,3. 参照完整性约束,现实世界中的实体之间存在着某种关系,在关系模型中实体及实体间的联系都是用关系来描述的,因此就自然存在着关系与关系间的引用。 参照完整性约束定义外部关键字与主关键字之间的引用规则。 当两个关系存在关系间的引用时,要求不能引用不存在的元组。, ,例1:学生管理数据库中有关系:学生(学号,姓名,性别,年龄,班级号):参照关系班级(班级号,班级名,人数,专业号):被参照关系 学生关系与班级关系之间存在属性引用,学生关系中的某个属性的
6、取值需要参照班级关系的属性取值。 “班级号”属性只能取:空值“NULL”或非空值。 “班级号”属性是学生关系的外部关键字。,例2:学生管理数据库中有关系:学生(学号,姓名,性别,年龄,班级号):被参照关系课程(课程号,课程名,学分,周学时):被参照关系考试(学号,课程号,成绩):参照关系 学生、课程与考试三个关系之间存在属性的引用。 “学号”和“课程号”属性是考试关系的外部关键字。,4. 用户定义完整性约束,用户定义的完整性约束是针对某一具体RDB的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 例:学生考试成绩必须大于或等于零,职工的工龄应小于年龄,人的身高不能超过3米等,都是
7、针对具体关系而提出的完整性约束条件。 RDBMS应提供定义和检验这类完整性的机制,以便能用统一的方法处理他们,而不是由应用程序承担这一功能。 在有些DBMS中,允许用户对个别数据说明一些约束及违反约束时的处理过程,但迄今还没有一个RDBMS产品,全面实现用户定义完整性约束检查。,1.2 关系模式,1.2.1 关系概念模式 1.2.2 关系内模式 1.2.3 关系外模式, ,1.2.1 关系概念模式,关系概念模式主要包括出现在DB中的每个关系的说明,它包括对关系名、属性名和属性取值范围(类型)的说明。 在关系数据模型中可不说明关系与关系间的联系。关系与关系间的联系是通过连接属性实现的。 例:有如
8、下两个关系:班级(班级号,班级名,人数)学生(学号姓名,性别,年龄,班级号) 相应属性取值类型和宽度如下表所示。, ,班级与学生关系说明,分级图,1.2.2 关系内模式,从原理上讲,关系内模式与其他类型DBS的内模式没有什么不同,RDB中的每个基本表都应对应一个存储文件。 基于主关键字进行直接存取,一般可根据主关键字建立相应索引。 在关系内模式中不用说明存储文件,存储文件的说明由RDBMS根据基本表的定义自动映射产生。 在关系内模式主要内容中要说明的是索引。, 分级图,1.2.3 关系外模式,外模式是概念模式的逻辑子集,是用户与DBS的接口,是对用户所用到的那部分数据的描述。 在RDB中,外模
9、式被称作视图(VIEW)。, 分级图,DB分级结构图,应用程序A,应用程序B,应用程序C,外模式,外模式,模式,外模式/模式 映射,模式/内模式 映射,外模式/模式 映射,DBMS,用户,用户,用户,1.2.1 1.2.2 1.2.3,1.3 关系代数,2.3.1 传统的集合运算 1.3.2 特殊的关系运算, ,1.3.1 传统的集合运算,1. 并运算 2. 交运算 3. 差运算 4. 笛卡尔积运算, ,1. 并运算,是指将一个关系的元组加到另一个关系中,生成新的关系。 元组在新的关系中出现的顺序是无关紧要的,但必须消除重复元组。 关系R和S的并运算记为RS。 为使操作有意义,关系在并运算上必
10、须是兼容的,即关系R和关系S必须要有相同的属性,且在对应列中的属性必须是相同的域; 例:若一个关系中的第四个属性取自年龄域,则第二个关系的第四个属性也必须取自年龄域。, ,R与S的并集及结果,2. 交运算,是包含同时出现在第一和第二个关系中的元组的新关系。 这些关系也必须是在并运算上兼容的。 关系R和S的交运算记为RS。 R与S的交集及结果,3. 差运算,指包括在第一个关系中出现而在第二个关系中不出现的元组的新关系。 差运算使用的关系也必须是在并运算上兼容的。如在算术运算中那样,减法是有顺序的,R-S和S-R是不同的。 R与S的差及结果,4. 笛卡尔积运算,一个关系中的每个元组和第二个关系的每
11、个元组的连接。 关系R(含m个元组)和关系S(含n个元组)的积有mn个元组。 记为: RXS=(al,a2,am,b1,b2,bn)|(al,a2,am)R(b1,b2,bn)S, ,关系R与S笛卡尔积的结果,1.3.2 特殊的关系运算,1. 选择运算 2. 投影运算 3. 连接运算,1. 选择运算,一元关系操作,按给定的选择条件选出符合条件的元组。 可表示为: 其中:选择条件是逻辑表达式,取值为“真”或假”。, ,例3:在学生关系中选择年龄为19岁的男生。选择操作的结果:,2. 投影运算,一元关系操作。选取关系的某些属性。 是对一个关系进行垂直分割,消去某些属性,并重新安排属性的顺序,再删去
12、重复的元组,生成一个新关系。 投影运算表示为:其中,属性表是要选择的属性,各属性间用逗号间隔。, ,例4:查询学生关系在学号、姓名、年龄三个属性上的投影,可表示为:投影运算的结果:,3. 连接运算,二元关系操作,以 符号表示。定义为:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。 连接条件为两个关系中对应属性的比较,不一定同名,但域相同。 常用的连接运算: 等值连接:从两个关系(R、S)的笛卡尔积中选取属性(A、B)值相等的元组; 自然连接:特殊的等值连接,在等值连接中取消重复属性。, ,例5:对学生与考试关系进行等值连接、自然连接和迪卡尔积运算,结果为:,连接与笛卡尔积的区别: 笛卡尔
13、乘积包含两关系的所有元组的组合,连接只包含那些满足连接条件的元组的组合。 没有连接条件,即无条件连接,则连接变成笛卡尔乘积。,1.4 RDB规范化理论,1.4.1 范式与规范化, ,1.4.1 范式与规范化,1. 第一范式(1NF) 2. 第二范式(2NF) 3. 第三范式(3NF),1. 第一范式(1NF),若一个关系模式R的所有属性都是不可分的基本数据项,则该关系属于1NF 。 在任何一个RDBS中,1NF是对关系模式的一个必须的要求,不满足1NF的DB模式不能称为RDB。DB模式:多个关系模式的集合。 满足1NF的关系模式并不一定是好的关系模式。 例如:学生(学号,姓名,所在系,系主任姓
14、名,课程名,成绩) 它显然满足1NF,但本身存在插入异常、删除异常、更新异常和数据冗余问题,所以它不是一个好的关系模式。,2. 第二范式(2NF),若关系模式R属于1NF,且每个非主属性都完全函数依赖于主关键字,则R属于2NF 。 2NF不允许关系模式中的非主属性部分函数依赖于主关键字。, ,例10:学生(学号,姓名,所在系,系主任姓名,课程名,成绩) 学生关系模式存在部分依赖:(学号,课程名)姓名(学号,课程名)所在系(学号,课程名)系主任姓名 不满足“每个非主属性都完全函数依赖于主关键字”的条件。故不属于2NF。 对学生关系模式进行分解,使其满足2NF的条件,即要消除非主属性对主关键字的部
15、分依赖。,关系分解 把R的属性分开,以构成两个新的关系模式; 通过对R的元组进行投影而产生两个新的关系。 学生关系模式分解成:学生-系(学号,姓名,所在系,系主任姓名)考试(学号,课程名,成绩)学生-系、考试属于2NF。,学生关系模式:学生-系(学号,姓名,所在系,系主任姓名) 存在:学号所在系所在系系主任姓名学号系主任姓名 仍有数据冗余(从学生-系关系模式的实例可以看出,当一个系有很多学生时,“系主任姓名”会大量重复出现)和更新异常。所以应进一步对其进行规范化。,3. 第三范式(3NF),若关系模式R属于1NF,且每个非主属性都不传递依赖于主关键字,则R属于3NF。 将学生-系(学号,姓名,
16、所在系,系主任姓名)关系模式分解为:学生(学号,姓名,所在系)系(所在系,系主任姓名) 关系模式学生与系均已满足3NF。, ,3NF是一个可用的关系模式应满足的最低范式。 一个关系模式如果不满足3NF,实际上是不能使用的。 把关系模式分解到3NF,可在相当程度上减轻原关系中的异常和信息冗余,但也不能保证完全消除关系模式中的各种异常和信息冗余。 要想使DB性能得到进一步的改善,就要把关系模式进一步规范化。,第章 关系数据库设计,内 容,.1 概念模型 .2 数据库设计步骤,.1 概念模型,.1.1 概念模型的基本概念 .1.2 实体-联系方法,.1.1 概念模型的基本概念,1实体 2实体集 3实
17、体型和实体值 4属性 5键 6联系,1实体,实体:是指客观存在且可区别于其他对象的事物。 具体的对象(一个产品、一个仓库、一艘船、一个房子、一个学生、一门课程等); 抽象的事件(一次订货、一次购房、一次选课等)。,2实体集,实体集:是具有相同类型和相同性质的实体的集合。 如某公司所有产品、某公司所有仓库、某学校所有学生等。 实体集的范围:取决于要解决的应用问题所涉及环境的大小。 例:为解决某个学校的应用问题,该校全体学生组成的集合是一个学生实体集,但如果应用问题与某一城市如大连市所有的学校有关,那么学生实体集包含的就是大连市的所有学生。,实体集是可以相交的 例:某高校全体教授和副教授分别组成“
18、教授”和“副教授”实体集,而一个“教师”实体可能属于“教授”实体集,也可能属于“副教授”实体集,也可能既不属于“教授”实体集,又不属于“副教授”实体集。,3实体型和实体值,实体型:用于描述和抽象同一实体集共同特征的实体名及其属性名的集合。 如:学生(学号,姓名,年龄,性别,班级) 实体值:实体集中的某个实体的值即为实体值 如:(“010125”,“曲波”,“男”,19,“01001”) 属于同一实体集的实体的实体型是相同的,但实体值是不同的。,例:8个实体值,分别代表8个不同的学生,但其实体型是相同的。,4属性,属性:是实体集中的每个成员所具有的某一特性。 如学生实体集中的每个实体都具有学号、
19、姓名、年龄、性别和班级等特性,这些特性就是学生实体的属性。 属性的取值范围称为属性的域: 长度为10的字符串、 介于10和100之间的整数、 红,黄,蓝、 1,2,3,4等。,实体的属性分类: 简单属性、复合属性 单值属性、多值属性 Null属性 派生属性, 简单属性、复合属性,简单属性:不能再划分的属性。 复合属性:可进一步划分成更小部分的属性。 例: 教师(教师号,姓名,性别,职称,E-mail地址,电话号码,家庭地址) 家庭地址属性的成员属性:(城市、区、街道、邮政编码属性),单值属性:若实体集中的每个实体在某属性上的值是单一的。 多值属性:实体集中某个具体实体的某个属性的值可能对应一组
20、值。 例: 教师(教师号,姓名,性别,职称,E-mail地址,电话号码,家庭地址), 单值属性、多值属性,当暂时不知某属性的值或属性值尚未确定时,可将属性值设为空(Null)。 例:新教师的职称还未评定,该教师的“职称”属性的值便可设为Null。, Null属性,属性的值可从其他相关实体或属性中派生出来。 例: 班级(班级号,班级名,人数) “人数”属性的值可通过计算该班级学生实体的数目而获得。, 派生属性,5键,能惟一标识实体集中每个实体的属性或属性组。 例: 学生(学号,姓名,性别,年龄,班级号),6联系,联系:是实体集间的一个关联。每个联系都有一个名字,每个联系都可以具有描述性属性。 例
21、:学生(学号,姓名,性别,年龄,班级号)考试(学号,课程号,成绩)课程(课程号,课程名,学分,周学时) 学生实体集和课程实体集之间的联系为“考试”。, 联系的类型 联系的实例、参与者、度, 一对一联系 一对多联系 多对多联系 实体集之间的联系, 联系的类型,一对一联系,如果对于实体集E1中的每个实体,在实体集E2中至多只有一个实体与之相对应,反之亦然,则称实体集E1与E2之间的联系是一对一联系。 例:座位和座位号之间,国家与元首等。,如果对于实体集E1中的每个实体,在实体集E2中有任意个(零个或多个)实体与之相对应,而对于E2中的每个实体却至多和E1中的一个实体相对应,则称实体集E1与E2之间
22、的联系是一对多联系。 例:公司的部门与其职工之间、班级与学生之间、球队与球员之间。,一对多联系,如果对于实体集E1中的每个实体,在实体集E2中有任意个(零个或多个)实体与之相对应,反之亦然,则称实体集E1与E2之间的联系是多对多联系。 例:教师与课程之间,产品与其客户之间。, 多对多联系,实体集之间的联系,联系的实例:一个给定联系的具体值。 例: 学生实体集属于班级实体集, “属于”联系的实例:“学生曲波属于01001班级”。, 联系的实例、参与者、度,联系的参与者:一个给定联系中的实体。设R是一个联系,E是其中的参与者,若E的每个实例都至少在R的一个实例中出现,那么R中的参与者E被称为是全部
23、的,反之就是部分的。 例: 学生实体集属于班级实体集,因每个具体的学生都属于某个具体的班级,故参与者学生在“属于”联系中是全部的。,联系的度:一个给定联系中参与者的数量。度为2的联系称为2元联系,度为n(n2)的联系称为n元联系。,.1.2 实体-联系方法,1实体型 2属性 3实体集之间的联系,1实体型,实体型用带有实体名的矩形框表示。,学生,课程,请按键,2属性,一般属性:用带有属性名的椭圆形框表示。 多值属性:用双椭圆形框表示。 派生属性:用虚椭圆形框表示。 属性与其对应的实体型之间用直线连接。 例:课程(课程号,课程名,学分,周学时),该实体集及其属性的表示方法如图所示,其中带下划线的属
24、性“课程号”是实体集的键。,学号,人数,请按键,例: 教师(教师号,姓名,性别,职称,E-mail地址,电话号码,家庭地址) 实体集表示方法如图。 E-mail:多值属性 家庭地址:复合属性,教师,请按键,3实体集之间的联系,用带有联系名的菱形框表示,并用直线将联系与相应的实体相连接,且在直线靠近实体的那端标上1或n等,以表明联系的类型(1:1、1:n或m:n)。 若一个联系的某个参与者是全部的,则用双线将联系与该参与者相连。,请按键,课程实体集、教师实体集及相互间的多对多联系。,.1.4 E-R模型的设计步骤,1确定实体集和属性 2确定实体集间的联系,1确定实体集和属性,作为属性的事物应符合
25、的原则: 除了复合属性,其他属性都不能具有需要描述的特性。 属性不能与其它实体发生联系。 符合上述原则的事物应作为属性,其余的应作为实体。,课程类型与课程,xxxxxxx,课程类型作为属性,请按键,2确定实体集间的联系,课程、教师和学生实体及及相互之间的联系,m,p,请按键,.2 数据库设计步骤,.2.1 需求分析 .2.2 概念结构设计 .2.3 逻辑结构设计 .2.4 物理设计 .2.5 数据库实施 .2.6 数据库运行和维护,.2.1 需求分析,1需求分析的任务及其工作 2高校管理系统的信息需求,1需求分析的任务及其工作, 任务 工作, 教学管理子系统的信息需求,管理对象与存储信息: 学
26、生:学号、姓名、性别、年龄等。 班级:班级号、班级名、人数等。 教师:教师号、姓名、性别、职称、E-mail地址(同一教师可有多个E-mail地址)、电话号码和家庭地址(城市、区、街道、邮政编码)等。 课程:课程号、课程名、学分、周学时、课程类型(周数)等。 专业:专业号、专业名、选修门数等。 系:系号、系名等。,分析课程:课程号、课程名、学分、周学时、课程类型(周数)等。其中: 课程类型:共同限选课、专业选修课(选修人数上限、人数下限)或必修课(课程负责人) 。 共同限选课:不分专业、面向全校学生的选修课。 专业选修课:面向本专业学生的选修课,某一专业的学生只能选修自己专业的专业选修课。每个
27、专业都规定了学生可以选修的专业选修课的门数,不同专业所规定的选修课门数是不同的。,教学管理子系统中各对象间的联系: 每个学生都属于一个班级,而一个班级可以有多个学生; 每个班级属于一个专业,一个专业可以有多个班级; 一个专业属于一个系,一个系可以有多个专业; 一个教师属于一个系,一个系可以有多个教师; 每个教师可教授多门课程,同一门课程可有不同的教师教授。但同一教师不能重复教授某门课程,教师在固定的时间和教室教授某门具体课程; 每个学生可修读若干门课程(选修课或必修课),每门课程可有多个学生修读。对任何课程学生都可申请免修不免考; 某个具体的学生参加某门课程的学习,应有一个固定的教师。,主要负
28、责管理教师的工资、岗位津贴、养老金、公积金、课时奖金、住房贷款以及医疗费报销等。 管理对象与存储信息: 教师:教师编号、姓名、性别、工龄、职称、基本工资、养老金、公积金等。 课程:包括课程号、课程名、总课时等。 职称:包括职称号、职称名、岗位津贴和住房贷款额等。 被赡养人:包括姓名以及与教师的关系等。学校负责为被赡养人报销医药费。, 工资及福利管理子系统,工资及福利管理子系统中各对象间的联系: 一个教师的被赡养人可有多个,而一个被赡养人仅被一个教师赡养。如果,夫妻双方都在学校工作,他们的被赡养人信息只能挂靠在其中某一人上; 每个教师可教授多门课程,同一门课程可以有不同的教师教授,但同一个教师不
29、能教授两门相同的课程。并假设教师在每个学期末都要接受学生的评估,而教师的课时奖金与评教等级有关; 每个教师当前被聘任的职称是惟一的,而不同的教师可被聘同一职称。,.2.2 概念结构设计,1局部E-R模型的设计 2全局E-R模型的设计,1局部E-R模型的设计, 局部E-R模型的设计步骤 设计教学管理子系统的E-R模型 设计工资及福利管理子系统的E-R模型, 局部E-R模型的设计步骤,需求 分析 结果,确定局部 结构的 范围,全局 E-R 模型 的 设计,有,无,设计局部E-R模型,确定局部 结构的 实体,定义局部结构的 属性,定义局部结构的 联系,请按键, 设计教学管理子系统的E-R模型, 设计
30、工资及福利管理子系统的E-R模型,2全局E-R模型的设计,全局E-R模型的设计过程,局部E-R模型,合并两个局部E-R模型,检查 并 消除 冲突,检查 并 消除 冗余,逻辑结构设计,请按键,教师,统一与合并后,请按键,教授联系的合并,教 学 管 理 子 系 统,工 资 及 福 利 子 系 统,合 并 后,请按键,合并后生成的全局E-R模型,.2.3 逻辑结构设计,(1)全局E-R模型转换成初始关系模型 (2)规范化(满足第3范式) (3)关系结构的定义,(1)全局E-R模型转换成初始关系模型的规则,E-R模型中的一个常规实体集转换为一个关系模式 E-R模型中的多值属性转换为一个关系模式 E-R
31、模型中的一个联系(非ISA联系)转换为一个关系模式 根据实际情况,将具有相同键的关系模式合并, E-R模型中的一个常规实体集转换为一个关系模式,该关系模式的属性由原实体集中的各属性组成,关系模式的键也就是原实体集的键。 班级(班级号,班级名,人数) 学生(学号,姓名,性别,年龄) 职称(职称号,职称名,岗位津贴,住房贷款额) 课程类型(类型号,类型名,周数) 专业(专业号,专业名,选修门数) 系(系号,系名), E-R模型中的多值属性转换为一个关系模式,该关系模式的属性由多值属性及其相应实体的键组成。 教师实体集中的E-mail地址属性转换成的关系模式如下: Email(教师号,E-mail地
32、址),该关系模式的属性由与该联系相连的各实体集的键和联系的属性组成,该关系模式的键则应根据实体集间的联系的不同类型分别考虑。 1:1联系:与该联系相连的各实体集的键均可作关系模式的键; 1:n联系:关系模式的键应是n端实体集的键; m:n联系:关系模式的键由与该联系相连的各实体集的键组成。, E-R模型中一个联系(非ISA联系)转换为一个关系模式,分类(课程号,类型号),考试(学生号,课程号,成绩),班级(班级号,班级名,人数) 包括(班级号,专业号) 关系模式合并为:班级(班级号,班级名,人数,专业号) 学生(学号,姓名,性别,年龄) 属于(学号,班级号) 关系模式合并为:学生(学号,姓名,性别,年龄,班级号), 根据实际情况,将具有相同键的关系模式合并,分类(课程号,类型号),考试(学生号,课程号,成绩),(2)规范化盘点(商品编号、仓库编号、盘点表编号、数量、日期 、经手人)盘点(商品编号、仓库编号、盘点表编号、数量) 盘点-日期(盘点表编号、日期、经手人),(3)表结构的定义盘点表结构,