NC数据库设计规范

数据库设计规范

----NC数据库小组----

版本

V5

注意:

标有 ★ 的条目表示强制性规范。

变更记录

日期 变更内容 变更原因 变更人
2003-06-23 数据类型中对定长字符由使用varchar2 改为 char 就应该用char,原来笔误 段玲
2005-8-30 增加支持的操作系统和数据库版本 产品发展 林大瀚、李奎阳、陈岑
2005-8-30 重新整理模块命名规范,分离资金、预算、人力资源 产品发展 陈岑
2005-8-30 增加一些对数据类型的值域范围界定 以前没有精确的界定 林大瀚、陈岑
2005-8-30 增加“空值”规范 新版不允许使用“空值” 李奎阳
2005-8-30 增加两条索引规范 产品实施需要 李奎阳

陈岑

2005-8-30 精简产品配置数据库脚本规范 其他规范中已经涉及 陈岑

 

一、    概述

本手册涉及两个方面的内容:

A、指导软件开发过程中对数据库设计文档的管理。数据库设计文档主要包括以下部分:

l  数据库设计的概念数据模型,即CDM文档

l  数据库设计的物理数据模型,即PDM文档

l  由PDM生成的数据库建库脚本。

l  其他不在PDM文档中表达的数据库脚本,比如视图、触发器、索引等。

B、规范数据库设计文档中的内容,如命名规则、数据类型的使用等。

本手册会随着NC的发展、开发技术的提高、各种系统平台的更新而逐步调整。

 

二、    支持数据库及版本★

目前主要支持ORACLE,DB2,SQLSERVER三种数据库.

 

操作系统 ORACLE 8I(8.1.7) ORACLE 9I(9.2.0.4或更高) ORACLE 9I(10G
Win NT 考虑升级操作系统 考虑升级操作系统 考虑升级操作系统
Win 2000
Win 2003
Sun Solaris 2.6 or late
IBM AIX 4.2 and later
SCO UnixWare 7.0
Linux
HP Unix 11.00 or later

 

操作系统 SQL SERVER 7.0 SQL SERVER 2000(sp3 SQL SERVER 2005
Win NT 考虑升级数据库
Win 2000 考虑升级数据库
Win 2003 考虑升级数据库

 

操作系统 DB2(7.2) DB2(8.2)
Win NT 考虑升级数据库
Win 2000 考虑升级数据库
Win 2003 考虑升级数据库
Sun Solaris 2.6 or later. 考虑升级数据库
IBM AIX 4.2 and later 考虑升级数据库
Linux kernel2.2.12or higher; 考虑升级数据库
HP Unix 11.00 or later 考虑升级数据库

 

三、    数据库文档的管理★

1、  采用PowerDesigner 8.0作为数据库设计工具。

2、  使用ClearCase作为数据库设计文档的版本控制工具。

3、  凡是用在PDM里面表达的数据库设计,统一由配置管理员产生厂商数据库的建库脚本。不在PDM中表达的SQL语句需要设计人员自己翻译为不同厂商数据库的建库脚本。

4、  PDM里面有关各种数据库对象的comment 字段不能为空,必须对各种数据库对象作出有助与理解的注释。

 

四、命名规范★

1.模块名称规则表,一般数据库表设计的前缀默认采用以下规则,以下表的详细信息请参考NC规范中的NC产品形态文档.

模块名称 系统规则名 模块名称 系统规则名 模块名称 系统规则名

UAP

系统管理 sm UAP pub 财务会计平台 dap
基础数据 bd 外部交换平台 xx 管理会计平台 dmp
           
报表&BPM
报表 iufo BI平台 bi BPM bpm
财务
总账管理 gl 收付报 arap 固定资产 fa
存货核算 ia 项目成本 jc    
           
资金
资金结算 fts 资金监控 fvm 资金计划 fp
票据管理 fbm 信贷管理 fi 资金预测 fi
资金计息 fi 网上银行 ebank    
预算
预算管理 ntb        
人力资源

人力资源规划

HRP

职务职能管理

OM

员工信息管理

HI

招聘甄选管理

RM 

员工调配管理

HI

员工离职管理

HI

政策制度管理

HRPM

劳动合同管理

HRCM

培训开发管理

TRM

考勤管理

TBM

出差管理

HRBT

休假管理

HRLM

加班管理

HROM

绩效管理

PE

薪酬管理

WA

福利管理

BM

经理自助

MSS

基础设置

HR

人力资源取数函数

RPT

员工自助

ESS

 

 

 

 

 

 

 

 

供应链
采购管理 po 销售/分销管理 so 库存管理 ic
销售价格 prm 内部交易 to 供应商管理 vrm
合同管理 ct 委外加工 sc 发运管理 dm
供应链公共 scm        
制造
设备管理 fm 成本管理 cm    
制造基础数据 pd 需求管理 mm 生产计划 mm
生产定单 mm 车间作业 sf 能力计划 crp
装配计划 mm 检修管理 er    
质量管理
质量管理 qc        
其他
  cdm   pm    
           
                 

 

2.所有表、视图、触发器、索引、函数、约束、主外键必须指定名称,规则如下:

对于各种数据库对象的命名规则,目前的NC系统中存在两种风格,采用拼音和采用英文的,目前这两种规范都可以,但是注释一定要清楚.

数据库对象

规则

最大长度

例子

系统规则名_名称 18 sm_firm
字段名   18 acc_code, acc_name
视图 v_系统规则名_名称(*) 18 ac_accsub
触发器 t_表名_名称(*) 18 t_firm
函数 f_名称 18 f_fun()
Check ck_表名_字段名(*) 18 ck_gl_accsub_code
主键 pk_表名 18 pk_gl_accsub
外键 fk_表名_字段名(*)--此处超过18位处理 18 fk_gl_vouch_accsub_code
索引 i_表名_字段名(*) 18 i_gl_accsub_code
表空间 ts_名称 18 ts_sys
       

  (*)注:由于数据库对象之间的命名规则与最大长度限制可能造成命名存在冲突。如存在,可以通过缩减表名或字段字符来实现。

 

3.所有的外键、约束、索引、函数、触发器、存储过程名不允许重复。

 

4.业务中主子表的命名规则:

系统规则名_名称

或          主表:系统规则名_名称_h

5.子表:系统规则名_英文名称_b。业务中主子子表的命名规则:

主表:系统规则名_英文名称_h

子表:系统规则名_英文名称_b

子子表:系统规则名_英文名称_bs

 

 

 

五、数据类型★

1.可用数据类型

类型

范围

Sqlserver

Oracle

Db2

字符型 长度固定(注意:长度小于255) Char Char Char
可变字符型 长度不固定(最大4000) Varchar Varchar2 Varchar
  Oracle只能到4000,以此为准      
16位整型 -32,768~32,767 Smallint Smallint Smallint
32位整型 -2,147,483,648 ~2,147,483,647 Int Int integer
精确数值型 pppppppppppppp.ss Decimal(p,s) Number(p,s) Decimal(p,s)
近似数值型 -1.79E+308 ~1.79E+308 Float Float Float
日期型 yyyy-mm-dd。 Char(10) Char (10) Char(10)
日期时间型 yyyy-mm-dd hh_mm_ss Char(19) Char (19) Char(19)
时间戳 System date and time    date Datetime date
布尔型 ‘Y’ or  ‘N’ Char(1) Char (1) Char(1)
ID/PK    Char(20) Char (20) Char (20)
大文本   text Clob clob
二进制   image Blob blob

 

2.业务数据类型规范

这个规范需要落实到CDM/PDM的domain的标准化上,尽量使用已经定义好的域,如UFPK、UFDate等,参见pdm手册。

 

类型

规则(使用SQL Server描述)

编码类 字符型。依据规则确定用char还是varchar。
名称类 字符型。依据规则确定用char还是varchar。
布尔类 Char(1),Y/N
状态类 Smallint,用0,1,2,3……表示
级次类 16位整型Smallint
金额类 精确数值型,一般为decimal(20,8)
大金额 32,10
系统标识类 估计可能最大值<32,767:           16位整型smallint

估计可能最大值>32,767:           32位整型 smallint

摘要备注类 可变字符型。需要定义几种:200,1000
价格数量类 精确数值型,一般为decimal(20,8)
单价类 精确数值型,一般为decimal(20,8)
比率类 精确数值型,一般为decimal(20,8)
   

 

3.不要用SQL 保留字来命名表、视图、字段、索引。数据库的保留字见各数据库厂商规范。

4.字符型字段的确定。长度固定用char,不固定用varchar。

5.不要将Null 与  空串“”视为相同。在不同的数据库中对这两者的理解是不相同的。在Oracle中空串与Null理解一样。如果碰到这种情况统一用Null.

6.空值问题:

   所有经常用来做为查询条件的字段都不允许使用空值,引用基础档案的,在基础档案增加表示空值的档案,其他使用N/A表示。

六、注意事项

A 存储过程

1. 为了减少移植的困难,不要使用存储过程。如必须使用,需审批。

B 触发器

1.尽可能的不使用触发器,尽量通过程序实现,有利与多数据库移植。

2.不允许动态创建触发器。

C 视图

1.使用静态视图,不允许动态创建视图。

2.视图中不准包含order by 语法,影响效率。

3.尽量不要出现视图嵌套视图的情况

D 索引

1.为了保证索引具有提高效率的作用,估计记录数不大于100的表一律不允许建索引。

2.只用于distinct或group by子句引用的列,不用建立索引。

3.对于数据值变化不大的列,比如只有yes和no,那么不要建索引,否则效率降低。

4.不允许动态创建索引。

5.当创建复合索引时,复合索引的列不超过7列,复合索引的列的总长度不能超过128字节。

6.在复合索引中,所有的列必须来自同一个表中,不能跨表建立复合列。

7.复合索引为多列,同复合主键一样将变化显著的列放到复合索引的首位。

8.在复合索引中,列的排列顺序是非常重要的。例如在(COL1,COL2)上的索引与在(COL2,COL1)上的索引是不相同的,因为两个索引的列的顺序不同。

9.规范索引的管理,设计表的时候需要将表的主要查询场景整理形成相应文档,然后根据相应场景设计索引。

10.              某些字段(如dr、ts等)设计时不可见。在这些字段上建索引,需要申报审批。

E 表及外键

1.  表的具体设计规范原则。

      以第三范式的标准严格设计,然后再考虑开发与运行的效率进行反范式规范的冗余设计。

2.  不允许动态创建表、约束、外键。

3.  每个表必须有主键(primary  key)不推荐复合主键★

4.  一个表的字段在引用另外一个表带编码、名称的字段时,只需引用主键字段。

5.  复合主键必须遵守以下规则:越能成为唯一标识的字段(同值重复少)就越放在前面。

6.  没有必要对表中的每一个引用建立主外键关系。

7.  对于已经存在的表,如果要增加字段,建议一般使用可空字段,如果是非空字段,请给出default值。★

8.  只对关系非常密切的表建立外键关系,比如主子表,来源去向表。

9.  外键的建立的基本原则是不能跨模块建立外键关系。★

 

F 函数规范★

1.不允许使用自定义函数。

 

G 产品配置数据库脚本规范★

1.建库脚本文件分类:

删除表类:包括模块所有表的drop语句。

删除历史版本索引类: 包括对所有历史发版版本索引的统一预删除脚本。表结构类:包括模块所有表的建表语句、主键定义以及check约束。还包括数据类型以及规则定义。

外键、视图、函数、索引类(简称外键类):包括模块所有的外键、视图、索引、函数。包括drop语句。

触发器、存储过程类: 包括模块的触发器以及存储过程。包括drop 语句。

   数据类:包括模块节点以及初始化数据;包括删除数据命令。包括delete语句。

 

2.安装盘脚本命名规则:

参见《NC产品配置数据规范》。

3.书写格式:

字母全部用小写(值除外)。注释用破折号“--”

遵循各个数据库SQL执行标准。例如,每条DDL以及DML语句结束符采用如下符号。

Db2

Oracle

Sqlserver

Sybase

DDL /

DML ;

Go go

 

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓