数据库建模-概念模型建模(E-R图)
数据库建模-概念模型建立
目录
- 数据库建模-概念模型建立
- 面向对象模型与数据库关系模型
- 两种模型的关系
- 中间件
- 概念数据模型(CDM)
- 实体及属性
- 实体
- 属性
- 联系
- 一对一双向关系
- 一对一单向关系
- 一对多(等效多对一)
- 多对多
- 域(Domain )
- PowerDesigner建立概念模型
- 多用户表结构设计的三种方式
- 第一种:各自生成子表(各自管理)
- 第二种:生成父表,用字段表区别子表
- 第三种:同时生成父表、子表、公共属性放入父表、子表存放各自子表的属性、父子表通过外键关联
- 物理数据模型(PDM)
- 表
- 列
- 主键
- 候选键
- 外键
- 主键
- 候选键
- 外键
面向对象模型与数据库关系模型
前面我已经总结过面向对象建模的相关知识与技术,有兴趣的朋友可以了解一下:
面向对象UML统一建模语言
两种模型的关系
面向对象模型关注的是软件静态结构和动态交互
数据库关系模型关注的是数据持久化存储、数据管理
数据在面向对象模型中存放在内存中的数据结构
数据在数据库关系模型中存放在表中
面向对象模型中的类对应数据库关系模型中的表
面向对象模型中的属性对应数据关系模型中的表中字段
面向对象模型中的依赖关联聚合组合泛化对应数据库对象模型中的一对一一对多多对一多对多
在面向对象模型中有用例图、活动图、类图等对应数据库关系模型中的概念模型图、逻辑模型图、物理模型图
画图不是目的,目的是分析和思考
中间件
在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语句
数据库建模-概念模型建模(E-R图)相关推荐
- 数据库原理--概念模型
概念模型 概念模型也称为信息模型,是一个与特定数据库管理系统无关的模型. 由于计算机不能直接处理现实世界中的具体事物,所以人们必须将具体事物转换成计算机能够处理的数据.在数据库中用数据模型来抽象.表 ...
- 图数据库超级节点建模优化实战
图数据库超级节点建模优化实战 <针对图谱超级节点的一种优化解决方案 >,在这篇文章中设计了针对图数据库中超级节点的一系列优化方案.下面介绍一个实战操作.对于地域相关的数据进行建模优化.ps ...
- R语言对SEER数据库随机分为建模组和验证组
我们从SEER数据库下载到数据库后,一个很重要的步骤就是把数据库随机分为建模组和验证组,一般来说的话是用70%的数据建模,30%的数据进行验证.因为我们很难找到和SEER数据库类似的数据进行外部验证, ...
- 数据库复习 - PART2 - 建模设计与范式
数据库复习 - PART2 - 建模设计与范式 数据库复习 - PART2 - 建模设计与范式 4. 数据建模 4.1 概述 4.2 E-R模型 4.2.1 基本组成 4.2.2 联系专题 4.2.3 ...
- 数据建模基础知识——实体关系图
数据建模是设计数据库的重要组成部分.如果要获得最佳结果,请确保利用可用的数据模型.请继续阅读以了解更多信息. 每个关系数据库都有明确定义的对象以及这些对象之间的关系.它们共同构成了数据模型. 本文介绍 ...
- 数据库导论 关系数据库建模
2. 数据库建模 一般地, 我们在对某个现实需求建模时, 需要执行的流程是: 首先从现实问题中总结出现实需求 (需求的汇集和分析), 将需求提炼成某种更抽象和精确的模型, 使用高级数据模型创建数据库的 ...
- 数据库建模-物理层建模
数据库建模-物理层建模 概念模型创建的实体在物理模型中对应的是表的创建,属性的设置都是一样的. 创建序列 关系 从用户表分析一对多的关系(用户表与订单表): 箭头所指向的表是1的一端,箭头背向的表是多 ...
- 数据库设计及建模工具——ERwin简介
数据库设计及建模工具--ERwin简介 本站整理 网络搜集 2008-02-09 点击: 1021 我要评论 设计|数据|数据库|数 ...
- 软件工程 选课系统的uml类图_UML建模学生选课系统(类图+对象图+用例图+部署图)...
UML建模学生选课系统(类图+对象图+用例图+部署图) UML建模学生选课系统(类图+对象图+组件图+部署图) 录 1.项目简介 3 1.1. 学生选课系统 3 1.2. 项目主题 3 1.3. 设计 ...
- SaaS-多租户SaaS平台的数据库方案(数据库设计与建模)
2 数据库设计与建模 2.1 数据库设计的三范式 三范式: 第一范式(1NF):确保每一列的原子性(做到每列不可拆分) 第二范式(2NF):在第一范式的基础上,非主字段必须依赖于主字段(一个表只做一件 ...
最新文章
- Mongodb数据库介绍
- Codeforces698B【并查集+拆环】
- gc 吞吐量和停顿时间_GC对吞吐量和延迟的影响
- 剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)
- 60 MM配置-后勤发票校验-设置重复发票检查
- 外媒:特斯拉正寻求扩大在华法律事务和对外关系员工队伍
- DCMTK: DcmSCP, error:QueryRetrieveLevel larger remaining bytes
- 指定范围内的水仙数(C语言)
- Transformations on DStreams之transform的使用 实现黑名单操作/指定过滤
- vue(vue-cli+vue-router)+babel+webpack项目搭建入门(四)
- 《机器学习实战》完整读书笔记
- 51nod1433--简单数学
- 备战9月,美团50道软件测试经典面试题及答案汇总
- matlab绘制香农定理曲线,基于matla对香农公式仿真.doc
- Unity3D笔记第十五天——Unity2D技术
- 使用 Travis 将 GitHub 文件上传传至服务器
- Php绘制棋盘,第二次DIY棋盘,纯手工绘制完美棋盘
- wi-fi和路由器怎么连接_解决Wi-Fi问题的最简单方法:严重移动路由器
- snat与dnat的区别
- 我也能做CTO之程序员职业规划 之六 灵商