DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 851|回复: 0
打印 上一主题 下一主题

[待整理] Microsoft SQL Server之数据库存档

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 14:38:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本文将为大家讲述如何注释自己的SQL Server,这些原理适用于所有的SQL Server版本,虽然SQL Server 2005及更高的版本包含了一些增强数据存档功能的巧妙设置。本文大部分涉及的原理也同样适用于其他的关系数据库,如Oracle、 MySQL、Microsoft Access和PostgreSQL等。

  数据库命名规范

  如果你是从头开始设计一个数据库,那遵循逻辑数据实体命名规范将是明智之举。下面为您提供在新数据库中给对象命名时会用到的一些建议。

  一般命名规范

  如果可以,数据库名称应当只使用文字和数据这两种字符。避免使用连字号,因为之后会给编写某些T-SQL查询命令造成困难。

  如果可能,尽量避免在数据库实例中使用空格符,特别是为表和列命名时。虽然如果用方括号括起来的话,T-SQL还是可以辨认这些实体,不过在某些情况下也有可能导致混淆和代码错误。此外,还要尽量避免在表名和列名中使用T-SQL的保留词,例如month、year和user等。

  表命名规范

  当我们为表命名时,应当使用与该表存储的数据相关的名称。例如,存储企业员工数据的表可以命名为employees,注意这里使用的是名词的复数形式,因为一个表里很可能存储一个以上员工信息。

  有一些程序开发人员会为表名附上像t_这样的前缀。如果这些表是引用了应用程序的源代码而来,那么这些前缀就非常有用,这样能够使软件开发团队一眼就看出来这是一个表,而不是一个视图或其他被引用的实体。

  给表名附上与其功能相关的前缀(如StudentID_)可以帮助我们把表分门别类。SQL Server 2005引入了模式的概念,可以为表分类。例如StudentsEnrollments数据库中包含了StudentResources模式,而相关的表(StudentID、StudentAddress、StudentCredits等)就会在SQL Server 管理工作室表列中的这个模式下全部列出。

  外键命名规范

  如果能在一个数据表中识别出哪些是外键(foreign keys)会非常有用,所以在为外键命名的时候,可以添加一些类似于fk_的前缀,这样可以更直接的从表的字段中看出表的关系。

  存储过程命名规范

  根据用途来为存储过程命名是很有意义的。例如,GetUserID、InsertDateOfBirth、UpdateEnrollInfo等等,这样对于存储过程的用途就一目了然了。

  有时候,可以适当添加后缀来表示存储过程的输入参数。例如GetUserIDByUserNameAndPassword这名称表示该存储过程会通过一个用户名和密码作为输入参数返回用户ID。这可以用来区分功能相似但参数设置不同的存储过程,还可以添加其他相关的存储过程,例如GetUserIDByGUID和GetUserIDByApplicantID。这种命名规范的缺陷就是存储过程的名字会变得很长。

  一些开发人员会用特定的标签来为所有的存储程序添加前缀。其中很流行的做法是为存储程序名添加sp_前缀。不过,这里并不推荐这种做法,原因有二。首先,这对数据库性能有轻微的影响,因为SQL Server会先在主数据库中查找所有带有这个前缀的存储过程,虽然这会性能的影响很小,不过在高级和企业系统中,影响可能会放大。其次,由于微软在设计的时候也为系统的存储过程使用了这个前缀,所以始终存在着这种可能,那就是你为自己的存储过程起的名字和某个系统存储过程的名字相同。而且,SQL Server未来发布的版本中可能会引入一个新的系统存储过程,而这个过程与你现有的用户存储过程的名字相同。

  如果你实在想要为自己的存储过程添加前缀,那么建议你使用usp_或sproc_这样的前缀。同样的,你可以为某个函数名加上func_这样的前缀,特别是在从应用程序源代码调用存储程序的时候非常有用,因为这让软件开发团队清楚的了解到这是在调用一个存储过程。

  SQL存储过程的存档

  千万不要忘记把存储过程和函数的T-SQL代码存档。由于简单的查询代码应该是自注释的,而存档将对大型的查询代码非常有用。而存储过程的标准化标头也非常有用,至少能够说明该存储过程的功能。如果手头上没有任何源控制系统,在标头中包括日志变化的内容还能够帮助我们追踪变化的发生。

  某存储过程的标头示例如下:

        以下是引用片段:
  /*
  Description: Gets a user's UserID
  Author: Brett Burridge
  Create Date: 11/11/2007
  Param: @UserName = User's login name
  Param: @Password = User's password
  Return: UserID of the user
  Modified Date: 01/01/2008
  Modification: Added to check to see if their account has been suspended
  */


  注意为存储过程添加注释并不会对性能造成任何影响。

  数据库对象描述

  能够对数据库对象进行描述在某种程度上意味着能够创建自我存档的数据库。

  微软早在SQL Server 7.0就引入了一个有用的功能,就是通过表设计窗口为某个表添加描述(Description)。SQL Server 2000通过引入扩展属性(extended properties)加强了这一功能。然而,SQL Server 2000的企业管理器限制了允许属性编辑的功能。不过在 SQL Server 2005中的SQL Server管理工作室GUI允许对扩展属性进行编辑。数据库中的大部分对象(如表、列、视图、函数、存储过程和数据库本身)都具有可编辑的扩展属性。默认状态下,只有单一的扩展属性MS_Description。而且,虽然你可以利用MS_Description扩展属性来为对象添加描述,但如果没有第三方加载工具,就算添加了,用处也并不大。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 08:23 , 耗时 0.087895 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表