U8数据库开发规范二次开发.docx

上传人:b****4 文档编号:5651174 上传时间:2023-05-08 格式:DOCX 页数:16 大小:22.98KB
下载 相关 举报
U8数据库开发规范二次开发.docx_第1页
第1页 / 共16页
U8数据库开发规范二次开发.docx_第2页
第2页 / 共16页
U8数据库开发规范二次开发.docx_第3页
第3页 / 共16页
U8数据库开发规范二次开发.docx_第4页
第4页 / 共16页
U8数据库开发规范二次开发.docx_第5页
第5页 / 共16页
U8数据库开发规范二次开发.docx_第6页
第6页 / 共16页
U8数据库开发规范二次开发.docx_第7页
第7页 / 共16页
U8数据库开发规范二次开发.docx_第8页
第8页 / 共16页
U8数据库开发规范二次开发.docx_第9页
第9页 / 共16页
U8数据库开发规范二次开发.docx_第10页
第10页 / 共16页
U8数据库开发规范二次开发.docx_第11页
第11页 / 共16页
U8数据库开发规范二次开发.docx_第12页
第12页 / 共16页
U8数据库开发规范二次开发.docx_第13页
第13页 / 共16页
U8数据库开发规范二次开发.docx_第14页
第14页 / 共16页
U8数据库开发规范二次开发.docx_第15页
第15页 / 共16页
U8数据库开发规范二次开发.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

U8数据库开发规范二次开发.docx

《U8数据库开发规范二次开发.docx》由会员分享,可在线阅读,更多相关《U8数据库开发规范二次开发.docx(16页珍藏版)》请在冰点文库上搜索。

U8数据库开发规范二次开发.docx

U8数据库开发规范二次开发

U8二次开发数据库开发规范

一、数据库命名规则

1.表、视图、存储过程、用户定义的函数、索引

✧前缀尽量大写;

✧使用英文命名;

✧尽量用完整的词,单词的第一个字母大写;对象的名称应尽量表明具体使用的含义

下表XX代表对象内容。

数据库对象

前缀

示例

备注

数据表

一般表

产品号_名称

GL_AccVouch

IA_Summary

MPS_Schedule

产品业务数据表

系统数据表

UA_XX

UA_Menu

系统元数据,系统参数,业务流程参数等的数据集合。

索引

主键索引

PK_表名

pk_bom_bom

BOM资料表上主键索引

非主键索引

IX_表名_XX

I_表名_XX

IX_AppVouchs_ID

IX_IA_Subsidiary_ID_cVouType

I_bom_bom_identcode

约束

外键约束

FK_表名_字段名_其他

FK__UA_Log__cAcc_Id

默认值约束

DF_名称_XX

DF__bom_bom__Status__27A

唯一约束

UQ_表名_XX

UQ_UA_Group_CGroup_ID

视图

视图

v_产品号_XX

VW_产品号_XX

V_IA_rdrecords01

V_mom_moallocatevw_APAR_detail_CM

存储过程

存储过程

SP_产品号_XX

SP_XX

SP_ST_Etl_RDDetail

sp_SAReceive

自定义函数

自定义函数

FN_产品号_XX

FN_ua_group_withuser

触发器

触发器

TR_产品号_XX

不建议使用

自定义类型

自定义类型

UD_产品号_XX

2.表、视图等字段命名

表、视图中字段都用英文命名,一般字段命名规则如下:

✧数据类型的简写为小写字母前缀;

✧后面是该字段的名称描述,应尽量表明字段含义、使用完整单词;

如果名称描述多个单词组成,每个单词的第一个字母都大写

✧具有特殊含义的后缀结尾。

例:

iMaxInCost(存货总账-最小入库成本单价 )

||_____________含义,;单词第一个字母大写

|_________________数据类型是浮点数(目前大多数使用Decimal)

数据类型规范:

数据类型

缩写

简写

使用说明

字符类型

char

chr

c

定长字符型,<8000字节,字符使用

varchar

chr

c

变长字符型,<8000字节,普通的字符型均采用

text

txt

t或c

文本型,存储大量文字,备注文件等

nchar

nch

c

定长的Unicode类型字符数据,<4000中文字节

nvarchar

chr

c

变长的Unicode类型字符数据,<4000中文字节

ntext

txt

t或c

Unicode类型文本,可存储2^30-1(2,147,483,647)个Unicode字符

二进制

bit

bit

b

逻辑型,0:

假,1:

binary

bin

bin

定长的二进制数据类型,〈8000个字节

varbinary

bin

bin

变长的二进制数据类型,〈8000个字节

image

img

img

bin

图像,office,视频,音频等

日期

datetime

dtm

d

日期和时间。

需要精确定位时间时使用,8个字节

int

int

i

整型(-2^31~2^31),用于一般数字型

bigint

bin

i

长整型(-2^63~2^63),

浮点数

float

flot

f

浮点(-1.79E+308~1.79E+308)

Decimal

dcm

dcm

原系统都是用i表示

定点精度和小数位数。

使用最大精度时,有效值从-10^38+1到10^38-1

money

mny

m

金钱类型,定点精度和小数位数。

特殊类型

Uniqueidentifier

guid

uid

一个全局唯一的标识号

Cursor

cur

cur

游标

时间戳

Timestamp

UFTS

UFTS

字段名称为:

UFTS,没有前后缀。

特殊字段,特殊含义字段命名规范

项目

数据类型

规则

备注

单据及相关数据的唯一ID

nvarchar,Char,

uniqueidentifier

chr_____ID

c____ID

单据主键ID;

在表中使用的GUID类型数据;

编码

nvarchar,Char

chr____Code

chr____NO

c____Code

c____NO

单据号

有规则的编码

名称

nvarchar,Char

chr____Name

c____Name

字段的名称(如商品名称,客户名称)

金额

float,Decimal

flot____Amount,

dcm____Amount

各种金额表示

数量

float,Decimal

flot____Quantity,

dcm____Quantity

f____Qty

dcm____Qty

i____Qty

各种数量表示

价格

float,Decimal

flot____Price,

dcm____Price

各种价格

作废

Bit,int,tinyint

bit____NoUsed

各种作废标志

审核

Bit,int,tinyint

i____Audit

审核标志

备注

Nvarchar,text

chr____Notes

c____Notes

txt____Notes

备注信息

注:

以前有些不是按以上规则设计的,今后再添加的请按这些规则添加。

●数据类型的选用

Ø尽可能使用变长类型(除非数据列长度的确是固定的)。

变长类型只存储列中实际含有的内,检索需要扫描的页会减少。

Ø创建字符类型字段请使用UNICODE数据类型字段,使用nvarchar、nchar、ntext替换varchar、char、text类型,在插入和查询时候使用N’’。

 

二、

数据库语言规范

1.触发器规范

由于数据表触发器容易产生很多数据库问题,一般情况下禁止使用触发器。

请使用系统API的前后事件进行代码编程。

2.视图规范

●不能在视图上创建视图,视图不能产生视图;

●禁止通过视图修改数据;

●禁止修改系统视图;

●用注释说明视图的作用;

●应尽量使用SQLServer的视图生成器产生视图;

●视图中不要有ORDERBY排序语句;

●视图中不要使用UNION联合视图;

●禁止使用“Select*from……”,“SelectT.*……”等语句;

●注意缩进,格式清楚;

●所有关键字要大写;

●字段逗号,运算符等操作符之间有空格相隔;

例子:

CREATEVIEW[dbo].[V_IA_rdrecords32]

/*

销售出库单未记账单据

*/

AS

SELECTRdrecord.bRdFlag,rdrecord.CBusType,Rdrecord.cBusCode,

Rdrecord.ccodeAScVouCode,rdrecords.AutoIDASID,

Rdrecords.iquantity,rdrecords.iunitcost,rdrecords.iprice,

Rdrecords.cVouchCodeAScBatchCode,

Rdrecords.cbaccounterAScAccounter,rdrecord.cMaker,

CAST(NULLASTINYINT)ASbFlag,CAST(NULLASBIT)ASbMoneyFlag,

(CASEWHENrdrecord.cVouchType=N'32'THEN1ELSE0END)asbSale,

rdrecord.cDefine1,rdrecord.cDefine2,rdrecord.cDefine3,rdrecord.cDefine4,

..........................................................

FROMrdrecords32RdrecordsINNERJOINrdrecord32rdrecordONrdrecords.id=rdrecord.idandisnull(rdrecords.cbaccounter,'')=''

LEFTJOINWareHouseONWareHouse.cWhcode=rdrecord.cWhCode

LEFTJOINSO_SODetailsONrdrecords.iorderdid=SO_SODetails.isosidAndrdrecords.iordertype=1--销售订单

LEFTJOINSO_SOMainONso_sodetails.id=so_somain.id

..................................................................................

3.存储过程规范

●编写存储过程原则

✧将每个存储过程完成一项单独的任务;

✧存储过程可以调用存储过程;

✧存储过程可以调用自定义函数;

✧存储过程中禁止使用全局性质的临时表;

●代码书写规范

✧在创建存储过程的开始处应有注释,

说明该存储过程的功能,存储过程的输入、输出参数的含义。

✧对于存储过程中功能相对独立的SQL代码段给出注释描述功能用途;

✧尽量保证SQL语句的执行顺序,对于每一次的执行单元应尽量保持先读后写的顺序;

✧所改变的SQLServer的系统参数,设置应在退出存储过程时还原(如SETNOCOUN等);

✧关键字应尽量保持大写;

✧字段逗号,运算符等操作符之间有空格相隔;

✧注意缩进,保持存储过程的可读性;

✧输入、返回参数命名应尽量规则:

前缀为参数数据类型的简写,主体是参数描述

常用数据类型简写如下:

inti,charchr,nvarcharvch等可参照数据类型规范,参数描述使用英文,单词的第一个字母大写;

例子:

CREATEPROCEDURE[dbo].[SP_ST_StockInspect]@QueryDatedatetime='2003-11-1',

@QueryConditionnvarchar(4000)=N'',

@ComUnitNoint=1

……………………………………………………

AS

/*

在库品待检表

@QueryDate查询日期

@QueryCondition查询条件

@ComUnitNo第几辅计量编号

……………………………………………………

*/

SETNOCOUNTON

DECLARE@strSqlNVARCHAR(4000)

DECLARE@strSql1NVARCHAR(4000)

DECLARE@sQtyasNVARCHAR(4000)

SET@strSql=N'execPrc_SCM_GetStockFuc_ST'

SELECTCONVERT(NVARCHAR(400),'')ASsQty,

CONVERT(NVARCHAR(400),'')ASsNum,

convert(nvarchar(400),'')ASsBQty,CONVERT(NVARCHAR(400),'')ASsBNum,

convert(nvarchar(400),'')ASsInQty,CONVERT(NVARCHAR(400),'')ASsInNum,--预计入

convert(nvarchar(400),'')ASsOutQty,CONVERT(NVARCHAR(400),'')ASsOutNum,

convert(nvarchar(400),'')ASsBInQty,CONVERT(NVARCHAR(400),'')ASsBInNum,

convert(nvarchar(400),'')ASsBOutQty,CONVERT(NVARCHAR(400),'')ASsBOutNum

INTO#tmpFucwhere1=0

EXECUTESP_EXECUTESQL@strSql

SELECT@sQty=sQty,@snum=sNum,@sbatchQty=sBQty,@sbatchnum=sBNumFROM#tmpFuc

set@iPreDays=(selectisnull(cvalue,0)fromaccinformationwherecname=N'iPreInspectDays')

set@iYQDays=(selectisnull(cvalue,0)fromaccinformationwherecname=N'iYQInspectDays')

……………………………………………………………………………………..

SETNOCOUNTOFF

 

4.自定义函数规范

●自定义函数的代码与注释书写规范类似于存储过程;

●自定义函数应看作除了SQL语句外最小执行单位;

●自定义函数中不能调用存储过程;

●自定义函数中只能对表进行操作,不允许对视图进行操作;

●如果自定义函数返回的是数据集,数据量较大时,尽量使用Join语句关联查询,少时用IN条件语句;

●自定义函数尽量不要用到条件列、查询列中,因为要进行全表数据计算,影响查询性能,可以用于查询条件中,尽量用于查询条件右侧,使用固定值。

例子:

ALTERFUNCTION[dbo].[FN_GetLastBOM](@PartIdint,@CurDatevarchar(20))

/*

得到最后版本的BOMID

@PartId母件物料Id 

@CurDate版本生效日期

*/

RETURNSint

AS

BEGIN

declare@BomIDasint

selecttop1@BomID=b.bomidfrombom_parentpinnerjoinbom_bombonp.bomid=b.bomid

wherep.ParentId=@PartIdand@CurDatebetweenb.VersionEffDateandb.VersionEndDate

orderbyb.VersionEffDatedesc

if@BomIDisnull

set@BomID=-1

RETURN(@BomID)

END

 

5.索引规范

●创建索引原则:

Ø在经常作为条件搜索的列上创建索引;

Ø保持索引中的数据量尽可能的少。

Ø在主键上创建索引;

Ø在关键、经常使用的外键上创建索引;

Ø检索方式比较复杂时,应考虑创建复合索引,SQL2005以上可以创建包含性索引。

在创建复合索引时,应该仔细考虑列的顺序。

对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引才起作用;仅对后面的任意列执行搜索时,复合索引则没有用处。

特别注意:

考虑到执行速度,代码维护,代码的不可控等因素,数据库升级的兼容性等很多方面,一般情况下禁止使用“Select*from……”;

三、

U8开发之脚本文件规则

数据库脚本文件是U8中对数据库操作语句汇总,通过编写脚本更改数据库元素达到增加新功能、修改BUG的目的。

U8中脚本文件的命名、具体存放位置需要遵循一定的规范,以划分不同类型的脚本,方便编写、阅读、运行和管理。

Ø什么是脚本文件?

在开发中经常需要对数据库进行操作,如:

增加表、字段,存储过程、触发器,修改表、字段、存储过程、触发器,修改数据等。

这些SQL语句都统一存放在脚本文件中。

主要脚本文件:

结构脚本:

对表结构的增删改脚本。

视图脚本:

对视图的增删改脚本。

存储过程:

对存储过程、触发器、函数的增删改脚本。

数据脚本:

对表数据的增删改脚本。

Ø文件命名规范的目标

本文主要介绍脚本文件的命名规则,不符合规则的命名会导致脚本执行出错,遵守同一命名规则也方便管理开发过程中的所有数据库脚本。

Ø脚本文件如何命名?

脚本文件的命名规则如下:

数据库_SQL类型_产品_业务类型_语言.sql

1.脚本文件中执行数据库命名规范

脚本名称中的数据库部分表示该脚本文件在哪个数据库中执行,具体值如下。

表示

说明

SYS

UFSystem数据库

DATA

账套库,UFDATA开头的数据库

META

元数据库,UFMeta开头的数据库(V8.70以后版本有元数据库)

UTU

UTU数据库(V11.0以后版本有UTU数据库)

WorkFlow

U8WorkFlow数据库(V8.70至V8.90版本有U8WorkFlow库,其他版本没有)

MOM

UFMOM数据库(V8.70至V8.90版本有UFMOM库,其他版本没有)

如:

SYS_STR_EFNF_MIX_NL.SQL表示该脚本在UFSystem数据库运行。

DATA_DATA_EFNF_MIX_NL.SQL表示该脚本在UFDATA开头的数据库运行。

2.脚本文件中SQL执行类型命名规范

SQL类型说明文件中存放SQL语句的类型,总共有4个类型,且有执行的优先级顺序,具体值如下:

表示

说明

执行顺序

STR

对表结构的操作

1

PRV

对视图的操作

2

PRP

对存储过程的操作

3

DATA

对数据的操作

4

如:

SYS_STR_EFNF_MIX_NL.SQL表示该脚本修改的是UFSystem数据库的表结构。

DATA_DATA_EFNF_MIX_NL.SQL表示该脚本修改的是UFDATA开头数据库的表数据。

3.脚本文件中产品与项目命名规范

表示该脚本文件隶属的产品号,值对应UFSystem库UA_SubSys_Base表的cSub_ID字段,如果二次开发的插件没有产品号,该值可以自定义,但必须是“EF”开头,如EFNF表示南孚项目,长度不能超过6位。

注意:

二次开发脚本名称中的产品不能使用U8标准产品编号,否则会出现互相覆盖现象。

如:

SYS_STR_EFXXX_MIX_NL.SQL

DATA_DATA_EFXXX_MIX_NL.SQL表示该脚本属于XXX二次开发项目。

4.脚本文件中业务类型命名规范

业务类型表示该脚本文件涉及到的业务范围,如果某一脚本只用于修改权限,使用这个字段进行区分,具体值如下:

表示

说明

Menu

菜单

FR

功能权限

DR

数据权限

Vou

单据

Col

栏目

Query

报表

Start

系统启用

WF

工作流

EAI

企业应用集成

Mix

混合类型,不做具体业务区分

自定义值

不超过5个英文字母

如:

SYS_STR_EFNF_WF_NL.SQL表示该脚本内容与工作流相关。

DATA_DATA_EFNF_MIX_NL.SQL表示该脚本内容不区分业务类型,多种业务类型的脚本放在一个脚本文件中。

5.脚本文件中多语命名规范

U8从V8.61开始支持多语言,数据库中与界面显示有关的表会包含多种语言数据,对多语言数据进行增删改时需要把sql脚本按照修改内容的语言进行区分,不同语言标识的脚本有执行的先后顺序。

具体值如下:

表示

说明

执行顺序

NL

脚本文件的内容与语言无关,STR、PRV、PRP类型的脚本语言为NL类型

1

CN

简体中文

2

TW

繁体中文

3

EN

英文脚本

4

如:

SYS_STR_EFNF_WF_NL.SQL表示该脚本内容与语言无关。

DATA_DATA_EFNF_MIX_CN.SQL表示该脚本内容修改的是简体中文的数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2