蜀云智联平台 - 数据库设计规范V2.0一、基础规范1.1 数据库环境项目规范数据库MySQL 8.0存储引擎InnoDB全部表字符集utf8mb4排序规则utf8mb4_0900_ai_ci系统租户蜀云智联SYZL1.2 命名规范项目规范示例数据库名全小写下划线分隔ecommerce_platform表名全小写下划线分隔模块前缀sys_user、oms_wave字段名全小写下划线分隔tenant_code、created_at索引名uk_唯一/idx_普通 简称uk_user_role、idx_status二、表设计规范2.1 必备字段每张核心业务表必须包含以下字段字段名类型约束说明idBIGINT UNSIGNEDNOT NULL AUTO_INCREMENT物理主键codeVARCHAR(32/64)NOT NULL业务编码业务主键tenant_codeVARCHAR(32)NOT NULL租户编码关联sys_tenant.codestatusVARCHAR(10/20)NOT NULL DEFAULT enabled状态字段关联字典created_atDATETIMENOT NULL DEFAULT CURRENT_TIMESTAMP创建时间updated_atDATETIMENOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间deleted_atDATETIMEDEFAULT NULL删除时间NULL未删除created_byVARCHAR(64)DEFAULT NULL创建人编码关联sys_user.codeupdated_byVARCHAR(64)DEFAULT NULL更新人编码关联sys_user.codedeleted_byVARCHAR(64)DEFAULT NULL删除人编码关联sys_user.code2.2 关联表rel_*字段关联表可省略审计字段但必须包含字段名类型约束说明idBIGINT UNSIGNEDNOT NULL AUTO_INCREMENT物理主键tenant_codeVARCHAR(32)NOT NULL租户编码{关联字段1}VARCHAR(64)NOT NULL关联实体编码{关联字段2}VARCHAR(64)NOT NULL关联实体编码created_atDATETIMENOT NULL DEFAULT CURRENT_TIMESTAMP创建时间updated_atDATETIMENOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间2.3 字段类型规范数据类型使用场景规范BIGINT UNSIGNED主键id所有主键统一VARCHAR(32)短编码租户/商户/字典业务编码VARCHAR(64)标准编码用户/角色/订单/产品业务编码VARCHAR(128)权限编码sys_permission.codeVARCHAR(255)短文本名称/描述/地址/邮箱/URL通用短文本VARCHAR(500)中等文本标题/路径/备注中等长度文本TEXT长文本内容/描述不限长度文本LONGTEXT超长文本文章内容/详情超长内容DECIMAL(18,4)金额字段元为单位4位小数DECIMAL(18,2)金额字段部分场景元为单位2位小数DECIMAL(5,2)百分比字段税率/费率/折扣率百分比INT数量/积分/等级整数BIGINT文件大小/存储配额大整数JSON扩展配置/动态属性灵活扩展DATETIME所有时间字段禁止使用 TIMESTAMPDATE日期字段仅日期三、约束与索引规范3.1 主键统一使用id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT业务主键code使用唯一索引约束不设物理主键3.2 唯一索引命名格式uk_ 字段简称每个业务主键必须建立唯一索引组合唯一索引按最左前缀原则排列3.3 普通索引命名格式idx_ 字段简称高频查询字段应建立索引组合索引按最左前缀原则排列超长字段如full_path使用前缀索引(191)3.4 外键约束禁止使用物理外键FOREIGN KEY关联关系通过{关联表}_code字段逻辑关联在应用层保证引用完整性3.5 编码字段code规范规范项说明字段名code数据类型VARCHAR(32)或VARCHAR(64)约束NOT NULL唯一性范围租户商户内唯一多租户多商户场景索引必须建立联合唯一索引(tenant_code, merchant_code, code)注释COMMENT 业务编码租户商户内唯一标准字段定义sqlcode VARCHAR(64) NOT NULL COMMENT 业务编码租户商户内唯一, UNIQUE KEY uk_{表名}_code (tenant_code, merchant_code, code)适用范围场景是否适用说明核心实体表✅ 适用所有业务实体表均需包含code字段租户级表✅ 适用merchant_code可为NULL索引调整为(tenant_code, code)商户级表✅ 适用merchant_code为NOT NULL索引为(tenant_code, merchant_code, code)关联表rel_*❌ 不适用关联表不设业务主键日志/统计表⚠️ 视情况如需业务追溯则适用否则可不设与逻辑外键字段的区别对比项业务主键code逻辑外键{目标}_code字段名codeuser_code、order_code、shop_code作用唯一标识本表记录引用其他表的记录唯一性表内唯一不要求唯一可重复索引唯一索引普通索引注释业务编码租户商户内唯一{目标}编码关联 {目标表}.code3.6 逻辑外键规范规范项说明格式{关联表名}_code单数形式如user_code、role_code关联表名规则使用目标表的单数形式如目标表sys_user→user_code数据类型通常为VARCHAR(32)或VARCHAR(64)与目标表code字段类型保持一致注释要求必须注明关联的目标表和字段格式关联 {目标表名}.{目标字段名}索引要求必须建立普通索引KEY idx_{关联表}_code物理外键禁止使用FOREIGN KEY约束由应用层保证引用完整性NULL 允许根据业务关系决定是否允许NULL非必须关联时允许NULL示例sqltenant_code VARCHAR(32) NOT NULL COMMENT 租户编码关联 sys_tenant.code, user_code VARCHAR(64) NOT NULL COMMENT 用户编码关联 sys_user.code, order_code VARCHAR(64) NOT NULL COMMENT 订单编码关联 order.code, KEY idx_user_code (user_code), KEY idx_order_code (order_code)四、模块划分与表命名前缀模块前缀模块名称说明sys_系统基础租户/商户/用户/角色/权限/字典member_会员体系会员等级/淘气值/88VIPorg_/hr_/rel_employee_组织管理组织/岗位/员工wf_审批流程审批引擎base_基础资料单位/类目/品牌/仓库/供应商/客户/物料product_产品订阅产品定义/版本/模块/订阅merchant_/shop_/commission_商户入驻申请/保证金/店铺/授权/佣金payment_支付账户账户/流水product_product/product_sku产品管理前端产品/属性/SKU/图片order_/cart_/after_sales_交易与订单购物车/订单/支付/售后oms_订单管理扩展波次/赠品策略promotion_促销管理优惠券/活动/秒杀/会员价/套餐promotion_plan_/promotion_distributor_营销推广推广计划/淘客分销fin_财务云科目/凭证/预算/发票/税务/银企scm_进销存采购/销售/库存prod_生产云BOM/MRP/工单/领料plan_计划管理MPS/销售预测budget_预算管理预算定义/版本/数据/控制wms_仓储管理扩展容器/拣货/PDA/效期/库存移动retail_零售云POS/要货/配货ecommerce_电商云平台配置/订单映射/商品映射drp_分销管理扩展分销商等级/分润结算report_报表分析利润驾驶舱/主题报表backup_/file_/collab_/user_云存储/网盘备份/文件/协作/配额/标签/收藏crm_CRM线索/客户/商机/合同ai_AI智能数字员工/AI问答api_API安全治理MFA/限流/防重放/幂等性/导出/生命周期developer_开发者生态认证/应用/APIdashboard_数据看板看板配置/组件help_帮助中心文档分类/文档/反馈service_客服体系会话/消息/机器人blog_/qa_内容与互动文章/评论/点赞/收藏/问答creator_创作者认证/档案/关注resource_/cbi_商业化变现付费资源/C币/营销组件五、权限与安全规范5.1 数据隔离租户级隔离所有业务表包含tenant_code按租户隔离数据商户级隔离业务表包含merchant_codeNULL表示租户级NOT NULL表示严格商户级5.2 权限模型权限来源分为两部分租户平台默认角色权限通过rel_user_rolesys_role_permission继承订阅付费模块权限通过sys_user_permission直接写入5.3 权限校验层级层级说明存储位置功能权限控制能否使用模块及按钮sys_permission字段权限控制敏感字段的可见性隐藏/只读/脱敏sys_field_permission数据权限控制能看到哪些数据范围sys_data_permission权限快照用户登录时打包缓存sys_permission_snapshot黑名单优先级最高最终权限需排除sys_user_permission_blacklist5.4 敏感数据密码哈希使用BCrypt或SM3国密敏感字段标识sys_table_field.is_sensitive动态脱敏通过sys_field_permission.mask_rule配置敏感信息不在日志中明文记录六、通用设计原则6.1 软删除核心业务表统一支持逻辑删除deleted_at删除操作记录deleted_by6.2 JSON扩展动态配置使用JSON字段减少频繁DDL变更6.3 审批流程集成业务表包含approval_status字段统一包含wf_instance_code关联审批实例6.4 版本管理支持版本号的表统一使用version字段版本状态统一使用version_status6.5 快照机制订阅订单存储module_list快照权限快照存储完整权限JSON6.6 时间规范所有时间使用DATETIME类型禁止TIMESTAMP避免2038年问题七、索引设计原则原则说明唯一索引业务主键code必须建立唯一索引组合索引按最左前缀原则(tenant_code, merchant_code, ...)覆盖索引高频查询字段尽量覆盖前缀索引超长字段如full_path使用前缀索引(191)索引数量每表索引不超过6-8个八、数据字典规范8.1 字典结构字典类型表sys_dict_type类型编码、名称、状态字典项表sys_dict_item项编码、项名称、排序、扩展信息8.2 字典引用状态字段统一引用status字典布尔字段统一引用yes_no字典自定义枚举通过字典表管理8.3 常用字典编码示例字典类型说明典型值status通用状态enabled/disabledyes_no布尔标识true/falseapproval_status审批状态draft/pending/approved/rejected/recalledorder_status订单状态pending/paid/shipped/completed/cancelledaccount_type账户类型tenant/merchant/shop/usershop_type店铺类型flagship/specialty/exclusive/individual九、模块排序原则创建表时按以下优先级排序优先级说明代表模块1系统基石无依赖系统基础模块2依赖系统基础被业务依赖权限/审批流程3业务主数据基础资料模块4核心业务入口商户入驻/产品管理5用户端交易核心交易与订单管理6营销与推广促销管理/营销推广7业务扩展模块进销存/生产/财务8独立功能模块CRM/AI/客服/内容9基础设施云存储/API安全十、自检清单检查项说明✅ 每张核心表是否有code字段核心实体表必须有业务主键✅code是否建立了唯一索引确保业务唯一性✅ 业务主键命名是否为code字段名统一为code✅ 逻辑外键命名是否正确{目标表}_code格式✅ 逻辑外键是否建立了普通索引确保关联查询性能✅ 逻辑外键注释是否完整必须注明关联的目标表和字段✅ 是否使用了物理外键禁止使用 FOREIGN KEY✅ 关联表是否避免了多余的code字段rel_* 表不应设业务主键✅ 状态字段是否使用了字典禁止使用 ENUM✅ 时间字段是否使用 DATETIME禁止使用 TIMESTAMP✅ 金额字段精度是否足够使用 DECIMAL(18,4)