韩华信息科学与工程系《数据库技术》讲义2013.08第五章数据库设计数据库设计概述5.1需求分析数据库管理小结5.25.35.4数据库设计举例5.55.1数据库设计概述5.1.15.1.25.1.3什么是数据库设计数据库设计的特点数据库设计原则5.1.6数据库设计工具5.1.4数据库设计的基本步骤5.1.5数据库设计过程的各级模式5.1.1什么是数据库设计在现成的DBMS上建立数据库应用系统的过程。是指对于一个综合的应用环境,构造最优的数据库模式,建立数据库及应用环境,使之能够有效的存贮数据,满足各种用户的应用需求(信息要求和处理要求)什么是数据库设计?从用户应用需求和系统支持平台出发,通过设计活动得到一个数据库的数据模型和关于该数据库的程序设计指南数据需求处理需求DBMS系统平台数据库设计数据库模型程序指南5.1.1什么是数据库设计5.1.3数据库设计的基本步骤一、数据库设计的准备工作A、选定参加设计的人员1.数据库分析设计人员数据库设计的核心人员自始至终参与数据库设计其水平决定了数据库系统的质量2.用户在数据库设计中也是举足轻重的主要参加需求分析和数据库的运行维护用户积极参与带来的好处加速数据库设计提高数据库设计的质量3.程序员在系统实施阶段参与进来,负责编制程序4.操作员在系统实施阶段参与进来,准备软硬件环境二、数据库设计的过程(六个阶段)⒈需求分析阶段准确了解与分析用户需求(包括数据与处理)是整个设计过程的基础,是最困难、最耗费时间的一步。⒉概念结构设计阶段是整个数据库设计的关键通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型⒊逻辑结构设计阶段将概念结构转换为某个DBMS所支持的数据模型对其进行优化⒋数据库物理设计阶段为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)⒌数据库实施阶段运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库编制与调试应用程序组织数据入库进行试运行⒍数据库运行和维护阶段数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。一般设计用户领导批准数据分析提出问题收集数据用户领导批准初步可行性研究提出紧要问题提出要求系统的生命周期系统评价系统运行系统转换系统详细设计用户领导批准编写程序测试编写技术文件人员培训系统实施系统起始系统分析系统发展系统设计5.1.4数据库设计的特点从系统开发角度来看,数据库系统具有结构特性和行为特性两个方面。1、结构设计1)是与数据模型所反映的实体及实体之间的联系的静态模型的设计。2)是设计各级数据库模式,决定数据库系统的信息内容2、行为设计1)是与数据库状态转换有关,是改变实体特性的操作的集合。2)决定数据库系统的功能,是事务处理等应用程序的设计数据分析组织部门功能分析概念设计功能模型功能说明逻辑设计事务设计物理设计程序说明子模式设计应用程序设计程序调试装配数据库程序运行数据库静态结构设计和动态行为设计相结合(信息与处理的结合)行为(软件)开发结构(数据库)设计需求分析静态的结构特性的设计与动态的行为特性的设计分离,会导致数据与程序不易结合,增加数据库设计的复杂性。IPO表……输入:输出:处理:Creat……Load……Main()……if……then……end分区1分区2……概念结构设计逻辑结构设计物理设计设计阶段设计描述数据处理需求分析数据字典、全系统中数据项、数据流、数据存储的描述数据流图和判定表(判定树)、数据字典中处理过程的描述概念模型(E-R图)数据字典系统说明书包括:①新系统要求、方案和概图②反映新系统信息流的数据流图某种数据模型关系非关系系统结构图(模块结构)存储安排方法选择存取路径建立模块设计IPO表实施阶段编写模式装入数据数据库试运行程序编码、编译联结、测试运行、维护性能监测、转储/恢复数据库重组和重构新旧系统转换、运行、维护(修正性、适应性、改善性维护)应用要求应用要求应用要求应用要求外模式外模式外模式外模式概念模式逻辑模式内模式综合转换映象映象应用1应用1应用2应用2应用3应用3应用4应用45.1.5数据库设计过程中的各级模式4.1.6数据库设计工具典型的有PowerBuilder(简称PB),PowerDesigner(简称PD)ORACLEDesigner2000SYBASEPowerDesigner2020年3月1日225.2规范化5.2.1问题的提出5.2.2规范化5.2.3范式5.2.4范式在工程化设计中的实际应用5.2.5小结2020年3月1日235.2.1问题的提出针对具体问题,如何构造一个适合于它的数据模式?应该构造几个关系模式(表)?每个关系有哪些属性组成?关系模式的设计依据:规范化理论2020年3月1日24一个实例例5-1设计一个用于教务管理系统的数据库,用户有下面几点需求:①要能够查询到每个学生的基本情况;②要能够查询到每个学生选课情况、每门课的成绩及任课教师;③要能够查询到各学院的情况;④能够添加新同学的信息;⑤能够添加新课程的信息;⑥能够删除学生和课程的信息;⑦能够更改学生、学院、课程的信息;初步设计:学籍(学号,姓名,性别,学院,院长,课程号,课程名称,成绩,任课教师)表5-1学籍关系模式学号姓名性别学院院长课程号课程名称成绩任课教师99051张刚男信息李平09012数据库85肖锋99051张刚男信息李平09013大学物理80杨广99053李丽女信息李平08056大学英语75陈妍99072王刚男化学张香02011无机化学91张敏99061徐娟女管理王莉08056大学英语95张倩计算机主码表中的信息是否有冗余,都是那些内容?计算机这门课为新开课,还没有学生选,是否可插入操作?如果一个院(系)的学生全部毕业会产生什么情况?怎样修改?如果张刚转到化学学院,与张刚有关的所有记录的学院、院长这两列的值都要更新,如果记录很多容易漏更新,产生数据不一致。总结问题所在:插入异常、删除异常、更新异常、冗余过大!上述要求的操作能完成吗?2020年3月1日26改进方案原关系:学籍(学号,姓名,性别,学院,院长,课程号,课程名称,成绩,任课教师)改进方案:学生(学号,姓名,性别,学院)学院(学院,院长)选课(学号,课程号,成绩,任课教师)课程(课程号,课程名称)学号姓名性别学院99051张三丰男信息99053李丽女信息99072王刚男化学99061徐娟女管理99078李明男化学学号课程号成绩任课教师990510901285萧峰990510901380杨广990530805675陈妍990720201191张敏990610805695张倩学院院长信息李平化学张香土建于珍课程号课程名称09012数据库09013大学物理08056大学英语“分解”是解决冗余的主要方法,也是规范化的一条基本原则:“关系模式有冗余问题,就分解它”。2020年3月1日275.2.2规范化规范化理论的作用:改造关系模式,通过分解关系模式来消除其中不合适的问题,以解决删除异常、更新异常、插入异常和数据冗余问题。一、函数依赖(形式化定义)二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部分函数依赖四、传递函数依赖2020年3月1日28一、函数依赖定义5.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。学号姓名性别学院院长课程号课程名称成绩任课教师99051张三丰男信息李平09012数据库85萧峰99051张三丰男信息李平09013大学物理80杨广99053李丽女信息李平08056大学英语75陈妍99072王刚男化学张香02011无机化学91张敏99061徐娟女管理王莉08056大学英语95张倩返回2020年3月1日29说明:1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立3.函数依赖表达的是关系的属性与属性之间的关系。如果属性A与属性B之间是一对一的关系,则互相函数依赖。如果属性A与属性B之间是一对多的关系,则一端函数依赖于多端。如果属性A与属性B之间是多对多的关系,则不存在函数依赖。2020年3月1日30例5-2:分析关系“学籍(学号,姓名,性别,学院,院长,课程号,课程名称,成绩,任课教师)”的函数依赖。分析1:不允许同名学号姓名,学号性别,学号学院,学号院长姓名学号,姓名性别,姓名学院,姓名院长课程号课程名称(学号,课程号)成绩,(学号,课程号)任课教师学号成绩课程号成绩→→→→→→→→→→→→→2020年3月1日31分析2:允许同名学号→性别,学号→学院,学号→姓名,学号→院长课程号→课程名称(学号,课程号)→成绩,(学号,课程号)→任课教师定义:平凡的函数依赖:若X→Y,但YX,则称X→Y是平凡的函数依赖。非平凡的函数依赖:如果X→Y,但YX,则称X→Y是非平凡的函数依赖。通常指的是非平凡的函数依赖。关系:学生成绩(学号,课程号,成绩)中:非平凡函数依赖:(学号,课程号)→成绩平凡函数依赖:(学号,课程号)→学号(学号,课程号)→课程号2020年3月1日322、函数依赖的性质(1)投影性一组属性函数决定它的所有子集。(平凡的函数依赖)(2)合并性有属性X、Y、Z,若X→Y且X→Z则必有X→(Y,Z)。例:(学号,课程号)→学号(学号,课程号)→课程号。例:学号→姓名,学号→性别,则学号→(姓名,性别)2020年3月1日33(3)扩张性有属性X、Y、Z,若X→Y且W→Z,则(X,W)→(Y,Z)。例:学号→(姓名,性别),学院→院长,则有(学号,学院)→(姓名,性别,院长)。(4)分解性若X→(Y,Z),则X→Y且X→Z。由合并性和分解性,得出X→A1,A2,…,An成立的充分必要条件是X→Ai(i=1,2,…,n)成立。2020年3月1日34二、完全函数依赖与部分函数依赖定义5.2在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y完全函数依赖于X,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XPY。在关系:学生成绩(学号,课程号,成绩)中(学号,课程号)f成绩关系D(学号,院系,课程号,成绩)(学号,课程号)p院系看上表完全函数依赖:(学号,课程号)→成绩,并且学号→成绩,课程号成绩则:(学号,课程号)成绩→→f2020年3月1日35例5-4:分析关系“学籍(学号,姓名,性别,学院,院长,课程号,课程名称,成绩,任课教师)”中的完全函数依赖及部分函数依赖。→部分函数依赖:(学号,课程号)姓名(学号,课程号)课程名称→p→p2020年3月1日364、传递函数依赖定义:在关系模式R(U)中,如果X→Y,Y→Z,且YX,YX,则称Z传递函数依赖于X。→注:如果Y→X,即X←→Y,则Z直接依赖于X。例5-5:分析在关系“学籍(学号,姓名,性别,学院,院长,课程号,课程名称,成绩,任课教师)”中的传递函数依赖:分析:学号→学院,学院→院长,并且学院学号,所以院长传递函数依赖于学号→2020年3月1日37汇总:函数依赖集为:学号→姓名,学号→性别,学号→学院,学院→院长,课程号←→课程名,(学号,课程号)→成绩,(学号,课程号)→任课教师,任课教师→课程号(前提条件是一位教师只上一门课)。图形表示法:学号课程号姓名性别成绩任课教师课程名学院院长表示完全函数依赖表示部分函数依赖2020年3月1日38练习:分析关系R(连锁店号,店长名,员工号,员工名,货号,货名,销售量)中的函数依赖关系。销售量:一个员工销售一种