# 知识库

## 数据模型

### 1.知识库类型

见通用文档中[码表类型](/utils/common.md)

### 2.知识库数据

## 数据说明

1. 知识库中的数据,原则上只做增加
2. 知识库类型表保存知识库数据对应的大类
3. 知识库数据表保存实际的知识库类型对应的知识数据

## 数据结构

### 1.知识库/码表类型(dt_code_type)

| 知识库/码表类型(dt_code_type) |                    |               |                                         |
| :-----------------------------: | :----------------: | :-----------: | :-------------------------------------: |
|              字段               |      字段说明      |   数据类型    |                  备注                   |
|               id                | 主键(无业务含义) |  varchar(20)  | id全局唯一,命名规则:“CODETYPE”+顺序码 |
|           group_code            |      集团编码      |  varchar(40)  |                                         |
|           project_id            |       项目id       |  varchar(40)  |      id规则:Pj+6位地区码+4位顺序码      |
|              code               |     知识库编码     |  varchar(40)  |                                         |
|              name               |   知识库类型名称   |  varchar(40)  |                                         |
|             extras              |      扩展属性      |  varchar(60)  |                                         |
|            tree_flag            |       树标识       |  tinyint(4)   |          0-列表结构,1-树型结构          |
|           show_order            |      显示顺序      |    int(11)    |                                         |
|             remark              |        备注        | varchar(1024) |                                         |
|             creator             |       创建人       |  varchar(32)  |                                         |
|          creation_time          |      创建时间      |   char(14)    |          格式为yyyyMMddHHmmss           |
|            modifier             |     最后修改人     |  varchar(32)  |                                         |
|          modified_time          |    最后修改时间    |   char(14)    |          格式为yyyyMMddHHmmss           |
|              valid              |      合法标识      |  tinyint(4)   |              1-有效,0-无效              |
|               ts                |       乐观锁       |   timestamp   |                                         |

### 2.知识库数据(dt_code_data)
| 知识库数据(dt_code_data) |                    |               |                               |
| :------------------------: | :----------------: | :-----------: | :---------------------------: |
|            字段            |      字段说明      |   数据类型    |             备注              |
|             id             | 主键(无业务含义) |  varchar(20)  | "CODEDATA"+18位0占位符+内部码 |
|         group_code         |      集团编码      |  varchar(40)  |                               |
|         project_id         |       项目id       |  varchar(40)  | id规则:Pj+6位地区码+4位顺序码 |
|          type_id           |       类型ID       |  varchar(40)  |                               |
|         type_code          |      类型编码      |  varchar(40)  |                               |
|            code            |        编码        |  varchar(40)  |                               |
|            name            |        名称        | varchar(200)  |                               |
|         parent_id          |       上级ID       |  varchar(40)  |         顶级上级id为0         |
|         inner_code         |       内部码       | varchar(255)  |                               |
|           extras           |      扩展属性      | varchar(2048) |                               |
|         show_order         |      显示顺序      |    int(11)    |                               |
|           remark           |        备注        | varchar(1024) |                               |
|          creator           |       创建人       |  varchar(32)  |                               |
|       creation_time        |      创建时间      |   char(14)    |     格式为yyyyMMddHHmmss      |
|          modifier          |     最后修改人     |  varchar(32)  |                               |
|       modified_time        |    最后修改时间    |   char(14)    |     格式为yyyyMMddHHmmss      |
|           valid            |      合法标识      |  tinyint(4)   |         0-无效,1-有效         |
|             ts             |       乐观锁       |   timestamp   |                               |



## DDL语句

### 1.知识库类型

```sql
CREATE TABLE IF NOT EXISTS `dt_code_type` (
  `id` varchar(40) NOT NULL,
  `group_code` varchar(40) DEFAULT NULL,
  `project_id` varchar(40) NOT NULL,
  `code` varchar(40) DEFAULT NULL COMMENT '编码',
  `name` varchar(200) DEFAULT NULL COMMENT '名称',
  `extras` varchar(60) DEFAULT NULL COMMENT '扩展属性',
  `tree_flag` tinyint DEFAULT NULL COMMENT '树标识',
  `show_order` int(11) DEFAULT NULL COMMENT '显示顺序',
  `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
  `creation_time` char(14) NULL DEFAULT NULL COMMENT '创建时间',
  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
  `modified_time` char(14) NULL DEFAULT NULL COMMENT '最后修改时间',
  `valid` tinyint DEFAULT NULL COMMENT '合法标识',
  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='码表类型';
```

### 2.知识库数据

```sql
CREATE TABLE IF NOT EXISTS `dt_code_data` (
  `id` varchar(40) NOT NULL,
  `group_code` varchar(40) DEFAULT NULL,
  `project_id` varchar(40) NOT NULL,
  `type_id` varchar(40) DEFAULT NULL COMMENT '类型ID',
  `type_code` varchar(40) DEFAULT NULL COMMENT '类型编码',
  `code` varchar(40) DEFAULT NULL COMMENT '编码',
  `name` varchar(200) DEFAULT NULL COMMENT '名称',
  `parent_id` varchar(40) DEFAULT NULL COMMENT '上级ID',
  `extras` varchar(60) DEFAULT NULL COMMENT '扩展属性',
  `show_order` int(11) DEFAULT NULL COMMENT '显示顺序',
  `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
  `creator` varchar(32) DEFAULT NULL COMMENT '创建人',
  `creation_time` char(14) NULL DEFAULT NULL COMMENT '创建时间',
  `modifier` varchar(32) DEFAULT NULL COMMENT '最后修改人',
  `modified_time` char(14) NULL DEFAULT NULL COMMENT '最后修改时间',
  `valid` tinyint DEFAULT NULL COMMENT '合法标识',
  `ts` timestamp default current_timestamp on update current_timestamp NOT NULL COMMENT '乐观锁',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='码表数据';
```



# 数据字典(Deprecated)-兼容旧中台

数据字典主要用于维护系统常用且固定的数据类型,例如:性别(1:男,2:女)

datetime格式:时间戳(1598495680898)

## 数据结构

### 字典类型结构(dic\_dt\_type)

|     字段      |      字段说明      |   数据类型    | 是否非空 |               备注                |
| :-----------: | :----------------: | :-----------: | -------- | :-------------------------------: |
|      id       | 主键(无业务含义) |  varchar(20)  | Y        | id全局唯一,命名规则:“Dict”+UUID |
|  group_code   |      集团编码      |  varchar(40)  |          |                                   |
|     type      |      字典类型      |  varchar(40)  | Y        |                sex                |
|     name      |    字典类型名称    | varchar(200)  | Y        |               性别                |
|  description  |        描述        | varchar(500)  |          |          对字典类型描述           |
|     valid     |        状态        |    int(1)     |          |         0:停用,1:正常          |
| creation_time |      创建时间      |   char(14)    |          |   创建时间,格式为yyyyMMddHHmmss   |
|    creator    |      创建人员      |  varchar(40)  |          |           创建的用户id            |
| modified_time |    最后更新时间    |   char(14)    |          | 最后更新时间,格式为yyyyMMddHHmmss |
|   modifier    |    最后更新人员    |  varchar(40)  |          |         最后更新的用户id          |
|    remark     |      备注信息      | varchar(3000) |          |                                   |
|      ts       |       乐观锁       |   timestamp   | Y        |                                   |



### 字典数据结构(dic\_dt\_data)

|     字段      |      字段说明      |   数据类型   | 是否非空 |            备注            |
| :-----------: | :----------------: | :----------: | -------- | :------------------------: |
|      id       | 主键(无业务含义) | varchar(40)  | Y        |            UUID            |
| dict_type_id  |     字典类型id     | varchar(40)  | Y        |                            |
|   parent_id   |       父节点       | varchar(40)  |          | 树状父节点id,没有可以不写 |
|     type      |      字典类型      | varchar(40)  | Y        |    对应字典类型(sex)     |
|     code      |        编码        | varchar(40)  | Y        |             1              |
|     label     |      字典标签      | varchar(40)  | Y        |             男             |
|     valid     |        状态        |   int(11)    | Y        |       0-无效,1-有效        |
|    creator    |      创建用户      | varchar(40)  |          |           用户id           |
| creation_time |      创建时间      |   char(14)   |          |    格式为yyyyMMddHHmmss    |
|   modifier    |    最后更新用户    | varchar(40)  |          |           用户id           |
| modified_time |    最后更新时间    |   char(14)   |          |    格式为yyyyMMddHHmmss    |
|   order_num   |        排序        |   int(11)    | Y        |                            |
|    remark     |      备注信息      | varchar(200) |          |                            |
|      ts       |       乐观锁       |  timestamp   | Y        |                            |



### 字典数据映射结构(dic\_dt\_data\_map)

|     字段      |       字段说明       |  数据类型   |      |           备注           |
| :-----------: | :------------------: | :---------: | ---- | :----------------------: |
|      id       |  主键(无业务含义)  | varchar(40) | Y    | 全局唯一,UUID无实际意义 |
| dict_data_id  |      字典数据ID      | varchar(40) | Y    |      对应字典数据id      |
|     type      |       字典类型       | varchar(40) | Y    |       对应字典类型       |
|     code      |     字典数据编码     | varchar(40) | Y    |       字典数据编码       |
|  group_code   |       集团编码       | varchar(40) | Y    |         集团编码         |
|  target_code  | 映射的字典数据表code | varchar(40) | Y    |            1             |
|     label     |     字典数据标签     | varchar(40) | Y    |           男性           |
|     valid     |         状态         |   int(11)   | Y    |      0-无效,1-有效       |
|   order_num   |         排序         |   int(11)   |      |                          |
| creation_time |       创建时间       |  char(14)   |      |   格式为yyyyMMddHHmmss   |
|    creator    |       创建人员       | varchar(40) |      |          用户ID          |
| modified_time |     最后更新时间     |  char(14)   |      |   格式为yyyyMMddHHmmss   |
|   modifier    |     最后更新人员     | varchar(40) |      |     最后更新的用户ID     |
|    remark     |       备注信息       |  timestamp  | Y    |                          |



## DDL语句

### 字典类型

```sql
CREATE TABLE IF NOT EXISTS `dic_dt_type` (
`id` varchar(40) NOT NULL,
`group_code` varchar(40) DEFAULT NULL COMMENT '集团编码',
`type` varchar(40) NOT NULL COMMENT '字典类型',
`name` varchar(200) NOT NULL COMMENT '字典类型名称',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`valid` int(1) DEFAULT NULL COMMENT '状态',
`remark` varchar(3000) DEFAULT NULL COMMENT '备注',
`creator` varchar(40) DEFAULT NULL,
`creation_time` char(14) DEFAULT NULL,
`modifier` varchar(40) DEFAULT NULL,
`modified_time` char(14) DEFAULT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '乐观锁',
PRIMARY KEY (`id`),
KEY `index1` (`type`,`name`,`group_code`,`valid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典类型';
```

### 字典数据

```
CREATE TABLE IF NOT EXISTS `dic_dt_data` (
`id` varchar(80) NOT NULL,
`dict_type_id` varchar(80) NOT NULL COMMENT '字典类型ID',
`parent_id` varchar(80) DEFAULT NULL COMMENT '父节点',
`type` varchar(80) NOT NULL COMMENT '字典类型',
`code` varchar(200) NOT NULL COMMENT '字典数据编码',
`label` varchar(200) NOT NULL COMMENT '字典数据标签',
`valid` int(11) NOT NULL DEFAULT '1' COMMENT '状态',
`creator` varchar(40) DEFAULT NULL COMMENT '创建用户',
`creation_time` char(14) DEFAULT NULL COMMENT '创建时间',
`modifier` varchar(40) DEFAULT NULL COMMENT '更新用户',
`modified_time` char(14) DEFAULT NULL COMMENT '更新时间',
`remark` varchar(200) DEFAULT NULL,
`order_num` int(11) DEFAULT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '乐观锁',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典数据';
```

### 字典数据映射

```sql
CREATE TABLE IF NOT EXISTS `dic_dt_data_map` (
`id` varchar(80) NOT NULL,
`dict_data_id` varchar(80) NOT NULL COMMENT '字典数据ID',
`type` varchar(40) NOT NULL COMMENT '字典类型',
`code` varchar(40) NOT NULL COMMENT '字典数据编码',
`group_code` varchar(11) NOT NULL COMMENT '集团编码',
`target_code` varchar(40) NOT NULL COMMENT '映射字典数据表code',
`label` varchar(40) NOT NULL COMMENT '字典数据标签',
`valid` int(11) NOT NULL DEFAULT '1' COMMENT '状态',
`creator` varchar(40) DEFAULT NULL COMMENT '创建用户',
`creation_time` char(14) DEFAULT NULL COMMENT '创建时间',
`modifier` varchar(40) DEFAULT NULL COMMENT '更新用户',
`modified_time` char(14) DEFAULT NULL COMMENT '更新时间',
`remark` varchar(200) DEFAULT NULL,
`order_num` int(11) DEFAULT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '乐观锁',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='字典数据映射表';
```