编写版本:v3.5.8
适用版本: 所有

数据库创建表规范

主键和外键

  • 主键: 所有数据库类型的主键必须都是字符串;
  • 外键: 设计表结构只需要声明哪个字段是外键即可,不需要在数据库构建外键关联;
  • 主键和外键存储关系,单表调用平台领域层的save方法进行统一处理, 主子表由领域层的saveCascade方法进行统一处理.
     //主表和子表的保存方法范例
      public void saveCascade(TestParentTablePo testParentTablePo){
          autoId(testParentTablePo);
          if(BeanUtils.isNotEmpty(testParentTablePo.getTestSubTablePoList())){
              for(TestSubTablePo testSubTablePo:testParentTablePo.getTestSubTablePoList()){
                  //设置外键
                  testSubTablePo.setParentId(testParentTablePo.getId());
              }
          }
          save(testParentTablePo);
      }

表名建议

平台名+模块名+功能模块【可选】+功能
中间以下划线(_)划分

例如:
IFORM_BPM_DEF 【流程定义表】
IFORM_PARTY_EMPLOYEE【员工表】
IFORM_FORM_DEF_HIS【表单定义历史表】

字段类型

域(Domains) 描述 mysql sqlServer oracle postgres dm
PK Or FK varchar(64) varchar(64) VARCHAR2(64) VARCHAR(64) VARCHAR2(64)
业务主键(别名) varchar(64) varchar(64) VARCHAR2(64) VARCHAR(64) VARCHAR2(64)
内容 varchar(1024) varchar(1024) VARCHAR2(1024) VARCHAR(1024) VARCHAR2(1024)
内容(中) varchar(512) varchar(512) VARCHAR2(512) VARCHAR(512) VARCHAR2(512)
内容(短) varchar(255) varchar(255) VARCHAR2(255) VARCHAR(255) VARCHAR2(255)
内容(长) varchar(4000) varchar(4000) VARCHAR2(4000) VARCHAR(4000) VARCHAR2(4000)
名称 varchar(64) varchar(64) VARCHAR2(64) VARCHAR(64) VARCHAR2(64)
名称(中) varchar(40) varchar(40) VARCHAR2(40) VARCHAR(40) VARCHAR2(40)
名称(短) varchar(20) varchar(20) VARCHAR2(20) VARCHAR(20) VARCHAR2(20)
名称(长) varchar(128) varchar(128) VARCHAR2(128) VARCHAR(128) VARCHAR2(128)
大文本 text text CLOB TEXT CLOB
大文本(长) longblob varbinary(MAX) BLOB BYTEA BLOB
整数 int int INTEGER INT4 INTEGER
整数(短) smallint smallint SMALLINT INT2 SMALLINT
整数(长) bigint bigint NUMBER(64) INT8 NUMBER(64)
时间 datetime datetime DATE DATE DATE
时间(短) datetime datetime DATE DATE DATE
是否 是 Y ;否 N char(1) char(1) CHAR(1) CHAR(1) CHAR(1)
浮点(低精度) numeric(20,2) numeric(20,2) NUMBER(20,2) NUMERIC(20,2) NUMBER(20,2)
浮点(高精度)/ 金额 numeric(20,4) numeric(20,4) NUMBER(20,4) NUMERIC(20,4) NUMBER(20,4)
类型或状态(字符) varchar(40) varchar(40) VARCHAR2(40) VARCHAR(40) VARCHAR2(40)
类型或状态(整型) smallint smallint SMALLINT INT2 SMALLINT

说明:以上目前常见的区别字段类型清单,不同数据库PowerDesigner 里面域(Domains)进行查看

表建议必备字段:

字段 描述 建议必备
ID_ 主键 PK Or FK
CREATE_BY_ 创建人 PK Or FK
CREATE_TIME_ 创建时间 时间
UPDATE_BY_ 更新人 PK Or FK
UPDATE_TIME_ 更新时间 时间

SQL

在xml的文件,编写sql语句不能编写只针对一个数据库类型有效,比如:

 *    update t_consumable c inner join( select consumable_code_
 *            ,consumable_name_,effective_date_ from t_stock where effective_date_>now() GROUP BY consumable_code_)
 *            s on c.code_ = s.consumable_code_ set c.expire_warning_ = '2';

上述SQL只能在mysql进行使用,切换达梦等数据库执行该sql会报异常.

若在性能调优时必须使用数据库的特性,则需要在xml编写增加sql的代码,然后在仓库层根据获取当前数据库类型进行调用对应的dao层方法,如下代码所示:

import com.ak.iform.base.datasource.constants.DbConstant;
import com.ak.iform.base.datasource.util.DbUtil;

      //获取数据库类型
        String dbType = DbUtil.getCurDBtype();
        if(DbConstant.DB_MYSQL.equalsIgnoreCase(dbType)){
            skeletonQueryDao.findByKey("mysql的sql的id信息");
        }else if(DbConstant.DB_DM.equalsIgnoreCase(dbType)){
           skeletonQueryDao.findByKey("dm的sql的id信息");
        }
    }
作者:黄春艳  创建时间:2024-11-21 19:15
最后编辑:hugh  更新时间:2024-11-25 19:17