VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之命名协定

命名协定

5.1 数据库命名原则及版本控制

5.1.1数据库命名原则

数据库命名要遵从以下命名原则:
表意性原则:数据库命名本着表意性原则,即命名应尽量反映存储/action/view/column的数据内容。
长名原则:很少使用或者不使用缩写,适用于DB命名之外的任一对象
数目最少化原则:数据库对象应该尽量满足数据最小化原则,也就是数据库数目,存储过程,视图等数量最小化。

5.1.2 数据库版本控制

当由于多个版本的应用系统同时存在或者是其它特殊原因而使用完成相似的功能的对象存在同时存在时,使用版本控制:版本号在对象名的后面加上[_v1]
如:
    Up_IM_DailyUsageStatsUpdate_v2
       Up_IM_CustomerGetUsingLastName_v2
 

5.2 Server/命名实例的命名

基于Domain命名, DOMAIN 的粒度,可分为三级 ,分别是Server级别,Database级别和表的前缀级别。此为第一级别。
 
1.              ONLINE PRODUCTION SERVER
NEWSQL
NEWSQL2
EHISSQL
          WAREHOUSE PRODUCTION SERVER
S3SQL01
S4SQL01
S7SQL01
S6SQL01
 

5.3 数据库命名

数据库命名应当遵从上面所提及到的协定,包括没有特殊的字符,使用文字数据字式字符……..,项目代码命名不应该同样被数据库使用.数据库名字应该唯一以避免冲突等.以Domain来标识, 拆分DATABASE,基于大的逻辑范畴,如operation 范畴以及部门类别,另外:其它与部门相关的DATABASE 可以放到相关的SERVER 下。
       数据库数目最少化原则
       数据设置尽可能MERGER原则
        peration database AND Dept level Database set up rules
        拆分DATABASE,基于大的逻辑范畴,如operation 范畴以及部门类别
       其它与部门相关的DATABASE 可以放到相关的SERVER 下。
       下面为与OPEARATION 相关的DATABASE示例:
如: 下面为与OPEARATION 相关的DATABASE:
 
                      ItemProfile
                      Inventory
                      Codecenter
                      CustomerProfile
                      SalesOrder
                      Accounting
                      Sevice(RAM)
                       eCommerce
                      SupplerChainManagement
                      DropShip                              
                      SerialNumber
                      WorkFlow
                      ShippingCarrier
                      WarehouseManagment
                      HumanResource
       其它与部门相关的DATABASE 可以放到相关的SERVER 下。
                       MKT
                       Pm
                       Mis
                       CUSTOMER SVR
                       ADMIN
                       ACCOUNTING
2.       INTERNAL DEPT DATABASE SERVER

5.4 数据库对象—表,视图,列名,约束,规则,默认值

数据库对象应该被清晰的命名,要确认不存在歧义。数据库对象的名字应该包括自己尽可能多的信息,并要详细的说明与之相对应的项目文档.选择合适的命名空间是一个很让人困惑的问题(比如我们不能从一个存储过程的命名上看到是哪个项目在使用这个对象),命名名字唯一的在数据库级别标识自己,无论在哪儿使用它,请确保在一个项目中命名方法的一致.在一个小的上下文看来很清晰的对象在一个大的上下文中可能就会丢失他的含义.节省击键次数永远不能用来作选择名字的标准.
下面供述了数据库对象的命名协定,所有的数据库对象命名都应该遵循下面协定.
       如果不是长度限制,缩写应该被避免.当使用缩写时应该遵从下面的缩写规范的规则.缩写应该在项目范围内保持一致并被存档.
       不要使用特殊的字符;对文字数字式字符加以限制.
       在命名时为了更好的标识表与应用程序之间的关系,我们要使用“[function name]|[main module name]_表名”的形式.
比如: Newegg_customer
         Blocked_customer
         Abs_customer
EDI_....
MDF_....
 
       当要修改一个对象的架构时,首先要确认与之存在依存关系的对象不受影响.要查看与之存在依存关系的对象,可以在企业管理器中”右键相应对象”->”ALL TASKS”->”DISPLAY DEPENDENCIES”来查看或者使用系统存储过程SP_DEPENDS来查看:
EXEC SP_DEPENDS 'dbo.GetCategories’        
       当底层表结构更改时,视图都应该被重新创建.这个应该特别被注意,特别是视图是使用如”SELECT * FROM table”时.
       强烈建议任何时候都不要使用类似于”SELECT * FROM”的语句.
       当在不存在事务上下文中或者是完整性要求不是很高时,在SELECT语句中使用WITH NOLOCK.
 

5.5 缩写规范

由于长度的限制而需要使用缩写时,应当遵从以下的规则:
        以分类单词作为名字的起始.
       缩写的第一个字符应该与单词的第一个字母相同,比如,SFER就不是Transfer的有效缩写.
       Identify and abbreviate the root word, usually the shortest form of the word.
       缩写时省略元音字符,除非特殊原因,重复字符中将被省略一个。
       缩写不应该暗示到其它的单词(比如:单词“parent”可能被缩写为”PRNT”,但是“PRNT”很容易让人想起单词“PRINT”,一个比较好的缩写就是使用”PSRNT”)
       相似单词的缩写应该一致,比如如果Charge缩写为CHRG,则change应该被缩写为CHNG.
       当组合词或者短语被广泛使用时,并且大多人都能识别出这些缩写时,应该使用他们的首字母缩写,因为大多人都能识别出这些缩写。
 

5.6 列名

列名应该基于逻辑设计中的属性名,
修饰符:          可选,它以角色名而被大家所熟知(PrimaryPartID, AlternatePartID)
主词(primary word):    除非是主键,否则不需要。因为表名已经限定列名,所以不必要冗余的加入此信息。
限定词:           可选;附加的描述信息,用来帮助我们更明确的了解数据的意义(InventoryOnHandQuantity, CustomerLastName)
分类词:         需要;用来标识数据的类型,一般列名的最后一个单词(PartID, CountryCode, CustomerName, InvoiceAmount).  下面是一些标准的分类词:
CLASSIFIER                       DESCRIPTION
Address                             Street or mailing address data
Age                                   Chronological age in years
Average                             A numerical average (self-explanatory)
Amount                             Currency amount -- always is money
Code                                 Code from a specific domain of coded values
Count                                Count of something -- years, payments, etc.
Date                                  Calendar date
Datetime                            Date including time
Day                                   Day of month (1 - 31)
Description                       Brief narrative description (usually of a code)
Duration                            Span of time, whether days, months, years, etc.
Identifier                            Unique identifier for something
Image                                A graphic image, such as a bitmap
Indicator                            A boolean indicator
Measurement                      Measurement of physical dimensions
Month                                Month of year
Name                                 Formal name of something
Number                              Number (self-explanatory)
Percent                              Number expressed as a percent
Quantity                             a number of things
Rate                                  Number expressed as a rate
Ratio                                 A proportion, or expression of relationship in quantity, size, amount, etc. between two things
Text                                   Freeform textual information
Time                                  Time of day
Weight                              Weight measurement
Year                                  Calendar year or julian year number
 
下面的ERwin diagram 示例推荐的命名协定:
 

5.7 存储过程命名

存储过程命名使用上面描述的表,视图和列的命名一样的规则,包括不要使用特殊的字符,大写首词,不要使用组名(比如,myProc1),不要使用系统保留的“sp_”前缀(比如可以使用up_),使用文字数据式字符,为了使存储过程名字更有意义,名字中应包括“对象”+“动作”的方式 。
 存储过程命名示例:
Up_IM_CustomerGet(IM 标识itemmaintain系统使用)
Up_IM_LoginValidate
Up_IM_RegionDataRotate
Up_IM_DailyUsageStatsUpdate
Up_IM_CustomerGetUsingLastName
 
下面是可选的命名规则,使用“动作”+“对象”的方式:
Up_IM_BuildSalesPerspectives
Up_IM_InsertSellInFileAudit
 

5.8 游标命名

游标应该以下面的标准来命名:
表名或者对象名字{使用此游标的对象名字}+Cursor
例如:
FiscalMonthCURSOR
EmployeeListCURSOR
 

5.9 触发器命名

触发器命名应该遵从以下的协定:
       表名+ { Ins | Upd | Del}
Ins标识此触发器为insert触发器,UPD标识此触发器为update触发器,同理DEL被用来标识delete触发器:
触发器示例:
CustomerIns
ProductCodeDel
BusinessUnitUpd
 

5.10 索引命名

 索引的命名应该在表空间内唯一,当查看执行计划时可以有效的对索引进行识别..
       [IX][类型(U标识Unique,C标识Clustered)][列名(s)]
       当对单列进行索引时,你可能需要使用列的全名.
       当对多列进行索引时,要使用你所能想到的最优的缩写.
       当对一个表的所有列进行索引时,使用ALL单词.
       在多列名中使用下划线以增加可读性.
       不要为索引加上序列号
例如:
IXUC_SalesId   (clustered unique)
IXU_SalesDate (unique)
IX_SalesId_MonId_QtrId_WkId (composite index)
IX_MonId_YrId (composite index)
IXC_SalesId   (clustered not unique)
 

5.11 主键和外键命名

主键:对主键进行命名应该遵从以下标准:
      PK_表名
例如,主键名
       PK_Customer
外键:对外键进行命名时应该遵从以下标准:
       ChildTableName_FK_ParentTableName
外键名字示例:
       Customer_FK_Country
       Sales_FK_Customer
 

5.12 Check约束命名

Check约束的命名遵从以下的约定:
       表名CK{数字}
数字被用来区别同一表中的其它Check约束.
Check约束命名示例:
       CustomerCK1
 

5.13 源文件命名

文件命名应该使用和数据库对象命名相同的规则-包括没有特殊字符,限制名字以避免歧义,大写每个单词的首字符,所有的包括SQL脚本的文件应该以.SQL为结束字符,而不是.SP,.TRG等。可执行的批处理文件应该是以.CMD为扩展名.

5.14 Job的命名

Job命名使用以下方式,其中在” Job名”中要标识出此JOB的功能:
Job_[应用系统名_][数据库名_]Job名/ [storce procedure名]
For Example:
Job_IM_IMDB_backup

5.15 用户自定义函数命名

       满足NESE命名的基本原则
       用户定义的函数使用fn来标识
       名字中应包括“对象”+“动作”的方式
       For example:
Un_IM_CustomerGet(IM 标识itemmaintain系统使用)

5.16 用户自定义数据类型命名

       满足NESE命名的基本原则
       用户定义的函数使用Udt来标识
       用户定义的数据类型
如:
        UdtPhone
        UdtBirthday
        UdtAge

5.17 复制命名

在满足NESE命名的基本原则利用Rp来标识复制
       Rp_[DBname]复制名{_[Trn]|[Mrg]|[Snp]}
      [Trn]:标识为Transactional Publication
      [Mrg]:Merge Publication
      [Snp]:Snapshot publication
如:
     Rp_Foodmart_Trn

相关教程