silentbalanceyh/vertx-zero

View on GitHub
vertx-pin/zero-atom/src/main/resources/plugin/sql/atom/M_ATTRIBUTE.sql

Summary

Maintainability
Test Coverage
-- liquibase formatted sql

-- changeset Lang:ox-attribute-1
-- 模型属性表:M_ATTRIBUTE
DROP TABLE IF EXISTS M_ATTRIBUTE;
CREATE TABLE IF NOT EXISTS M_ATTRIBUTE
(
    `KEY`              VARCHAR(36) COMMENT '「key」- 属性ID',
    `NAME`             VARCHAR(255) COMMENT '「name」- 属性名称',
    `ALIAS`            VARCHAR(255) COMMENT '「alias」- 属性别名(业务名)',

    /*
     * INTERNAL  -  CMDB平台内部和数据库绑定的字段
     * REFERENCE -  CMDB平台内部引用专用数据库
     * EXTERNAL  -  CMDB平台之外的数据库字段(不落库,只读取)
     *
     */
    `TYPE`             VARCHAR(10) COMMENT '「type」- INTERNAL/EXTERNAL/REFERENCE属性',
    `EXPRESSION`       TEXT COMMENT '「expression」- 表达式',
    `NORMALIZE`        TEXT COMMENT '「normalize」- 表达式',
    `IN_COMPONENT`     VARCHAR(255) COMMENT '「inComponent」- 写入插件',
    `OUT_COMPONENT`    VARCHAR(255) COMMENT '「outComponent」- 读取插件',
    `MODEL_ID`         VARCHAR(36) COMMENT '「modelId」- 关联的模型ID',
    `COMMENTS`         TEXT COMMENT '「comments」- 当前属性的描述信息',

    -- 扩展专用配置
    /*
     * 目前出现的几种配置类型:
     * 1)type = INTERNAL, isArray = true
     * -- 内部字段,直接存储的数组类型字段
     * -- 启用 SOURCE_CONFIG 用于存储二维数据的配置
     * 2)type = REFERENCE, isArray = true
     * -- 内部字段,引用类型,引用其他表的二维数据
     * -- 启用 SOURCE_REFERENCE 存储引用信息
     * -- 启用 SOURCE_CONFIG 用于存储二维数据的配置
     * 3) type = REFERENCE, isArray = false
     * -- 内部字段,引用类型,引用其他表的一维数据
     * -- 启用 SOURCE_EXTERNAL 存储外联配置信息
     * -- 启用 SOURCE_CONFIG 用于存储一维数据基础信息
     * 4)type = EXTERNAL, isArray = true/false
     * -- 外部平台的字段信息,可 true,可 false
     * 注:type = INTERNAL 的时候不需要额外的配置
     */
    `SOURCE`           VARCHAR(255) COMMENT '「source」- 关联实体ID',
    `SOURCE_FIELD`     VARCHAR(255) COMMENT '「sourceField」- 可选,如果不设置则以name为主',
    /*
     * 基本数据结构
     * {
     *     "field":{
     *          "字段名": "字段值"
     *     },
     *     "linker":{
     *          "源字段": "目标字段"
     *     },
     *     "reference": {
     *          "joinedId": "关联模型ID",
     *          "joinedBy": "被查询字段"
     *     }
     * }
     */
    `SOURCE_CONFIG`    TEXT COMMENT '「sourceConfig」- 数据集配置(区分 Array 和 Object)',
    `SOURCE_REFERENCE` TEXT COMMENT '「sourceReference」- 引用配置信息( type = REFERENCE)',
    `SOURCE_EXTERNAL`  TEXT COMMENT '「sourceExternal」- 外部配置信息( type = EXTERNAL )',

    -- 该字段是否集合字段,如果集合则返回 Array,否则返回 Object
    `IS_ARRAY`         BIT COMMENT '「isArray」- 是否集合属性,集合属性在导入导出时可用(保留)',
    `IS_REFER`         BIT COMMENT '「isRefer」- 是否引用属性的主属性,主属性才可拥有 sourceReference 配置,根据 source 有区别',

    -- 标记
    `IS_SYNC_IN`       BIT COMMENT '「isSyncIn」- 是否同步读',
    `IS_SYNC_OUT`      BIT COMMENT '「isSyncOut」- 是否同步写',
    `IS_LOCK`          BIT COMMENT '「isLock」- 是否锁定,锁定属性不可删除',
    `IS_TRACK`         BIT COMMENT '「isTrack」- 是否实现历史记录,如果是 isTrack 那么启用 ACTIVITY 的变更记录,对应 ITEM',
    `IS_CONFIRM`       BIT COMMENT '「isConfirm」- 是否生成待确认变更,只有放在待确认变更中的数据需要生成待确认变更',

    -- 特殊字段
    `SIGMA`            VARCHAR(32) COMMENT '「sigma」- 统一标识',
    `LANGUAGE`         VARCHAR(10) COMMENT '「language」- 使用的语言',
    `ACTIVE`           BIT COMMENT '「active」- 是否启用',
    `METADATA`         TEXT COMMENT '「metadata」- 附加配置数据',

    -- Auditor字段
    `CREATED_AT`       DATETIME COMMENT '「createdAt」- 创建时间',
    `CREATED_BY`       VARCHAR(36) COMMENT '「createdBy」- 创建人',
    `UPDATED_AT`       DATETIME COMMENT '「updatedAt」- 更新时间',
    `UPDATED_BY`       VARCHAR(36) COMMENT '「updatedBy」- 更新人',
    PRIMARY KEY (`KEY`) USING BTREE
);

-- changeset Lang:ox-attribute-2
ALTER TABLE M_ATTRIBUTE
    ADD UNIQUE (`NAME`, `MODEL_ID`) USING BTREE;

ALTER TABLE M_ATTRIBUTE
    ADD INDEX IDX_M_ATTRIBUTE_MODEL_ID (`MODEL_ID`) USING BTREE;