当前课程知识点:数据库系统原理与开发 > 第4章 数据库设计与实现 > 4.3 数据库建模设计 > 4.3.2 数据库建模设计-2
大家好!
我是主讲教师陆鑫
下面我们开始学习数据库课程
第4.3小节 数据库建模设计——CDM/LDM/PDM模型转换设计
本节学习目标如下
1)理解CDM/LDM/PDM模型转换原理
2)理解实体到关系表的转换方法
3)掌握建模工具如何实现CDM/LDM/PDM模型转换设计
下面继续学习数据库建模设计
一、数据库结构模型转换设计
数据库结构模型设计分为概念数据模型设计
逻辑数据模型设计
物理数据模型设计三个层次
在常规的数据库设计中
将依次对这三种模型进行设计
其中包括不同层次模型之间的转换设计
在数据库设计中
各层次模型元素对应关系如下表所示
概念数据模型的“实体”模型元素
在逻辑数据模型中仍为“实体”元素
但在物理数据模型中则为关系表
概念数据模型中的“属性”模型元素
在逻辑数据模型仍为“属性”元素
但在物理数据模型中则为列
概念数据模型中的“标识符”模型元素
在逻辑数据模型中细分为“主键标识符/外键标识符”元素
但在物理数据模型中则为主键/外键
概念数据模型中的“联系”模型元素
在逻辑数据模型中仍为“联系”元素
但在物理数据模型中则为参照完整性约束
二、不同层次数据模型转换方案
数据库设计各层次模型的转换设计方案
如下图所示
首先基于系统数据需求
设计系统概念数据模型
在此基础上
再从系统软件设计角度
将概念数据模型转换为逻辑数据模型
逻辑数据模型应反映本系统针对特定数据库类型
数据库逻辑结构设计
此后
系统设计人员再基于所选型的
数据库DBMS实现要求
将系统逻辑数据模型
转换为系统物理数据模型设计
系统物理数据模型应反映本系统
数据库在特定DBMS中的具体设计方案
最后将依据系统物理数据模型
在DBMS系统中进行数据库实现
在实际数据库设计中
若不考虑数据库设计规范性或优化处理
可以直接将系统概念数据模型
转换为系统物理数据模型设计
三、CDM/LDM到PDM转换原理
当使用关系数据库时
物理数据模型(PDM)即为关系模型
CDM/LDM到PDM的转换其实就是E-R模型到关系模型的转换
E-R模型到关系模型转换原理
第一 将每一个实体转换成一个关系表
实体属性转换为关系表的列
实体标识符转换为关系表的主键或外键
第二 将实体之间的联系转化为
关系表之间的参照完整性约束
例如 概念数据模型中“学生”实体
转换为物理数据模型中“学生”表
转换方式见下图所示
在实体转换中
“学生”实体名称对应转换为“学生”关系表名称
学生实体属性名称对应转换为“学生”关系列名称
“学号”实体标识符对应转换为关系表的“学号”列主键
四、弱实体转换关系表
前面描述的实体转换为关系表的过程
适用于所有的实体类型
但弱实体转换为关系表时
需要特别的处理
下面以非标识符依赖弱实体“销售订单”转换关系表为例
给出弱实体处理方式如下图所示
由于“销售订单”弱实体为非标识符依赖弱实体
在转换为“销售订单”关系表时
将“销售订单”弱实体的标识符属性
作为“销售订单”关系表的主键
同时将所依赖的“销售员”强实体的标识符属性
在“销售订单”关系表中作为外键
下面以标识符依赖弱实体“订单明细”转换关系表为例
给出弱实体处理方式如下图所示
由于“订单明细”弱实体为标识符依赖弱实体
在转换为“订单明细”关系表时
“订单明细”关系表
需要将“订单明细”弱实体的标识符属性(订单明细编号)
和所依赖的“销售订单”强实体的
标识符属性(订单编号)作为复合主键
同时还将“订单编号”属性还作为“订单明细”关系表的外键
五、实体联系转换参照完整性约束
1.“1对1实体联系”转换表示
下面以“学生”
“助研金发放账号”的1:1实体联系为例
说明如何将它转换为关系表参照完整性约束
有两种转换方案
一种是将学生表的主键“学号”
放入助研金账号表中做外键
另一种是将助研金账号表的
主键“账号”放入学生表中做外键
这两种方案均是可行
由设计者根据应用需求自主做出选择
方案a适合助研金帐号管理查询处理
方案b适合学生信息查询处理
2.“1对N实体联系”转换表示
下面以“班级”
“学生”的1对多实体联系为例
说明如何将它转换为关系表参照完整性约束
转换方案 两个实体分别转换为关系表
然后将父实体关系表的主键放入子实体关系表中做外键
便可将实体一对多联系转换为关系表之间的参照完整性约束
针对本例“班级”实体转换为“班级”关系表
“学生”实体转换“学生”关系表
“班级”关系表主键放入“学生”关系表作为外键
这样“班级”实体与“学生”实体之间的1:N联系
转换为关系表之间的参照完整性约束
3.“M:N实体联系”转换表示
下面以“课程”“学生”的M:N实体联系为例
说明它们如何转换为关系表
转换方案 M:N实体联系
不像1:1和1:N实体联系那样直接转换
需要创建一个新的关联表
该关联表分别参照原有实体对应的关系表
针对本例 “课程”实体转换为“课程”关系表
“学生”实体转换“学生”关系表
新增一个“选修”关联表
“选修”关系表的复合主键“学号”和“课程编号”同时又是外键
它们分别参照“学生”关系表的主键
“课程”关系表的主键
这样“课程”实体与“学生”实体之间的M:N联系
转换为“选修”关系表与“学生”关系表
“课程”关系表之间的参照完整性约束
六、实体继承联系转换参照完整性约束
当带有实体继承联系的E-R模型转换到关系模型时
首先将父实体和子实体都各自转换为表
其属性均转换为表的列
在处理实体继承联系转换时
将父表的主键放置到子表中
既做主键又做外键
例如“学生”“本科生”
“研究生”组成的E-R模型转换关系表
其转换方案如下图所示
“学生”实体转换为“学生”关系表
“本科生”实体转换为“本科生”关系表
“研究生”实体转换为“研究生”关系表
“学生”关系表的主键“学号”
分别在“本科生”关系表“研究生”关系表中
既作为主键又作为外键
七、实体递归联系转换参照完整性约束
1.“1:N实体递归联系”的转换
例如“顾客”1:N实体递归联系转换参照完整性约束
其转换方案如下图所示
转换方案
首先将递归实体转换为表
其属性转换为列
标识符转换为主键
同时还将标识符转换为外键
实现自己对自己的参照
针对本例“顾客”实体转换为“顾客”关系表
“顾客编号”在关系表中作为主键
同时又是添加该属性作为外键
实现自己对自己的参照完整性约束
2.“M:N实体递归联系”的转换
例如
“医生”M:N实体递归联系转换参照完整性约束
其方案如下图所示
转换方案 增加一个关联表
该表分别参照原实体对应的关系表
并对原关系表建立两个参照完整性约束
针对本例“医生”实体转换为“医生”关系表
并增加一个“治疗”关系表
该表对“医生”关系表建立两个参照完整性约束
即“治疗”关系表中
定义两个主键“医生编号”
这两个主键同时又是外键
它们分别参照“医生”关系表的主键“医生编号”
八、系统数据库建模设计实例
这里以“图书借阅管理系统”数据库建模设计为例
说明CDM/LDM/PDM的转换设计
首先设计系统概念数据模型
如下图所示
该 “图书借阅管理系统”的
概念数据模型是以E-R模型图来表示设计的
下面将“图书借阅管理系统”概念数据模型
转换到逻辑数据模型设计
该E-R模型图为“图书借阅管理系统”的
逻辑数据模型设计
在逻辑数据模型中
实体的标识符不但有主键标识符
也有外键标识符
同时 也将概念数据模型中的
多对多实体联系转换为1对多联系
并增加一个关联实体“预定”
对于转换后的逻辑数据模型
通常还需要进行完善设计
如在“预定”实体中
建议增加“预定日期”、“预定数量”等属性
下面将“图书借阅管理系统”逻辑
数据模型转换为物理数据模型设计
将“图书借阅管理系统”逻辑数据模型
转换为指定DBMS的物理数据模型
在系统物理数据模型中
只有关系表元素
以及关系表的参照完整性约束
到此为止
数据库建模设计就结束了
后续
便可进入数据库实现阶段开发
好了,本节学习结束!
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试