1、1第4章 数据库及应用程序开发 数据库设计24.2 数据库设计n只有对数据库进行合理的逻辑设计和有效的只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统物理设计才能开发出完善而高效的信息系统 n需求分析需求分析n概念设计概念设计n逻辑结构设计逻辑结构设计n物理结构设计物理结构设计n数据库实施阶段数据库实施阶段 34.2.1需求分析与概念设计n1需求分析需求分析n需求分析就是分析用户的要求需求分析就是分析用户的要求 n结果是否准确地反映了用户的实际要求,将直接影响结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理到后面各个阶段的
2、设计,并影响到设计结果是否合理和实用和实用n需求分析的任务:需求分析的任务: n详细调查要处理的对象详细调查要处理的对象n了解原系统工作概况了解原系统工作概况,明确用户的各种需求明确用户的各种需求 n确定新系统的功能确定新系统的功能n考虑今后可能的扩充和改变考虑今后可能的扩充和改变4n信息要求信息要求n要从数据库中获得信息的内容与性质要从数据库中获得信息的内容与性质n处理要求处理要求n要完成什么处理功能,对处理的响应时间有什么要求。要完成什么处理功能,对处理的响应时间有什么要求。n安全性与完整性要求安全性与完整性要求n安全性要求描述不同用户使用和操作数据库的情况安全性要求描述不同用户使用和操作
3、数据库的情况n完整性要求描述数据之间的关联以及数据的取值范围完整性要求描述数据之间的关联以及数据的取值范围52概念设计概念设计 n以以DFDDFD和和DDDD提供的信息作为输入,运用信息模提供的信息作为输入,运用信息模型工具对目标进行描述,并以用户能理解的形型工具对目标进行描述,并以用户能理解的形式表达信息。这种表达独立于具体的式表达信息。这种表达独立于具体的DBMS DBMS nERER方法方法实体实体联系模型联系模型 n将现实世界抽象为具有属性的实体及联系。画将现实世界抽象为具有属性的实体及联系。画出一张出一张ER图,就得到了一个对系统信息的初图,就得到了一个对系统信息的初步描述,进而形成
4、数据库的概念模型。步描述,进而形成数据库的概念模型。 64.2.2逻辑结构设计逻辑结构设计 nER关系模型关系模型n步骤:步骤:n将概念结构转化为一般的关系模型。将概念结构转化为一般的关系模型。n将转化来的关系模型向特定将转化来的关系模型向特定DBMSDBMS支持下的数支持下的数据模型转换。据模型转换。n对数据模型进行优化对数据模型进行优化71数据库逻辑模型的产生(1 1)一个实体型转换为一个关系模式。实体的)一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。属性就是关系的属性,实体的码就是关系的码。8(2)一个)一个1:l联系,联系,n可以转换为一个独立的关系模式
5、:各实体的码可以转换为一个独立的关系模式:各实体的码以及联系本身的属性均转换为关系的属性,每以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。个实体的码均是该关系的候选码。 n与一端的关系模式合并:在该关系模式的属性与一端的关系模式合并:在该关系模式的属性中加入另一个关系模式的码和联系本身的属中加入另一个关系模式的码和联系本身的属性性 。9【例【例4-434-43】 将将1:1联系的联系的E-R图转换为关系模型。图转换为关系模型。10方案方案1 n职工(职工(职工号职工号,姓名,年龄),姓名,年龄)n产品(产品(产品号产品号,产品名,价格),产品名,价格)n负责(负责(职工
6、号职工号,产品号产品号)n方案方案2n职工(职工(职工号职工号,姓名,年龄,产品号),姓名,年龄,产品号)n 产品(产品(产品号产品号,产品名,价格),产品名,价格)n方案方案3 3n职工(职工(职工号职工号,姓名,年龄),姓名,年龄)n产品(产品(产品号产品号,产品名,价格,职工号),产品名,价格,职工号)n方案方案3 3比较合理比较合理 11(3)(3)一个一个1 1:n n联系联系n可以转换为一个独立的关系模式:可以转换为一个独立的关系模式:n与该联系相连的各实体的码以及联系本身的与该联系相连的各实体的码以及联系本身的属性均换为关系的属性,而关系的码为属性均换为关系的属性,而关系的码为n
7、 n端端实体的码实体的码n与与n n端对应的关系模式合并:端对应的关系模式合并:n联系本身的属性均换为关系的属性,再加联系本身的属性均换为关系的属性,再加1 1端实体的码端实体的码12【例【例4-44】 n将含有将含有1:n联系的联系的E-R图转换为关系模型图转换为关系模型 13n方案方案1: 1:n1: 1:n联系形成的关系独立存在。联系形成的关系独立存在。n仓库(仓库(仓库号仓库号,地点,面积),地点,面积)n产品(产品(产品号产品号,产品名,价格),产品名,价格)n仓储(仓库号,仓储(仓库号,产品号产品号,数量),数量)n方案方案2: 2: 联系形成的关系与联系形成的关系与n n端对象合
8、并端对象合并n仓库(仓库(仓库号仓库号,地点,面积),地点,面积)n产品(产品(产品号产品号,产品名,价格,仓库号,数量),产品名,价格,仓库号,数量)n方案方案2较优较优 14(4 4)m m:n n联系联系n一个一个m m:n n联系转换为一个关系模式:联系转换为一个关系模式:n与该联系相连的各实体的码以及联系本身与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码的属性均转换为关系的属性。而关系的码为各实体码的组合。为各实体码的组合。15【例【例4-45】 一个一个m m:n n联系转换为一个关系模式联系转换为一个关系模式16【例【例4-45】 n学生(学生(学号学号
9、,姓名,年龄,性别);,姓名,年龄,性别);n课程(课程(课程号课程号,课程名,学时数);,课程名,学时数);n选修(选修(学号学号,课程号课程号,成绩)。,成绩)。17(5)三个及以上实体间联系三个及以上实体间联系n三个或三个以上实体间的一个多元联系转换为三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。而关系的码为各实体码的组合。 18【例【例4-464-46】 一个一个m m:n n联系转换为一个关系模式联系转换
10、为一个关系模式19【例【例4-46】 n供应商(供应商(供应商号供应商号,供应商名,地址),供应商名,地址)n零件(零件(零件号零件号,零件名,单价),零件名,单价)n产品(产品(产品号产品号,产品名,型号),产品名,型号)n供应(供应(供应商号,零件号,产品号供应商号,零件号,产品号,数量),数量)20(6)(6)同一实体集联系,同一实体集联系,按上述按上述1 1:1 1,1:n1:n和和m m:n n三种情况分别处理。三种情况分别处理。21【例【例4-47】 n将含有同一实体集的将含有同一实体集的1:n1:n联系的联系的E-RE-R图转换为关图转换为关系模型系模型 22n方案方案1 1:转
11、换为两个关系模式。:转换为两个关系模式。 职工(职工(职工号职工号,姓名,年龄),姓名,年龄) 领导(领导(领导工号领导工号,职工号职工号)n方案方案2:2:转换为一个关系模式。转换为一个关系模式。 职工(职工(职工号职工号,姓名,年龄,领导工号),姓名,年龄,领导工号)23【例【例4-48】 n将含有同实体集间将含有同实体集间m:n联系的联系的E-R图转换为关图转换为关系模式系模式 24n零件(零件(零件号零件号,名称,价格),名称,价格)n组装(组装(组装件号组装件号,零件号,零件号,数量),数量)252.数据模型的优化数据模型的优化 n以规范化理论为指导以规范化理论为指导 n(1 1)确
12、定数据依赖。按需求分析,写出各)确定数据依赖。按需求分析,写出各属性之间的数据依赖。属性之间的数据依赖。n(2 2)考查是否存在部分函数依赖、传递函)考查是否存在部分函数依赖、传递函数依赖等,确定各关系模式分别属于第几范数依赖等,确定各关系模式分别属于第几范式。式。n(3 3)按照需求分析对数据处理的要求,确)按照需求分析对数据处理的要求,确定是否需要对它们进行合并或分解。定是否需要对它们进行合并或分解。n并不是规范化程度越高的关系就越好并不是规范化程度越高的关系就越好 263设计用户模式设计用户模式 n利用视图功能设计更符合局部用户需要的用户利用视图功能设计更符合局部用户需要的用户外模式。外
13、模式。n定义数据库模式主要是从系统的时间效率、空定义数据库模式主要是从系统的时间效率、空间效率、易维护等角度出发。间效率、易维护等角度出发。n用户外模式与模式是独立的,因此在定义用户用户外模式与模式是独立的,因此在定义用户外模式时更应该注重考虑用户的习惯与方便外模式时更应该注重考虑用户的习惯与方便 n(1 1)使用更符合用户习惯的别名)使用更符合用户习惯的别名n(2 2)针对不同级别的用户定义不同的外模)针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。式,以满足系统对安全性的要求。274.2.3数据库物理设计及实施n物理设备上的存储结构与存取方法称为数据库物理设备上的存储结构与存
14、取方法称为数据库的物理结构的物理结构 n1确定数据的存储结构确定数据的存储结构n综合考虑存取时间、存储空间利用率和维护代价综合考虑存取时间、存储空间利用率和维护代价3方面的因素。方面的因素。n2 2设计数据的存取路径设计数据的存取路径n在关系数据库中,选择存取路径主要是指确定如在关系数据库中,选择存取路径主要是指确定如何建立索引。何建立索引。 28索引索引 n(1 1)聚簇索引)聚簇索引n聚簇键相同的元组自然地被放在同一个物理聚簇键相同的元组自然地被放在同一个物理页中,如果元组过多,一个物理页放不下,页中,如果元组过多,一个物理页放不下,则被链接到多个物理页中则被链接到多个物理页中 。n(2
15、2)非聚簇索引)非聚簇索引n索引页上的顺序与物理数据页上的顺序一般索引页上的顺序与物理数据页上的顺序一般不一致。不一致。29建立索引原则建立索引原则n一个(组)属性经常在操作条件中出现。一个(组)属性经常在操作条件中出现。n一个(组)属性经常作为聚集函数的参数。一个(组)属性经常作为聚集函数的参数。n一个(组)属性经常在连接操作的连接条件中一个(组)属性经常在连接操作的连接条件中出现。出现。 30建立聚簇索引原则建立聚簇索引原则n检索数据时,常以某个(组)属性作为排序、检索数据时,常以某个(组)属性作为排序、分组条件。分组条件。n检索数据时,常以某个(组)属性作为检索限检索数据时,常以某个(组
16、)属性作为检索限制条件,并返回大量数据。制条件,并返回大量数据。n表中某个(组)的值重复性较大。表中某个(组)的值重复性较大。313确定数据的存放位置n为了提高系统性能,数据应该根据应用情况将为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。率较低部分分开存放。 n数据库数据备份、日志文件备份等,可以考虑数据库数据备份、日志文件备份等,可以考虑存放在磁带上。存放在磁带上。n可以考虑将表和索引分别放在不同的磁盘上。可以考虑将表和索引分别放在不同的磁盘上。在查询时,由于两个磁盘驱动器分别在工作,在查询时,由于
17、两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。因而可以保证物理读写速度比较快。324确定系统配置确定系统配置 n同时使用数据库的用户数同时使用数据库的用户数n同时打开的数据库对象数同时打开的数据库对象数n使用的缓冲区长度、个数使用的缓冲区长度、个数n时间片大小,数据库大小时间片大小,数据库大小n物理块的大小,物理块的装填因子物理块的大小,物理块的装填因子335数据库的实施(1 1)定义数据库结构)定义数据库结构(2 2)数据装载)数据装载34例子建立例子建立图书馆图书馆需求分析需求分析n查询图书查询图书:通过书名和类别查询库中的图书,:通过书名和类别查询库中的图书,其中书名为其中书
18、名为模糊查询模糊查询。n借书处理借书处理:在查询的基础上完成借书登记处理。:在查询的基础上完成借书登记处理。借书时需要输入书号和读者编号,修改图书表借书时需要输入书号和读者编号,修改图书表记录和增加借阅表的记录。记录和增加借阅表的记录。n还书处理还书处理:实现还书处理操作。还书时需要先:实现还书处理操作。还书时需要先修改图书记录,改变其借出否标志,再删除相修改图书记录,改变其借出否标志,再删除相关的借阅记录。关的借阅记录。35数据库设计数据库设计n概念模型概念模型读者读者 36图书图书 37借书借书 38数据库逻辑模型数据库逻辑模型 n读者读者(编号编号,姓名,单位,性别,电话),姓名,单位,
19、性别,电话)n图书图书(书号书号,类别,出版社,作者,书名,定,类别,出版社,作者,书名,定价,借出否)价,借出否)n借阅借阅(书号,读者编号书号,读者编号,借阅日期),借阅日期) 39规范化规范化 n图书图书:书号书号类别,书号类别,书号出版社,书号出版社,书号作者,书号作者,书号书名,书号书名,书号定价,书号定价,书号借出借出否否;n读者读者:编号编号姓名,编号姓名,编号单位,编号单位,编号性性别,编号别,编号电话电话;n借阅借阅:(书号,读者编号):(书号,读者编号)借阅日期;借阅日期;所有非主属性对码完全并直接依赖。各表均为第所有非主属性对码完全并直接依赖。各表均为第三范式。三范式。4
20、0完整性约束完整性约束 n主码约束:主码约束:在在“图书图书”表中,表中,“书号书号”为主码;为主码;在在“读者读者”表中,表中,“编号编号”为主码;为主码;在在“借阅借阅”表中,表中,“书号书号”和和“读者编号读者编号”为主为主码。码。这些主码的属性值具有惟一性和非空性。这些主码的属性值具有惟一性和非空性。41借阅表和图书表间的外码约束:借阅表和图书表间的外码约束: n借阅中书号为外码,参照表为图书,参照属性借阅中书号为外码,参照表为图书,参照属性为书号。为书号。n在借阅关系中插入元组(借阅图书)时,仅当在借阅关系中插入元组(借阅图书)时,仅当图书表中有相应书号时,系统才执行插人操作,图书表
21、中有相应书号时,系统才执行插人操作,否则拒绝此操作。否则拒绝此操作。 42借阅表和读者表间的外码约束借阅表和读者表间的外码约束借阅中读者编号为外码,参照表为读者,参照属借阅中读者编号为外码,参照表为读者,参照属性为编号。性为编号。在借阅关系中插入元组(借阅图书)时,仅当读在借阅关系中插入元组(借阅图书)时,仅当读者表中有相应读者编号时,系统才执行插人操者表中有相应读者编号时,系统才执行插人操作,否则拒绝此操作。作,否则拒绝此操作。43关系的属性设计关系的属性设计关系属性的设计包括:关系属性的设计包括:n属性名、属性名、n数据类型、数据类型、n数据长度、数据长度、n该属性是否允许空值、该属性是否允许空值、n是否为主码、是否为主码、n是否为索引项是否为索引项n及约束条件。及约束条件。44读者表读者表 45图书表图书表 46借阅表借阅表