第7章数据库设计步骤 数据库设计概述 数据库设计的内容 数据库的结构设计(静态) 逻辑数据库设计 局部逻辑结构 全局逻辑结构 物理数据库设计 存储结构 数据库的行为设计(动态) 数据的装载 应用程序设计 参加数据库设计的人员 数据库分析设计人员 数据库设计的核心人员 自始至终参与数据库的设计 用户 参加需求分析 参加数据库的运行维护 程序员和操作员 在系统实施阶段参与进来 负责编制程序 准备软硬件环境 数据库分析设计人员应具备的水平 计算机技术 数据库技术 软件工程知识 应用领域的知识 数据库设计方法——规范设计法 手工设计方法 过程迭代 逐步求精 计算机辅助软件工程CASE 数据库设计步骤☆ 系统需求分析 概念结构设计 逻辑结构设计 数据库物理设计 数据库实施 数据库运行维护 系统需求分析 需求分析的任务 详细调查现实世界要处理的对象 充分了解原系统的工作概况 明确用户的各种需求 信息要求 处理要求 安全性要求 完整性要求 确定新系统的功能 考虑今后的扩充性 需求分析的步骤 调查组织机构情况 该组织由哪些部门组成 各部门的职责和任务 调查各部门的业务活动流程 各部门输入输出的数据和格式 所需的表格和卡片 如何加工处理这些数据 输入输出的部门 协助用户明确对新系统的各种需求 信息要求 处理要求 安全性要求 完整性要求 确定新系统的边界 哪些功能由计算机完成 哪些活动由人工完成 分析系统功能 系统应具有哪些功能,完成哪些任务 设计人员和用户协商、确定、备案 尽量满足用户的要求 不要随便承诺用户不合理或无法实现的要求 注意功能与条件的谐调 分析系统数据 需要存储哪些数据 实体集 实体的属性集 实体集间的联系 数据是否有矛盾 基本数据 导出数据 用户对数据的处理要求 完成什么样的处理 响应时间 安全性要求 完整性要求 绘制数据流程图 编制数据字典 编写系统分析报告 提交用户的决策部门审核 报告内容 系统概况 系统功能说明 设计阶段划分 可行性分析 系统软硬件环境要求 计算机配置 操作系统 汉字平台 数据库管理系统 网络环境 结构图表 组织机构图 组织间联系图 各机构功能业务图 数据图表 数据流程图 功能模块图 数据字典 后续工作 组织专家评估报告 项目双方签字 签订协议书 数据字典 定义 是各类数据描述的集合 是数据收集分析的主要结果 包括 数据项 数据结构 数据流 数据存储 处理过程 实例分析 工厂查询系统 部门 生产部门 查询产品的性能 查询各种零件的用料 查询每种产品的零件组成情况 →编制生产计划 供应部门 了解产品的价格 了解各种产品的用料情况 了解材料的价格和库存量 →制定材料订购计划 需求分析阶段的主要工作内容 分析组织机构 收集分析用户的各种业务活动 确定系统需求 生成“用户活动图”☆ 确定系统边界 直接在用户活动图上标注☆ 分析系统功能 分析系统数据 产生“数据流程图”☆ 产生“数据字典” 编写需求规范说明书 整个系统的功能 用户活动图 数据流程图 数据字典 安全性和完整性约束条件 软硬件支持环境的选择 后续工作 审议需求规范说明书 修改完善说明书 通过说明书,双方签字 概念结构设计 概述 是客观数据世界的“纯粹”反映 独立于DBMS 用E-R图来表示概念模式 概念结构设计的四种方法 自顶向下:先全局,后细化 自底向上:先局部,后集成 由里向外:先核心,后扩充 混合策略:自顶向下+自底向上 概念结构设计的步骤☆ 抽象数据,设计局部视图 集成局部视图 E-R图方法 E-R图基本成分 实体 概念 现实世界中存在的可以区分的对象或事物 某类事物的集合 实体集、实体型 表示 用矩形框表示实体 框内标注实体名 联系 概念 实体之间的联系 联系类型 一对一 一对多 多对多 表示 联系用菱形表示 框内填写联系的名称 用无向边与实体连接 边上标注联系类型 说明 也可表示同一实体集内部成员之间的联系 属性 概念 实体或联系在某一方面的特征 实体的标识:某一属性(组合属性)能唯一标识实体个体 表示 属性用扁椭圆形框表示 用无向边与实体连接 E-R图表示☆ 用无向边将实体、属性和联系连接起来 局部应用E-R模型设计 利用系统需求分析阶段得到的数据 数据流程图 数据字典 确定实体和实体属性 按现实世界中事物的自然划分来定义实体和属性 再进行必要的调整 调整原则 实体和属性间保持为1:1或n:1的联系 对1:1和n:1联系的处理 对1:n联系的处理 将属性调整为实体 描述实体的属性本身不能再有需要描述的性质 能作为属性对待的尽量作为属性对待 实例分析 生产部门生产的产品 实体和属性 产品(产品编号,产品名称,产品性能) 零件(零件编号,零件名称,材料名称,耗用量) 联系:产品由零件组装而成(零件数) E-R图☆ 生产部门的局部E-R模型 供应部门的局部E-R模型 供应部门的局部E-R模型(改进) 总体概念E-R模型设计 合并,解决冲突,生成初步E-R图☆ 结构冲突 同一事物,不同的抽象 同一实体在不同的应用中属性组成不同(个数,次序) 同一联系,在不同应用中呈现不同类型 属性冲突 属性域冲突 属性值的类型 取值范围 属性的取值单位冲突 命名冲突 同名异义 异名同义 修改和重构,消除冗余,生成基本E-R图☆ 冗余的数据:可由基本数据导出 冗余的联系:可由其他联系导出 逻辑结构设计 E-R图向数据模型的转换 一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键 方法 找出主键 找出属性间的依赖关系 表示为关系模式 主键:属性名下加横线 函数依赖关系:箭头线 例子☆ 一个联系转换为一个关系模式,相联系实体的键和联系的属性转换为关系的属性 一个m:n联系转换为一个关系模式 联系的内容 联系名 相互联系的实体的主键 联系本身的属性 主键 关系的键为参加联系的各实体键的组合 例子 产品组装成零件☆ 材料存放在仓库☆ 一个1:n联系可以转换为一个独立的关系模式,关系的键为n端实体的键。也可以与n端对应的关系模式合并 联系的内容 联系名 相互联系的实体的主键 联系本身的属性 主键 关系的键为n端实体的键 例子 零件消耗材料☆ 带属性的一对多联系☆ 没有对应关系的联系☆ 能否省去实体司机? 没有联系如何联系? 一个1:1联系可以转换为一个独立的关系模式,每个实体的键均为该关系的候选键。也可以与任意一端对应的关系模式合并 联系的内容 联系名 相互联系的实体的主键 联系本身的属性 主键 每个实体的键均为该关系的候选键 三个或三个以上实体间的一个多元联系转换为一个关系模式 存在于三个实体之间的联系☆ 同一实体集的实体间的联系,可按1:1,1:n,m:n分别处理 关系规范化 考查关系模式的函数依赖关系,确定范式等级 对关系模式进行合并或分解 具有相同主键的关系模式一般可以合并 对非BC范式的关系模式,根据异常情况进行分解 只查询的关系模式可不分解 评估各关系模式,择优一组 模式优化 目的 提高对数据的存取和存储效率 优化方法 进行垂直和水平分割 例子1 职工情况的关系模式 EMP(职工编号,姓名,性别,年龄,职务,工资,工龄,住址,电话) 事实情况 若经常查询前六项,较少使用后三项 模式分解 EMP1(职工编号,姓名,性别,年龄,职务,工资) EMP2(职工编号,工龄,住址,电话) 小结 同时存在经常查询和非经常查询的属性,均可采用垂直分割的方法 例子2 飞行员情况的关系模式 PILOT(编号,姓名,性别,年龄,技术等级,可驾机型,飞行年数) 事实情况 每个飞行员都能驾驶多种飞机 模式分解 PILOT1(编号,姓名,性别,年龄,技术等级) PILOT2(编号,可驾机型,飞行年数) 好处 节省存储空间 减少数据传递量 提高查询速度 例子3 大学教师数据库 教师(教师编号,姓名,职称,…) 事实情况 经常按职称分类查询 模式分解 教师分类(职称,名册号) 教授名册(教师编号,姓名,职称,…) 副教授名册(教师编号,姓名,职称,…) 讲师名册(教师编号,姓名,职称,…) 例子4 师大学生数据库 学生(…) 事实情况 多数查询一次仅涉及其中的一类学生 水平分割 本科生(…) 硕士生(…) 博士生(…) 设计用户子模式 使用更符合用户习惯的别名 针对不同等级的用户定义不同的外模式,以满足系统对安全性的要求——视图 简化用户对系统的使用 数据库物理设计 确定数据库的物理结构 确定数据的存储结构 适当冗余 增加聚簇功能 设计数据的存取路径 建立索引 确定数据的存放位置 分盘存放 确定系统配置 参数优化 评价数据库的物理结构 存储空间 存取时间 维护代价 数据库实施 定义数据库结构 应用程序设计与编写 数据库应用程序的特点 大量使用屏幕显示控制语句 复杂的输入输出屏幕 形式多样的输出报表 重视数据的有效性和完整性检查 灵活的交互功能 设计模块内容 人机过程设计 建表 输入输出设计 代码设计 对话设计 网络设计 安全保护 VFP提供的开发环境 项目管理器 表单设计器 报表设计器 菜单设计器 安装程序生成向导 组织数据入库 直接往数据库中录入 通过数据录入子系统录入 数据录入 数据校验 代码转换 完整性和安全性控制 应用程序的调试与试运行 能否完成预定的功能 否→返回到设计阶段 整理文档 编写应用系统的技术说明 应用系统的使用说明书 数据库运行与维护 数据库的转储和恢复 备份数据库 备份日志文件 恢复数据库 数据库的安全性和完整性控制 授予用户不同的操作权限 修改安全性控制 修改完整性约束条件 数据库性能的监督、分析和改进 监督运行性能 调整运行参数 数据库的重组织和重构造 重新组织数据库 适当重新构造数据库 小结 设计数据库应用系统的六个阶段☆ 数据库各级模式的形成过程☆