版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库设计指南数据库设计指南文档编号文档编号:OSSP_SPE_GUI_DD文档信息文档信息:组织标准过程文档文档名称文档名称:数据库设计指南文档类别文档类别:指南密密 级级:机密版本信息版本信息:V1.0建立日期建立日期:2005-4-20创创 建建 人人:梁勇审审 核核 者者:姚晓清批批 准准 人人:姚晓清批准日期批准日期:2005-6-16保保 管管 人人:韩萍萍存放位置存放位置:组织过程财富库编辑软件编辑软件:Microsoft Office 2003 中文版EPGCONFIDENTIAL文档修订记录版本编号或者更改记录编号*变化状态简要说明变更内容和变更范围日期变更人批准日期批准人A
2、正式发版2004/02/11宋益强2004-2-20姚晓清*变化状态:A增加,M修改,D删除文档审批信息序号审批人角色审批日期签字备注1姚晓清总经理2004-2-20姚晓清目目 录录1引言.1目的.1适用范围.11.3名词定义.1参考文献.12数据库概述.1数据模型.1概念模型.1数据模型.1数据库系统结构.23数据库设计.2需求分析.3需求收集.3需求方法.3需求分析.4需求分析考前须知.4概念结构设计.5设计设计模式.5数据抽象的概念.6数据抽象注意的问题.6局部视图 E-R 模型设计.6视图集成.8逻辑结构设计.8命名标准.8E-R 模型的转化.8模型修改.12物理结构设计.12数据库实
3、施和维护.124设计技巧.13设计表和字段.13选择键和索引.14数据库设计范式.15第一范式1NF.15第二范式2NF.16第三范式3NF.16Boyce-Codd 范式BCNF.16数据完整性.17设计视图.18使用视图的优点.18使用视图的限制.18存储过程.18图表目录图表目录图表 1 数据库设计步骤.3图表 2 系统数据流图.4图表 3 概念结构设计步骤.6图表 4 一对一关系.9图表 6 一对多关系.10图表 7 一对一关系.10图表 8 多对多关系.10图表 9 多元关系.11图表 10 分类关系图.11图表 11 聚集关系.111 1 1 引言引言引言1.1 目的数据库是信息系
4、统的核心和灵魂,数据库设计的好坏是信息系统开发成败的关键,为了提高数据库设计人员的设计能力,特编写?数据库设计指南?,为数据库的设计提供帮助。1.2 适用范围本文档适用于本公司数据库设计人员、开发人员,以及从事数据库相关工作人员。1.3 名词定义 请参见各章节介绍。1.4 参考文献?数据库设计指南?数据库原理? 萨师煊 著 高等教育出版社。?结构化设计技术? 唐任仲 著 2 2 2 数据库概述数据库概述数据库概述2.1 数据模型数据模型是数据库系统中用于提供信息表示和操作手段的形式构架,实现对现实世界中的数据和信息抽象、表示和处理。根据模型的应用目的,通常分为两类层次 ,一是概念模型也称信息模
5、型 ,一是数据模型如:网状模型、层次模型、关系模型 。2.1.1 概念模型概念模型概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是用户和数据库设计人员之间进行交流的语言。概念模型最常用的表示方法是实体联系方法EntityRelationship Approach ,这一方法使用 E-R图描述现实世界中某一组织的概念模型。表示方法:1、 用长方形表示实体型,框内写实体的名称。2、 椭圆行表示实体的属性。并且用无向边连接实体型。3、用菱形表示实体型的联系,用无向边联系实体型,如联系也有属性,责用无向边连接联系和属性。2.1.2 数据模型数据模型 数据模型用于机器世界的建模,是数据在
6、计算机中存促层,需要有严格的形式化定义和一些限制或规定,以便于机器上的实现。当前实际的数据库系统中支持的主要数据模型有:1、 层次模型Hierachical Model2、 网状模型Network Model3、 关系模型Relational Model 关系模型是当前最常用、也最重要的模型。关系模型是建立在数学概念根底上的,是应用数学的方法来处理数据库中的数据。关系模型的主要术语有:1、 关系 一个关系对应于数据库中的一张表。2、 元组 表中的一行称为一个元组。3、 属性 表中的一列称为属性4、 主码 表中唯一标识一个元组的属性组。5、 域 属性的取值范围。6、 分量 元组中的一个属性值7、
7、 关系模式 用关系名属性 1,属性 2, 。 。 。 。 描述关系。2.2 数据库系统结构数据库的体系结构是数据库系统的一个总框架。尽管实际的数据库系统软件多种多样,但是绝大多数数据库系统的总的体系结构都具有三级模式。三级模式结构为:1、 外模式子模式、用户模式 是数据库用户看到的数据视图。2、 模式逻辑模式 是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。3、内模式存储模式 是数据在数据库系统内部的表示3 3 3 数据库设计数据库设计数据库设计数据库设计是指对于一个给定的应用环境、构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足用户的信息要求、处
8、理要求等应用需求。在数据库的标准设计法中比拟著名的是新奥尔良New Orleans设计方法,将数据库设计分为四个阶段:需求分析、概念设计、逻辑设计、物理设计。需求收集和分析设计概念结构设计逻辑结构数据模型优化设计物理结构评价设计、性能测试物理实现需求分析概念设计逻辑设计物理设计图表 1 数据库设计步骤3.1 需求分析需求收集和分析阶段主要是对现实世界要处理的对象组织、部门、企业等进行详细的调查,了解原系统如果原来有系统的概况,确定新系统的根底数据和数据处理,整理收集到的根底数据和组织的数据流图Data Flow Diagram ,验证并确认需求。为下一步的概念设计打下根底。3.1.1 需求收集
9、需求收集需求收集的主要要点是处理和数据,详细了解每个用户对系统的如下要求:1、 信息要求用户将从数据库中获取那些信息内容,用户有那些信息需要处理,那些数据需要存储,从现有的系统可以获得那些信息。2、 处理要求 用户需要系统完成什么功能,系统需要处理那些数据信息,如何处理批处理、联机处理 。3、 平安性和完整性要求 系统应当满足什么样的平安性,如何保证数据的平安性、可靠性。4、 报表要求 要了解用户通常是如何报告数据的:批处理还是在线提交报表?时间间隔是每天、每周、每月、每个季度还是每年?如果需要的话还可以考虑创立总结表。系统生成的主键在报表中很难管理。用户在具有系统生成主键的表内用副键进行检索
10、往往会返回许多重复数据。这样的检索性能比拟低而且容易引起混乱。3.1.2 需求方法需求方法1、 考察现有系统 因为不是所有的系统都是从头开始建设,可能是在现有的系统上加以扩展,可以考察当前系统,了解现有系统的结构和业务流程,了解待开发系统可以利用的现有信息。2、 了解组织机构 了解组织有那些部门组成。各部门的指责是什么,各部门需要处理那些业务,为分析信息流程做好准备。3、 了解各部门的业务活动情况 调查各部门输入和使用的数据是什么,如何加工处理这些数据,输出什么信息,信息输出到什么部门。输出结果以什么格式显示、存储4、确定系统的边界确定那些功能有计算机完成或将来准备用计算机完成,那些有人工完成
11、。3.1.3 需求分析需求分析在完成需求收集的工作以后,接下来就要对收集的信息进行分析,书写需求说明书,完成系统数据流图、数据字典,把分析结果给用户确认。在需求分析阶段,最常用的方法是结构化分析 SAStructured Analysis ,他是一种简单实用采用自顶向下、逐层分解的方式分析系统,用数据流图和数据字典描述系统。任何一个系统都可以抽象为下列图图 2数据来源处理数据存储数据输出图表 2 系统数据流图把系统处理功能逐层分解为假设干的子功能,直至把系统工作过程表达清楚为止,形成多层数据库系统数据流图。数据字典 DDData Dictionary是进行详细的数据收集和数据分析所获的结果,是
12、对系统的数据的详尽描述,是各类数据描述的集合,通常包括以下几个局部。1、 数据项 数据的最小单位。数据项描述数据项名称,数据项含义说明,别名,类型,长度,取值范围,与其他数据项的逻辑关系数据完整性约束条件2、 数据结构 假设干数据项的有意义的集合。数据结构描述数据结构名称,含义说明,组成:数据项名。3、 数据流数据流数据流名,说明,流出过程,流入过程,组成:数据结构或数据项。4、 数据存储 数据存储数据存储名,说明,输入数据流,输出数据流,组成:数据结构或数据项,数据量存取数据量、频度 ,存取方式批处理、联机处理、检索、更新。5、 处理过程 处理过程处理过程名称,说明,输入:数据流,输出:数据
13、流,处理:简要说明3.1.4 需求分析考前须知需求分析考前须知1、 扩充性和改变。需求阶段应充分考虑系统将来应用所涉及的数据,充分考虑系统将来的改变,做好系统接口,使设计易于改动。2、 用户参与 开发人员在数据库需开发过程中应邀请用户积极参与设计过程,减少数据库设计过程中因为不熟悉业务和专业领域的问题造成的缺乏。3.2 概念结构设计概念结构独立于数据库的逻辑结构,独立于支持的数据库的 DBMS,是数据库设计过程中的关键步骤,其主要特点如下:1、分反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的真实模型。2、易于理解,易于和用户交流和参与,更利于数据库的设计。3、
14、易于修改,当现实世界改变时容易修改和扩充。4、易于向关系、网状或层次等数据库模型转换。 E-R 模型是数据库概念结构设计的最正确表达方式。3.2.1 设计设计模式设计设计模式1、 自顶向下 首先定义全局概念结构的框架,然后逐步把功能模块细化,直到能够详细的描述用户的需求为止。2、 自底向上 首先定义个局部应用的概念结构,然后把设计好的局部结构加以合成调整得到全局概念结构。3、 有里向外 首先定义最终要的核心概念结构,然后向外扩充生成其他的概念结构。4、 混合策略 自顶向下和自底向上相结合的方法,用自顶向下的策略生成一个全局的概念结构框架,然后以它为框架集成由自底向上的策略生成的各个局部概念结构
15、。概念结构设计步骤如图 3 示:需求分析DFD、DD数据抽象、局部视图设计视图集成征求用户一件,满意为止分 E-R 图总 E-R 图逻辑结构设计图表 3 概念结构设计步骤3.2.2 数据抽象的概念数据抽象的概念概念设计的第一步就是利用根据抽象机制,把需求阶段的数据抽取人们关心的共同特性,忽略非本质的东西进行抽象、分类、组织,形成实体、实体的属性、标识实体的码、确定实体的联系。在概念设计阶段通常有三种抽象:1、 分类 定义某一概念作为现实世界中的一组对象的类型,这些对象具有某些共同的特性和行为,抽象了对象值和型之间的“Is Member Of的语义,如:学生张三 李四 王五。 。 。 。 。 。
16、Is Member Of2、 聚集 定义某一类型的组成成分,抽象了对象内部类型和成分之间的“ Is Part Of语义。在 E-R 图中表现为实体和属性之间的关系。如:学生学号姓名年龄属性实体Is Part Of3、 概括定义类型之间的一种子集的关系,它抽象了类型之间的“Is Subset Of的语义。概括有一个很重要得性质就是:继承性,子类继承超类的所有属性,并且有自己的属性。如:学生本科生研究生Is Subset Of超类子类3.2.3 数据抽象注意的问题数据抽象注意的问题在数据抽象过程中需要注意的一个问题就是聚集,在聚集过程中可能出现比拟复杂的聚集,即某一类型的成分仍是一个聚集,但是这种
17、聚集不允许出现在 E-R 模型中,对于这种聚集情况需要抽象一个新的实体。然后定义实体之间的关系。3.2.4 局部视图局部视图 E-R 模型设计模型设计E-R 模型设计,就是根据需求分析阶段确定的数据字典、数据流图应用三种抽象方法把数据从数据字典中抽象出来,参照某一层次的数据流图标定出改应用中的实体、属性、实体间的联系,然后用 E-R图表现。一、E-R 模型设计:1、 抽象实体 实体是现实中存在的对象,有具体的,也有抽象的;有物理上存在的,也有概念性的;例如,学生、课程,等等。它们的特征是可以互相区别,否那么就会被认为是同一对象。但凡可以互相区别、又可以被人们识别的事、物、概念等统统可以被抽象为
18、实体。数据流图中的数据存贮就是一种实体。实体可以分为独立实体和附属实体或弱实体,独立实体是不依赖于其它实体和联系而可以独立存在的实体,如 “学生档案、 “课程档案等等,独立实体常 常被直接简称为实体;附属实体是这样一类实体,其存在依赖于其它实体和联系,在实体联系图中用带圆角的矩形框表示,例如 “注册记录是附属实体,它的存在依赖于实体 “学生档案和联系“注册,“选课单也是附属实体,它的存在依赖于实体“学生档案、 “课程档案和联系“选课。 2、 定义实体关系 实体之间可能会有各种关系。例如, “学生与“课程之间有“选课的关系。这种实体和实体之间的关系被抽象为联系。在实体联系图中,联系用联结有关实体
19、的菱形框表示,联系可以是一对一(1:1),一对多(1:N)或多对多(M:N)的。例如在大学教务管理问题中, “学生与“课程是多对多的“选课联系联系。3、 定义属性实体一般具有假设干特征,这些特征就称为实体的属性,例如实体 “学生 具有学号、 姓名、性别、 出生日期和系别等特征,这些就是它的属性。联系也可以有属性,例如学生选修某门课程学期,它既不是学生的属性,也不是课程的属性,因为它依赖于某个特定的学生,又依赖于某门特定的课程,所以它是学生与课程之间的联系“选课的属性。例如联系“选课的属性被概括在附属实体“选课单中。联系 具有属性这一概念对于理解数据的语义是非常重要的4、 主键 如果实体的某一属
20、性或某几个属性组成的属性组的值能唯一地决定该实体其它所有属性的值,也就是能唯一地标识该实体,而其任何真子集无此性质,那么这个属性或属性组称为实体键。如果一个实体有多个实体键存在,那么可从其中选一个最常用到的作为实体的主键。例如实体“学生的主键是学号,一个学生的学号确定了,那么他的姓名、性别、出生日期和系别等属性也就确定了。在实体联系图中,常在作为主键的属性或属性组与相应实体的联线上加一短垂线表示5、 外键如果实体的主键或属性组的取值依赖于其它实体的主键,那么该主键或属性组称为外键。例如,附属实体“注册记录的主键“学号的取值依赖于实体“学生的主键“学号, “选课单的主键“学号和“课程号的取值依赖
21、于实体“学生的主键“学号和实体“课程的主键“课程号,这些主键和属性就是外键。6、 属性域属性可以是单域的简单属性,也可以是多域的组合属性。组合属性由简单属性和其它组合属性组成。组合属性中允许包括其它组合属性意味着属性可以是一个层次结构7、 属性值 属性可以是单值的,也可以是多值的。例如一个人所获得的学位可能是多值的。当某个属性对某个实体不适应或属性值未知时,可用空缺符 NULL 表示 二、E-R 模型的调整:模型的调整:生成初步的 E-R 模型以后,还需要对生成的 E-R 模型进行调整、修改,调整准那么如下:1、 属性不能再具有需要描述的性质,即属性不能是另一个属性的聚集。2、 属性不能与其他
22、实体有联系,E-R 图中的联系只是实体之间的联系。3、 再满足 1、2 条件的作为属性处理,并且为了简化 E-R 模型的处置,能够作为属性处理的要作为属性处理。有些情况下某个实体的某种属性在特定的环境下需要做特定的处理,例如工种通常为职工的一个属性,但是再与劳保用品有关联的时候需要作为一个实体来处理。如图示:职工姓名工种职工姓名姓名明名名工作工种发放劳保用品3.2.5 视图集成视图集成视图集成就是把各局部视图集成一个总的视图,首先合并视图,解决各个 E-R 图之间的冲突问题生成初步的 E-R 图,然后修改和重构,消除不必要的冗余,生成根本的 E-R 图。一、解决解决 E-R 图的冲突图的冲突A
23、、 属性冲突1、属性域冲突,属性值的类型、取值范围不同。2、属性取值单位冲突。B、 结构冲突1、 同一对象在不同的应用中抽象不同,如:一个为实体,一个为属性2、 同一实体再不同的应用中属性组成不同C、命名冲突1、 同名异意2、 同意异名二、消除冗余消除冗余 消除冗余的数据和冗余的联系。冗余数据指可由根本数据导出的数据。冗余联系指可由其他联系导出的联系。 有时候为了提高系统对某些应用的响应的速度,可以考虑适当的存储一些冗余数据,但是由于数据的冗余容易破坏数据的完整性,就需要在系统中维护数据的完整性。3.3 逻辑结构设计概念结构是独立于 DBMS 的信息结构,逻辑结构设计的任务就是把概念结构转换为
24、与选用的 DBMS所支持的数据模型相符的过程。首先把概念结构向一般的关系、网状等模型转换。然后向特定的 DBMS所支持的数据模型转换,最后进行模型的优化。3.3.1 命名标准命名标准数据库设计过程中对于表和字段的命名一定要采用标准的命名规那么,采用前缀后缀的方式,名字采用有意义的英文单词的组合或者是单词的所写组合,具体的命名标准请参见公司文档?数据库设计标准 v1.1?。3.3.2 E-R 模型的转化模型的转化从实体联系图设计建立关系数据模式是比拟直接和容易的。一般说来,实体和联系可以转换成关系,实体和联系的属性可以转换成关系的属性。具体转换方法和注意的事项如下所述。一、一、和属性的命名和属性
25、的命名 关系和属性的名字可以直接采用实体或联系及其属性的名字。但由于在实体联系图中它们的名字常常是采用汉字命名的,而在程序和数据库系统中采用英语或拼音往往要方便得多,所以一般最好将原来的汉字名字转换成拼音或英文名字二、二、属性和非原子属性的处理属性和非原子属性的处理 在实体联系图中,对属性域和属性的原子特性没有什么限制,但数据库管理系统一般只支持几种有限的数据类型,关系数据模型也不支持非原子属性的表示,因此对于 ER 图中的数据库管理系统不支持的那些属性域和关系数据模型不支持的非原子属性必须做相应的修改。修改非原子属性的一个简单可行的方法是将其展开分解成多个原子数据的形式三、三、联系的转换联系
26、的转换1、 一对一联系11E1E2KAHBR1S图表 4 一对一关系对于图 4 所示的具有一对一联系的实体联系图,如果实体 E1 是全参与,而 E2 是全参与或局部参与,那么可以将其转换为如下二个关系:R1(k, a, h, s);R2 (h, b) 其中第一个关系中的 h 是外键;如果 E2 是全参与,而 E1 是全参与或局部参与,那么可以转换为: R1(k, a);R2 (h, b, k, s) 其中第二个关系中的 k 是外键。 例如,在下列图 5 所示部门和员工的实体联系图中,一个部门必须有一个负责人,而且 只能有一个负责人,负责人和员工之间有负责这样一种一对一的联系。每个部门必有一位负
27、责人,故部门是全参与;而员工不可能都当负责人,故员工是局部参与。因此该实体联系图可以转换为: Employee (EmployeeNo , EmployeeName) Department (DepartmentNo , DepartmentName, EmployeeNo, PeriodInChief)11员工部门员工号姓名部门号名称任期图表 5 一对一关系负责2、 一对多联系 N1E1E2KAHBR1S图表 6 一对多关系对于图 6 所示的具有一对多联系的实体联系图,如果实体 E2 是全参与,那么可以转换成 如下二个关系,其中第二个关系中的 k 是外键 R1(k, a);R2 (h, b,
28、 k, s)如果实体 E2 是局部参与,那么必须可转换成如下三个关系 R1(k, a);R2 (h, b);R3 (h, k, s)其中第三个关系中的 k 是外键。例如,图 7 所示的夫妇和子女之间的父子联系是一对多联系,对于每位子女必有一对 夫妇是其父母,因此实体“子女是全参与;对于每对夫妇,可能有多个子女,也可能连一个子女都没有,因此实体“夫妇是局部参与;该实体联系图可以转换为:Couple (CoupleNo, HusbandName, WifeName ) Younger (YoungerNo, Name, Sex, CoupleNo ) N1夫妇子女夫妻号夫名子女号姓名性别父子妻名图
29、表 7 一对一关系3、 多对多联系NNE1E2KAHBR1S图表 8 多对多关系图 8 所示的具有多对多联系的实体联系图,对于多对多的实体关系图在转换为关系时,可以转换成如下三个关系,其中第三个关系 中的 k、h 是外键 R1(k, a);R2 (h, b);R3 (h, k, s) 这种多对多联系不可能用一个实体的主键唯一地识别,必须用两个实体的主键才能识别一个联系MPNE1E2KAHBR1SE3CJ图表 9 多元关系4、 多元联系图 9 所示的具有多元联系的实体联系图可以转换成如下几个关系,其中第四个关系中 的 k、h、j 是外键 R1(k, a);R2(h, b); R3(j, c);R
30、4 (h, k, j, s)5、 分类转换E1E2A1B1A2B2EAKD/O图表 10 分类关系图图 10 所示的引入了分类概念的实体联系图可以转换成如下关系R(k, a);R1 (k, a1, b1);R2 (k, a2, b2)QMPNE1E2KAHBR1S1E3CJR2S2图表 11 聚集关系6、 聚集转换图 11 所示的引入了聚集概念的实体联系图可以转换成如下关系 R1(k, a);R2(h, b);R3(j , c);R4(k, h, s1);R5 (k, h, j, s2)四、四、总结总结针对概念模型设计时形成的 E-R 模型,采用以上介绍的几种转换方法,就可以把概念模型转换为相
31、应的逻辑结构模型,然后作些相应的调整和完善,把具有相同码的关系模式可以合并为一个关系。这些关系数据模式通常可以直接利用关系数据库系统提供的基表定义功能实现3.3.3 模型修改模型修改通常在完成逻辑模型的根本设计后,从数据库性能等方面考虑,还需要对逻辑模型做适当的修改,通常有以下方面的考虑:1、 垂直分割 针对某个关系,如果某些数据项在主要应用中要经常存取,而其他的数据项用的很少,那么可以把这个关系垂直分为两个关系,可以减少存取的数据量2、 水平分割 假设某个关系中包含两种或多种不同类型的记录型,对于不同的应用关心不同类型的记录型,那么可以把不同类型的记录型水平分割为几个关系3、 适当冗余 有时
32、候为了提高某些应用的效率,减少数据库操作之间的关联等系统开销可以适当增加某些数据项的冗余。3.4 物理结构设计数据库的物理设计是针对某个逻辑数据模型选择一个适宜的应用环境的物理结构的过程,首先确定数据库的物理结构,然后对确定的物理结构的运行时间和空间效率进行评估,满足需求那么转向物理数据库的实施。否那么重新设计结构。 进行物理设计的主要方面包括:1、 全面了解给定的 DBMS 的功能,DBMS 提供的物理环境和工具,特别是存储结构和存取方法2、 了解应用环境,对不同的应用要求按照对组织的重要程度和使用方式进行分类,各种应用的处理频率、响应时间要求等是对时间和空间效率进行平衡和优化的重要依据。3
33、、 了解外存储设备的特性。如分块的原那么,块因子大小的规定,设备的 I/O 特性等。 因为不同的系统 DBMS 所提供的屋里环境、存储结构和存取方法是不相同的,提供应设计人员的设计变量、参数范围也就不相同,因此没有通用的物理设计方法可以遵循。一般的设计内容和原那么如下:1、 定数据库的存储结构 物理数据库的存储结构主要考虑存取时间、存储空间利用率和维护代价三方面。如假设引入摹写冗余数据那么可减少物理 I/O 的次数提高检索效率,相反借阅存储空间那么检索代价就会增加。需要权衡三方面的性能,寻找最有方案2、 存取路径的选择和调整3、 确定数据的存放位置4、 确定存储分配。如:溢出空间的大小和分布参
34、数,块的长度,块因子的大小,缓冲区的大小和个数等3.5 数据库实施和维护逻辑数据库结构设计和评估完成后,选定将要选用的具体的 DBMS 系统,把逻辑机构转换为DBMS 可以接受的源码,生成物理数据库,主要有以下几个主要步骤:1、 数据库数据的载入生成物理数据库后,接下来的工作就是把用户的根本数据导入到系统,再这个过程可能需要编写一些应用程序,对用户的数据进行格式转化、数据校验等,把用户的数据转换为符合数据库结构的数据,导入数据的应用程序应该和数据库物理设计过程并行。考虑到数据库系统存在修改的功能,可以先小局部的载入数据测试数据库性能,在到达需求目标后再把全部数据载入数据库系统。2、 数据库试运
35、行在完成用户数据的载入以后,接下来的工作就是数据库的试运行工作,在这一阶段主要工作就是执行对数据库的各种操作,测试程序的性能,对于不能到达预期的设计目的的进行修改,在本阶段注意问题是由于用户对系统的不熟悉,有可能发生操作错误,因此必须做好数据库的备份、恢复操作。3、运行维护数据库试运行结束后,数据库开始投入真正的使用阶段,在本阶段主要的工作是:A、 数据库的平安性、完整性控制及系统备份和恢复。B、数据库性能的监督、分析和改良。数据库的重组织和重构造4 4 4 设计技巧设计技巧设计技巧4.1 设计表和字段1、 采用有意义的字段名 数据库的表和字段的命名最还使用有意义的英文单词,表达尽量清楚,但也
36、不宜名称过长,这样有利于后续开发人员和其他使用数据库人员正确有效的理解数据库。2、 数据驱动 对于一些特定的设计界面、工作流最好采用数据驱动的方式,而不是编码方式或者与数据库结构相关。因为一旦发生变化可以有比拟灵活的处理方法。并且有些工作可以交付用户自己来作,减少工作复杂度。3、 保持字段名和类型一致性 再多个表中对同一意义的字段的引用要保持一致性,不要修改名字和数据类型。4、 小心使用保存字 要保证你的字段名没有和保存词、数据库系统或者常用访问方法冲突,以防止将来操作的麻烦。5、 仔细选择数据类型 设计数据库时一定要考虑字段类型的选择,数据类型一定要包容数据存储的要求,例如对金额等字段尽量不
37、要使用 INT 类型。6、 增加删除标志 在系统设计时最好添加删除标志字段,尤其是作为系统的根本数据的表,因为一旦删除根本数据后,可能对系统的其他数据造成影响,对于根本数据,最好能够采用逻辑删除的方法,而不是采用物理删除的方法。7、 防止使用触发器 触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假设你确实需要采用触发器,你最好集中对它文档化8、 给文本字段留足容量 ID 类型的文本字段,比方客户 ID 或定单号等等都应该设置得比一般想象更大,因为时间不长你多半就会因为要添加额外的字符而难堪不已。比方说,假设你的客户 ID 为 10 位数长。那你应该把数据库表字段的长度设为
38、 12 或者 13 个字符长。这算浪费空间吗?是有一点,但也没你想象的那么多:一个字段加长 3 个字符在有 1 百万条记录,再加上一点索引的情况下才不过让整个数据库多占据 3MB 的空间。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模的增长了。9、 适当的数据冗余 有时候为了提高某些应用的效率,怎可以适当增加某些数据项的冗余,比方某些查询,适当的冗余可以减少查询引起的表之间的关联造成的系统开销。10、数据分割 针对某些表中的数据,如果某些数据项在主要应用中要经常存取,而其他的数据项用的很少,那么可以把这个关系垂直分为两个关系,可以减少存取的数据量。针对某些表中的数据,假设某些记
39、录需要经常的进行查询、修改等操作,其他的数据很少操作,可以把这些数据进行水平分割,提高系统的性能。4.2 选择键和索引1、 使用系统生成的主键 假设你总是在设计数据库的时候采用系统生成的键作为主键,那么你实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。采用系统生成键作为主键还有一个优点:当你拥有一致的键结构时,找到逻辑缺陷很容易。2、 不要使用用户的键 在确定采用什么字段作为表的键的时候,一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。这样做会迫使你采取以下两个措施: 在创立记录之后对用户编辑字段的行为施加限制。假设你这么
40、做了,你可能会发现你的应用程序在商务需求突然发生变化,而用户需要编辑那些不可编辑的字段时缺乏足够的灵活性。当用户在输入数据之后直到保存记录才发现系统出了问题他们该怎么想?删除重建?假设记录不可重建是否让用户走开? 提出一些检测和纠正键冲突的方法。通常,费点精力也就搞定了,但是从性能上来看这样做的代价就比拟大了。还有,键的纠正可能会迫使你突破你的数据和商业/用户界面层之间的隔离。重要的设计原那么是:你的设计要适应用户而不是让用户来适应你的设计。3、 不要使用用户录入的项做主键 永远不要使用手工输入的键作为主键,因为一旦你输入错误,你唯一能做的就是删除整个记录然后从头开始4、 键的设计原那么 一个
41、记录的主键不能为空。当生成记录时,主键的值必须存在。主键必须保持稳定你不能更改主键的域。主键必须简洁,不要包含过分的属性。主键的值不能改变。 为关联字段创立外键。所有的键都必须唯一。防止使用复合键。外键总是关联唯一的键字段。5、 创立索引 索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。作为一条规那么,我通常对逻辑主键使用唯一的聚簇索引,对系统键采用唯一的非聚簇索引,对任何外键列采用非聚簇索引。不过,索引的建立和维护需要一定的空间和系统的一些开销,必须考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。大多数数据库都索引自动创立的主
42、键字段,但是忘了索引外键,它们也是经常使用的键,比方运行查询显示主表和所有关联表的某条记录就用得上。6、聚簇索引如果 column 保存了高度相关的数据,并且常常被顺序访问时,最好使用 clustered 索引。同样,在搜寻控制在一定范围内的情况下,对这些 column 也最好使用 clustered 索引。每个表格上只有一个clustered 索引。7、非聚簇索引如果 columns 包含的数据相关性较差,你可以使用 nonculstered 索引。非聚簇索引可以建立多个。当建立外键foreign key关系时,如果你打算频繁使用它,那么在外关键字 cloumn 上建立nonclustere
43、d 索引不失为一个好的方法。8、不能作为索引的条件不要索引 memo/note 字段。不要索引大型字段有很多字符 。这样作会让索引占用太多的存储空间 不要为小型数据表设置任何键,假设它们经常有插入和删除操作就更别这样作了。对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间4.3 数据库设计范式数据库标准化的过程非常著名,所以有正式的规那么来保证标准化数据库的建设。这些规那么有七条,叫做范式,而在大多数情况下头四条就够用了。4.3.1 第一范式第一范式1NF在关系模式 R 中的每一个具体关系 r 中,如果每个属性值 都是不可再分的最小数据单位,那么称 R 是第一范式的关系。例:如职工号
44、,姓名, 号码组成一个表一个人可能有一个办公室 和一个家里 号码 标准成为标准成为 1NF1NF 有三种方法有三种方法: 1、是重复存储职工号和姓名。这样,关键字只能是 号码。 2、是职工号为关键字, 号码分为单位 和住宅 两个属性 3、是职工号为关键字,但强制每条记录只能有一个 号码。 评价:评价:以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。 4.3.2 第二范式第二范式2NF如果关系模式 RU,F中的所有非主属性都完全依赖于任意一个候选关键字,那么称关系 R 是属于第二范式的。 例:选课关系 SCISNO,CNO,GRADE,CREDIT其中 SNO 为学号, CNO 为课
45、程号,GRADEGE 为成绩,CREDIT 为学分。 由以上条件,关键字为组合关键字SNO,CNO 在应用中使用以上关系模式有以下问题:在应用中使用以上关系模式有以下问题: 1、数据冗余,假设同一门课由 40 个学生选修,学分就 重复 40 次。 2、更新异常,假设调整了某课程的学分,相应的元组 CREDIT 值都要更新,有可能会出现同一门课学分不同。 3、插入异常,如方案开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。 4、删除异常,假设学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选修,那么此门课程及学分记录无法保存。 分析:分析:非关键字属性 CRE
46、DIT 仅函数依赖于 CNO,也就是 CREDIT 局部依赖组合关键字SNO,CNO而不是完全依赖。 解决方法:解决方法:分成两个关系模式 SC1SNO,CNO,GRADE ,C2CNO,CREDIT 。新关系包括两个关系模式,它们之间通过 SC1 中的外关键字 CNO 相联系,需要时再进行自然联接,恢复了原来的关系 4.3.3 第三范式第三范式3NF如果关系模式 RU,F中的所有非主属性对任何候选关键字都不存在传递信赖,那么称关系 R是属于第三范式的。 例:如 S1SNO,SNAME,DNO,DNAME,LOCATION 各属性分别代表学号,姓名,所在系,系名称,系地址。 关键字 SNO 决
47、定各个属性。由于是单个关键字,没有局部依赖的问题,肯定是 2NF。存在问题:存在问题:这关系肯定有大量的冗余,有关学生所在的几个属性 DNO,DNAME,LOCATION 将重复存储,插入,删除和修改时也将产生类似以上例的情况。 分析:分析:关系中存在传递依赖造成的。即 SNO - DNO。 而 DNO - SNO 却不存在,DNO - LOCATION, 因此关键辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO - LOCATION 实现的。也就是说,SNO 不直接决定非主属性 LOCATION。 解决方法:解决方法:分为两个关系 SSNO,SNAME,DNO ,DDNO,D
48、NAME,LOCATION 注意:关系 S 中不能没有外关键字 DNO。否那么两个关系之间失去联系。 4.3.4 Boyce-Codd 范式范式BCNF如果关系模式 RU,F的所有属性包括主属性和非主属性都不传递依赖于 R 的任何候选关键字,那么称关系 R 是属于 BCNF 的。或是关系模式 R,如果每个决定因素都包含关键字而不是被关键字所包含 ,那么 RCNF 的关系模式。 例:配件管理关系模式 WPEWNO,PNO,ENO,QNT分别表仓库号,配件号,职工号,数量。有以下条件 1、一个仓库有多个职工。 2、一个职工仅在一个仓库工作。 3、每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件。 4、同一种型号的配件可以分放在几个仓库中。 分析:分析:由以上得 PNO 不能确定 QNT,由组合属性WNO,PNO来决定,存在函数依赖WNO,PNO - ENO。由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性WNO,PNO才能确定负责人,有WNO,PNO- ENO。因为 一个职工仅在一个仓库工作,有 ENO - WNO。由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有 ENO,PNO- QNT。 找一下候选关键字,因为WNO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习专题1物理学史估测题课件
- 冀少版八年级生物上册第三单元第一节种子萌发的过程课件
- 幼儿印染课件教学课件
- 第四节区域经济联系教案
- 《建筑材料》教案
- 住宅小区电梯安装招标细则须知
- 绵阳市羽毛球馆租赁合同
- 印刷厂操作员聘用协议
- 教育资源共享办法
- 福州市停车场突发事件应急预案
- 《生物化学》本科课件第12章+核酸通论
- 2022小学新课程标准《语文》
- 增强对外话语主动提升国际传播能力PPT高度重视网络对外传播切实提升国际话语主动权PPT课件(带内容)
- 垃圾电厂专用语中英文对照手册
- 第7章模拟电路(杨素行)课件
- 砼试块同条件、标养留置方案
- 一年级上册认字闪卡PPT课件
- 教师说课教学 模板PPT (212)
- (高清版)JGJ340-2015建筑地基检测技术规范
- 农产品市场营销培训(共66页).ppt
- 陕西省建筑工程施工通用表格、控制资料 (全套)
评论
0/150
提交评论