项目2 设计学生管理数据库关系模式.docx
- 文档编号:15683180
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:55
- 大小:332.79KB
项目2 设计学生管理数据库关系模式.docx
《项目2 设计学生管理数据库关系模式.docx》由会员分享,可在线阅读,更多相关《项目2 设计学生管理数据库关系模式.docx(55页珍藏版)》请在冰点文库上搜索。
项目2设计学生管理数据库关系模式
项目二设计学生管理数据库关系模式
项目导入
在上一个项目中,对“学生管理数据库系统”进行了基本的需求分析,在系统需求分析的基础上,就可以进入数据库的规划设计了。
数据库的规划设计需要具备相关的数据库基础知识,因此,在具体的数据库系统开发设计之前,必须要对数据库的一些基础知识有所了解。
关系数据库是目前应用最为广泛的主流数据库系统,其代表产品有SQLServer、Oracle、Sybase、DB2和Access等。
本教材所涉及的案例及实训都采用SQLServer2005作为数据库的开发和管理平台,所以本项目中,将以学生管理数据库的关系模式设计为案例,在介绍关系数据库的基本概念基础上,完成一个数据库应用系统开发过程中的概念模式设计环节。
项目分析
本教材中所使用的教学案例“学生管理数据库系统”选用应用最为广泛的关系数据库管理系统SQLServer2005作为数据库的开发和管理平台,按照数据库应用软件开发设计的流程,在需求分析完成后,需要对分析得到的现实进行抽象概况,形成适合于关系数据库存储和管理的数据模型,才能在开发平台SQLServer2005上进行数据库的实施工作。
本项目首先对建立关系数据库模型需要的知识进行必要的讨论,了解关系数据库的一些重要概念,包括关系的定义、关系模式、关系模型与关系的性质等,然后进行学生管理数据库系统的关系模式设计,也就是进入到数据库开发设计中的概念模式设计环节。
能力目标:
1.认识关系数据库;
2.掌握关系模型与关系数据库、数据库的设计方法及相关理论;
3.掌握数据库设计步骤;
4.掌握E-R模型。
知识目标:
1.了解并掌握关系模型的基本概念;
2.能使用E-R模型描述关系数据库模型;
3.能根据应用系统的功能设计完成相应的数据库结构。
任务1认识关系数据库
任务要求
1.了解关系的数学定义和性质;
2.熟悉关系模式的完整性约束条件;
3.了解关系代数的基本运算;
4.了解关系的规范化原则,范式的基本概念和分解方法。
知识储备
关系数据库系统是支持关系模型的数据库系统,按照数据模型的三个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
1.关系的基本概念及结构
(1)关系的定义
关系模型是目前描述现实世界的主要的抽象化方法,是具有严格数学理论基础的形式化模型,它将用户数据的逻辑结构归纳为满足一定条件的二维表的形式。
关系模型就是用二维表格结构来表示实体及实体之间联系的模型。
关系模型中主要的基本概念有:
1域(Domain)
域是一组具有相同数据类型的值的集合。
例如,实数、整数、{男、女}等,都可以是域。
域中数据的个数称为域的基数。
表示方法如下:
D1={张三、李四、张梅},表示姓名的集合,基数是3。
D2={信息工程系、航海工程系},表示所在系的集合,基数是2。
2笛卡儿积(Cartesianproduct)
笛卡儿积是域上面的一种集合运算。
给定一组域D1,D2,…Di,…,Dn(可以有相同的域),则笛卡儿积定义为:
D1×D2×…Di×…×Dn={(d1,d2,…,di,…dn)|di∈Di,i=1,2,…,n},其中每个(d1,d2,…,di,…dn)叫做元组,元组中的每个值di叫做分量,di必须是Di中的一个值。
若Di(i=1,2,3,…,n)为有限集,其基数为mi(i=1,2,3,…,n),则D1×D2×D3×…×Dn的基数为
笛卡儿积可表示为一个二维表。
表中的每行对应一个元组,表中的每一列的值来自一个域。
上面例子中的笛卡乐积为:
D1×D2={(张三,信息工程系),(张三,航海工程系),(李四,信息工程系),(李四,航海工程系),(张梅,信息工程系),(张梅,航海工程系)}
其中(张三,信息工程系),(李四,航海工程系)等都是元组,张三、李四、信息工程系等是分量。
该笛卡儿积的基数是M=m1×m2=3×2=6,即该笛卡儿积共有6个元组,它可组成一张二维表,如表2-1所示。
表2-1姓名、院系名称的元组
姓名
院系名称
张三
信息工程系
张三
航海工程系
李四
信息工程系
李四
航海工程系
张梅
信息工程系
张梅
航海工程系
3关系(Relation)
关系:
笛卡儿积D1×D2×…Di×…×Dn的子集R称为在域D1,D2,…,Dn上的关系,记作:
R(D1,D2,…Di,…,Dn)。
其中:
R为关系,n为关系的度或目,是Di域组中的第i个域名。
当n=1时,关系中仅有一个域,称该关系为单元关系;当n=2时,关系中有两个域,称该关系为二元关系;依此类推,关系中有n个域,称该关系为n元关系。
由于关系是笛卡儿积的子集,所以关系也是一张二维表。
表的每一行对应一个元组,每一列对应一个域。
因为笛卡儿积可以有相同的域,所以当关系中的不同列取自相同的域时,域的名字无法表示关系中的列,为了加以区分,把列称为属性。
一般来说,一个取自笛卡儿积的子集才有意义,如上面的例子D1×D2笛卡儿积中,对于每个学生只属于一个系管理,一旦确定了一个学生所在的系,即确定了一种关系,则笛卡儿积中的其他元组是没有意义的,如当确定了表2-2的关系R时,表2-1中其他三个元组是没有意义的。
表2-2关系R
姓名
院系名称
张三
信息工程系
李四
航海工程系
张梅
信息工程系
(2)关系的类型
1基本关系(又称基本表):
实际存在的表,它是实际存储数据的逻辑表示。
2查询表:
对基本表进行查询后得到的结果表。
3由基本表或其他视图导出的表:
是一个虚表,不对应实际存储的数据。
(3)关系的性质
关系具有如下性质:
因为关系就是一个二维表,所以关系的性质可以通过二维表来表示。
下面使用表2-3所示的“学生信息表”来说明关系的各个性质。
表2-3学生信息表
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030103
张梅
女
1995-1-5
3101
201315030201
李响
男
1995-5-1
1102
1关系中一列的各个分量具有相同的性质,即同一列各分量均为相同的数据类型。
2关系中行的顺序、列的顺序可以任意互换,不会改变关系的意义。
3关系中的任意两个元组不能相同。
表2-4所示关系中名为“李四”的2个元组是相同的。
4
表2-4两个元组相同的学生信息表
关系中的元组分量具有原子性,即每一个分量都必须是不可分的数据项。
表2-5所示关系中“电话号码”为可分的数据项,因此“电话号码”元组不具有原子性。
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030102
李四
男
1994-2-8
1101
201315030201
李响
男
1995-5-1
1102
表2-5学生信息表中错误的列分量
学号
姓名
性别
出生日期
宿舍号
电话号码
手机短号
宿舍电话
201315030101
张三
男
1994-4-26
1101
5885
32089999
201315030102
李四
男
1994-2-8
1101
5886
32089999
201315030103
张梅
女
1995-1-5
3101
5887
32089100
201315030201
李响
男
1995-5-1
1102
5888
32089990
(4)关系中键的概念
1候选键(Candidatekey)
若关系中的某一属性组的值能唯一标识一个元组,则称该属性组为候选键。
2主属性(PrimaryAttribute)
若关系中的一个属性是构成某一个候选关键字的属性集中的一个属性,则称该属性为主属性。
3主键(Primarykey)
若一个关系中有多个候选键,则选定一个为主键。
如下例学生信息表中的“学号”,就可以是一个主键。
4外键(Foreignkey)
设F是基本关系R的一个或一组属性,但不是R的键(主键或候选键),如果F与基本关系S的主键K相对应,则称F是R的外键,并称R为参照关系,S为被参照关系。
可以理解为:
如果一个属性是所在关系之外的另一个关系的主键,该属性就是它所在关系的外键。
外键就是外部关系的主键。
如表2-6和表2-7所示。
表2-6学生信息表(“学号”为主键K,关系S)
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030103
张梅
女
1995-1-5
3101
201315030201
李响
男
1995-5-1
1102
表2-7成绩信息表(“学号”为外键F,关系R)
学号
课程号
考试分数
201315030101
ggk0002
86
201315030102
gxk0001
90
201315030103
zyk0002
96
201315030201
zyk0001
88
2.关系完整性
为了维护数据库中的数据与现实世界的一致性,关系数据模型的基本理论不但对关系模型的结构进行了严格的定义,在定义关系数据模型和进行数据操作时必须保证符合一定的约束条件,这就是关系模型的三类完整性约束:
实体完整性、参照完整性和用户定义完整性。
(1)实体完整性(EntityIntegrity)
实体完整性规则是指主键的值不能为空或部分为空。
如果出现空值,那么主键所值就起不了唯一标识的作用。
关系模型中的一个元组对应一个实体,一个关系则对应一个实体集。
例如,一条学生记录对应着一个学生,学生关系对应着学生的集合。
现实世界中的实体是可区分的,即它们具有某种唯一性标识。
与此相对应,关系模型中以主键来唯一的标识元组。
例如,学生信息关系中的属性 “学号”可以唯一标识一个元组,也可以唯一标识学生实体。
如果主键中的值为空或部分为空,即主属性为空,则不符合关系键的定义条件,不能唯一标识元组及与其相对应的实体。
这意味着存在不可区分的实体,从而与现实世界中的实体是可以区分的事实相矛盾。
因此主键的值不能为空或部分为空。
所以,学生信息关系中的主键“学号”不能为空;成绩信息关系中的主键“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空。
(2)参照完整性(ReferentialIntegrity)
参照完整性规则是表的外键必须是另一个表主键的有效值,或者是空值。
如果外键存在一个值,则这个值必须是另一个表中主键的有效值,或者说外键可以没有值,但不允许是一个无效的值。
例如,若表2-8学生信息表的“学号”为主键,与表2-9成绩信息表以“学号”建立关系,如果表2-9成绩信息表中的 “学号”不是表2-8学生信息表的“学号”的值,则称表2-9成绩信息表的数据违背了参照完整性。
表2-8学生信息表
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030103
张梅
女
1995-1-5
3101
201315030201
李响
男
1995-5-1
1102
表2-9成绩信息表
学号
课程号
考试分数
201315030101
ggk0002
86
201315030102
gxk0001
90
A2013102
zyk0002
96
201315030201
zyk0001
88
(3)用户定义完整性(User-DefinedIntegrity)
用户定义完整性规则是用户按照实际的数据库运行环境要求,对关系中的数据所定义的约束条件,它反映的是某一具体应用所涉及的数据必须要满足的条件。
例如,成绩信息表中“成绩”的取值范围是0~100,学生信息表中“性别”的取值为“男”和“女”。
3.关系操作
关系数据库的数据操作分为查询和更新两类。
更新语句用于插入、删除和修改等操作,查询语句用于各种检索操作。
关系查询语言根据其理论基础的不同分为关系代数语言和关系演算语言两大类。
其中关系代数语言是指查询操作是以集合操作为基础运算的DML语言。
关系演算语言指的是查询操作是以谓词演算为基础运算的DML语言。
关系代数是目前关系数据操纵语言的一种传统表达方式,它通过对关系的运算来表达查询。
关系代数的运算对象是关系,运算结果也为关系。
关系代数包括:
(1)传统的集合运算
主要是并、交、差,这三种运算可以实现表中数据的插入、删除、修改等操作。
当集合运算并、交、差用于关系时,要求参与运算的两个关系必须是相容的,即两个关系的度数一致,并且关系属性的性质必须一致。
下面用两个关系R(如表2-10所示)和S(如表2-11所示)来说明关系代数运算。
1并:
将两个关系中的所有元组构成新的关系,并运算的结果中必须消除重复值。
关系R与S的并运算记作:
R∪S。
表2-12就是R和S并运算的结果。
2交:
将两个关系中的公共元组构成新的关系。
关系R与S的交运算记作:
R∩S。
表2-13就是R和S交运算的结果。
3差:
运算结果是由属于一个关系并且不属于另一个关系的元组构成的新关系,就是从一个关系中减去另一个关系。
关系R与S的差运算记作:
R-S。
表2-14就是R和S差运算的结果。
表2-10关系R
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030103
张梅
女
1995-1-5
3101
201315030201
李响
男
1995-5-1
1102
表2-11关系S
学号
姓名
性别
出生日期
宿舍号
201315030202
李超人
男
1994-11-8
1102
201315030102
李四
男
1994-2-8
1101
201315030204
孙强
男
1994-12-1
1102
201315030201
李响
男
1995-5-1
1102
表2-12R∪S
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
201315030103
张梅
女
1995-1-5
3101
201315030201
李响
男
1995-5-1
1102
201315030202
李超人
男
1994-11-8
1102
201315030204
孙强
男
1994-12-1
1102
表2-13R∩S
学号
姓名
性别
出生日期
宿舍号
201315030102
李四
男
1994-2-8
1101
201315030201
李响
男
1995-5-1
1102
表2-14R-S
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030103
张梅
女
1995-1-5
3101
(2)专门的关系运算
专门的关系运算包括选择、投影和连接,这三种操作主要为数据查询服务。
1选择(Selection):
按照给定条件从指定的关系中选出满足条件的元组构成新的关系。
或者说,选择运算的结果是一个表的行的子集,记作σ<条件表达式>(R)。
例如,对R(如表2-10所示)进行选择操作:
列出所有住在“1101”宿舍的学生,选择的条件是<宿舍号=“1101”>,选择结果如表2-15所示。
表2-15σ<宿舍号=“1101”>(R)
学号
姓名
性别
出生日期
宿舍号
201315030101
张三
男
1994-4-26
1101
201315030102
李四
男
1994-2-8
1101
2投影(Profection):
从指定的关系中选出某些属性构成新的关系,或者说,投影运算的结果是一个表的列的子集。
记作πA(R),其中A为R的属性列,投影的结果将取消由于取消了某些列而产生的重复元组。
例如,对R(如表2-10所示)进行投影操作:
(1)列出所有学生的学号、姓名、性别,结果如表2-16所示;
(2)列出学生的所在宿舍号,结果如表2-17所示。
学号
姓名
性别
201315030101
张三
男
201315030102
李四
男
201315030103
张梅
女
201315030201
李响
男
宿舍号
1101
3101
1102
3
连接(Join):
,也称联接,将两个或多个关系连接在一起,形成一个新的关系的运算,是将两关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。
连接过程由连接条件控制,连接条件中将出现两个关系中的公共属性或者具有相同语义的属性,连接结果是满足连接条件的所有记录。
即连接运算是按照给定条件把满足条件的各关系的所有元组按照一切可能组合成新的关系,或者说,连接运算的结果是在两个关系的笛卡儿积上的选择,记作RS。
✧等值连接
是选取若干个指定关系中满足条件的元组并从左至右进行连接,构成一个新关系的运算。
等值连接表示为RS={tr∧ts|tr∈R∧ts∈S∧tr[A]θAθB}。
其中,A和B分别是关系R和S上的可比属性组,θ为算术运算符,当θ为“=”时,称为等值连接,θ为“<”时,称为小于连接,θ为“>”是称为大于连接。
若R和S分别有m和n个元组,先从R关系中的第一个元组开始,依次与S中的每一个元组进行比较,将符合条件的元组首尾连接组成新关系中的元组,这样一轮比较将进行n次,则R和S的连接一共要进行m╳n次比较。
因此,在连接时,一般都要进行优化,设法减少元组中个数,如通过投影运算使关系中的属性个数减少,然后再进行连接运算。
✧自然连接
自然连接是去掉重复属性的等值连接,它是连接运算的一个特例,也是最常用的连接运算。
记作RS={tr∧ts|tr∈R∧ts∈S∧tr[A]θts[B]}。
例如,有学生信息表(如表2-8所示)和成绩信息表(如表2-9所示)两个表,存在着相同的属性“学号”,对这两个表进行自然连接操作后,得到新的表2-18所示。
运算过程记作:
学生信息表成绩信息表。
表2-18学生信息表与成绩信息表的连接
学号
姓名
性别
出生日期
宿舍号
课程号
考试分数
201315030101
张三
男
1994-4-26
1101
ggk0002
86
201315030102
李四
男
1994-2-8
1101
gxk0001
90
201315030103
张梅
女
1995-1-5
3101
zyk0002
96
201315030201
李响
男
1995-5-1
1102
zyk0001
88
自然连接与等值连接的区别:
✓自然连接要求进行连接的两个关系的分量必须有相同的属性名,等值连接则不要求。
✓自然连接要求删除重复的属性,等值连接不要求。
4.关系数据库
关系数据库采用关系模型作为数据的组织方式,把数据组织成简单的二元关系,以二维表的形式存储数据。
可以将关系数据库理解为相互之间存在关系的多个表格的集合。
对关系数据库的操作就是采用插入、查询、编辑、删除、连接等运算实现数据的管理。
任务实施
设计一个高效的关系数据库系统的关键是关系模式的设计,即应该构造几个关系模式,每个关系模式由哪些属性组成,又如何将这些相互关联的关系模式组建成一个适合的关系模式,这些都决定了整个系统的运行效率,也是数据库应用系统设计成败的关键因素。
因此,关系数据库的设计必须在关系数据库规范理论的指导下进行。
关系数据库设计理论主要包括三个方面的内容:
函数依赖、范式和模式设计,其中,函数依赖起着核心作用,是模式分解和模式设计的基础,范式是模式分解的标准。
下面就通过任务实践环节来进一步熟悉关系模式的设计过程和相关概念,建立起学生管理数据库系统的关系模式。
任务实践
1.关系的规范化
关系数据库的范式理论是关系数据库设计要遵循的基本准则,这些设计关系数据库的准则称为范式,数据库设计过程中对这些关系的检查和修改使之符合范式的过程称之为关系的规范化。
(1)不规范模式分析
为描述一个学生的各种关系,可以使用学号、姓名、性别、出生日期、课程名称、成绩、课程教师等一些属性,将这些属性作为二维表的列,并选择学号作为主键,就形成了一个未经过规范处理的反映学生信息的关系表,录入数据后形成的基本关系如表2-19所示。
分析表2-19中的数据可以看到,这个表中的数据存在如下一些问题:
表2-19未规范的学生信息表
学号
姓名
性别
出生日期
课程名称
成绩
课程教师
职称
201315030101
张三
男
1994-4-26
计算机应用基础
86
李华
讲师
201315030101
张三
男
1994-4-26
网页设计
85
王想
副教授
201315030101
张三
男
1994-4-26
电子商务概论
88
张杨
讲师
201315030202
李四
男
1994-2-8
计算机应用基础
90
李华
讲师
201315030202
李四
男
1994-2-8
网页设计
90
王想
副教授
201315030202
李四
男
1994-2-8
电子商务概论
93
张杨
讲师
1插入异常
如果某个教师所开的课程某学期没有,或者学生没有选修他开的该课程,那么就无法将该教师及其所开课程的信息存入数据库。
如果新调入一名教师,暂时未主讲任何课程,自然也没有学生选修他的课,那么由于主键不能为空,新教师不能插入此关系。
2删除异常
如果某届学生全部毕业,在删除该系学生时会将课程及相关教师删除。
3数据冗余
一门课程及其教师要与选修该课程的每一个学生出现的次数一样多,因此,一方面要浪费很大的存储空间;另一方面系统在维护数据库完整性时会付出很大的代价。
4修改异常
如果某学生改名,则该学生的所有记录都要逐一修改;又如一门课程更换教师后,必须逐一修改有关的每一条记录,稍有不慎,就有可能漏改某些记录,造成数据的不一致性,破坏了数据的完整性。
上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目2 设计学生管理数据库关系模式 项目 设计 学生 管理 数据库 关系 模式
![提示](https://static.bingdoc.com/images/bang_tan.gif)