当前位置:首页 > 数据库应用系统设计实例 - 图文
图8-10 经优化后的全局ER图
8.5系统的逻辑设计
概念设计阶段设计的数据模型,是独立于任何一种商用化的DBMS的信息结构。逻辑设计阶段的主要任务,是把ER图转化为所选用的DBMS产品支持的数据模型。由于该系统采用SQL Servetr 2000关系型数据库系统,因此,应将概念设计的:ER模型转化为关系数据模型。
8.5.1 转化为关系数据模型
首先,从任课教师实体和课程实体以及它们之间的联系来考虑。任课教师与课程之间的关系是多对多的联系,所以将任课教师和课程以及讲授联系型分别设计成以下关系模式:
教师(教师编号,教师姓名,籍贯,性别,所学专业,职称,出生日期,家庭住址) 课程(课程编码,课程名称,讲授课时,课程学分) 讲授(教师编号,课程编码,开课年度,开课学期) 教室实体型与讲授联系型是用聚集来表示的,并且存在两种占用联系,它们之间的关系是多对多的关系,可以划分为以下3个关系模式:
教室(教室编码,最大容量,教室类型)
授课占用(教师编号,课程编码,教室编码,课表时间,授课周次) 考试占用(教师编号,课程编码,教室编码,考试时间,考场人数)
专业实体和班级实体之间的联系是一对多的联系型(1:n),所以可以用以下两个关系模式来表示,其中联系被移动到班级实体中:
班级(班级编码,班级名称,班级简称,专业编码)
专业(专业编码,专业名称,专业性质,专业简称,可授学位)
班级实体和学生实体之间的联系是一对多的联系型(1:n),所以可以用两个关系模式来表示。但是班级已有关系模式“班级(班级编码,班级名称,班级简称,专业编码)”,所以下面只生成一个关系模式,其中联系被移动到学生实体中:
学生(学号,姓名,出生日期,籍贯,性别,家庭住址,班级编码) 学生实体与讲授联系型的关系是用聚集来表示的,它们之间的关系是多对多的关系,可以使用以下关系模式来表示:
修课(课程编码,学号,教师编号,考试成绩)
8.5.2 关系数据模型的优化与调整
在进行关系模式设计之后,还需要以规范化理论为指导,以实际应用的需要为参考,对关系模式进行优化,以达到消除异常和提高系统效率的目的。
以规范化理论为指导,其主要方法是消除各数据项问的部分函数依赖、传递函数依赖等。
首先,应确定数据间的依赖关系。确定依赖关系,一般在需求分析时就做了一些工作,ER图中实体间的依赖关系就是数据依赖的一种表现形式。
其次,检查是否存在部分函数依赖、传递函数依赖,然后通过投影分解,消除相应的部 分函数依赖和传递函数依赖,来达到所需的范式。
一般说来,关系模式只需满足第三范式即可。从8.6.1小节所述关系模式可以看出,它们满足第三范式,在此就不具体分析。
在实际应用设计中,关系模式的规范化程度并不是越高越好。因为从低范式向高范式转
- 13 -
化时,必须将关系模式分解成多个关系模式。这样,当执行查询时,如果用户所需的信息在多个表中,就需要进行多个表间的连接,这无疑对系统带来较大的时间开销。为了提高系统处理性能,要对相关程度比较高的表进行合并,或者在表中增加相关程度比较高的属性(表的列)。这时,选择较低的第一范式或第二范式可能比较适合。
如果系统某个表的数据记录很多,记录多到数百万条时,系统查询效率将很低。可以 通过分析系统数据的使用特点,做相应处理。例如,当某些数据记录仅被某部分用户使用 时,可以将数据库表的记录根据用户划分,分解成多个子集放入不同的表中。
前面设计出的教师、课程、教室、班级、专业以及学生等关系模式,都比较适合实际应 用,一般不需要作结构上的优化。
对于“讲授(教师编号,课程编码,开课年度,开课学期)”关系模式,既可用作存储教学计划信息,又代表某门课程由某个老师在某年的某学期主讲。当然,同一门课可能在同一 学期由多个教师主讲,教师编码和课程编码对于用户不直观,使用教师姓名和课程名称比较直观,要得到教师姓名和课程名称就必须分别和“教师”以及“课程”关系模式进行连接, 因而有时问上的开销。另外,要反映“授课和教学计划”的特征,可将关系模式的名字改为 “授课一计划”,因此,关系模式改为“授课~计划(教师编号,课程编码,教师姓名,课程名称,开课年度,开课学期)”。
按照上面的方法,可将“授课占用(教师编号,课程编码,教室编码,课表时间,授课周次)”,“考试占用(教师编号,课程编码,教室编码,考试时间,考场人数)”两个关系模式分别改为“授课安排(教师编号,课程编码,教室编码,课表时间,教师姓名,课程名称,课周次)”,“考试安排(教师编号,课程编码,教室编码,考试时间,教师姓名,课程名称,考场人数)”。
对于“修课”关系模式,由于教务员要审核学生选课和考试成绩,因此需增加审核信息 属性。因此,“修课”关系模式调整为“修课(学号,课程编码,教师编号,学生姓名,教师姓名,课程名称,选课审核人,考试成绩,成绩审核人)”。
为了增加系统的安全性,需要对教师和学生分别检查密码口令,因此需要在“教师”和 “学生”关系模式中增加相应的属性。即“教师(教师编号,教师姓名,籍贯,性别,所学专业,职称,出生日期,家庭住址,登录密码,登录IP,最后登录时间)”,“学生(学号,姓名,出生日期,籍贯,性别,家庭住址,班级编码,登录密码,登录IP,最后登录时间)”。
8.5.3 数据库表的结构
得出数据库的各个关系模式后,需要根据需求分析阶段数据字典的数据项描述,给出各数据库表结构。考虑到系统的兼容性以及编写程序的方便性,可将关系模式的属性对应为表字段的英文名。同时,考虑到数据依赖关系和数据完整性,需要指出表的主键和外键,以及字段的值域约束和数据类型。不同的数据类型,对系统的效率有较大的影响,例如,对于SQL Server 2000中的char和varchar,相同的数据,char比varchar需要更多的磁盘空间,可能需要更多的I/O和其他处理操作。
系统各表的结构,如表8—1至表8—11所示。
8.6数据库的物理设计
数据库物理设计的任务,是将逻辑设计映射到存储介质上,利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护。物理设计主要考虑的内容包括:使用哪种类型的磁盘硬件,例如,RAID(磁盘冗余阵列)设备;如何将数据放置在磁盘上;在访问数据时,使用哪种索引设计提高查询性能;如何适当设置数据库的所有配置参数,以使数据库高效地运行。
- 14 -
8.6.1 存储介质类型的选择
RAID是由多个磁盘驱动器组成的磁盘系统,可为系统提供更高的性能、可靠性、存储容量和更低的成本。从0到5级,容错阵列共分为6个RAID等级,每个等级使用不同的算法实现容错。SQL Server 2000一般使用RAID等级0、1和5。
RAlD 0等级,是使用数据分割技术实现的磁盘文件系统,它将所有硬盘构成一个磁盘阵列,可以同时对多个硬盘进行读写。RAID O通过在多个磁盘内的并行操作,提高读写性能。例如,一个由两个硬盘组成的RAID 0磁盘阵列,把数据的第一和二位写入第一个硬盘,第三和第四位写入第二个硬盘,这样可以提高数据读写速度。但是不具备备份及容错能力,其价格便宜,硬盘使用效率最佳,但是可靠度是最差的。
RAID 1等级,使用称为镜像集的磁盘文件系统,因而也称该等级为磁盘镜像。磁盘镜像提供选定磁盘冗余的、完全一样的副本。所有写入主磁盘的数据,均写入镜像磁盘。RAID 1提供容错能力,且一般可提高读取性能,但可能会降低系统写数据的性能。
RAID 5等级,也称为带奇偶的数据分割技术,是在设计中最常用的策略。该等级在阵列内的磁盘中,将数据分割成大块,并在所有磁盘中写入奇偶信息,数据冗余由这些奇偶信
- 15 -
息提供。数据和奇偶信息排列在磁盘阵列上,以使二者始终在不同的磁盘上。带奇偶的数据分割技术,比磁盘镜像(RAID 1)提供更好的性能。
为了提高系统的安全性,防止系统因介质的损坏而导致数据丢失的危险,基于windows 2000 RAID5卷实现RAID 5级磁盘阵列。带奇偶的磁盘数据分割技术,将奇偶信息添加到每个磁盘分区上。这样,可提供与磁盘镜像相当的容错保护,而存放冗余数据所需的空间要少得多。当带奇偶的磁盘块或RAID5卷的某个成员发生严重故障时,可以根据其余成员,新生成这个集成员的数据。创建RAID5卷,至少需要3个物理磁盘。因此,在该系统可以使用4个物理磁盘,为后面将介绍的创建多个数据库文件提供支持。
8.6.2定义数据库
SQL Server 2000数据库文件分为3种类型:主数据文件、次数据文件和日志文件。 主数据文件是数据库的起点,指向数据库中文件的其他部分;每个数据库都有一个主 数据文件,其文件扩展名为 mdf。
次数据文件包含除主数据文件外的所有数据文件;有些数据库可能没有次数据文件,而有些数据库则有多个次数据文件。次数据文件的扩展名是.ndf。这些次文件,含有不能放到主数据文件中的所有数据。如果主数据文件可以包含数据库中的所有数据,那么数据库就不需要次数据文件。有些数据库可能足够大,故需要多个次数据文件,将数据扩展到多个磁盘。
日志文件包含恢复数据库所需的所有日志信息,每个数据库必须至少有一个日志文件,但可以不止一个,日志文件的扩展名为.1df。
本系统将数据文件分成以下几个文件:一个主数据文件,存放在C:\Educationaladministration\data\Teachdatl.mdf下;两个次文件,分别存放在D:\Edtlcational administration\data\Teachdat2.mdf和E:\Educational admirlistration\data\Teachdat3.mdf下;日志文件,存放在F:\Educational administration\data\Teachlog.1df下。
这样,系统对4个磁盘进行并行访问,提高系统对磁盘数据的读写效率。其创建数据库的语句如下:
CREATE DATABASE TeachDb ON
PRIMATY (NAME=Teachfilel,
FILENAME=’C:、\\Educational administration \\data\\Teachdatl mdf’ SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Teachfile2,
FILENAME=’D:\\Educational administration \\data \\Teachdat2.mdr’, SIZE=100MB, MAXSIZE=200, FELEGROWTH=20), (NAME=Teachfile3,
FILENAME=’E:\\Educational administration \\data\\Teachdat3.mdf’, SIZE=100MB MAXSIZE=200, FILEGROWTH=20)
- 16 -
共分享92篇相关文档