U8数据库开发规范-二次开发_第1页
U8数据库开发规范-二次开发_第2页
U8数据库开发规范-二次开发_第3页
U8数据库开发规范-二次开发_第4页
U8数据库开发规范-二次开发_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、- -U8二次开发数据库开发规范、数据库命名规则表、视图、存储过程、用户定义的函数、索引前缀尽量大写;使用英文命名;尽量用完整的词,单词的第一个字母大写;对象的名称应尽量表明具体使用的含义表XX代表对象内容。数据库对象前缀示例备注数据表一般表产品号名称GL_AccVouchIA_SummaryMPSSchedule产品业务数据表系统数据表UA_XXUA_Menu系统兀数据,系统参数,业务流程参数等的数据集合。索引主键索引PK_表名pk_bom_bomBOM资料表上主键索引非主键索引IX_表名_XX或1_表名_XXIX_AppVouchs_IDIX_IA_Subsidiary_ID_cVouTy

2、peIbombomidentcode约束外键约束FK_表名字段名其他FK_UA_Log_cAcc_Id默认值约束DF_名称_XXDF_bom_bom_Status_27A唯一约束UQ_表名_XXUQ_UA_Group_CGroup_ID视图视图v_产品号_XX或vw产品号xxV_IA_rdrecords01V_mom_moallocatevwAPARdetailCM存储过程存储过程SP_产品号_xxSPXXSP_ST_Etl_RDDetailspSAReceive自定义函数自定义函数FN_产品号_XXFN_ua_group_withuser触发器触发器TR_产品号_XX不建议使用自定义类型自定

3、义类型UD产品号_XX表、视图等字段命名表、视图中字段都用英文命名,一般字段命名规则如下:数据类型的简写为小写字母前缀;后面是该字段的名称描述,应尽量表明字段含义、使用完整单词;如果名称描述多个单词组成,每个单词的第一个字母都大写具有特殊含义的后缀结尾。例:iMaxInCost(存货总账-最小入库成本单价)|含义,;单词第一个字母大写|数据类型是浮点数(目前大多数使用Decimal)数据类型规范:数据类型缩写简写使用说明字符类型charchrc定长字符型,8000字节,字符使用varcharchrc变长字符型,8000字节,普通的字符型均采用texttxtt或c文本型,存储大量文字,备注文件等

4、ncharnchc定长的Unicode类型字符数据,4000中文字节nvarcharchrc变长的Unicode类型字符数据,4000中文字节ntexttxtt或cUnicode类型文本,可存储230-1(2,147,483,647)个Unicode字符进bitbitb逻辑型,0:假,1:真binarybinbin定长的二进制数据类型,8000个字节制varbinarybinbin变长的二进制数据类型,8000个字节imageimgimg或bin图像,office,视频,音频等日期datetimedtmd日期和时间。需要精确定位时间时使用,8个字节intinti整型(-231231),用于一般

5、数字型bigintbini长整型(-2”632”63),浮点数floatflotf浮点(-1.79E+3081.79E+308)Decimaldemdem原系统都是用i表示定点精度和小数位数。使用最大精度时,有效值从-1038+1至卩1038-1moneymnym金钱类型,定点精度和小数位数。特殊类型Uniqueidentifierguiduid一个全局唯一的标识号Cursorcurcur游标时间戳TimestampUFTSUFTS字段名称为:UFTS,没有前后缀。特殊字段,特殊含义字段命名规范项目数据类型规则备注nvarchar,Char,chrID单据主键ID;单据及相关数据的唯IDuni

6、queidentifier或在表中使用的GUID类型数据;cIDnvarchar,CharchrCode单据号chrNO有规则的编码编码或cCodecNOnvarchar,CharchrName字段的名称(如商品名称,客户名称或名称)cName金额float,DecimalflotdcmAmount,Amount各种金额表示float,DecimalflotQuantity,各种数量表示数量dcm或QuantityfQtydcmQtyiQty价格float,DecimalflotPrice,各种价格dcmPrice作废Bit,int,tinyintbitNoUsed各种作废标志审核Bit,in

7、t,tinyintiAudit审核标志Nvarchar,textchrNotes备注信息备注cNotestxtNotes注:以前有些不是按以上规则设计的,今后再添加的请按这些规则添加。数据类型的选用尽可能使用变长类型(除非数据列长度的确是固定的)。变长类型只存储列中实际含有的内,检索需要扫描的页会减少。创建字符类型字段请使用UNICODE数据类型字段,使用nvarchar、nchar、ntext替换varchar、char、text类型,在插入和查询时候使用N。用友U8二次开发数据库规范- -二、数据库语言规范触发器规范由于数据表触发器容易产生很多数据库问题,一般情况下禁止使用触发器。请使用系

8、统API的前后事件进行代码编程。视图规范不能在视图上创建视图,视图不能产生视图;禁止通过视图修改数据;禁止修改系统视图;用注释说明视图的作用;应尽量使用SQLServer的视图生成器产生视图;视图中不要有ORDERBY排序语句;视图中不要使用UNION联合视图;禁止使用“Select*from”,“SelectT.*”等语句;注意缩进,格式清楚;所有关键字要大写;字段逗号,运算符等操作符之间有空格相隔;例子:CREATEVIEWdbo.V_IA_rdrecords32/*销售出库单未记账单据*/ASSELECTRdrecord.bRdFlag,rdrecord.CBusType,Rdrecor

9、d.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=N32THEN1ELSE0END)as

10、bSale,rdrecord.cDefine1,rdrecord.cDefine2,rdrecord.cDefine3,rdrecord.cDefine4,FROMrdrecords32RdrecordsINNERJOINrdrecord32rdrecordONrdrecords.id=rdrecord.idandisnull(rdrecords.cbaccounter,)=LEFTJOINWareHouseONWareHouse.cWhcode=rdrecord.cWhCodeLEFTJOINSO_SODetailsONrdrecords.iorderdid=SO_SODetails.iso

11、sidAndrdrecords.iordertype=1-销售订单LEFTJOINSO_SOMainONso_sodetails.id=so_somain.id存储过程规范编写存储过程原则将每个存储过程完成一项单独的任务;存储过程可以调用存储过程;存储过程可以调用自定义函数;存储过程中禁止使用全局性质的临时表;代码书写规范在创建存储过程的开始处应有注释,说明该存储过程的功能,存储过程的输入、输出参数的含义。对于存储过程中功能相对独立的SQL代码段给出注释描述功能用途;尽量保证SQL语句的执行顺序,对于每一次的执行单元应尽量保持先读后写的顺序所改变的SQLServer的系统参数,设置应在退出存储

12、过程时还原(如SETNOCOUN等)关键字应尽量保持大写;字段逗号,运算符等操作符之间有空格相隔;注意缩进,保持存储过程的可读性;输入、返回参数命名应尽量规则:前缀为参数数据类型的简写,主体是参数描述常用数据类型简写如下:inti,charchr,nvarcharvch等可参照数据类型规范,参数描述使用英文,单词的第一个字母大写;例子:CREATEPROCEDUREdbo.SP_ST_StockInspectQueryDatedatetime=2003-11-1,QueryConditionnvarchar(4000)=N,ComUnitNoint=1用友U8二次开发数据库规范- -AS/*在

13、库品待检表QueryDateQueryCondition查询日期查询条件ComUnitNo第几辅计量编号*/SETNOCOUNTONDECLAREstrSqlNVARCHAR(4000)DECLAREstrSql1NVARCHAR(4000)DECLAREsQtyasNVARCHAR(4000)SETstrSql=NexecPrc_SCM_GetStockFuc_STSELECTCONVERT(NVARCHAR(400),)ASsQty,CONVERT(NVARCHAR(400),)ASsNum,convert(nvarchar(400),)ASsBQty,CONVERT(NVARCHAR(4

14、00),)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),)ASsBOutNumINTO#tmpFucwhere1=0E

15、XECUTESP_EXECUTESQLstrSqlSELECTsQty=sQty,snum=sNum,sbatchQty=sBQty,sbatchnum=sBNumFROM#tmpFucsetiPreDays=(selectisnull(cvalue,0)fromaccinformationwherecname=NiPreInspectDays)setiYQDays=(selectisnull(cvalue,0)fromaccinformationwherecname=NiYQInspectDays)SETNOCOUNTOFF自定义函数规范自定义函数的代码与注释书写规范类似于存储过程;自定义函

16、数应看作除了SQL语句外最小执行单位;自定义函数中不能调用存储过程;自定义函数中只能对表进行操作,不允许对视图进行操作如果自定义函数返回的是数据集,数据量较大时,尽量使用Join语句关联查询,少时用IN条件语句;自定义函数尽量不要用到条件列、查询列中,因为要进行全表数据计算,影响查询性能,可以用于查询条件中,尽量用于查询条件右侧,使用固定值。例子:ALTERFUNCTIONdbo.FN_GetLastBOM(PartIdint,CurDatevarchar(20)/*得到最后版本的BOMIDPartId母件物料IdCurDate版本生效日期*/RETURNSintASBEGINdeclareB

17、omIDasintselecttop1BomID=b.bomidfrombom_parentpinnerjoinbom_bombonp.bomid=b.bomidwherep.ParentId=PartIdandCurDatebetweenb.VersionEffDateandb.VersionEndDateorderbyb.VersionEffDatedescifBomIDisnullsetBomID=-1RETURN(BomID)END索引规范创建索引原则:在经常作为条件搜索的列上创建索引;保持索引中的数据量尽可能的少。在主键上创建索引;在关键、经常使用的外键上创建索引;检索方式比较复杂时

18、,应考虑创建复合索引,SQL2005以上可以创建包含性索引。在创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引才起作用;仅对后面的任意列执行搜索时,复合索用友U8二次开发数据库规范- -引则没有用处。特别注意:考虑到执行速度,代码维护,代码的不可控等因素,数据库升级的兼容性等很多方面,一般情况下禁止使用“Select*from”;三、U8开发之脚本文件规则数据库脚本文件是U8中对数据库操作语句汇总,通过编写脚本更改数据库元素达到增加新功能、修改BUG的目的。U8中脚本文件的命名、具体存放位置需要遵循一定的规范,以划分不同类型的脚本,方便编写、阅读、

19、运行和管理。什么是脚本文件?在开发中经常需要对数据库进行操作,如:增加表、字段,存储过程、触发器,修改表、字段、存储过程、触发器,修改数据等。这些SQL语句都统一存放在脚本文件中。主要脚本文件:结构脚本:对表结构的增删改脚本。视图脚本:对视图的增删改脚本。存储过程:对存储过程、触发器、函数的增删改脚本。数据脚本:对表数据的增删改脚本。文件命名规范的目标本文主要介绍脚本文件的命名规则,不符合规则的命名会导致脚本执行出错,遵守同一命名规则也方便管理开发过程中的所有数据库脚本。脚本文件如何命名?脚本文件的命名规则如下:数据库_SQL类型产品业务类型语言.sql1.脚本文件中执行数据库命名规范脚本名称

20、中的数据库部分表示该脚本文件在哪个数据库中执行,具体值如下。表示说明SYSUFSystem数据库DATA账套库,UFDATA开头的数据库META元数据库,UFMeta开头的数据库(V8.70以后版本有元数据库)UTUUTU数据库(V11.0以后版本有UTU数据库)WorkFlowU8WorkFlow数据库(V8.70至V8.90版本有U8WorkFlow库,其他版本没有)用友U8二次开发数据库规范- -MOMUFMOM数据库(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对表结构的操作1PRV对视图的操作2PRP对存储过程的操作3DATA对数据的操作4如:SYS_STR_EFNF_MIX_NL.SQL表示该脚本修改的是UFSystem数据库的表结构。DATA_DATA_EFNF_MIX_NL.SQL表示该脚本修改的是UFDATA开头数据库的表数据。3.表示该脚本文件隶属的产品号,值对应UFS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论