活字格数据表设计规范与命名约定

概述

良好的数据表设计是应用稳定运行的基础。本文整理了活字格项目中数据表设计的规范和命名约定,帮助团队保持一致的开发风格,降低维护成本。

一、命名规范

1. 表名命名

类型规则示例
业务表业务模块_实体名CRM_客户WMS_入库单
字典表字典_类别字典_部门类型字典_产品分类
中间表主表_从表_关联订单_产品_关联
日志表日志_模块名日志_操作记录日志_登录历史
视图v_描述v_订单汇总v_库存报表

2. 字段命名

  • 主键:统一使用 ID(int, 自增)
  • 外键:关联表名_ID(如 客户_ID订单_ID
  • 状态字段:使用有意义的名称 + 注释(如 审核状态:0-待审,1-通过,2-驳回)
  • 金额字段:使用 decimal(18,2) 类型
  • 日期字段:命名明确(创建日期审核日期完成日期

二、必备字段

每个业务表建议包含以下标准字段:

CREATE TABLE 示例表 (
    ID INT IDENTITY(1,1) PRIMARY KEY,          -- 主键
    创建人 NVARCHAR(50),                        -- 创建者
    创建日期 DATETIME DEFAULT GETDATE(),        -- 创建时间
    修改人 NVARCHAR(50),                        -- 最后修改者
    修改日期 DATETIME,                          -- 最后修改时间
    是否删除 BIT DEFAULT 0,                     -- 软删除标记
    备注 NVARCHAR(500)                          -- 备注
);

三、字段类型选择指南

数据类型适用场景注意事项
INTID、数量、序号范围约 ±21 亿
BIGINT大数据量 ID范围约 ±9×10¹⁸
DECIMAL(18,2)金额、单价精确小数,避免 FLOAT
NVARCHAR(N)文本(中文)N 根据实际需求设定
DATETIME日期时间精确到秒
BIT布尔值0/1 或 true/false
NVARCHAR(MAX)长文本、富文本不参与索引

四、索引设计原则

-- 为查询条件字段创建索引
CREATE INDEX IX_订单_客户ID ON 订单(客户_ID);
CREATE INDEX IX_订单_创建日期 ON 订单(创建日期);

-- 复合索引:最常用的组合查询
CREATE INDEX IX_订单_状态_日期 ON 订单(状态, 创建日期);

-- 唯一索引:防止重复数据
CREATE UNIQUE INDEX IX_客户_编码 ON 客户(编码);
  • WHERE 条件中的字段加索引
  • 外键字段加索引
  • ORDER BY 字段加索引
  • 避免过多索引(影响写入性能)

五、数据完整性约束

-- 默认值
ALTER TABLE 订单 ADD DEFAULT GETDATE() FOR 创建日期;

-- 检查约束
ALTER TABLE 订单 ADD CONSTRAINT CK_金额 CHECK (金额 >= 0);

-- 唯一约束
ALTER TABLE 客户 ADD CONSTRAINT UQ_客户编码 UNIQUE (编码);

六、活字格特有的注意事项

  • 公式字段 vs 数据库计算列:简单计算用数据库计算列,复杂逻辑用活字格公式字段
  • 统计字段:使用活字格的统计字段功能,自动计算 SUM/COUNT/AVG
  • 附件字段:活字格自动管理附件存储,无需手动设计附件表
  • 工作流相关:使用活字格内置的流程表,不要手动创建审批状态字段

七、数据库文档化

建议维护一份数据字典,至少包含:

  • 表名和中文说明
  • 每个字段的类型、长度、是否必填
  • 字段取值范围说明(如状态码的含义)
  • 表之间的关联关系

总结

好的数据库设计能让开发事半功倍。记住三个关键原则:命名规范统一、字段类型合理、索引按需创建。花一小时做好设计,能省下十小时的后期修改时间。

标签: