数据库建模、面向对象建模>从零开始学java系列
数据库建模
前置知识
- 一对多解决方案,多的一方增加一个外键
- 一对一解决方案,任何一方增加一个外键,并指定为唯一键。或者其中一方将其设置为主键and外键对应
- 多对多解决方案,需要一个中间表
使用PowerDesigner数据库建模设计
一对多CDM概念数据模型设计

多对多的PDM物理数据模型设计(针对mysql)

PowerDesigner将不同的模型进行转换

在PowerDesigner中设置外键,唯一键
- 设置外键
- 需要先进行关联关系的线连接。

- 设置该模型的需要设置文件的字段,设置为一个key

- 设置关联关系

- 需要先进行关联关系的线连接。
- 设置唯一键
- 先将该键定义为一个key

- 然后选中unique

- 先将该键定义为一个key
通过PDM 生成数据库SQL语句

逆向工程,将sql语句用来生成PDM物理数据模型

数据库建模的三大范式
第一范式
数据表的每一列都是不可分割项
修改前:用户表(姓名、联系方式),其中联系方式就是可以分割项
修改后:用户表(姓名、家庭电话、手机电话、紧急电话)
第二范式
数据表的非主键列都依赖于主键
修改前:学生表(学生id、学生姓名、课程id、课程名),其中的课程id与课程名与学生id没有依赖关系
修改后:
学生表(学生id、学生姓名)
课程表(课程id、课程名)
选课表(学生id、课程id)
第三范式
数据表的非主键列都依赖于主键,但是不存在传递依赖
修改前:学生表(学生id、学生姓名、班级id、班级名),其中的班级名不是直接依赖于学生id,直接依赖于班级id,对学生id只是一个间接依赖
修改后:
学生表(学生id、学生姓名、班级id)
班级表(班级id、班级名)
面向对象建模
类图Class Diagram(表示类与类之间的关系)

类图的六种关系
- 泛化关系(继承),实线空心箭头
- 实现关系,虚线空心箭头
- 依赖关系(被依赖的一方为依赖方的局部变量),虚线普通箭头
- 关联关系(被依赖的一方为依赖方的成员变量),实线普通箭头
- 聚合关系(特例的关联关系,联系较弱),依赖方为空心菱形、被依赖方为实线普通箭头
- 组合关系(特例的关联关系、联系较强(双方生命周期一致)),依赖方为实心菱形、被依赖方为实线普通箭头
泛化关系

实现关系

依赖关系

关联关系

聚合关系(特例关联关系,生命周期不同)

组合关系(特例关联关系,生命周期相同)

用例图(表示功能、权限)
图像规则
- 小人:参与者
- 椭圆:功能
- 泛化(继承):实线空心箭头
- 实线:关联关系
- extends:扩展
- include: 包含

时序图(表示执行细节)

数据库建模、面向对象建模>从零开始学java系列的更多相关文章
- spring框架的学习->从零开始学JAVA系列
目录 Spring框架的学习 框架的概念 框架的使用 Spring框架的引入 概念 作用 内容 SpringIOC的学习 概念 作用 基本使用流程 SpringIOC创建对象的三种方式 通过构造器方式 ...
- JAVAWEB过滤器、监听器的作用及使用>从零开始学JAVA系列
目录 JAVAWEB过滤器.拦截器的作用及使用 过滤器Filter 什么是过滤器 为什么要使用过滤器(过滤器所能解决的问题) 配置一个过滤器完成编码的过滤 编写一个EncodingFilter(名称自 ...
- JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列
目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...
- Session与Cookie的原理以及使用小案例>从零开始学JAVA系列
目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...
- JAVAWEB - Servlet原理及其使用>从零开始学JAVA系列
目录 Servlet原理及其使用 什么是Servlet Servlet的使用 编写一个Servlet,使用继承HttpServlet的方式 配置web.xml 很简单的几个JSP文件 小提示,如果继承 ...
- JAVAWEB的基本入门(JSP、Tomcat)>从零开始学JAVA系列
目录 JAVAWEB的基本入门(JSP.Tomcat) 使用idea创建web项目的两种方式 1.直接创建一个web项目(这样创建好的项目可以直接运行) 2.创建一个普通的java项目并配置web模块 ...
- JAVA数组的基础入门>从零开始学java系列
目录 JAVA数组的基础入门 什么是数组,什么情况下使用数组 数组的创建方式 获取数组的数据 数组的内存模型 为什么数组查询修改快,而增删慢? 查询快的原因 增删慢的原因 数组的两种遍历方式以及区别 ...
- 进入mysql的学习>从零开始学JAVA系列
目录 MySQL的学习 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) MYSQL基本指令 DDL ...
- 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列
目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...
随机推荐
- 【TCP/IP】TCP服务器并发处理&源码
前言 本笔记记录的是 单个服务端并发式处理多个客户端. 下次有空在发个 单线程多个服务端并发式处理多种客户端.其实就是本笔记的一个改良版,用到select() / poll() / epoll(). ...
- external-provisioner源码分析(3)-组件启动参数分析
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 external-provisioner源码分析(3)-组件启动参数分析 本文将对extern ...
- Linux 之 deb 包生成、安装、卸载
Linux 之 deb 包的生成.安装和卸载 deb DEB 是 Debian 软件包格式的文件扩展名,是 Unixar 的标准归档,将包文件信息以及包内容,经过 gzip 和 tar 打包而成. d ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- uniapp 微信小程序扫码处理
1.view 代码 <view class="v-main-scan"> <uni-icons @click="scanCode" clas ...
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- ftp错误&&详解方案
一.FTP错误代码列表150 文件状态良好,打开数据连接 200 命令成功 202 命令未实现 211 系统状态或系统帮助响应 212 目录状态 213 文件状态 214 帮助信息,信息仅对人类用户有 ...
- 基于Flink构建全场景实时数仓
目录: 一. 实时计算初期 二. 实时数仓建设 三. Lambda架构的实时数仓 四. Kappa架构的实时数仓 五. 流批结合的实时数仓 实时计算初期 虽然实时计算在最近几年才火起来,但是在早期也有 ...
- [NOI2009] 诗人小G [题解]
诗人小G 题目大意 给出 \(n\) 个长度不超过 \(30\) 的句子,要求你对其进行排版. 对于每一行,有一个规定的行标准长度 \(L\) ,每一行的不协调度等于该行的实际长度与行标准长度差的绝对 ...
- shell编程之循环语句for / while / until
shell编程之循环语句与函数 一.条件测试 二.循环语句 ① for循环语句结构(遍历) 示例1 示例2 ② while循环语句结构(迭代) 示例1 示例2 ③ until 循环语句结构 示例1 一 ...