数据库建模-概念模型建模(E-R图)

本文详细介绍了数据库建模中的概念模型建模,包括面向对象模型与数据库关系模型的关系,以及E-R图在概念数据模型中的应用。重点讨论了实体、属性、联系的类型,并探讨了多用户表结构设计的三种方式,最后概述了物理数据模型的关键元素如表、列、主键和外键。

数据库建模-概念模型建立

面向对象模型与数据库关系模型

前面我已经总结过面向对象建模的相关知识与技术,有兴趣的朋友可以了解一下:

面向对象UML统一建模语言

两种模型的关系

  • 面向对象模型关注的是软件静态结构和动态交互

    数据库关系模型关注的是数据持久化存储、数据管理

  • 数据在面向对象模型中存放在内存中的数据结构

    数据在数据库关系模型中存放在

  • 面向对象模型中的对应数据库关系模型中的

  • 面向对象模型中的属性对应数据关系模型中的表中字段

  • 面向对象模型中的依赖关联聚合组合泛化对应数据库对象模型中的一对一一对多多对一多对多

  • 在面向对象模型中有用例图、活动图、类图等对应数据库关系模型中的概念模型图、逻辑模型图、物理模型图

画图不是目的,目的是分析和思考

中间件

在Java中有两个应用非常广泛的中间件-**对象关系映射(Object Relational Mapping )**模型框架-Mybatis/Hibernate

专门负责数据库关系模型与面向对象模型之间的转换,这些框架我后面会进行总结

概念数据模型(CDM)

主要在系统开发的数据库设计阶段,是按用户的观点来对数据和信息进行建模,利用实体关系图(E-R图)来实现,它描述系统中各个实体以及相关实例之间的关系,是系统特性的静态描述

概念数据模型表达的是数据库的整体逻辑结构,该结构独立于任何软件和数据存储结构,并不针对具体的数据库平台(如 Oracle 或 SQL Server )和工具(PowerBuilder)。

实体及属性

实体

实体是现实世界中区别于其他对象的物体,它可能是有形的或无形的,具体或抽象的,有生命或无生命的

属性

每个实体都有一组特征、称为实体的属性,用来描述实体的状态和特征

[)(C:\Users\JunSIr\AppData\Roaming\Typora\typora-user-images\image-20191116154719916.png)]

联系
  • 实体可以通过联系(Relationship)相互关联
  • 按照实体之间的数量对应关系,通常可将联系分为:一对一联系(One to One)、一对多 联系(One to Many)、多对多联系(Many to Many )等
一对一双向关系

点击选择该图标 -->从任意实体拖至另一实体–>

双击关联

在概念模型上建立逻辑模型

ctrl+shift+L

一对一单向关系

重新建立一个视图

建立表的依赖

护照依赖用户:

在此基础上建立逻辑模型:

注意:用户表中合理应该不会出现护照的id,此处是因为复用了护照和用户两个实体

一对多(等效多对一)

生成逻辑视图

可以看出,部门表是主表,员工表是子表,员工表中有dept_id来依赖部门表

一对多和多对一的区别只是从哪个实体中看,最终模型视图都是一样的

多对多

需要在两个实体间建立中间联系

生成逻辑视图

  • 通过中间表进行查询(两个一对多)
  • 箭头表示依赖
域(Domain )

是某个或某些属性的取值范围,定义域后可以被多个实体的属性共享使用

域的定义在模型设计中具有重要意义,使得不同实体中的属性标准化更加容易

PowerDesigner建立概念模型
  1. File–>New Model菜单项
  2. 在左侧模型类型列表中选择Conceptual Data Model
  3. 在右侧输入模型名称
  • 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)

物理数据模型是以常用的DBMSDatabase 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语句
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值