数据库建模

前置知识

  • 一对多解决方案,多的一方增加一个外键
  • 一对一解决方案,任何一方增加一个外键,并指定为唯一键。或者其中一方将其设置为主键and外键对应
  • 多对多解决方案,需要一个中间表

使用PowerDesigner数据库建模设计

一对多CDM概念数据模型设计

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

PowerDesigner将不同的模型进行转换

在PowerDesigner中设置外键,唯一键

  • 设置外键

    • 需要先进行关联关系的线连接。

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

    • 设置关联关系

  • 设置唯一键
    • 先将该键定义为一个key

    • 然后选中unique

通过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系列的更多相关文章

  1. spring框架的学习->从零开始学JAVA系列

    目录 Spring框架的学习 框架的概念 框架的使用 Spring框架的引入 概念 作用 内容 SpringIOC的学习 概念 作用 基本使用流程 SpringIOC创建对象的三种方式 通过构造器方式 ...

  2. JAVAWEB过滤器、监听器的作用及使用>从零开始学JAVA系列

    目录 JAVAWEB过滤器.拦截器的作用及使用 过滤器Filter 什么是过滤器 为什么要使用过滤器(过滤器所能解决的问题) 配置一个过滤器完成编码的过滤 编写一个EncodingFilter(名称自 ...

  3. JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列

    目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...

  4. Session与Cookie的原理以及使用小案例>从零开始学JAVA系列

    目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...

  5. JAVAWEB - Servlet原理及其使用>从零开始学JAVA系列

    目录 Servlet原理及其使用 什么是Servlet Servlet的使用 编写一个Servlet,使用继承HttpServlet的方式 配置web.xml 很简单的几个JSP文件 小提示,如果继承 ...

  6. JAVAWEB的基本入门(JSP、Tomcat)>从零开始学JAVA系列

    目录 JAVAWEB的基本入门(JSP.Tomcat) 使用idea创建web项目的两种方式 1.直接创建一个web项目(这样创建好的项目可以直接运行) 2.创建一个普通的java项目并配置web模块 ...

  7. JAVA数组的基础入门>从零开始学java系列

    目录 JAVA数组的基础入门 什么是数组,什么情况下使用数组 数组的创建方式 获取数组的数据 数组的内存模型 为什么数组查询修改快,而增删慢? 查询快的原因 增删慢的原因 数组的两种遍历方式以及区别 ...

  8. 进入mysql的学习>从零开始学JAVA系列

    目录 MySQL的学习 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) MYSQL基本指令 DDL ...

  9. 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列

    目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...

随机推荐

  1. Java通用树结构数据管理

    1.前言 ​ 树结构是一种较为常见的数据结构,如功能权限树.企业的组织结构图.行政区划结构图.家族谱.信令消息树等,都表现为树型数据结构. ​ 树结构数据的共性是树节点之间都有相互关系,对于一个节点对 ...

  2. Lin语法(Linq对数据库操作)

    一.Linq语句的应用: var queryAllCustomers = from cust in customers   group cust by cust.City into custGroup ...

  3. http强制缓存、协商缓存、指纹ETag详解

    目录 实操目录及步骤 缓存分类 强制缓存 对比缓存 指纹 Etag 摘要及加密算法 缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的数据传输,节省网络传输.减少服务器负 ...

  4. Android EditText输入框实现下拉且保存最近5个历史记录

    文章结构: 一.需求阐述 技术部同事提出想要在APP上保存最近输入成功的5个密钥信息,同时支持可以下拉进行选择. 这也是为了方便客户在现在多次输入信息,帮助其快速进行输入. 二.实现思路: 目前想要实 ...

  5. Linux 之 deb 包生成、安装、卸载

    Linux 之 deb 包的生成.安装和卸载 deb DEB 是 Debian 软件包格式的文件扩展名,是 Unixar 的标准归档,将包文件信息以及包内容,经过 gzip 和 tar 打包而成. d ...

  6. Linux系统下安装MongoDB

    下载安装包 去MongoDB官网https://www.mongodb.com/try/download/community,下载社区版的安装包: 我的Linux系统是CentOS 7.5版本的,通常 ...

  7. Zoho Books十年发展历程

    十年前,我们推出Zoho Books的时候,是为了全面解决企业面临的财务和会计方面的挑战.我们逐渐地从一开始的易用的中小企业在线会计工具,发展成为现在的解决企业复杂的财务挑战的解决方案,其中经历了很多 ...

  8. Redis:Redis的安装

    Redis优势 性能极高             – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富的数据类型  – Redis支持二进制案例的 Strings, Li ...

  9. php laravel5.5使用rabbitmq消息队列

    1.安装rabbitmq 2.安装amqp扩展 3.在Laravel中配置 Rabbitmq 我是Laravel5.5,按照文档上说我只能用6版本 composer require vladimir- ...

  10. 在jsp中显示List中的数据

    <% ArrayList list = (ArrayList)request.getAttribute("class"); for(int i = 0; i < lis ...