数据库设计
概述
方法
- 直观设计法
- 规范设计法
- 新奥尔良方法
- 基于 ER 模型的方法
- 基于 3NF 的方法
- 计算机辅助设计方法
步骤
- 需求设计阶段
- 概念结构设计阶段
- 逻辑结构设计阶段
- 物理结构设计阶段
- 数据库的实施阶段
- 数据库运行和维护阶段
特点
- 数据库设计是涉及多学科的综合技术
- 数据库涉及是硬件、软件和干件的结合
- 数据库涉及具有反复性、试探性、应分步进行
- 数据库涉及需要将结构设计和行为设计密切结合
需求分析
任务
- 需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
- 调查的重点是“数据”和“业务处理”
- 确定业务规则:业务处理数据以及产生数据的方法和步骤(能不能实现这项功能,查到这项数据)
需求信息的收集
步骤:
- 业务知识的研究
- 指定调研计划
- 选用调研方法进行调研
信息的来源:
- 客户
- 最终用户
- 管理人员
内容
- 调查组织机构情况
- 调查各部分对新系统的各种要求
- 协助用户明确对新系统的各种要求
- 确定新系统的边界
业务及数据分析
- 业务是企业、组织为实现自身目标、职能的一系列有序的活动过程
- 业务分析就是对上述各种流动及其交织过程的详细分析过程
- 数据分析就是把数据在组织内部的业务流动情况,以数据流动的方式抽象出来,从数据流动过程来分析业务系统的数据处理模式
相关内容:
- 确定业务
- 业务流程分析
- 业务规则分析
- 数据流程分析
数据字典
- 数据项: 不可再分的数据单位
- 数据结构:反映数据间的组合关系
- 数据流:是数据结构在系统内的传输途径,表示某一处理过程的输入或输出
- 数据存储:数据结构停留和保存的地方,数据流的来源与去向之一
- 处理过程:描述业务处理的处理逻辑和输入输出
概念模型
联系
两个或两个以上实体集之间的联系、实体之间的联系都存在下面三种联系
一对一(1:1)
一对多(1:n)
多对多(m:n)
表示方法
- 实体型:矩形
- 椭圆:属性
- 联系:菱形
方法步骤
- 自项向下:从全局出发,先设计出全局概念模型框架,然后逐步细化
- 自底向上:从局部应用出发,先设计出各局部应用的概念模型,然后再对局部应用的概念模型进行综合,形成全局概念模型
- 逐步扩张:首先定义最基本、最核心的概念模型,逐步扩大至其相关的概念模型,以滚雪球的方式进行概念模型的扩张,最终形成全局的概念模型。
- 混合策略:【略】
数据抽象
分类
- 分类定义某一概念作为现实世界中一组对象的类型,这些对象具有某些共同的特性和行为
- 它抽象了对象值和型之间的
is member of
的语义
聚集
- 聚集是将若干对象和它们之间的联系组合成一个新的对象
- 它抽象了对象内部类型和成分之间
is part of
的语义
概括
- 概括将一组具有共同特性的对象合并成更高一层意义上的对象
- 它抽象了类型之间的
is subset of
的语义
实体与属性
- 现实世界中能作为属性对待的,尽量作为属性对待
- 作为属性,不能再具有需要描述的性质即属性不能是另一些属性的聚集
- 属性不能与其他实体具有联系,即 ER 图中的联系是实体之间的联系
合并分 ER 图
将一些设计好的小 ER 图(局部)合并为整张 ER 图(视图集成)
属性冲突
- 属性域冲突
- 类型
- 取值范围
- 取值集合
- 属性取值单位冲突
命名冲突
- 同名异义
- 异名同义
结构冲突
- 同一对象在不同应用中具有不同抽象(属性变换为实体或实体变换为属性)
- 同一对象在不同分 ER 图中属性组成不同,包括属性个数、次序(属性取并再适当调整属性的次序)
- 实体之间的联系在不同分 ER 图中呈现不同的类型(实际调整)
修改和重构
消除不必要的冗余:
- 冗余的数据是指可由基本数据导出的数据
- 冗余的联系是指可有其他联系导出的联系
- 消除冗余的方法主要有分析法和规范化理论方法
【例】将校园超市的库存管理和销售管理分 E-R 图集成生成全局基本 E-R 图。
全局 ER 图:
概念模型向关系模型转换
实体的转换规则
- 一个实体转换为一个关系模式
- 实体的属性就是关系的属性
- 实体的码就是关系的码
【例】将校园超市概念模型中的实体转换为关系模式。
转换为:
- 商品(商品编码,商品名,条形码,进价,售价,单位,备注)
- 商品类型(类型编码,类型名称)
- 学生(学号,姓名,性别,出生年月,学院,专业,微信号)
- 仓库(仓库号,仓库电话,仓库面积)
- 仓库管理员(员工号,员工名,员工年龄)
联系的转换规则
一对一转换
- 一个 1:1 联系可以转换成一个独立的关系模式,也可以与任意一端对应的关系模式合并。
- 如果转换成一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。
- 如果与某一段实体的关系合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
【例】现有员工实体有员工号,员工姓名,员工性别,工资等属性,其中员工号是员工实体的码;工资账户实体有开户行,账号,银行地址,电话等属性,其中账号是工资账户的码;员工实体与工资账户实体之间是一对一联系。
(1)将该 1:1 联系转换成独立的关系模式如下:拥有(员工号,账号)或者拥有(员工号,账号)
(2)将该 1:1 联系合并到员工端结果如下:
- 员工(员工号,员工姓名,员工性别,工资,账号)
- 工资账户(开户行,账号,电话,银行地址)
(3)将该 1:1 联系合并到工资账户端结果如下:
- 员工(员工号,员工姓名,员工性别,工资)
- 工资账户(开户行,账号,电话,银行地址,员工号)
一对多转换
只能合并到 n 端的那张表,或者新建一张关系表
- 一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并。
- 如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为 n 端实体的码。
- 如果合并到 n 端,则在 n 端关系中加入 1 端实体的码和联系本身的属性,关系的码不变。
【例】现有商品实体有商品编码,商品名,条形码,进价,售价,单位,备注等属性,其中商品编码是商品实体的码;仓库实体有仓库号,仓库电话,仓库面积等属性,其中仓库号是仓库实体的码;仓库实体与商品实体之间是一对多联系。
(1)将该 1:1n 联系转换成独立的关系模式如下:存放(商品编码,仓库号,数量)
(2)将该 1:n 联系合并到 n 端结果如下:
- 商品(商品编码,商品名,条形码,进价,售价,单位,
- 备注,数量,仓库号)
- 仓库(仓库号,仓库电话,仓库面积)
多对多转换
不能合并,只能新建一张关系表
一个 m:n 联系转换为一个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转 换为关系的属性,各实体的码共同组成该关系模式的码。
【例】现有商品实体有商品编码,商品名,条形码,进价,售价,单位,备注等属性,其中商品编码是商品实体的码;学生实体有学号,姓名,出生年份,性别,学院,专业,微信号等属性,其中学号是学生实体的码;商品实体与学生实体之间是多对多联系。
多元联系转换
- 三个或三个以上的实体间的一个多元联系可以转换为一个关系模式
- 与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性;
- 关系的码为诸实体码的组合。
【例】一个厂家可以生产多种零件组装成多种产品,每个产品可以使用多个厂家生产的零件,每种零件可以有不同的厂家生产,则在厂家、零件和产品之间是多对多的联系。
厂家,产品,零件三者之间的多对多联系转换为一个独立的关系模式,结果如下:
生产(厂家号,产品号,零件号)
相同码的转换
- 具有相同码的关系模式可以合并。
- 目的是减少系统中的关系个数。
- 合并方法是将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义性,并适当调整属性的次序。