活字格数据表设计规范与命名约定
概述
良好的数据表设计是应用稳定运行的基础。本文整理了活字格项目中数据表设计的规范和命名约定,帮助团队保持一致的开发风格,降低维护成本。
一、命名规范
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) -- 备注
);三、字段类型选择指南
| 数据类型 | 适用场景 | 注意事项 |
|---|---|---|
| INT | ID、数量、序号 | 范围约 ±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
- 附件字段:活字格自动管理附件存储,无需手动设计附件表
- 工作流相关:使用活字格内置的流程表,不要手动创建审批状态字段
七、数据库文档化
建议维护一份数据字典,至少包含:
- 表名和中文说明
- 每个字段的类型、长度、是否必填
- 字段取值范围说明(如状态码的含义)
- 表之间的关联关系
总结
好的数据库设计能让开发事半功倍。记住三个关键原则:命名规范统一、字段类型合理、索引按需创建。花一小时做好设计,能省下十小时的后期修改时间。
暂无评论
快来发表第一条评论吧!