数据库建模

前置知识

  • 一对多解决方案,多的一方增加一个外键
  • 一对一解决方案,任何一方增加一个外键,并指定为唯一键。或者其中一方将其设置为主键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: 包含

时序图(表示执行细节)

最新文章

  1. C#语言基础——函数
  2. redis-key2
  3. html、css、javascript、JSP 、xml学习顺序应该是怎样的呢?
  4. Java Hour 53 HQL
  5. sdfsdf
  6. Unity问答——NGUI怎么使用按键模拟鼠标点击?
  7. c语言中内存对齐问题
  8. jQuery ui背景色动态渐变导航菜单
  9. 在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互
  10. 数据库索引------B-Tree 索引和 Hash 索引的对比
  11. iOS 开发 右滑返回上一级控制器
  12. Collection和Map类图预览与比较
  13. 牛顿二项式与 e 级数
  14. maven 项目连接mysql8.0版本时的注意事项
  15. android - Animation详解
  16. 解决ios safari中按钮圆角问题【原创】
  17. IT和非IT人士:2分钟了解什么是区块链
  18. 面向对象程序设计_tesk1_寒假伊始
  19. python pip 代理设置
  20. hadoop实战--搭建开发环境及编写Hello World

热门文章

  1. 把新建的vue项目上传到码云
  2. vs2008中安装dev之后输入代码会输入代码段但是报错,可能解决方法
  3. 使用Let’s Encrypt实现网站https化
  4. 深入学习Netty(2)——传统NIO编程
  5. 9.5、zabbix高级操作(1)
  6. docker部署的nginx非80端口无法访问
  7. Ubuntu 更换内核
  8. 资源:Intellij IDEA 最新旗舰版注册激活破解*附注册码(2020年亲测)
  9. apache 2.2 静态文件目录的配置
  10. ROS2学习之旅(21)——创建一个动作服务和客户节点(C++)