DROP TABLE IF EXISTS `rwd_def_class`;

CREATE TABLE `rwd_def_class` (
	`code` varchar(40) NOT NULL COMMENT '全局唯一 ',
	`obj_type` varchar(40) NOT NULL COMMENT '大类型:项目建筑楼层空间系统设备竖井',
	`name` varchar(40) NOT NULL COMMENT '类型名称 ',
	`alias_code` varchar(40) NOT NULL COMMENT '类型别名编码, 集团下唯一 ',
	`alias_name` varchar(40) NOT NULL COMMENT '类型别名名称',
	`major_code` varchar(40) DEFAULT NULL COMMENT '专业编码, 上级类型是系统or设备时该字段有值',
	`system_code` varchar(40) DEFAULT NULL COMMENT '系统编码,上级类型是设备时该字段有值,值为系统类型的code ',
	`parent_code` varchar(40) DEFAULT NULL COMMENT '上级类型code,默认为"0" ',
	PRIMARY KEY (`code`),
	KEY (`alias_code`),
	KEY (`parent_code`),
	KEY (`major_code`)
) COMMENT '类型定义表';

DROP TABLE IF EXISTS `rwd_def_class_alias`;

CREATE TABLE `rwd_def_class_alias` (
	`id` varchar(40) NOT NULL,
	`code` varchar(40) NOT NULL COMMENT '全局唯一 ',
	`alias_code` varchar(40) NOT NULL COMMENT '类型别名编码, 集团下唯一 ',
	`alias_name` varchar(40) NOT NULL COMMENT '类型别名名称',
	`group_code` varchar(40) DEFAULT NULL COMMENT '集团编码',
	PRIMARY KEY (`id`),
	KEY (`group_code`, `code`),
	KEY (`group_code`, `alias_code`)
) COMMENT '类型别名';

DROP TABLE IF EXISTS `rwd_def_funcid`;

CREATE TABLE `rwd_def_funcid` (
	`id` varchar(40) NOT NULL,
	`code` varchar(40) DEFAULT NULL COMMENT '信息点编码,同类型下唯一',
	`camel_code` varchar(40) DEFAULT NULL COMMENT '信息点编码,同类型下唯一,驼峰格式',
	`name` varchar(40) DEFAULT NULL COMMENT '信息点名称',
	`class_code` varchar(40) DEFAULT NULL COMMENT '类型编码',
	`category` varchar(40) DEFAULT NULL COMMENT '信息点分类:静态,脉冲,阶段,时序',
	`first_tag` varchar(40) DEFAULT NULL COMMENT '一级标签',
	`second_tag` varchar(40) DEFAULT NULL COMMENT '二级标签',
	`priority` varchar(40) DEFAULT NULL COMMENT '优先级',
	`input_mode` varchar(40) DEFAULT NULL COMMENT '输入方式',
	`unit` varchar(40) DEFAULT NULL COMMENT '单位',
	`data_type` varchar(40) DEFAULT NULL COMMENT '数据类型',
	`is_multiple` varchar(40) DEFAULT NULL COMMENT '是否复数',
	`is_region` varchar(40) DEFAULT NULL COMMENT '是否区间',
	`formater` varchar(40) DEFAULT NULL COMMENT '数据格式',
	`data_source` json DEFAULT NULL COMMENT '数据源取值范围/枚举值清单等,根据dataType有不同的内容',
	`note` varchar(40) DEFAULT NULL COMMENT '备注',
	`sub_flag` varchar(40) DEFAULT NULL COMMENT '子分类标记:是否可以按此信息点进行子分类替换,同一类型下目前只支持一个子分类信息点',
	`weak_point` int(40) DEFAULT NULL COMMENT '虚点',
	PRIMARY KEY (`id`),
	KEY (`class_code`, `code`),
	KEY (`class_code`, `camel_code`)
) COMMENT '信息点定义表';

DROP TABLE IF EXISTS `rwd_def_funcid_alias`;

CREATE TABLE `rwd_def_funcid_alias` (
	`id` VARCHAR(40) NOT NULL,
	`code` VARCHAR(40) DEFAULT NULL COMMENT '信息点编码,同类型下唯一',
	`camel_code` varchar(40) DEFAULT NULL COMMENT '信息点编码,同类型下唯一,驼峰格式',
	`class_code` VARCHAR(40) DEFAULT NULL COMMENT '类型编码',
	`alias_code` VARCHAR(40) NOT NULL COMMENT '类型别名编码, 集团下唯一 ',
	`alias_name` VARCHAR(40) NOT NULL COMMENT '类型别名名称',
	`group_code` VARCHAR(40) DEFAULT NULL COMMENT '集团编码',
	`project_id` VARCHAR(40) DEFAULT NULL COMMENT '虚点',
	PRIMARY KEY (`id`),
	KEY (`group_code`, `project_id`, `class_code`, `code`),
	KEY (`group_code`, `project_id`, `class_code`, `camel_code`),
	KEY (`group_code`, `project_id`, `class_code`, `alias_code`)
) COMMENT '信息点别名表';