从零搭建数据持久层(一) powerdesigner的使用

近段时间学习了mybatis和spring。那么我们需要通过实践来认证自己的知识掌握度。当然也是说一种自己对于数据持久层的开发想法。


准备工作

所使用到的工具:
1 idea 2018.1.1
2 Navicat premium 12
3 mysql 5.6 64位
4 powerdesigner16.5 64位
5 ODBC 64位
所使用到的包:


        
            junit
            junit
            4.12
        
        
            org.mybatis
            mybatis
            3.4.6
        
        
            mysql
            mysql-connector-java
            5.1.18
        
        
            org.slf4j
            slf4j-api
            1.7.25
        
        
            org.slf4j
            slf4j-log4j12
            1.7.25
        
        
            log4j
            log4j
            1.2.17
        
    

数据库设计

首先我们需要根据系统需求来设计我们的数据。我根据自己的系统需求设计的数据库。我使用powerdesigner做概念数据模型(CDM) 和物理数据模型(PDM) 。

从零搭建数据持久层(一) powerdesigner的使用_第1张图片
CDM设计图.png
从零搭建数据持久层(一) powerdesigner的使用_第2张图片
物理数据概念模型.png

概念数据模型注意的点

1.概念数据模型里面什么该写?什么不该写?

百度百科给的定义:概念模型表征了待解释的系统的学科共享知识。为了把现实世界中的具体事物抽象、组织为某一数据库管理系统支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个数据库管理系统(DBMS)支持的数据模型,而是概念级的模型,称为概念模型。

概念数据模型就是将客观的对象抽象为某一种信息结构,千万不要把所谓的外键,放到从表里面。一个实体它本身该有什么属性,你就写什么属性。才开始用powerdesigner的人很容易出现这种错误。比如我设计的表中,学生和记录,如果我将学号放入体测记录表中的话,然后设置一对多属性,一会直接生成的pdm就会出现重复属性。

在mysql中没有大写这么一说,所以我们最好是使用下划线来分开单词,也是为了一会能够通过mybatis直接将下划线转为驼峰式命名。更多的命名规则可以看mysql命名规范 阿里云,里面有更多的设计规范。
表名和描述:
名字用中文,代码用英文。

从零搭建数据持久层(一) powerdesigner的使用_第3张图片
image.png

比如我的学生表:


从零搭建数据持久层(一) powerdesigner的使用_第4张图片
学生.png

2.设置参数

根据规范,我们最好将我们的字段设置为not null非空,设置好默认值。这里的设置方法如下:
双击实体进入该entity properties窗口:

从零搭建数据持久层(一) powerdesigner的使用_第5张图片
entity properties.png

用光标选中你要设置的字段,按住alt+enter就有更多的设置:
从零搭建数据持久层(一) powerdesigner的使用_第6张图片
image.png

然后我们点击standard checks


从零搭建数据持久层(一) powerdesigner的使用_第7张图片
image.png

在default这一栏里面,我们就可以设置默认值。ok

生成pdm文件

其实可以通过cdm直接生成pdm文件,但是需要注意的是在生成pdm之前最好把错误,和警告排除了。最常见的是重复名字了。

当我写文章的时候,错误已经被我干掉了,emmm,所以~~~~。直接生成pdm,快捷键ctrl+shift+p,没有就直接生成,有的话选择更新,确定就好。

设计物理数据模型注意点

这里十分关键!!因为一会儿我们是通过odbc直接将物理数据模型导入数据库,如果这里有什么奇怪的问题,直接的结果就是导入的数据库不完整。

重新检查物理数据模型,调整一些参数

根据自己选择的数据对某些参数类型需要修改。比如我只是需要年份year这个mysql 类型,但是从cdm转换过来的是没有的(当然有可能我没有找到位置),设置独有的类型要通过下拉条找!点...按钮是没有的。


从零搭建数据持久层(一) powerdesigner的使用_第8张图片
设置year类型.png
常见的错误:
  • 删除失败
    问题描述:这个问题常见于有很多外键关系的数据库,因为生成的脚本文件是直接判断表是否存在,存在就直接删除。但是因为有很多外键关系,所以删除不成功。
    解决方案:多执行几次删除表命令,保证一个干净的数据库。

  • 导入的数据库,外键不完整
    问题描述:这是个常见问题,表现为表示是部分独立的,一部分一部分执行有的时候导致的结果也是不一样的。
    解决方案:检查外键关系。
    解决步骤:
    双击外键关系的线,修改code这个属性。主要是出现在有cdm生成pdm的时候,一对多,和多对多。上述场景一定要根据数据库约束重新检查一次外键关系。code千万不要用中文,不然生成的外键很丑~~~

  • 默认值导致的表生成失败
    错误场景:创建表失败,错误提示非法值。
    错误原因:设置默认值的时候,特别是字符串的时候,不符合类型要求,就会出现错误。

导入数据库

导入之前,一定要检测pdm语法,排错,排警告(后面我写一些常见的错误和警告还有解决方法)。

通过Navicat创建一个数据库方便,

配置ODBC

我这里用的mysql的所以我下载的是64位的ODBC。注意!!powerdesigner ODBC mysql 的位数一定要一致!!!不然会失败的。逆向工程也是一样的。


从零搭建数据持久层(一) powerdesigner的使用_第9张图片
添加数据源.png
从零搭建数据持久层(一) powerdesigner的使用_第10张图片
设置参数.png

生成数据库


从零搭建数据持久层(一) powerdesigner的使用_第11张图片
image.png

可以根据可以根据你需要,导出sql,或者导入的表。


从零搭建数据持久层(一) powerdesigner的使用_第12张图片
配置导入参数.png

最直接的方式就是看代码,里面的设置是否存在问题。

从零搭建数据持久层(一) powerdesigner的使用_第13张图片
sql语句.png

检查数据库

从零搭建数据持久层(一) powerdesigner的使用_第14张图片
image.png

你可能感兴趣的:(从零搭建数据持久层(一) powerdesigner的使用)