美文网首页Powerdesigner知识
从零搭建数据持久层(一) powerdesigner的使用

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

作者: 探索的影子 | 来源:发表于2018-08-13 21:57 被阅读0次

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


    准备工作

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

    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.18</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.25</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.25</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>
    

    数据库设计

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

    CDM设计图.png 物理数据概念模型.png

    概念数据模型注意的点

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

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

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

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

    image.png

    比如我的学生表:


    学生.png

    2.设置参数

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

    entity properties.png
    用光标选中你要设置的字段,按住alt+enter就有更多的设置:
    image.png

    然后我们点击standard checks


    image.png

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

    生成pdm文件

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

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

    设计物理数据模型注意点

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

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

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


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

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

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

    导入数据库

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

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

    配置ODBC

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


    添加数据源.png 设置参数.png

    生成数据库


    image.png

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


    配置导入参数.png

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

    sql语句.png

    检查数据库

    image.png

    相关文章

      网友评论

        本文标题:从零搭建数据持久层(一) powerdesigner的使用

        本文链接:https://www.haomeiwen.com/subject/pgaubftx.html