# 数据模型规范

### 建模规范

#### 结构规范

- 每个云建立一个目录
- 每个应用建立一个模型文件（pdm文件)
- 每个模型按功能建立多个包
    - 所有表必须建立在功能包中  
        公共表可以建立公共包或在模型节点下，同时建立Diagrams表明关系
- 禁止在模型中重复建立表
- 每个模型节点下必须要有Diagram图说明该模型的全局结构  
![package](image\datamodel01.png)  
![package](image\datamodel02.png)



### 表设计规范

- PDM统一使用SQLServerDBMS建模，所有类型、约束按SQLServer格式；

- 表名字段名全部大写；

- Table Properties -> General中Name必须“表英文名”+“(中文名)”，如：t_RP_ARPBILL(其它应收应付单)。

- Table Properties -> Columns中Name必须使用中文名，Code使用英文，Name和Code不允许中英文混合。

- 表字段枚举类型的列必须在Column Properties -> Comment中列举值及含义（参考指南2.4. 数据模型修改）。

- 增加字段、修改字段类型，则直接修改表结构，并且在Diagram图增加Note说明本次修改的时间、对应的版本、修改人和修改描述。

- 创建主键必须指定是否CLUSTERED。

- 增加、删除、修改字段，索引，主键，则直接修改表的属性，并在Diagram图增加Notes页签说明修改时间、版本、修改人和修改描述。

- 表字段有reference关系必须建立或在字段Comment中说明reference关系。在Comment中说明时，必须指明引用的表以及字段。

- reference关系必须设置cardinality（0..1、0..*、1..1、1..*）关系。

- 短整型使用smallint，整型使用int，长整型使用bigint；

- 数值型必须使用decimal(23,10)和decimal(19,6)分别不同精度要求的数据；

- 多语言字段使用nvarchar，非多语言字段使用varchar；

- 多语言表中与主表关联字段和区域ID（如单据类型多语言表FBILLTYPEID+ FLOCALEID）列应建立复合唯一索引。

	
	
- ![package](image\datamodel03.png)

### 设计规范

- 不允许删除表和字段
    表结构提前设计，pdm一次设计好，避免变更
- pdm先于代码前一天提交
- 主干和基线脚本需手工从分支同步