MySQL通用数据字典采用“dict_type + dict_item”双表结构,统一管理各类业务枚举值;主表定义类型(type_code、type_name等),项表存储键值对(item_key/item_value),通过type_code关联,支持排序、启用控制与高效查询。
MySQL 中实现通用数据字典功能,核心是用一张“字典主表 + 字典项表”的结构替代大量硬编码或重复建表,兼顾灵活性、可维护性和查询效率。不推荐为每个业务字段单独建字典表(如 sex_dict、status_dict),而应统一抽象,避免碎片化。
用于管理所有字典类型,如“用户状态”、“订单来源”、“性别”等,每条记录代表一类取值集合。
user_status、order_source),程序中直接引用,避免中文或空格存放每个字典类型下的实际选项,与主表通过外键关联。
dict_type.type_code,不建议用外键约束(避免删除主类时级联风险,业务层控制更稳妥)1、active),对应数据库字段实际存的值业务代码中查字典,通常只需根据 type_code 和 item_key 获取文本;管理端则按 type_code 拉取全部有效项。
SELECT item_value FROM dict_item WHERE type_code = 'user_status' AND item_key = '1' AND enabled = 1
SELECT item_key, item_value FROM dict_item WHERE type_code = 'order_source' AND enabled = 1 ORDER BY sort_order, item_key
SELECT u.id, u.name, d.item_value AS status_text
FROM user u
LEFT JOIN dict_item d ON u.status = d.item_key AND d.type_code = 'user_status' AND d.enabled = 1
(type_code, item_key) 防止重复录入;(type_code, enabled, sort_order) 加速常用查询
item_key 类型建议统一为 VARCHAR(50),兼容数字、字母、短编码(如 WX、ALIPAY),避免 INT 限制扩展性lang 字段(如 zh-CN、en-US),按需扩展,初期可不加