读书人

数据库开发轨范(SQL SERVER篇) 2012

发布时间: 2012-11-05 09:35:12 作者: rapoo

数据库开发规范(SQL SERVER篇) 2012年最新版

第一章 命名规范

1. 命名标志法

使用下面的三种大写标识符约定。

Pascal 大小写

将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:

BackColor

Camel 大小写

标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:

backColor

大写

标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:

System.IO

System.Web.UI

可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。

2. 数据库命名

数据库名要求全部使用Pascal命名法

例如:

MFC

MFC53

DataController

3. 数据库月份库、数据表日分库命名规则

<DatabaseName><Month>

<TableName><Day>

DatabaseName按数据库命名要求命名

TableName按数据表命名规则命名

Month, Day要求中间无任何连接符

例如

MFCLOG200301

MFC_log_ClientCheckin20030109

4. 分段数据库分库命名规则

<DatabaseName><Segment>

DatabaseName按数据库命名要求命名

Segment是分段的编号,要求长度一致并且3位或者以上

例如 NIDCHyper021

5. 分段分日期数据库分库命名规则

<DatabaseName><Segment><Day>

DatabaseName按数据库命名要求命名

Segment是分段的编号,要求长度一致并且3位或者以上

Day要求中间无任何连接符

例如

GatheredLog00120110227

MassLog00320110227

6. 表的命名

<SystemName>_<TableType>_<Name>

SystemName为表所属的系统名,此处要求采用Pascal命名法

TableType为数据表的类别,此处要求全部使用小写,在我们的库中有如下几种数据表类型:

tb----------数据表,

stat--------统计表,

dict--------字典表,

sys--------系统信息表,

re----------关系表,

log---------日志表

Name为数据库表的名称,此处要求使用Pascal命名法

例如:

MFC_tb_Unit 场所信息表

MFC_stat_UnitDailyStatus 场所状态日统计表

MFC_re_UserArea 用户地区关系表

MFC_log_Customer 顾客日志表

MFC_dict_Sex 性别字典表

7. 字段命名

字段命名统一使用Pascal标志法,单词中间不用下划线。应尽量使用简短而又能说明字段实际意义的词组组合,为保证不与系统字段重复,应尽量至少使用两个单词。同样含义的字段应尽量使用已有字段的物理名。

例如:

CertificateCode 证件号

CertificateType 证件类别

AlertClassName 报警类别名

8. 存储过程命名

[<SystemName>]<FunctionModule>_<TableName>_<FunctionName>

SystemName是系统名,此处要求使用Pascal命名法,对于跨系统使用的存储过程要求此段,其他非跨系统的存储过程不要求。

FunctionModule为功能模块名,此处要求使用Pascal标志法

TableName为数据库已有表名,命名规则同上面的表命名要求

FunctionName为存储过程的功能说明,此处要求使用Pascal标志法。

常用的功能有:

GetList 取多条记录

GetModel 去单条记录

GetListByCondition 根据Condition条件取单条记录

Add 插入或修改单条记录

Delete 删除记录

Insert 插入单条记录

BatchInsert 批量插入多条记录

BatchUpdate 批量更新多条记录

Update 更新单条记录

例如:

Communication_MFC_re_UnitStatus_GetList

DataAnalysis_NIDC_tb_PersonGroup_Delete

DataAnalysis_MFC_tb_CrimeOnEsc_Add

9. 触发器命名,

TR_<TableName>[_<Operation>]

如果只是针对单个操作类型的触发器,则要求说明操作类型:

例如:

TR_MFC_tb_Argot

TR_MFC_tb_Argot_Insert

10. 索引命名

IX_<TableName>_<ColumnName>

例如:

IX_MFC_log_Customer_EndTime

11. 主键

PK_<TableName>。

TableName同表命名规则

例如

PK_MFC_Log_Customer

12. 外键

FK_<TableName1>_<TableName2>

例如:

FK_MFC_log_Customer_MFC_tb_Unit

13. 缺省值

DF_<TableName>_<ColumnName>

例如:

DF_MFC_log_Customer_UserName

14. 视图的命名用Pascal标志法,和表一致;

<SystemName>_view_<Name>

视图的命名除中间用’view’链接以外与表一致

例如:

MFC_view_Strategy

15. 函数的命名

采用存储过程同样的命名规则

16. 其他数据库对象命名规则

其他数据库对象,比如约定、队列、服务、路由等采用表名相同的命名法。

17. 其他数据库可编程性对象命名

其他数据库可编程性对象采用存储过程相同的命名法。

18. 数据库保留字

不要使用数据库保留字,给数据对象命名;

19. 禁止使用空格

在数据库对象命名时,禁止使用空格。

第二章 常用数据类型

下面是我们再数据库设计中常用的几种数据类型:

数据类型

类型

描 述

int

整型

int 数据类型可以存储从- 231(-2147483648)到231(2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节

bigint

整型

从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。这种数据类型在数据库里占用8 字节空间

numeric

精确数值型

numeric数据类型与decimal 型相同(要求在存储过程或其他语句中必须表名数据长度及精度)

datetime

日期时间型

datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据, 精确到三百分之一秒或3.33毫秒

cursor

特殊数据型

cursor 数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用

Uniqueidentifier

特殊数据型

Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列

char

字符型

char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符

varchar

字符型

varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度

nvarchar

统一编码字符型

nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍

Nvarchar(max)

统一编码字符型

最多为2301(1?073?741?823)Unicode字符,占用2×字符数+2字节的空间

Varchar(max)

字符型

最多为2311(2?147?483?647)字符,一般用来定义XML的入参,每字符1字节+2字节额外开销

varbinary(max)

二进制数据类型

可变长度二进制数据。 n 的取值范围为 1 至 8,000。 max 指示最大存储大小是 2^31-1 个字节。 存储大小为所输入数据的实际长度 + 2 个字节。

第三章 数据库设计规范

1. 三范式

数据库设计中应尽可能遵守三范式。所谓三范式即:

读书人网 >其他数据库

热点推荐