目录
1. 了解数据库设计
1、数据库设计6个设计阶段:
(1)需求分析(2)概念设计(3)逻辑设计(4)物理设计(5)数据库实施(6)数据库运行和维护
前四个阶段可统称为“分析和设计阶段”,后两个阶段称为“实现和运行阶段”。
1.需求分析阶段(决定作用):根据用户需求收集数据,是设计数据库的起点。
2.概念设计阶段:归纳需求形成E-R模型图。
3.逻辑设计阶段:将概念模型转化为数据模型。
4.物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5.数据库实施阶段:编制与调试应用程序,组织数据入库,并进行试运行。
6.数据库运行和维护阶段:对数据库系统运行过程中进行评价、调整、修改。
2. 概念设计
1、概念结构设计的方法
(1)自顶而下(全局->局部):先定义全局概念结构框架,在逐步细化到局部。
(2)自底而上(局部->全局):先定义局部应用概念结构,再集成起来得到全局结构。
(3)逐步扩张(核心->扩张):先定义核心概念结构,再向外扩充到总体。
(4)混合策略(最常采用):将“自顶而下”和“自底而上”结合,即自顶而下进行需求分析,然后自底向上设计概念结构。
2、概念结构设计的步骤:局部->全局
(1)进行数据抽象,设计局部E-R模型。
(2)集成各局部E-R模型,形成全局E-R模型。
3、三种数据抽象方法
分类、概括、聚集
4、E-R图的冲突
属性冲突、命名冲突、结构冲突
5、局部E-R模型设计过程
需求分析结果->确定局部结构范围->实体定义->联系定义->属性分配
6、全局E-R模型设计过程
确定公共实体->局部E-R模型合并->消除冲突
3. 逻辑设计
1、初始关系模式设计
转换规则
【例1】将下图含有1∶1联系的E-R图根据规则转换为关系模式
该例包含两个实体(职工、产品),实体之间存在1:1联系,按照转换规则可以转换为以下两种方案(带下划线的属性为码):
方案1:“负责”与“职工”两个关系模式合并。
职工(职工号,姓名,年龄,产品号)
产品(产品号,产品名,价格)
方案2:“负责”与“产品”两个关系模式合并。
职工(职工号,姓名,年龄)
产品(产品号,产品名,价格,职工号)
比较两个方案,由于不是每个职工的负责产品,会造成产品号属性的NULL值较多,所以方案2更合理一些。
【例2】将下图含有1∶n联系的E-R图根据规则转换为关系模式
该例包含两个实体(仓库、产品),实体间存在1:n联系,根据规则可转换为如下关系模式(带下划线的属性为码):
仓库(仓库号,地点,面积)
产品(产品号,产品名,价格,仓库号,数量)
【例3】将下图含有1∶n联系的E-R图根据规则转换为关系模式
该例只有一个实体(职工),实体集内部存在1:n联系,根据规则可转换为如下关系模式(带下划线的属性为码):
职工(职工号,姓名,年龄,领导工号)
其中“领导工号”就是领导的“职工号”,因为同一个关系中不能有相同的属性名,所以将领导的“职工号”改为“领导工号”。
【例4】将下图含有m∶n联系的E-R图根据规则转换为关系模式
该例包含两个实体(商店、商品),实体间存在m:n联系,根据规则可转换为如下关系模式(带下划线的属性为码):
商店(店号,店名,店址,店经理)
商品(商品号,商品名,单价,产地)
经营(店号,商品号,月销售量)
【例5】将下图含有m∶n联系的E-R图根据规则转换为关系模式
该例只有一个实体(零件),实体集内部存在m:n联系,根据规则可转换为如下关系模式(带下划线的属性为码):
零件(零件号,名称,价格)
组装(组装件号,零件号,数量)
其中“组装件号”为组装后的复杂零件号,由于同一个关系中不允许存在同属性名,所以改为“组装件号”。
【例6】将下图含有m∶n联系的E-R图根据规则转换为关系模式
该例包含三个实体(供应商、零件、产品),实体间存在m:n联系,根据规则可转换为如下关系模式(带下划线的属性为码):
供应商(供应商号,供应商名,地址)
零件(零件号,零件名,单价)
产品(产品号,产品名,型号)
供应(供应商号,零件号,产品号,数量)
2、关系模式的规范化
(1)存在的问题及解决方法
1.可能存在的问题:数据冗余太大、插入异常、删除异常、更新异常。
2.解决方法:“分解”是解决冗余的主要方法。
(2)函数依赖基本概念
(3)范式
1.定义:利用规范化理论,使关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式称为范式。
2. 关系按其规范化程度从低到高可分为5级范式,分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集。
3.第一范式(1NF):如果关系模式R中不包含多值属性,则R满足第一范式,记作R∈1NF。(1NF是规范化的最低要求,是关系模式要遵循的最基本的范式)
4.第二范式(2NF):如果关系模式R(U,F) ∈ 1NF,且R中的每个非主属性完全函数依赖于R的某个候选码,则R满足第二范式,记作R ∈ 2NF。
不满足2NF的关系模式会产生以下问题:插入异常、删除异常、更新异常。解决办法是用投影分解把关系模式分解为多个关系模式。
5.第三范式(3NF):如果关系模式R(U,F) ∈ 2NF,且每个非主属性都不传递函数依赖于任何候选码,则R满足第三范式,记作R ∈ 3NF。