CREATE DATABASE `db_ctl`;
USE `db_ctl`;

/* 该表定义了 数据库|数据表|索引 的字符串名称与整数值的映射表 */
CREATE TABLE `tbl_name_type` (
	`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '对应 name 的ID号',
	`name` varchar(64) NOT NULL COMMENT '数据库|数据表|索引的名称之一',
	`type` tinyint(1) unsigned NOT NULL COMMENT '该条记录的名称类型: 0-数据库，1-表，2-索引',
	PRIMARY KEY(`id`) USING BTREE,
	UNIQUE KEY `Index_name_type` (`name`, `type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 索引服务器信息表，记录着主机ID号，地址，存储记录数 */
CREATE TABLE `tbl_idx_host` (
	`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '索引服务器唯一标识号',
	`addr` varchar(32) NOT NULL COMMENT '主机地址，IP:PORT 或域套接口',
	`count` bigint(20) NOT NULL COMMENT '已经存储的总记录数',
	PRIMARY KEY(`id`) USING BTREE,
	UNIQUE KEY `Index_addr` (`addr`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 数据服务器信息表，记录着主机ID号，地址，存储记录数 */
CREATE TABLE `tbl_dat_host` (
	`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '数据服务器唯一标识号',
	`addr` varchar(32) NOT NULL COMMENT '主机地址，IP:PORT 或域套接口',
	`priority` int(10) NOT NULL COMMENT '服务器负载权重，值越高表示负载越低',
	`count` bigint(20) NOT NULL COMMENT '已经存储的总记录数',
	PRIMARY KEY(`id`) USING BTREE,
	UNIQUE KEY `Index_addr` (`addr`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 从属于数据库中的索引数据库主机列表 */
CREATE TABLE `tbl_db_host` (
	`id_db` int(10) unsigned NOT NULL COMMENT '数据库ID号，对应 tbl_name 中 type 类型值为 0 的 id',
	`id_idx_host` int(10) unsigned NOT NULL COMMENT '索引服务器ID号，对应 tbl_idx_host 中的 id',
	`count` bigint(20) unsigned NOT NULL COMMENT '该数据库在主机中的记录总数',
	PRIMARY KEY(`id_db`, `id_idx_host`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 从属于数据库中的数据表列表 */
CREATE TABLE `tbl_db_tbl` (
	`id_db` int(10) unsigned NOT NULL COMMENT '数据库ID号，对应 tbl_name 中 type 类型值为 0 的 id',
	`id_tbl` int(10) unsigned NOT NULL COMMENT '数据表名ID号，对应 tbl_name 中 type 类型值为 1 的 id',
	`count` bigint(20) NOT NULL COMMENT '该数据表中记录总数',
	PRIMARY KEY(`db_name`, `tbl_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 数据表中索引集合表 */
CREATE TABLE `tbl_tbl_idx` (
	`id_idx` int(10) unsigned NOT NULL COMMENT '数据表中索引ID号，对应 tbl_name 中 type 类型值为 2 的 id',
	`id_db` int(10) unsigned NOT NULL COMMNET '数据库ID号，对应 tbl_name 中 type 类型值为 0 的 id',
	`id_tbl` int(10) unsigned NOT NULL COMMENT '数据表ID号，对应 tbl_name 中 type 类型值为 1 的 id',
	`unique` tinyint(1) unsigned NOT NULL COMMENT '该索引在数据表中是否是唯一索引类型',
	`type` tinyint(1) unsigned NOT NULL COMMENT '索引类型：0 - 字符串，1 - 布尔型，2 - 16位整数，3 - 32位整数，4 - 64位整数',
	PRIMARY KEY(`id_idx`, `id_db`, `id_tbl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
