Files
yunzerwebsiteallinone/go/docs/sql/create_dict.sql
T
2026-09-28 23:16:26 +08:00

113 lines
7.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================
-- 数据字典 —— 平台端 / 租户端各一套
--
-- 表清单:
-- yz_platform_dict 平台端「字典列表」(字典类型)
-- yz_platform_dict_item 平台端「字典项」
-- yz_backend_dict 租户端「字典列表」(按 tenant_id 租户隔离)
-- yz_backend_dict_item 租户端「字典项」
--
-- 设计说明:
-- 1. 平台端字典与租户端字典完全独立:平台端字典供平台系统自身使用
-- (不按租户隔离);租户端字典是每个租户可自行维护的业务选项
-- (如供应商类型、结算方式),按 tenant_id 隔离,与
-- yz_backend_erp_supplier 的隔离方式保持一致。
-- 2. 字典项通过 dict_id 关联字典;租户端额外冗余 tenant_id,
-- 便于不带 JOIN 直接按租户过滤,写入时须与父字典 tenant_id 一致。
-- 3. tag_type 对应前端 el-tag 的 type(primary/success/warning/danger/info),
-- 留空表示该项在列表里不渲染彩色标签。
-- 4. 与 yz_backend_erp_* / yz_backend_crm_* 等表一致,这里只建普通索引、
-- 不建唯一索引:一是软删除(delete_time)后编码仍会占用唯一键,
-- 二是库中既有表也普遍不用唯一索引。dict_code / item_value 的唯一性
-- 由后端接口在写入时校验。
-- 5. 不显式指定 COLLATE,沿用库默认排序规则,避免 JOIN 时报
-- Illegal mix of collations。
--
-- 执行方式:人工在数据库执行,代码中不做任何自动建表 / 补列。
-- 说明:下方 DDL 幂等(IF NOT EXISTS),可重复执行。
-- =============================================================
SET NAMES utf8mb4;
-- =============================================================
-- 平台端
-- =============================================================
CREATE TABLE IF NOT EXISTS `yz_platform_dict` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`dict_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典名称,如:供应商类型',
`dict_code` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典编码(业务唯一标识,后端按此取字典),如:supplier_type',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序,数字越小越靠前',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1 启用 0 停用',
`create_user_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_dict_code` (`dict_code`),
KEY `idx_status_sort` (`status`, `sort`, `id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台端-数据字典(字典列表)';
CREATE TABLE IF NOT EXISTS `yz_platform_dict_item` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`dict_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '所属字典ID(yz_platform_dict.id)',
`item_label` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典项名称(显示文案),如:原材料供应商',
`item_value` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典项值(业务入库值),如:1',
`tag_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '标签色(el-tag type):primary/success/warning/danger/info,留空不渲染标签',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序,数字越小越靠前',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1 启用 0 停用',
`is_default` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认选中:0 否 1 是',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_dict_sort` (`dict_id`, `sort`, `id`),
KEY `idx_dict_value` (`dict_id`, `item_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台端-字典项';
-- =============================================================
-- 租户端(按 tenant_id 隔离)
-- =============================================================
CREATE TABLE IF NOT EXISTS `yz_backend_dict` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '租户ID(同 yz_backend_erp_supplier.tenant_id)',
`dict_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典名称,如:供应商类型',
`dict_code` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典编码(租户内唯一),如:supplier_type',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序,数字越小越靠前',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1 启用 0 停用',
`create_user_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_dict_code` (`tenant_id`, `dict_code`),
KEY `idx_tenant_status_sort` (`tenant_id`, `status`, `sort`, `id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户端-数据字典(字典列表)';
CREATE TABLE IF NOT EXISTS `yz_backend_dict_item` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '租户ID,须与所属字典一致',
`dict_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '所属字典ID(yz_backend_dict.id)',
`item_label` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典项名称(显示文案),如:原材料供应商',
`item_value` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '字典项值(业务入库值),如:1',
`tag_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '标签色(el-tag type):primary/success/warning/danger/info,留空不渲染标签',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序,数字越小越靠前',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1 启用 0 停用',
`is_default` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认选中:0 否 1 是',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (`id`),
KEY `idx_tenant_dict_sort` (`tenant_id`, `dict_id`, `sort`, `id`),
KEY `idx_tenant_dict_value` (`tenant_id`, `dict_id`, `item_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户端-字典项';