Skip to content

❤ Node16-字典类型表和字典数据表搭建

1、字典值表认识

(1)> 字典表的认识

接下来我们新建一个文章的类型管理,因为类似文章类型管理这种都是对于用户可以自己定义一个类型,然后对与这种类型进行分类和归整,所以我们这里考虑将其封装成为一个字典部分

(2)>字典值表部分的作用:

对于某个字典,用户可以对里面的值和对应的描述进行编辑修改,这里我们需要一个字典表以及一个对应的字典数据表

(3)>字典值对应数据表的功能:

用户建立字典值,然后管理关键字典名,通过这个名称我们实现对每个字典名称对应的字典数据的控制

接下来我们就先搭建一下我们的字典类型表(sys_dict_type)和字典数据表(sys_dict_data)来存储字典类型的相关信息

2、字典类型表(sys_dict_type)表搭建

字典类型表(sys_dict_type)对应的数据表的搭建如下:

javascript

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_dict_type
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_type`;
CREATE TABLE `sys_dict_type`  (
  `dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键',
  `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典名称',
  `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典类型',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_id`) USING BTREE,
  UNIQUE INDEX `dict_type`(`dict_type` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sys_dict_type
-- ----------------------------
INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '用户性别列表');
INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '菜单状态列表');
INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '系统开关列表');
SET FOREIGN_KEY_CHECKS = 1;

3、字典数据表(sys_dict_data) 搭建

字典数据表(sys_dict_data)对应的数据表的搭建如下:

对于字典数据表进行搭建

javascript
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sys_dict_data
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_data`;
CREATE TABLE `sys_dict_data`  (
  `dict_code` bigint NOT NULL AUTO_INCREMENT COMMENT '字典编码',
  `dict_sort` int NULL DEFAULT 0 COMMENT '字典排序',
  `dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典标签',
  `dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典键值',
  `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典类型',
  `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_code`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sys_dict_data
-- ----------------------------
INSERT INTO `sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '性别男');
INSERT INTO `sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '性别女');
INSERT INTO `sys_dict_data` VALUES (29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2024-05-28 13:43:40', '', NULL, '停用状态');

SET FOREIGN_KEY_CHECKS = 1;

4、表搭建解释和分析

扩展(Balanced Tree,平衡树) 是关系型数据库之中常用的索引结构之一。

javascript
SET NAMES utf8mb4;  // 设置连接的默认字符集为 `utf8mb4`,确保数据库中支持存储和处理 Unicode 字符
SET FOREIGN_KEY_CHECKS = 0;  // 关闭外键约束检查,这样子我们在创建或更新数据时,不会检查外键约束的有效性


dict_id 我们对于其设置了类型并且设置为主键自增,且不为空数据,依次创建字典名称、字典类型(类型给默认为0 正常,1停用)

PRIMARY KEY (`dict_id`) USING BTREE,
UNIQUE INDEX `dict_type`(`dict_type` ASC) USING BTREE

这里我们指定了主键索引为`dict_id`,使用 B-tree 索引结构
因为我们字典的类型应该也是唯一的,不应该存在重复的值,所以采用了dict_type作为唯一索引保证其单一性,也借助了B-tree 索引结构 !

后面我们插入了一些常见的类型来作为demo进行演示

运行以后我们的数据库之中已经正常dao入了

Released under the MIT License.