Java教程

数据库建模、面向对象建模>从零开始学java系列

本文主要是介绍数据库建模、面向对象建模>从零开始学java系列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 数据库建模
    • 前置知识
      • 使用PowerDesigner数据库建模设计
        • 一对多CDM概念数据模型设计
        • 多对多的PDM物理数据模型设计(针对mysql)
        • PowerDesigner将不同的模型进行转换
        • 在PowerDesigner中设置外键,唯一键
        • 通过PDM 生成数据库SQL语句
        • 逆向工程,将sql语句用来生成PDM物理数据模型
      • 数据库建模的三大范式
        • 第一范式
        • 第二范式
        • 第三范式
      • 面向对象建模
        • 类图Class Diagram(表示类与类之间的关系)
          • 泛化关系
          • 实现关系
          • 依赖关系
          • 关联关系
          • 聚合关系(特例关联关系,生命周期不同)
          • 组合关系(特例关联关系,生命周期相同)
        • 用例图(表示功能、权限)
        • 时序图(表示执行细节)

数据库建模

前置知识

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

使用PowerDesigner数据库建模设计

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

image

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

image

PowerDesigner将不同的模型进行转换

image

在PowerDesigner中设置外键,唯一键

  • 设置外键
    • 需要先进行关联关系的线连接。
      image
    • 设置该模型的需要设置文件的字段,设置为一个key
      image
    • 设置关联关系
      image
  • 设置唯一键
    • 先将该键定义为一个key
      image
    • 然后选中unique
      image

通过PDM 生成数据库SQL语句

image

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

image

数据库建模的三大范式

第一范式

数据表的每一列都是不可分割项
修改前:用户表(姓名、联系方式),其中联系方式就是可以分割项
修改后:用户表(姓名、家庭电话、手机电话、紧急电话)

第二范式

数据表的非主键列都依赖于主键
修改前:学生表(学生id、学生姓名、课程id、课程名),其中的课程id与课程名与学生id没有依赖关系
修改后:
学生表(学生id、学生姓名)
课程表(课程id、课程名)
选课表(学生id、课程id)

第三范式

数据表的非主键列都依赖于主键,但是不存在传递依赖
修改前:学生表(学生id、学生姓名、班级id、班级名),其中的班级名不是直接依赖于学生id,直接依赖于班级id,对学生id只是一个间接依赖
修改后:
学生表(学生id、学生姓名、班级id)
班级表(班级id、班级名)

面向对象建模

类图Class Diagram(表示类与类之间的关系)

image
类图的六种关系

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

image

实现关系

image

依赖关系

image

关联关系

image

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

image

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

image

用例图(表示功能、权限)

图像规则

  • 小人:参与者
  • 椭圆:功能
  • 泛化(继承):实线空心箭头
  • 实线:关联关系
  • extends:扩展
  • include: 包含
    image

时序图(表示执行细节)

image

这篇关于数据库建模、面向对象建模>从零开始学java系列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!