1、元数据命名规范
为了在不同的应用环境下更好的识别和管理元数据,我们制定了元数据开头命名规范,所有的元数据,应该以“开头+模块名称_实际含义”相结合的方式。
在填写编号和名称时,其开头应遵守以下规则。
元数据 | 编号开头 | 名称开头 | 举例 |
数据对象 |
| DO_ | 编号:与表名一致! 名称:DO_网上报销_部门字典 |
数据模型 | DM_ | DM_ | 编号:DM_WSBX_LSBMZD 名称:DM_网上报销_部门字典 |
帮助 | Help_ | Help_ | 编号:Help_WSBX_BMZD 名称:Help_网上报销_部门帮助 |
表单定义 | FRM_ | FRM_ | 编号:FRM_WSBX_CLFBXD 名称:FRM_网上报销_差旅费报销单 |
状态机 | SM_ | SM_ | 编号:SM_WSBX_CLF 名称:SM_网上报销_差旅费 |
构件 | CMP_ | CMP_ | 编号:CMP_WSBX_CLFBXD 名称:CMP_网上报销_差旅费报销单 |
报表定义 | PRT_ | PRT_ | 编号:PRT_WSBX_CLFBXD 名称:PRT_网上报销_差旅费报销单 |
工作流定义 | WF_ | WF_ | 编号:WF_WSBX_BXLC 名称:WF_网上报销_报销流程 |
数据映射 | Maping_ | Maping_ |
|
值映射 | VM_ | VM_ |
|
数据交换 | DX_ | DX_ |
|
解决方案 | Solution_ | Solution_ | 编号:Solution_WSBX 名称:Solution_网上报销 |
对于模块名称的命名规范,其编号和名称的命名规范应遵守前置规范中的大小写规范和缩写规范。对于公司级别的产品开发,模块名称应符合公司研发管理部们的命名管理规范,并在申请和审核后确定。
对于元数据命名中的实际含义部分,顾名思义,应该体现出对应元数据的实际意义,通过名称即可看出此元数据的用途描述和简要服务内容。实际含义部分应该以英文为主,符合Pascal命名规范,对于带有复杂业务的元数据名称,也可以在统一规范后,采用拼音简写的方式。
2、数据库设计规范
使用平台开发时对数据库结构设计有一些强制的约定或规范,如下:
1、每个实体表都必须要定义主键,类型为varchar(36)
(1)ADP平台开发过程中,每张具体的数据表的内码系统默认采用Guid的生成方式,因此要求在数据库表结构设计时,每张表都必须定义一个主键,类型定义为varchar(36);从数据库设计本身角度而言,也要求每个实体表要有一个主键。
(2)对于既有系统里已有的表,如果用的是复合主键或者复合唯一索引,也要求必须增加主键字段。
(3)外键关联的字段,也需要定义为varchar(36)。
(4)对于一些表示关联关系的表,如果只是在写构件时用sql或者存储过程直接操作,不会被用来创建数据对象、数据模型或帮助,则可以不用加GUID形式的主键。
2、支持分级树的表结构设计
(1)对于分级树状结构的功能,ADP实现时,强制约定由分级码(每一级长度4位字符)、级数(整型)、是否明细(char(1))来存储和构建树的层次结构,因此数据库设计时分级树结构的表必须要包含这三个字段。
(2)分级码默认9级,类型为varchar(36),如果有更多的级数,设计时可以根据实际情况增加字段类型的长度。
(3)GSP5.5版本后,也支持根据ParentID(varchar(36))来构建树,建议即使使用ParentID,也冗余设计上分级码、级数、是否明细字段,在写sql进行查找时用分级码比较方便。
3、支持数据增量的表结构设计
(1)单据和主要的字典,最好都要加上创建人(varchar(36))、最后修改人(varchar(36))、创建时间戳(datetime)、最后修改时间戳字段(datetime)。
4、支持审批流程的表结构设计
(1)需要挂流程的表单,数据库中该表单对应的表应增加两个字段:审批状态(字符类型,长度自定,可以char(1),也可以char(2))和流程实例(varchar(36))。
5、枚举值和布尔型相关的表结构设计
(1)表单上使用checkbox呈现的字段,数据库设计时应设置成char(1)类型,定义模型时将该字段定义成Boolean类型,而不能定义为int类型。
(2)表单上使用枚举值呈现的字段,数据库设计时应设置成char型或者varchar型,而不能定义成decimal或numeric类型。
6、其他约定
(1)数据库设计时,表名和字段名不允许为数据库中的关键字。
(2)表名不允许使用后面带List的关键字结尾(如表名DepartList是不允许的)。
(3)数据库表中,字段名不能使用“表名_ID”。例如:部门表表名为Department,其表中字段不能命名为Department_ID。也不允许仅大小写不同(即类似于Department_id的也是不允许的)。(注意:改规则不只适用于主键命名,所有字段命名都应该遵循)
(4)ADP数据对象元数据提供基于表和视图的结构描述,其中表分为普通表和带年度表两种实表策略,对于视图和带年度表的数据对象,在数据对象设计器中不允许直接与数据库同步。
7、关于建表sql的建议
建议开发过程中,对于数据表的创建与传统开发方式一致,采用手工整理建表SQL和升级sql的方式,而不是直接用数据对象同步数据库的方式。原因是:
(1)ADP平台提供的数据对象仅是对数据表、视图结构的描述,并且数据对象的描述字段可以与数据库实际表的个数、类型(不违反数据库自身的规则)等不一致,另外对索引、触发器等属性数据对象均不提供。
(2)用数据对象同步数据库方式,不方便形成升级sql,支持升级。