数据库系统原理(第6章)四川大学计算机学院张天庆2005.11第六章数据库设计成功的设计需要具有扎实的计算机科学基础全面深入地理解应用背景一定的开发经验规范的开发方法团结合作的开发团队……6.0数据库设计概述数据库设计:指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。它是数据库在应用领域的主要研究课题。数据库应用系统:使用数据库的各类系统统称为数据库应用系统。信息系统和数据库:从使用者角度看,信息系统是提供信息、辅助人们对环境进行控制和进行决策的系统。而数据库是信息系统的核心和基础。从事数据库设计的专业人员来讲,应该具备多方面的技术和知识:数据库的基本知识和数据库设计技术;计算机科学的基础知识和程序设计的方法和技巧。软件工程的原理和方法;应用领域的知识。现在看来,一个系统要成功,应用领域知识十分重要(个人体会)。数据库设计的特点“三分技术,七分管理,十二分基础数据”。技术和管理的界面十分重要(称为“干件”)。数据库设计是硬件、软件和干件的结合。数据库设计应该和应用系统功能设计相结合。整个设计过程中要把结构设计和行为设计密切结合起来。早期的设计致力于数据模型和建模方法研究,着重结构而忽视行为设计,两者是分离的,如何将两者相结合,许多学者和专家进行了探讨和实践。数据库设计方法简述十余年来人们努力探索,提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法:新奥尔良方法:将设计分四个阶段:需求、概念、逻辑和物理设计。基于E-R模型的数据库设计方法基于3NF的设计方法基于抽象语法规范的设计方法以上是数据库设计的不同阶段上支持实现的具体技术和方法。规范化设计的基本思想是过程迭代和逐步求精,从本质上看仍然是手工设计方法。近年来,数据库设计工具已经实用化和产品化。如Design2000和PowerDesigner分别是ORACLE公司和SYBASE公司推出的数据库设计工具软件。它们可以自动或辅助设计人员完成数据库设计工作中的很多任务。数据库设计和应用设计应该同时进行,目前许多CASE工具已经开始强调这两个方面,ER-Win和RetionalRose2001。6.1数据库设计基本步骤数据库设计是在DBMS支持下设计数据库应用系统(如管理信息系统)的过程。以逻辑数据库设计和物理数据库设计为核心的规范化设计。一般分为如下六个阶段:需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护见书184图6-16.2需求分析任务:调查信息要求、处理要求和完整性(安全性)要求。调查内容和步骤:调查组织机构,各部门业务活动,明确用户对新系统的要求,确定新系统边界。调查方法:跟班作业,开调查会,请专人介绍,询问,设计调查表请用户填写,查阅相关数据记录。分析和表达方法:SADT(结构分析与设计技术,数据流图DFD和数据字典DD)。数据流图和数据字典处理数据来源数据输出数据流数据流数据存储数据流图表达了数据和处理过程的关系。数据字典DD数据字典,即描述数据的数据,是各类数据描述的集合,是进行详细的数据收集和数据分析所得的主要结果。DD将数据流图中的每个对象进行具体详尽的描述。包括数据结构,数据项,数据流,数据存储和处理过程描述。它为后续阶段提供了数据和处理的依据。6.3概念结构设计产生整体数据库的概念结构(概念模式),它是整个组织的各个用户关心的信息结构,也是数据库设计的关键。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。特点:1、是对现实世界抽象的一个真实模型。2、易于理解。3、易于更改和扩充。4、易于向关系等各种数据模型转换。概念模型的基本概念实体属性码域实体型实体集联系(一对一,一对多,多对多)E-R方法E-R方法:Entity-Relationship实体-联系方法,该方法用E-R图来描述现实世界的概念模型,是建立概念模型的有用工具。E-R图提供了表示实体型、属性和联系的方法:实体型:客观世界具体的事物,用矩形框表示。属性:实体型的特性。用椭圆形表示,并用连线与实体连接起来。实体间的联系:实体集之间的联系,用菱形框表示,框内标联系名称。实例:一个简单的教学管理的概念模型:学生课程学号姓名年龄性别分数课号课名教师姓名课时时间安排mn开课班级号mn班级属于n1概念结构设计的方法和步骤自顶向下自底向上逐步扩张混合策略其中常用的是自底向上方法。先用自顶向下进行需求分析,然后再自底向上地设计概念结构。一般又分成两步:1、抽象数据并设计局部视图;2、集成局部视图,得到全局的概念结构。步骤1:数据抽象和局部设计概念设计的第一步就是利用抽象机制对需求分析阶段收集的数据进行分类、组织形成实体、实体的属性,标识实体的码,确定实体之间的联系类型,设计分E-R图。设计分E-R图:选择局部应用,一般以中层的数据流图作分E-R图的依据。逐一设计分E-R图(利用抽象机制形成实体、属性,确定联系等)。抽象:分类:抽象对象值和型之间的ismemberof语义。聚集:抽象对象型和成分之间ispartof的语义。概括:抽象对象类型之间的issubsetof的语义。划分实体和属性的准则:作为“属性”,不能再具有需要描述的性质,必须是不可分的,不能包含其他属性。“属性”不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。*凡满足上述两条原则的事物,一般作属性对待。步骤2:集成局部设计,生成全局概念结构集成的方式:多个分E-R图一次集成。(难度大)逐步集成,用累加的方式每次集成两个E-R图。具体的步骤:合并:解决各E-R图之间的冲突,将各分E-R图合并起来生成初步E-R图。解决属性冲突、命名冲突和结构冲突。修改和重构:消除不必要的冗余,生成基本E-R图。–冗余数据指可由基本数据导出的数据,冗余联系指可由其他联系导出的联系,应但予以消除。它们容易破坏数据库的完整性。–但不是所有的冗余数据和联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。实例:某工厂管理信息系统的视图集成。6.4逻辑结构设计任务:把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。完成后应得到系统的关系模型和各个关系的模式结构和各种完整性约束条件。设计步骤:将概念结构转换为一般的关系、网状、层次模型;将转换来的关系、网状、层次模型向特定的DBMS支持下的数据模型转换;(加入DBMS的特点和限制)对数据模型进行优化。E-R图向关系模型的转换原则:一个实体型转换为一个关系模式:实体的属性就是关系的属性,实体的码就是关系的码。一个联系转换为一个关系模式:与该联系相连的各实体的码以及联系的属性转换为该关系的属性。该关系的码有五种情况:若联系是1:1:则每个实体的码均是该关系的候选码。若联系是1:n:则关系的码是n端实体的码。若联系是m:n:则关系的码是参加联系的诸实体的码的集合。若联系是三个或三个以上的实体的一个多元联系可以转换为一个关系模式,与该多元联系相连的各实体的码以及联系本身的属性均转换为一个关系模式,而关系的码的各实体码的组合。具有相同码的关系模式可以合并。关系模式的优化(通常以规范化理论为指导)优化方法:确定数据依赖(每个关系模式内部各属性之间的数据依赖以及不同关系模式间属性之间的数据依赖(参照)。)对模式之间的数据依赖极小化处理,消除冗余的联系(6.3.4)。按照数据依赖的理论对每一个关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等。确定各关系模式分别属于第几范式。按照需求分析阶段得到的处理要求,分析这些模式是否适合,确定是否要对某些模式进行合并或分解。对需要处理的模式进行必要的分解,提高数据操作的效率和存储空间的利用率。横向分解纵向分解二八率的应用注意:并不是规范程度越高的关系就越优,应根据需要权衡而定(规范化与反规范化达到平衡)。6.5关系数据库物理设计任务:为一给定的逻辑数据模型选取一个最适合应用要求的物理结构,包括数据库在物理设备上的存储结构和存取方法。内容:为关系模式选择存取方法(索引、聚簇或HASH方法)设计关系、索引等数据文件的物理存储结构确定数据库对象(关系、索引、日志和备份等)的存放位置和存储结构。确定系统配置参数,如用户数,内存、缓冲区分配参数等。评价物理结构:设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案。6.6数据库的实施数据库实施包括以下工作:用DDL定义数据库结构用选用的DBMS提供的数据定义语言来严格描述数据库结构。如SQL。组织数据入库是该阶段的主要工作。可以人工方法组织数据入库,可以设计一个数据输入子系统,由计算机辅助数据的入库工作。编制与调试应用程序应用程序的设计应该与数据设计并行进行,当数据库结构建立好后,就可以开始编制并调试数据库的应用程序。当数据未入库前可以使用模拟数据。数据库试运行应用程序编写并调试完毕,并且有一部分数据入库后,就可以开始数据库的试运行,也称作联合调试,目的是实际测量系统的各种性能指标,及时修正前面阶段中的错误。同时必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏。6.7数据库的运行与维护运行阶段,数据库经常性的维护工作主要是由DBA完成的,主要工作是调整、修改数据库以及应用程序修改。包括:数据库的转储和恢复最重要的维护工作之一。DBA指定转储计划,定期对数据库和日志文件进行备份,以保证一旦发生故障,能利用数据库备份及日志文件尽快将系统恢复到某种一致性状态。数据库的安全性、完整性控制根据用户的实际需要授予不同的操作权限。当安全性要求改变,完整性约束条件改变时也能作出不断的修正。数据库性能的监督、分析和改进目前许多DBMS产品都提供了监测系统性能参数的工具,DBA可以使用这些工具获得性能参数的值,从而分析并调整某些参数以改进数据库性能。数据库重组织:记录的不断增、删、改,会使数据库的物理存储变差,从而降低空间的利用率和数据的存储效率,使数据库性能下降,这时DBA要对数据库进行重组织。它只是按照原设计要求重新安排存储位置,回收垃圾,减少指针,不会改变设计的数据逻辑结构和物理结构。DBMS一般都提供了实用程序帮助重新组织数据库。数据库重构造:当增加新的应用或新的实体,取消某些已有应用,不得不调整数据库的模式和内模式时,如:增加新的数据项,改变数据库的容量,增加或删除索引,修改完整性约束条件等。这就是数据库的重构造。DBMS都提供了修改数据库结构的功能。数据库重新设计:数据库重构的程度是有限的,若变化太大,无法通过重构来满足新的需求,或重构的代价太大,则表明现有的系统的生命周期已经结束,应该重新设计新的数据库系统。开始新的数据库应用系统的生命周期了。作业某大学,学生可根据自己的情况选修课程。每名学生可同时选修多门课程,每门课程可由多位教师讲授,每位老师可讲多门课程。每名学生可有一位教师指导,每个教师指导多名学生。1.请画出此系统的E-R图。2.在1的基础上,设计此系统的一组至少满足3NF的关系模式。3.在你设计的关系模式下,能写SQL语句完成下面查询吗?求选修“王敏”老师讲的“市场营销学”的学生的学号和姓名?