1.2 数据库设计
1.2.1概念结构设计
通常,把每一类数据对象的个体称为“实体”,而每一类对象个体的集合称为“实体集”,因此,在学生成绩管理系统中主要涉及“学生”和“课程”两个实体集。
其他非主要的实体可以很多,如班级、班长、任课教师、辅导员等实体。把每个实体集涉及的信息项称为属性。就“学生”实体集而言,它的属性有:学号、姓名、性别、出生时间、专业、总学分和备注。“课程”实体集属性有:课程号、课程名、开课学期、学时和学分。
实体集中的实体彼此是可区别的。如果实体集中的属性或最小属性组合的值能唯一标识其对应实体,则将该属性或属性组合称为码。对于每一个实体集,可指定一个码为主码。
如果用矩形框表示实体集,用带半圆的矩形框表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在实体集与属性的连接线上标记一斜线,则可以用图1.4描述学生成绩管理系统中的实体集及每个实体集涉及的属性。
图1.4 学生和课程实体集属性的描述
实体集A和实体集B之间存在各种关系,通常把这些关系称为“联系”。通常将实体集及实体集联系的图表示称为实体(Entity)-联系(Relationship)模型。
E-R图就是E-R模型的描述方法,即实体-联系图,通常,关系数据库的设计者使用E-R图来对信息世界建模。在E-R图中,使用矩形表示实体型,使用椭圆表示属性,使用菱形表示联系。从分析用户项目涉及的数据对象及数据对象之间的联系出发,到获取E-R图的这一过程,称为概念结构设计。
两个实体集A和B之间的联系可能是以下三种情况之一。
1.一对一的联系(1 : 1)
A中的一个实体至多与B中的一个实体相联系,B中的一个实体也至多与A中的一个实体相联系。例如,“班级”与“正班长”这两个实体集之间的联系是一对一的联系,因为一个班级只有一个正班长,反过来,一个正班长只属于一个班级。“班级”与“正班长”两个实体集的E-R模型如图1.5所示。
图1.5 “班级”与“正班长”实体集E-R模型
2.一对多的联系(1 : n)
A中的一个实体可以与B中的多个实体相联系,而B中的一个实体至多与A中的一个实体相联系。例如,“班级”与“学生”这两个实体集之间的联系是一对多的联系,因为,一个班级可有若干学生,反过来,一个学生只能属于一个班级。“班级”与“学生”两个实体集的E-R模型如图1.6所示。
图1.6 “学生”与“班级”两个实体集的E-R模型
3.多对多的联系(m : n)
A中的一个实体可以与B中的多个实体相联系,而B中的一个实体也可与A中的多个实体相联系。例如,“学生”与“课程”这两个实体集之间的联系是多对多的联系,因为,一个学生可选多门课程,反过来,一门课程可被多个学生选修。“学生”与“课程”两个实体集的E-R模型如图1.7所示。
图1.7 “学生”与“课程”实体集间的E-R模型
1.2.2 逻辑结构设计
用E-R图描述学生成绩管理系统中实体集与实体集之间的联系,目的是以E-R图为工具,设计关系型的数据库,即确定应用系统所使用的数据库应包含哪些表,每个表的结构是怎样的。前面已介绍了实体集之间的联系,下面将介绍根据联系从E-R图得到关系模式的方法。
1.1 : 1联系的E-R图到关系模式的转换
1∶1的联系既可单独对应一个关系模式,也可以不单独对应一个关系模式。
(1)联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,其主码可选参与联系的实体集的任一方的主码。
例如,对于图1.5描述的“班级(BJB)”与“正班长(BZB)”实体集通过属于(SYB)联系E-R模型,可设计如下关系模式(下横线表示该字段为主码):
BJB(班级编号,院系,专业,人数)
BZB(学号,姓名)
SYB(学号,班级编号)
(2)联系不单独对应一个关系模式,联系的属性及一方的主码加入另一方实体集对应的关系模式中。
例如,对于图1.5描述的“班级(BJB)”与“正班长(BZB)”实体集通过属于(SYB)联系E-R模型,可设计如下关系模式:
BJB(班级编号,院系,专业,人数)
BZB(学号,姓名,班级编号)
或者
BJB(班级编号,院系,专业,人数,学号)
BZB(学号,姓名)
2.1 : n联系的E-R图到关系模式的转换
1∶n的联系既可单独对应一个关系模式,也可以不单独对应一个关系模式。
(1)若联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。
例如,对于图1.6描述的“班级(BJB)”与“学生(XSB)”实体集E-R模型,可设计如下关系模式:
BJB(班级编号,院系,专业,人数)
XSB(学号,姓名,性别,出生时间,专业,总学分,备注)
SYB(学号,班级编号)
(2)若联系不单独对应一个关系模式,则将联系的属性及1端的主码加入 n 端实体集对应的关系模式中,主码仍为n端的主码。
例如,对于图1.6描述的“班级(BJB)”与“学生(XSB)”实体集E-R模型,可设计如下关系模式:
BJB(班级编号,院系,专业,人数)
XSB(学号,姓名,性别,出生时间,专业,总学分,备注,班级编号)
3.m : n联系的E-R图到关系模式的转换
m : n的联系单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。
例如,对于图1.7描述的“学生(XSB)”与“课程(KCB)”实体集之间的联系可设计如下关系模式:
XSB(学号,姓名,性别,出生时间,专业,总学分,备注)
KCB(课程号,课程名称,开课学期,学时,学分)
CJB(学号,课程号,成绩)
关系模式CJB的主码是由“学号”和“课程号”两个属性组合起来构成的一个主码,一个关系模式只能有一个主码。
至此,已介绍了根据E-R图设计关系模式的方法,通常这一设计过程称为逻辑结构设计。
在设计好一个项目的关系模式后,就可以在数据库管理系统环境下,创建数据库、关系表及其他数据库对象,输入相应数据,并根据需要对数据库中的数据进行各种操作。
1.2.3 数据库物理设计
数据的物理模型指数据的存储结构,如对数据库物理文件、索引文件的组织方式、文件的存取路径,内存的管理等。物理模型对用户是不可见的,它不仅与数据库管理系统有关,还与操作系统甚至硬件有关。