数据字典表设计

本文介绍了数据字典在开发中的应用,特别是在行业、省市区等多级下拉选择业务中的使用。通过创建一个包含id、name、value、type、grade、sort和pid等字段的enum表来实现。查询方式包括下拉选查询和树状结构查询,用于获取不同级别的分类数据。此外,还详细阐述了字段的含义和查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据字典

1.需求

在开发中数据字典常被用于行业、省市区等下拉选业务中。

以下图为例,我们需要设计一个公共的数据字典表以适用于行业、省市区等多种类型的多级连带的下拉选业务

image-20220310104850645

2.表机构设计

idvarchar32主键
namevarchar32枚举名称
valuevarchar32枚举值
typevarchar32枚举类型
gradeint1等级(1:一级,2:二级,3:三级依次类推)
sortint11排序
pidvarchar32枚举上级id
delint10正常1删除

2.1 建表语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for enum
-- ----------------------------
DROP TABLE IF EXISTS `enum`;
CREATE TABLE `enum`  (
  `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '枚举名称',
  `value` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '枚举值',
  `type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '枚举类型',
  `grade` int(1) NULL DEFAULT 1 COMMENT '等级',
  `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
  `pid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '枚举上级id',
  `del` int(1) NULL DEFAULT 0 COMMENT '0正常1删除',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

3.字段说明

**id:**这里其实id字段是可以选项,定义规则如:TELECOM_TRADE_TYPE对应1-xxx,MOBILE_TRADE_TYPE对应2-xxx

**name:**内容

**value和pid:**以下图为例,前面是定义了一级栏目,后面定义的是二级栏目;三级栏目以此类推,只需要将二级栏目的value值设置为对应三级栏目的pid即可。

type: 首先时便于查询,其次是可以根据不同的type定义相同value和pid

sort: 用于排序

**grade:**表示级别,如一级栏目grade=1,二级栏目grade=2,三级栏目grade=3 以此类推

**del:**逻辑删除状态 0-正常,1-删除

image-20220310105344274

image-20220310110044136

4.查询

1.下拉选查询方式

获取一级栏目

SELECT
	`value` AS id,
	`name` AS NAME 
FROM
	`enum`  where  `type` = 'TELECOM_TRADE_TYPE'
	AND grade = 1 
	AND del = 0 
order by sort

image-20220310124514146

查询子级栏目

在查询到一级栏目之后,前端可以获取到所有一级栏目的id,子级栏目的查询时可以作为pid进行查询,以此类推

 SELECT
        `value` as id,
        `name` as name
        FROM
        `enum`
           where `type` = 'TELECOM_TRADE_TYPE'
            AND pid = #{pid}
            and del = 0
        order by sort

2.树状结构查询

SELECT
	a.VALUE
	AS id,
	a.NAME AS NAME,
	b.
VALUE
	AS id1,
	b.NAME AS name1 
FROM
	`enum` a
	LEFT JOIN `enum` b ON b.pid = a.`value` 
	AND b.`del` = 0 
WHERE
	a.type = #{type} AND  a.`del` = 0 and a.`grade`=1 ORDER BY a.`sort`,b.`sort`

image-20220310124447614

数据字典表是数据库设计中的一个重要组成部分,用于记录数据库中各个表和字段的详细信息,包括表名、字段名、数据类型、长度、默认值、是否允许为空、主键、外键等信息。以下是一个简单的数据字典表设计示例: 表名:TBL_DICT | 字段名 | 数据类型 | 长度 | 是否主键 | 是否允许为空 | 描述 | | --- | --- | --- | --- | --- | --- | | dict_id | int | 11 | 是 | 否 | 数据字典ID | | dict_name | varchar | 50 | 否 | 否 | 数据字典名称 | | dict_desc | varchar | 255 | 否 | 是 | 数据字典描述 | 表名:TBL_TABLE | 字段名 | 数据类型 | 长度 | 是否主键 | 是否允许为空 | 描述 | | --- | --- | --- | --- | --- | --- | | table_id | int | 11 | 是 | 否 | 数据表ID | | table_name | varchar | 50 | 否 | 否 | 数据表名称 | | table_desc | varchar | 255 | 否 | 是 | 数据表描述 | 表名:TBL_FIELD | 字段名 | 数据类型 | 长度 | 是否主键 | 是否允许为空 | 描述 | | --- | --- | --- | --- | --- | --- | | field_id | int | 11 | 是 | 否 | 数据字段ID | | table_id | int | 11 | 否 | 否 | 数据表ID | | field_name | varchar | 50 | 否 | 否 | 数据字段名称 | | field_desc | varchar | 255 | 否 | 是 | 数据字段描述 | | data_type | varchar | 50 | 否 | 否 | 数据类型 | | length | int | 11 | 否 | 是 | 数据长度 | | default_value | varchar | 50 | 否 | 是 | 默认值 | | is_nullable | varchar | 1 | 否 | 否 | 是否允许为空 | | is_primary_key | varchar | 1 | 否 | 否 | 是否主键 | | is_foreign_key | varchar | 1 | 否 | 否 | 是否外键 | | foreign_table_id | int | 11 | 否 | 是 | 外键表ID | | foreign_field_id | int | 11 | 否 | 是 | 外键字段ID | 上述数据字典表包含了三张表的详细信息,分别是数据字典表TBL_DICT、数据表表TBL_TABLE和数据字段表TBL_FIELD。其中,TBL_DICT表记录了所有的数据字典信息,TBL_TABLE表记录了所有的数据表信息,TBL_FIELD表记录了所有的数据字段信息,并且通过外键关联到了TBL_TABLE表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值