语音播报
数据库建模规范
制作:审核:批准:发布日期:
欧索软件有限公司
OCEANSOFT INFORMATION SYSTEM CO., LTD
日期版本说明作者
2004年10月9日<1.0> 第四次内部发布SEPG组
1.目的
为了保证软件开发中心所开发出的软件数据库符合相同的设计及命名规范,且保证各项目数据库不冲突而建立的数据库建模规范。
2.范围
适用于软件开发中心所有的软件开发工作。
3.定义
定义:无
4.职责
◆开发中心所有开发人员必须按照此规范进行系统的数据库建模工作,项目经理职责对项
目的数据库建模进行监督、检查。
◆测试人员在进行程序验收时,必须按照此规范进行程序的验收工作,对不按照此规范进
行数据库建模的相应的开发人员,将进行过失单处罚,并通知相应的项目经理。
◆开发中心所有人员如对数据库建模规范有异议,可提请开发中心总监讨论同意后修改此
规范,以按照新规范进行开发工作。
5.规范内容
5.1.数据库表及字段命名、设计规范
5.1.1.数据库表数据库表的命名必须遵循以下规范:
◆表的前缀必须是系统英文名称或模块英文名的缩写(大写)。如果系统功能简单,没
有划分为模块,则可以以系统英文名称的缩写(大写)作为前缀,否则以各模块的
英文名称缩写(大写)作为前缀。
例如:
如果有一个模块叫做ORG(缩写为ORG),那末你的数据库中的所有对象的名称都要
加上这个前缀:ORG_ + 数据库对象名称,ORG_CstInfo标示组织结构模块中的客
户信息表
◆表的名称必须是易于理解,能表达表的功能的英文单词或缩写英文单词,无论是完
整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单
词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名
为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,可采用两个
英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。
◆表名称不得超过三个英文单词。
◆在命名表时,用单数形式表示名称。例如,使用Employee,而不是Employees。
◆对于有主明细的表来说。明细表的名称为:主表的名称+ 字符Sub。例如:采购定
单的名称为:PCHS_Order,则采购定单的明细表为:PCHS_OrderSub
5.1.2.表字段
◆命名规范
数据库字段的命名必须遵循以下规范:
采用有意义的字段名。字段的名称必须是易于理解,能表达字段功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须
大写。如果当前字段可用一个英文单词表示的,请用完整的英文单词来表示;
例如:系统资料中的客户表中的客户地址名可命名为:Address。如果当前字
段需用两个或两个以上的单词来表示时,可采用两个英文单词的缩写形式。
建议尽量用完整英文单词来命名字段名称。
字段名称不得超过三个英文单词。
系统中所有属于内码字段,其应不代表任何业务字段信息。系统建议采用全球唯一号GUID(从程序界面中获得并存贮)。字段名称为:代表当前表的英文单
词+ “GUID”;数据类型为varchar(40)。例如在客户资料中需要一个内码来
唯一标识一笔客户信息。则此内码字段为:CustomerGUID;请注意,此内码
与给每个客户一个客户编号CustomerID有区别。
系统中属于是业务范围内的编号的字段,其代表一定的业务信息,这样的字段建议命名为:
代表当前这字段含意的英文单词+ “ID”;例如:职工编号EmployeeID;客
户编号:CustomerID;货料编号:ItemID等等。
采用表前缀。如果多个表中存在很多同类型的字段,比如FirstName,要在这个字段的名字加上表前缀,比如这样:CustFirstName,这样才不至于在做视图
的时候还要重新为这个字段指定别名(因为其他表很可能同样存在一个叫做
FirstName的字段)。
外关键字段的命名为:字母F + 引用的主关键字段的名称。例如:在客户资料表Customer中有一个主关键字段:CustomerID;则在定单表Order表中有一
个外关键字段客户编号的命名为:FCustomerID。
在命名表的列时,不要重复表的名称;例如,在名为Employee 的表中避免使用名为EmployeeLastName 的字段。
尽量遵守第三范式的标准(3NF)。
✧表内的每一个值只能被表达一次
✧表内的每一行都应当被唯一的标示
✧表内不应该存储依赖于其他键的非键信息
◆设计规范
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必须有默认值。
字符型的默认值为一个空字符值串’’;数值型的默认值为数值0;逻辑型的默
认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。
datetime、smalldatetime类型的字段没有默认值,必须为空。
字段的设计
数据库中每个字段的描述(Description)可分为以下部分:
其中:
①区域表示字段的在页面中将要显示的标题。
②区域表示对此字段进行的一些说明或备注信息。
③区域表示此字段是否需要选择输入。如果不选择输入,则此区域值为0,
否则此区域的值应为在系统中定义的资料编号。
示例图如下:
5.2.存贮过程命名及设计规范
5.2.1.命名规范
存贮过程的命名请遵循以下命名规范:SP_ + 系统模块缩写(大写)+ 功能标识+ 代表存贮过程
操作的表名(不带前缀)或功能的英文单词或英文单词缩写。
如果一个存贮过程只对一个表进行操作,建议存贮过程的名称就用存贮过程所操作的表的表名(不
带前缀)。这样有利于根据表名找到相应的存贮过程。
为了在众多的存贮过程中能很快的找到并维护存贮过程,我们按存贮过程的作用将系统的存贮过程
5.2.2.设计规范
在存贮过程中必须说明以下内容:
◆目的:说明此存贮过程的作用。
◆创建者:首次创建此存贮过程的人的姓名。在此请使用中文全名,不允许使用英文
简称。
◆修改者、修改日期、修改原因:如果有人对此存贮过程进行了修改,则必须在此存
贮过程的前面加注修改者姓名、修改日期及修改原因。
◆对存贮过程各参数及变量的中文注解。
示例如下:
/*
目的:查询公街门面,立面装修改造审批审批
创建:王小林
时间:2002-5-23
修改者:李小龙修改日期:2002-10-12 修改原因及内容:客户不需要活动内容字段,将活动内容字段去掉。
修改者:王永发修改日期:2002-10-19 修改原因及内容:增加一个申请地点字段。
*/
CREATE PROCEDURE dbo.SP_ORGRptJcStreetLampShp
@whereat nvarchar(4000), /* 接收传入的where子句,包括'where’关键字*/
@flowbillid nvarchar(4000) /* 接收传入的工作流的单据编号*/
AS
Declare @optlog_opteratename nvarchar(200) /* 存贮操作人*/
Declare @optlog_idea nvarchar(4000) /* 存贮操作意见*/
Declare @optlog_time nvarchar(20)/*操作时间*/
5.3.视图命名规范
5.3.1.命名规范
视图的命名请遵循以下命名规范:V_ + 系统模块缩写(大写)+ 功能标识+ 代表存贮过程
操作的表名(不带前缀)或功能的英文单词或英文单词缩写。
如果一个视图只对一个表进行操作,建议视图的名称就用视图所使用的表的表名(不
带前缀)。这样有利于根据表名找到相应的视图。
为了在众多的存贮过程中能很快的找到并维护存贮过程,我们按存贮过程的作用将系统的存贮过程
5.3.2.设计规范
在存贮过程中必须说明以下内容:
◆目的:说明此存贮过程的作用。
◆创建者:首次创建此存贮过程的人的姓名。在此请使用中文全名,不允许使用英文
简称。
◆修改者、修改日期、修改原因:如果有人对此存贮过程进行了修改,则必须在此存
贮过程的前面加注修改者姓名、修改日期及修改原因。
◆对存贮过程各参数及变量的中文注解。
示例如下:
/*
目的:查询公街门面,立面装修改造审批审批
创建:王小林
时间:2002-5-23
修改者:李小龙修改日期:2002-10-12 修改原因及内容:客户不需要活动内容字段,将活动内容字段去掉。
修改者:王永发修改日期:2002-10-19 修改原因及内容:增加一个申请地点字段。
*/
CREATE VIEW dbo.sp_zflocaldecide
AS
SELECT BillID AS 单据编号, ChargeSheetID AS 案件编号, PrivyName AS 当事人,
FictitiousPerson AS 法人, CheckDate AS 检查日期, Place AS 检查地点,
Job AS 从事工作, Law AS 违反规定, According AS 法律依据, Money AS 罚款, CheckPerson AS 检查人, Tipstaff AS 执法人员, DecideDate AS 处罚日期,
Creator AS 创建者, CreatedTime AS 创建日期, Modifier AS 修改者,
ModifiedTime AS 修改日期
FROM dbo.ZfLocaleDecide