数据库建模-概念模型建模(E-R图)
数据库建模-概念模型建立
目录
面向对象模型与数据库关系模型
前面我已经总结过面向对象建模的相关知识与技术,有兴趣的朋友可以了解一下:
两种模型的关系
-
面向对象模型关注的是软件静态结构和动态交互
数据库关系模型关注的是数据持久化存储、数据管理
-
数据在面向对象模型中存放在内存中的数据结构
数据在数据库关系模型中存放在表中
-
面向对象模型中的类对应数据库关系模型中的表
-
面向对象模型中的属性对应数据关系模型中的表中字段
-
面向对象模型中的依赖关联聚合组合泛化对应数据库对象模型中的一对一一对多多对一多对多
-
在面向对象模型中有用例图、活动图、类图等对应数据库关系模型中的概念模型图、逻辑模型图、物理模型图
画图不是目的,目的是分析和思考
中间件
在Java中有两个应用非常广泛的中间件-**对象关系映射(Object Relational Mapping )**模型框架-Mybatis/Hibernate
专门负责数据库关系模型与面向对象模型之间的转换,这些框架我后面会进行总结
概念数据模型(CDM)
主要在系统开发的数据库设计阶段,是按用户的观点来对数据和信息进行建模,利用实体关系图(E-R图)来实现,它描述系统中各个实体以及相关实例之间的关系,是系统特性的静态描述。
概念数据模型表达的是数据库的整体逻辑结构,该结构独立于任何软件和数据存储结构,并不针对具体的数据库平台(如 Oracle 或 SQL Server )和工具(PowerBuilder)。
实体及属性
实体
实体是现实世界中区别于其他对象的物体,它可能是有形的或无形的,具体或抽象的,有生命或无生命的
属性
每个实体都有一组特征、称为实体的属性,用来描述实体的状态和特征
联系
- 实体可以通过联系(Relationship)相互关联
- 按照实体之间的数量对应关系,通常可将联系分为:一对一联系(One to One)、一对多 联系(One to Many)、多对多联系(Many to Many )等
一对一双向关系
点击选择该图标 -->从任意实体拖至另一实体–>
双击关联
在概念模型上建立逻辑模型
ctrl+shift+L
一对一单向关系
重新建立一个视图
建立表的依赖
护照依赖用户:
在此基础上建立逻辑模型:
注意:用户表中合理应该不会出现护照的id,此处是因为复用了护照和用户两个实体
一对多(等效多对一)
生成逻辑视图
可以看出,部门表是主表,员工表是子表,员工表中有dept_id来依赖部门表
一对多和多对一的区别只是从哪个实体中看,最终模型视图都是一样的
多对多
需要在两个实体间建立中间联系
生成逻辑视图
- 通过中间表进行查询(两个一对多)
- 箭头表示依赖
域(Domain )
是某个或某些属性的取值范围,定义域后可以被多个实体的属性共享使用
域的定义在模型设计中具有重要意义,使得不同实体中的属性标准化更加容易
PowerDesigner建立概念模型
- File–>New Model菜单项
- 在左侧模型类型列表中选择Conceptual Data Model
- 在右侧输入模型名称
- name与code设置
- 属性设置
- 主键设置
- 域设置
创建domain:模型–>Domains–>
—>双击用户实体,可以设置域
多用户表结构设计的三种方式
第一种:各自生成子表(各自管理)
老师表
id
name
age
title(职称)
学生表
id
name
age
major
第二种:生成父表,用字段表区别子表
用户表
id
name
age
type 0:student 1:teacher
title
major
第三种:同时生成父表、子表、公共属性放入父表、子表存放各自子表的属性、父子表通过外键关联
用户表
id (pk)
name
age
学生表
major
id (fk)
老师表
title
id (fk)
父子表通过继承(对应UML类图中的泛化)来实现
选择gernerate parent(生成父表):父表中生成子表的属性
选择gernerate children(生成子表):子表中生成父表的属性
- 选择inherit all attributes:那么子表中只保留自己的属性即可、避免冲突
生成逻辑视图可见
物理数据模型(PDM)
物理数据模型是以常用的DBMS( Database Management System )(数据库管理系统)理论为基础,将CDM( Conceptual Data Model )中所建立的现实世界模型生成相应的DBMS的SQL语言脚本,利用该SQI.脚本在数据库中产生现实世界信息的存储结构(表、约束等),并保证数据在数据库中的完整性和一致性。
表
表(Table)是数据库中用来保存信息的一种数据结构。在PDM中建立表的过程,就是产生建表的SQL语句的过程。PDM中的表可以由CDM中的实体转换生成。
列
列(Column)是组成表的基本单元,一个表由多个列组成,每个列都有一个数据类型。 CDM中的实体属性通过模型内部生成可以转换成PDM中表的列
主键
主键(Primary Key)是用来唯一标识表中一条记录的一个或多个列的集合,它是由CDM中的主标识符转换产生的,也是CREATE TABLE语句的重要组成部分
候选键
候选键(Alternate Key)也是用来唯一标识表中一条记录的一个或多个列的集合,它与 主键具有同样的作用,主键由候选键中选取
外键
外键(Foreign Key)是与其他表连接的公共列,这个列通常是其他表的主键
- tools–>生成物理模型–>选择数据库,填写基本信息
生成可以转换成PDM中表的列**
主键
主键(Primary Key)是用来唯一标识表中一条记录的一个或多个列的集合,它是由CDM中的主标识符转换产生的,也是CREATE TABLE语句的重要组成部分
候选键
候选键(Alternate Key)也是用来唯一标识表中一条记录的一个或多个列的集合,它与 主键具有同样的作用,主键由候选键中选取
外键
外键(Foreign Key)是与其他表连接的公共列,这个列通常是其他表的主键
- tools–>生成物理模型–>选择数据库,填写基本信息
- 生成建表sql语句
推荐阅读
-
max怎么做地形图?3dsmax真实地形建模的教程
-
浅谈Oracle数据库的建模与设计
-
asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)
-
天正建筑cad怎么建模筑物首层平面图?
-
C#操作LINQ to SQL组件进行数据库建模的基本教程
-
详解SQLServer 2008 R2数据库SSAS建模及扩展能力
-
(23)ASP.NET Core EF关系数据库建模
-
c4d怎么抠图并建模? c4d画笔工具把图案实体化的教程
-
Redis键-值数据库 nosql 数据建模(2)------ 如何存储主从表数据 一对少关系
-
Redis键-值数据库 nosql 数据建模(1)------ 如何存储单表数据