版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为什么需要设计为什么需要设计数据库?数据库?修建茅屋需要设计吗?修建大厦需要设计吗?结论:当数据库比较复杂时我们需要设计数据库为什么需要设计数据库?良好的数据库设计:q节省数据的存储空间q能够保证数据的完整性q方便进行数据库应用系统的开发糟糕的数据库设计:q数据冗余、存储空间浪费q内存空间浪费q数据更新和插入的异常什么是数据库设计数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境数据库
2、设计专业人员应具备哪些知识?数据库的基本知识和数据库设计技术计算机科学的基础知识和程序设计的方法和技巧软件工程的原理和方法应用领域的知识数据库设计方法手工试凑法设计质量与设计人员的经验和水平有直接关系缺乏科学理论和工程方法的支持,工程的质量难以保证数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价数据库设计方法规范设计法手工设计方法基本思想:过程迭代和逐步求精典型方法新奥尔良(New Orleans)方法将数据库设计分为四个阶段 基于E-R模型的数据库设计方法概念设计阶段广泛采用3NF(第三范式)的设计方法逻辑阶段可采用的有效方法 ODL(Object Definition La
3、nguage)方法面向对象的数据库设计方法计算机辅助设计ORACLE Designer 2000SYBASE PowerDesigner良构设计的目标数据库支持设定的和实时的信息提取。数据库必须存储必要的信息,支持在设计时确定的信息需求,并支持用户可能提出的实时查询。 表应当正确、有效地构造。数据库中的每个表都代表一个主题,由一些相关的字段组成,数据的冗余度尽可能小,并且在整个数据库中通过一个具有唯一值的字段表示。 数据的完整性强加在字段、表和关系级。这些完整性帮助确保数据结构和它们的值始终是有效的和正确的。数据库支持与组织机构有关的业务规则。数据必须提供合法和正确的信息,这些信息对于企业总是
4、有意义的。数据库支持未来的增长。随着企业的信息需求的变化和增长,数据库的结构应当易于修改和扩充。 开发周期现实世界建模信息世界数据库世界模型转换 规范化p需求分析阶段:分析客户的业务和数据处理需求;p概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;p详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;p代码编写阶段:选择具体数据库进行物理实现;p软件测试阶段:p安装部署:数据库设计的基本步骤数据库设计分数据库设计分6个阶段个阶段需求分析需求分析概念结构设计概念结构设计逻辑结构设计逻辑结构设计物理结构设计物理结构设计数据库实施数据库实施数据库
5、运行和维护数据库运行和维护 需求分析和概念设计独立于任何数据库管理系统需求分析和概念设计独立于任何数据库管理系统 逻辑设计和物理设计与选用的逻辑设计和物理设计与选用的DBMS密切相关密切相关数据库设计准备工作准备工作: 选定参加设计的人1. 数据库分析设计人员数据库设计的核心人员自始至终参与数据库设计其水平决定了数据库系统的质量 2.用户在数据库设计中也是举足轻重的主要参加需求分析和数据库的运行维护用户积极参与带来的好处加速数据库设计提高数据库设计的质量3. 程序员在系统实施阶段参与进来,负责编制程序4. 操作员在系统实施阶段参与进来,准备软硬件环境需求分析阶段需求分析阶段准确了解与分析用户需
6、求(包括数据与处理)是整个设计过程的基础,是最困难、最耗费时间的一步概念结构设计阶段概念结构设计阶段是整个数据库设计的关键通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型逻辑结构设计阶段逻辑结构设计阶段将概念结构转换为某个DBMS所支持的数据模型1.对其进行优化数据库物理设计阶段数据库物理设计阶段 为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)数据库实施阶段数据库实施阶段 运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库编制与调试应用程序组织数据入库1.并进行试运行需求分析-任务需求分析就是分析用户的需要与要求
7、需求分析是设计数据库的起点需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用需求分析的任务通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。需求分析-重点调查的重点是“数据”和“处理”,获得用户对数据库要求信息要求处理要求安全性与完整性要求需求分析-难点确定用户最终需求用户缺少计算机知识设计人员缺少用户的专业知识解决方法设计人员必须不断深入地与用户进行交流需求分
8、析-方法 调查清楚用户的实际需求并进行初步分析 与用户达成共识 进一步分析与表达这些需求需求分析-调查步骤 调查组织机构情况 调查各部门的业务活动情况。(调查重点之一) 在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。(调查重点之二) 确定新系统的边界需求分析-调查方法做需求调查时,往往需要同时采用多种方法无论使用何种调查方法,都必须有用户的积极参与和配合设计人员应该和用户取得共同的语言,帮助不熟悉计算机的用户建立数据库环境下的共同概念,并对设计工作的最后结果共同承担责任常用调查方法跟班作业开调查会请专人介绍询问设计调查表请用户填写查阅记录需求分析-分析方法分析和表达用户的需求的常用方
9、法自顶向下的结构化分析方法(Structured Analysis,简称SA方法)SA方法从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统,并用数据流图和数据字典描述系统。需求分析-分析方法-DFD1. 首先把任何一个系统都抽象为:2分解处理功能和数据(1)分解处理功能将处理功能的具体内容分解为若干子功能,再将每个子功能继续分解,直到把系统的工作过程表达清楚为止。(2)分解数据在处理功能逐步分解的同时,其所用的数据也逐级分解,形成若干层次的数据流图(3)表达方法 处理逻辑:用判定表或判定树来描述 数据:用数据字典来描述 3将分析结果再次提交给用户,征得用户的认可信息要求处理要求
10、需求分析-分析方法-DFD举例需求分析-分析方法-数据字典 数据字典的用途是各类数据描述的集合进行详细的数据收集和数据分析所获得的主要结果 数据字典的内容数据项数据结构数据流数据存储处理过程需求分析-分析方法-数据字典各项的描述:数据项描述 = 数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其它数据项的逻辑关系,数据项之间的联系数据结构描述 = 数据结构名,含义说明,组成:数据项或数据结构数据流描述 = 数据流名,说明,数据流来源,数据流去向,组成:数据结构,平均流量,高峰期流量数据存储描述 = 数据存储名,说明,编号,输入的数据流,输出的数据流,组成:数据结构,数据量
11、,存取频度,存取方式处理过程描述 = 处理过程名,说明,输入:数据流,输出:数据流,处理:简要说明数据依赖数据依赖数据完整性约数据完整性约束束数据完整性约束数据完整性约束需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。例:学生学籍管理子系统的数据字典。数据项,以“学号”为例: 数据项名:学号 含义说明:唯一标识每个学生 别名:学生编号 类型:字符型 长度:8 取值范围:00000000至99999999 取值含义:前两位标别该学生所在年级, 后六位按顺序编号 与其他数据项的逻辑关系:需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。例:学生学籍管理子系统的数据字典。数
12、据结构,以“学生”为例“学生”是该系统中的一个核心数据结构: 数据结构:学生 含义说明:是学籍管理子系统的主体数据结构, 定义了一个学生的有关信息 组成:学号,姓名,性别,年龄,所在系,年级需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。例:学生学籍管理子系统的数据字典。数据流,“体检结果”可如下描述: 数据流:体检结果 说明:学生参加体格检查的最终结果 数据流来源:体检 数据流去向:批准 组成: 平均流量: 高峰期流量:需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。例:学生学籍管理子系统的数据字典。数据存储,“学生登记表”可如下描述: 数据存储:学生登记表 说明
13、:记录学生的基本情况 流入数据流: 流出数据流: 组成: 数据量:每年3000张 存取方式:随机存取需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。例:学生学籍管理子系统的数据字典。处理过程,“分配宿舍”可如下描述: 处理过程:分配宿舍说明:为所有新生分配学生宿舍输入:学生,宿舍输出:宿舍安排处理:在新生报到后,为所有新生分配学生宿舍。 要求同一间宿舍只能安排同一性别的学生, 同一个学生只能安排在一个宿舍中。 每个学生的居住面积不小于3平方米。 安排新生宿舍其处理时间应不超过15分钟需求分析-分析方法-数据字典数据字典是关于数据库中数据的描述,是元数据,而不是数据本身数据字典在需
14、求分析阶段建立,在数据库设计过程中不断修改、充实、完善 需求分析-小结设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充 必须强调用户的参与概念结构设计需求分析阶段描述的用户应用需求是现实世界的具体需求将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。概念结构设计是整个数据库设计的关键现实世界机器世界信息世界需求分析概念结构设计概念结构设计概念结构设计的特点 能真实、充分地反映现实世界 易于理解 易于更改 易于向关系、网状、层次等各种数据模型转换描述概念模型的工具 E-R模型概
15、念结构设计-方法设计概念结构的四类方法设计概念结构的四类方法自顶向下自顶向下 首先定义全局概念结构的框架,然后逐步细化概念结构设计-方法自底向上自底向上 首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构概念结构设计-方法逐步扩张逐步扩张 首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构概念结构设计-方法混合策略混合策略 将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。概念结构设计-方法常用策略常用策略自顶向下地进行需求分析自底向上地设计概念结构概念结构设计
16、-方法v自底向上设计概念结构的步骤自底向上设计概念结构的步骤 第1步:抽象数据并设计局部视图第2步:集成局部视图,得到全局概念结构概念结构设计-数据抽象与局部视图数据抽象抽象是对实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。概念结构是对现实世界的一种抽象。三类抽象分类聚集概括概念结构设计-数据抽象与局部视图分类将一类具有共同特性和行为的对象定义为一种某类型,在E-R模型中的实体型就是这种抽象,如学生,课程抽象了对象的值和型之间“is member of”语义学生“is member of”张英王平赵斌实体型课程“is member of”
17、C语言数据库操作系统实体型概念结构设计-数据抽象与局部视图聚集定义某类型的组成成分,对应E-R模型中实体的属性抽象了对象类型和其成分之间的“is part of”语义学生学号姓名专业班级仓库号面积主任仓库姓名年龄性别工资“is part of”实体型属性概念结构设计-数据抽象与局部视图概括定义类型之间的子集联系,形成超(父)类、子类抽象了类型之间“is subset of”语义概括的重要性质:继承,即子类集成超类的所有抽象是E-R模型的抽象机制的扩充学生本科生研究生概括的E-R表示“is subset of”超类子类学号, 姓名,性别, 年龄专业,综合排名导师,研究方向概念结构设计-第一步利用
18、抽象机制,对需求分析阶段收集到的数据进行分类、组织(聚集)形成实体,实体的属性,标识实体的码,确定实体间的联系类型设计局部E-R图选择局部应用逐一设计分E-R图概念结构设计-设计局部E-R图1 选择局部应用 在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,用多层数据流图和数据字典描述了整个系统。设计分E-R图的第一步,就是要根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,让这组图中每一部分对应一个局部应用,我们就可以从这一层次的数据流图为出发点,设计分E-R图。 一般而言,中层的数据流图能较好地反映系统中各局部应用的子系统组成,因此人们往往以中层数据流图
19、作为设计分E-R图的依据。 概念结构设计-设计局部E-R图2 逐一设计分E-R图 每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(1:1、1:n、m:n)。 现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。对象类型的组成成分可以抽象为实体的属性。 概念结构设计-设计局部E-R图2 实际上实体与属性是相对而言的,很难有截然划分的界限。同一事物,在一种应用环境中作为“属性”,在另一种应用环境中就必须作为“实体”。一般说来,
20、在给定的应用环境中: 两条准则:(1)属性不能再具有需要描述的性质。即属性必须是不可分的数据项,不能再由另一些属性组成(2)属性不能与其他实体具有联系。联系只发生在实体之间概念结构设计-设计局部E-R图例 学生选课局部概念结构设计-设计局部E-R图例 教师任课局部概念结构设计-E-R图集成 集成方式多个局部E-R图一次集成,或以累加方式逐步集成集成步骤合并局部E-R图,生成初步E-R图依靠协商或应用语义消除各局部E-R图之间的属性冲突:如属性的类型、取值范围冲突,或属性取值单位冲突命名冲突:如同名异义,或一义多名结构冲突:如不同应用中,同一对象有不同的抽象或同一实体包含的属性不完全相同(三类结
21、构冲突)修改和重构,生成基本E-R图依据分析和规范化理论来消除冗余概念结构设计-三类结构冲突 三类结构冲突三类结构冲突同一对象在不同应用中具有不同的抽象同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同1.实体之间的联系在不同局部视图中呈现不同的类型消除不必要的冗余,设计基本E-R图基本任务基本任务消除不必要的冗余,设计生成基本E-R图合并初步E-R图分E-R图可能存在冗余的数据和冗余的实体间联系基本E-R图消除不必要的冗余消除不必要的冗余,设计基本E-R图消除冗余的方法消除冗余的方法以数据字典和数据流图为依据根据数据字典中关于数据项之间的逻辑关系概念结构设计-E-R图集成 例
22、学会选课系统实例-基本ER图概念结构设计-E-R图集成 例实例 某工厂管理信息系统的视图集成。该厂物资管理分E-R图概念结构设计-E-R图集成 例该厂销售管理分E-R图概念结构设计-E-R图集成 例该厂劳动人事管理分E-R图概念结构设计-E-R图集成 例系统的基本E-R概念结构设计-验证整体概念结构视图集成后形成一个整体的数据库概念结构,对该整体概念结构还必须进行进一步验证,确保它能够满足下列条件:整体概念结构内部必须具有一致性,不存在互相矛盾的表达整体概念结构能准确地反映原来的每个视图结构,包括属性、实体及实体间的联系整体概念结构能满足需求分析阶段所确定的所有要求整体概念结构最终还应该提交给
23、用户,征求用户和有关人员的意见,进行评审、修改和优化,然后把它确定下来,作为数据库的概念结构,作为进一步设计数据库的依据。概念结构设计-实例收集信息:与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务BBS论坛的基本功能:论坛的基本功能:l用户注册和登录:后台数据库需要存放用户的注册信息和在线用户注册和登录:后台数据库需要存放用户的注册信息和在线状态信息;状态信息;l用户发贴:后台数据库需要存放贴子相关信息,如贴子内容、用户发贴:后台数据库需要存放贴子相关信息,如贴子内容、标题等;标题等;l论坛版块管理:后台数据库需要存放各个版块信息,如版主、论坛版块管理:后台数据库需要存放各个版块
24、信息,如版主、版块名称、贴子数等;版块名称、贴子数等;概念结构设计-实例标识对象(实体Entity) 标识数据库要管理的关键对象或实体 实体一般是名词:实体一般是名词:l用户:论坛普通用户、各版块的版主。用户:论坛普通用户、各版块的版主。l用户发的主贴用户发的主贴l用户发的跟贴(回贴)用户发的跟贴(回贴)l版块:论坛的各个版块信息版块:论坛的各个版块信息概念结构设计-实例q标识每个实体的属性 (Attribute)论坛用户:l呢称l密码l电子邮件l生日l性别l用户的等级l备注信息l注册日期l状态l积分主贴l发贴人l发贴表情l回复数量l标题l正文l发贴时间l点击数l状态:l最后回复时间回贴l贴子
25、编号l回贴人,l回贴表情l标题l正文l回贴时间l点击数版块l版块名称l版主l本版格言l点击率l发贴数概念结构设计-实例标识对象之间的关系(Relationship)l跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴;l版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况;l主贴和版块有主从关系:需要表明发贴是属于哪个版块的;l跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的;概念结构设计-实例E-R(EntityRelationship)实体关系图 管理bbsUser(用户,版主)出生日期昵称版块名称版主bbsSection(版块)概念结构设计-绘制ER图映射基数
26、1111M1MMM M用户积分性别用户等级备注信息注册日期版块名称本版留言发贴数状态密码昵称电子邮件 生日论坛用户(BBSUser)管理发表发表跟随属于属于点击率版主标题发贴人贴子编号正文点击率版块(BBSSection)发贴(BBSTopic)发贴人正文状态贴子编号所在版块最后回复时间发贴表情回复数量点击率发贴时间标题M跟贴(BBSReply)所在版块发贴时间最后回复时间发贴表情1概念结构设计-小结概念结构设计的步骤抽象数据并设计局部视图集成局部视图,得到全局概念结构验证整体概念结构逻辑结构设计逻辑结构设计的任务把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相
27、符合的逻辑结构逻辑结构设计的步骤将概念结构转化为一般的关系、网状、层次模型将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换对数据模型进行优化逻辑结构设计逻辑结构设计-向关系模型的转换1实体的转换规则将E-R图中的每一个常规实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。2实体间联系的转换规则(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端所对应的关系模式合并。 (2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端所对应的关系模式合并。(3)一个m:n联系转换为一个关系模式。转换的方法为:与该联系相连的各实体的码以及联系本身的属性均
28、转换为关系的属性,新关系的码为两个相连实体码的组合。(4)三个或三个以上实体间的多元联系转换为一个关系模式。 逻辑结构设计-向关系模型的转换3关系合并规则为了减少系统中的关系个数,如果两个关系模式具有相同的主码,可以考虑将它们合并为一个关系模式。合并的方法是将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性,并适当调整属性的次序。逻辑结构设计-一对一关系的转换方法一方法一联系转换为独立的关系模式模式的属性由联系本身的属性及两个实体的键构成主键由两个实体中的任意一个键构成方法二方法二将联系与一端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内主键不变逻辑结构设计
29、-一对一关系的转换实体对应关系模式分别为:班级(班号,专业,人数)班长(学号,姓名,专长)联系管理(班号,学号)班级班长班号学号姓名人数专业管理11专长关系模式“管理”的主键也可以选择学号建立独立的关系模式建立独立的关系模式逻辑结构设计-一对一关系的转换班级班长班号学号姓名人数专业管理11专长原实体对应关系模式分别为: 班级(班号,专业,人数) 班长(学号,姓名,专长)将联系“管理”合并到实体“班级”对应的模式后为: 班级(班号,专业,人数,学号) 班长(学号,姓名,专长)联系“管理”也可以合并到实体“班长”对应的模式合并到实体的关系模式合并到实体的关系模式逻辑结构设计-一对多关系的转换方法一
30、方法一联系转换为独立的关系模式模式的属性由联系本身的属性及两个实体的键构成主键由n端实体的键组成方法二方法二将联系与n端的实体的关系模式合并,即将联系的属性加入到实体的关系模式内主键不变逻辑结构设计-一对多关系的转换系教师系号教师号姓名年龄系主任系名管理1n性别职称专业电话实体对应的关系模式 系(系号,系名,系主任,电话) 教师(教师号,姓名,专业,职称,性别,年龄)联系对应的关系模式 管理(教师号,系号)建立独立的关系模式建立独立的关系模式逻辑结构设计-一对多关系的转换系教师系号教师号姓名年龄系主任系名管理1n性别职称专业电话实体对应的关系模式 系(系号,系名,系主任,电话) 教师(教师号,
31、姓名,专业,职称,性别,年龄)合并到实体“教师”后 教师(教师号,姓名,专业,职称,性别,年龄,系号)只能合并到只能合并到“多多”的一端的一端合并到实体的关系模式合并到实体的关系模式逻辑结构设计-多对多关系的转换联系只能转换为独立模式联系只能转换为独立模式模式的属性由联系本身的属性及两个实体的键构成主键由两端实体的键组合而成逻辑结构设计-多对多关系的转换课程(课程号,课程名,学时,类别)学生(学号,姓名,性别,专业,出生日期,照片)选修(学号,课程号,分数)课程学生课程号学号姓名照片学时课程名选修mn性别出生日期专业类别分数逻辑结构设计-三个或三个以上实体间的一个多元联系 三个或三个以上实体间
32、的一个多元联系转换为一个关系模式。:与该多元联系相连的各实体的码以及联系本身的属性:各实体码的组合例,“讲授”联系是一个三元联系,可以将它转换为如下关系模式,其中课程号、职工号和书号为关系的组合码:讲授(课程号,职工号,书号)逻辑结构设计-自联系的转换原则同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。例,如果教师实体集内部存在领导与被领导的1:n自联系,我们可以将该联系与教师实体合并,这时主码职工号将多次出现,但作用不同,可用不同的属性名加以区分:教师:职工号,姓名,性别,职称,系主任例:公司部门管理系统的E-R图及其转换成的关系模式部门项目职工电话包括
33、承担n1n1办公室号,面积项目号,预算费参与mn办公室包含1n包括n1职务承担11部门号,预算费,领导人职工号电话号码,说明职工号,姓名,办公电话担任时期,工资分担任务 部门(部门号,部门预算费,领导人职工号) 职工(职工号,姓名,办公电话,部门号) 办公室(办公室号,面积,部门号) 项目(项目号,项目预算费,部门号) 电话(电话号码,说明,办公室号) 项目承担情况(职工号,项目号,分担任务) 工资历史(职工号,职务,担任时期,工资)系课程学生教师管理选修讲授注册11mnnmmn教师号系名系号专业出生日期性别姓名学号姓名性别职称年龄专业系主任电话照片评价分数课程号类别课程名学时系(系号,系名,
34、系主任,电话)学生(学号,姓名,性别,出生日期,专业,照片)课程(课程号,课程名,学时,类别) 教师(教师号,姓名,专业,职称,性别,年龄)选修(学号,课程号,分数)课 程 评 价(教师号,课 程 号 ,评价)管理(教师号,系号)注册(学号,系号)逻辑结构设计-优化数据库逻辑设计的结果不是唯一的。得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化关系数据模型的优化通常以规范化理论为指导逻辑结构设计-数据规范化仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构Dr E.F.codd 最初定义了规范化的三个级别,
35、范式是具有最小冗余的表结构。这些范式是:第一范式(1st NF First Normal Fromate)第二范式(2nd NFSecond Normal Fromate)第三范式(3rd NF Third Normal Fromate)逻辑结构设计-第一范式1NFBuyerIDCountryCity1142中国中国日本美国北京北京东京纽约BuyerIDAddress1234中国北京市 美国纽约市英国利物浦日本东京市 第一范式的目标是确保每列的原子性如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)逻辑结构设计-第二范式2NFOrders字段例子订单编号产品编
36、号订购日期价 格001A0012000-2-3$29.00 Orders字段例子订单编号订购日期0012000-2-3Products字段例子产品编号价 格A001$29.00如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF) 第二范式要求每个表只描述一件事情逻辑结构设计-第三范式3NFOrders字段例子订单编号订购日期顾客编号0012000-2-3AB001顾客姓名Tony Orders字段例子订单编号订购日期顾客编号0012000-2-3AB001 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF) 逻辑
37、结构设计-规范化实例假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)公司定期制定一个工资报表,如图1所示逻辑结构设计-规范化实例工程号工程号工程名称工程名称职工号职工号姓名姓名职务职务小时工资率小时工资率工时工时实发工资实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师601911
38、40.00小计2945.00A2立交桥1001齐光明工程师6515975.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00图1 某公司的工资表逻辑结构设计-规范化实例工程号工程号工程名称工程名称职工号职工号姓名姓名职务职务小时工资率小时工资率工时工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1001齐光明工程师6513A1花园大厦1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技
39、术员6014图2 某公司的项目工时表逻辑结构设计-规范化实例1.表中包含大量的冗余,可能会导致数据异常:更新异常 例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行添加异常 若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)删除异常 例如,1001号职工要辞职,则必须删除所有职工号1001的数据行。这样的删除操作,很可能丢失了其它有用的数据逻辑结构设计-规范化实例采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作
40、,很可能导致数据的不一致性。逻辑结构设计-应用1NF一张表描述了多件事情,如图3所示。工程号工程名称职工号姓名职务小时工资率工时图3 函数依赖图工程信息员工信息项目工时信息逻辑结构设计-应用2NF工程号工程名称职工号姓名职务小时工资率工程号职工号工时图4 应用第二范式工程表员工表项目工时表满足第三范式吗? 逻辑结构设计-应用2NF工程号工程名称职工号姓名职务职务小时工资率工程号职工号工时工程表员工表职务表工程表逻辑结构设计-规范化和性能的关系 为满足某种商业目标,数据库性能比规范化数据库更重要通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列(如成绩
41、总分),以方便查询进行规范化的同时,还需要综合考虑数据库的性能。逻辑结构设计-规范化和性能的关系 例:在关系模式 学生成绩单(学号,英语,数学,语文,平均成绩) 中存在下列函数依赖: 学号英语 学号数学 学号语文 学号平均成绩 (英语, 数学, 语文)平均成绩 显然有: 学号(英语,数学,语文)因此该关系模式中存在传递函数信赖,是2NF关系。 虽然平均成绩可以由其他属性推算出来,但如果应用中需要经常查询学生的平均成绩,为提高效率,我们仍然可保留该冗余数据,对关系模式不再做进一步分解。逻辑结构设计-设计用户子模式根据局部应用需求设计用户子模式设计用户子模式的目的使用更符合用户习惯的别名保证系统安
42、全性简化用户对系统的使用DBMS中一般采用视图(View)机制逻辑结构设计-论坛实例q将各实体转换为对应的表,将各属性转换为各表对应的列q标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列 q在表之间建立主外键,体现实体之间的映射关系 逻辑结构设计-论坛实例UID主键TID主键RID主键SID主键100如何将E-R图转换为表添加各表之间的关系数据库物理设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统为一个给定的逻辑数据模型
43、选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计数据库物理设计-步骤确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构; 对物理结构进行评价,评价的重点是时间和空间效率。 如果评价结果满足原设计要求,则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型数据库物理设计-步骤数据库物理设计确定数据库的物理结构评价数据库的物理结构逻辑结构设计数据库实施物理模型逻辑模型数据库物理设计-准备工作对要运行的事务进行详细分析,获得选择物理数据库设计所需参数充分了解所用RDBMS的内部特征,特别是系统提供的存取方法和存储结构数据库物理设计-选
44、择参数 数据库查询事务查询的关系 查询条件所涉及的属性 连接条件所涉及的属性 查询的投影属性数据更新事务被更新的关系每个关系上的更新操作条件所涉及的属性 修改操作要改变的属性值 每个事务在各关系上运行的频率和性能要求数据库物理设计关系数据库物理设计的内容为关系模式选择存取方法(建立存取路径) 设计关系、索引等数据库文件的物理存储结构数据库物理设计-关系模式存取方法数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。物理设计的第一个任务就是要确定选择哪些存取方法,即建立哪些存取路径。数据库物理设计-关系模式存取方法DBMS常用存取方法索引方法,目前主要是B+
45、树索引方法,经典存取方法,使用最普遍 聚簇(Cluster)方法HASH方法数据库物理设计-索引索引存取方法的选择根据应用要求确定根据应用要求确定 对哪些属性列建立索引 对哪些属性列建立组合索引 对哪些索引要设计为唯一索引数据库物理设计-索引索引存取方法的选择选择索引存取方法的一般规则选择索引存取方法的一般规则如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引数据库物理设计-索引索引存
46、取方法的选择关系上定义的索引数过多会带来较多的额外开销关系上定义的索引数过多会带来较多的额外开销 维护索引的开销 查找索引的开销数据库物理设计-聚簇聚簇存取方法的选择为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块称为聚簇。数据库物理设计-聚簇聚簇的用途1. 大大提高按聚簇属性进行查询的效率例:假设学生关系按所在系建有索引,现在要查询信息系的所有学生名单。信息系的500名学生分布在500个不同的物理块上时,至少要执行500次I/O操作。如果将同一系的学生元组集中存放,则每读一个物理块可得到多个满足查询条件的元组,从而显著地减少了访问
47、磁盘的次数。数据库物理设计-聚簇聚簇的用途2. 节省存储空间聚簇以后,聚簇码相同的元组集中在一起了,因而聚簇码值不必在每个元组中重复存储,只要在一组中存一次就行了数据库物理设计-聚簇聚簇的局限性1. 聚簇只能提高某些特定应用的性能2. 建立与维护聚簇的开销相当大对已有关系建立聚簇,将导致关系中元组移动其物理存储位置,并使此关系上原有的索引无效,必须重建当一个元组的聚簇码改变时,该元组的存储位置也要做相应移动数据库物理设计-聚簇聚簇的适用范围1. 既适用于单个关系独立聚簇,也适用于多个关系组合聚簇例:假设用户经常要按系别查询学生成绩单,这一查询涉及学生关系和选修关系的连接操作,即需要按学号连接这
48、两个关系,为提高连接操作的效率,可以把具有相同学号值的学生元组和选修元组在物理上聚簇在一起。这就相当于把多个关系按“预连接”的形式存放,从而大大提高连接操作的效率。数据库物理设计-聚簇聚簇的适用范围2. 当通过聚簇码进行访问或连接是该关系的主要应用,与聚簇码无关的其他访问很少或者是次要的时,可以使用聚簇。尤其当SQL语句中包含有与聚簇码有关的ORDER BY,GROUP BY,UNION,DISTINCT等子句或短语时,使用聚簇特别有利,可以省去对结果集的排序操作数据库物理设计-聚簇选择聚簇存取的方法1.设计候选聚簇对经常在一起进行连接操作的关系可以建立组合聚簇;如果一个关系的一组属性经常出现
49、在相等比较条件中,则该单个关系可建立聚簇;如果一个关系的一个(或一组)属性上的值重复率很高,则此单个关系可建立聚簇。即对应每个聚簇码值的平均元组数不太少。太少了,聚簇的效果不明显。数据库物理设计-聚簇选择聚簇存取的方法2.优化聚簇设计从聚簇中删除经常进行全表扫描的关系;从聚簇中删除更新操作远多于连接操作的关系;从聚簇中删除重复出现的关系当一个关系同时加入多个聚簇时,必须从这多个聚簇方案(包括不建立聚簇)中选择一个较优的,即在这个聚簇上运行各种事务的总代价最小。数据库物理设计-HASH存取选择HASH存取方法的规则当一个关系满足下列两个条件时,可以选择HASH存取方法该关系的属性主要出现在等值连
50、接条件中或主要出现在相等比较选择条件中该关系的大小可预知,而且不变; 或 该关系的大小动态改变,但所选用的DBMS提供了动态HASH存取方法数据库物理设计-确定物理结构1. 确定数据的存放位置和存储结构 关系 索引 聚簇 日志 备份2. 确定系统配置数据库物理设计-物理存储位置影响数据存放位置和存储结构的因素硬件环境应用需求存取时间存储空间利用率维护代价 这三个方面常常是相互矛盾的 例:消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加 必须进行权衡,选择一个折中方案。数据库物理设计-物理存储位置基本原则根据应用情况将易变部分与稳定部分存取频率较高部分与存取频率较低部分分开存放,以提高系统性能数据库物理设计-物理存储位置例如:数据库数据备份、日志文件备份等由于只在故障恢复时才
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年某科技公司与某广告公司关于软件开发与推广合同
- 2024年度砌墙工程现场施工环境保护合同3篇
- 2024年企业环境管理体系认证咨询合同书3篇
- 人教版四年级上册数学第四单元《三位数乘两位数》测试卷含答案【新】
- 2024企业销售业务员销售团队建设与人才培养合同3篇
- 2024年交通枢纽综合体ppp项目三方合同2篇
- 2024搬迁项目绿化带迁移及恢复协议3篇
- 2024年度供应商管理协议:月子中心供应链优化与成本控制3篇
- 湖北省宜昌市部分示范高中2024-2025学年高一上学期期中联考政治试卷2
- 2024年农业灌溉水池承包与水利设施租赁合同3篇
- (新北师大版2024)2024-2025学年七年级数学上学期期中测试卷
- 塑造宠物食品品牌
- 2024年山东省青岛市中考地理试题卷(含答案及解析)
- 美发保底劳务合同模板
- 《技术规程》范本
- 2024秋期国家开放大学本科《中国当代文学专题》一平台在线形考(形考任务一至六)试题及答案
- 期末(试题)-2024-2025学年人教PEP版(2024)英语三年级上册
- 第五单元简易方程 提升练习题(单元测试)-2024-2025学年五年级上册数学人教版
- 重点语法清单2024-2025学年人教版英语八年级上册
- NGS与感染性疾病医学课件
- 2024版《大学生职业生涯规划与就业指导》 课程教案
评论
0/150
提交评论