给SQL对象命名

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
本文译自Builder.com,未经许可请勿转载

匈牙利符号(命名系统)会在给所有对象命名的时候在前面加上一个前缀,用来表示正在被命名的对象的类型。微软在某种程度上将匈牙利符号用在SQL服务器的很多对象上:系统存储过程都带有前缀“sp_”;扩展存储过程带有前缀“xp_”;而函数带有前缀“fn_”。根据微软的命名方式,很多开发人员也用类似的方式给他们的对象命名。我反对使用这种利用前缀来命名的方式,主要原因是,它们会掩盖掉它们是由微软编写的还是由我们团队编写的这一事实。

但是,就目前而言,我们先把前缀的问题放到一边;更重要得多的事情是名称的其他部分。在这里我发现了两种派系的命名方法:动作对象(Action-Object)和对象动作(Object-Action)。下面是一些例子:

动作对象
DeleteClient
GetClientInfo
InsertClient
UpdateClientInfo

对象动作
ClientDelete
ClientInsert
ClientSelect
ClientUpdate

动作对象命名法所存在的主要问题是排序。为了找到和任何给定表格相关的所有存储类型,你必须要用到至少字母表里的四个字母,然后才能找到包含有“Client”的对象。形成对比的是,对象动作命名法把所有和Clients表格相关的东西都集中到一起。这种命名方式带来了多种重要的优势,包括:

  • 开发人员只用看看给定的存储过程要做什么,就立即能够知道需要怎么给它们命名。 对于更加复杂的过程,开发人员很容易就能够看到什么可以被重新用到新任务里。 维护人员会直观地知道要在哪里解决不易察觉的问题。 新雇佣的人员能够在很短的时间内就适应这种命名方式。

查看表稍稍有点不同,因为有些查看表是可以更新的,而有的则不行。这种不同也应该要体现在对象的名称里。

  • 所有的可更新查看表都应该标上“vup”。 所有的只读查看表都应该标上“vro”。

函数也稍稍有点不同。由于SQL服务器同时提供标量和表格函数,所以我采用了下面的命名方式:

  • 标量函数应该被标示为“fns”。 表格函数应该被标示为“fnt”。

现在让我们回到前缀的问题。在我看来,这种方式会影响信号增加噪声。我希望和表格X相关的所有对象都以X开头。我使用了匈牙利符号,但是我将其标记用作后缀而非前缀,因为它们有利于了直观的排序;所有和Clients表格相关的东西都被排在一起。想想下面这些名称,并猜猜它们会进行什么样的动作:

CustomerSelect_fnt——会返回表格的函数
CustomerBalance_fns——会返回标量值的函数
CustomerUpdate_ap——更新数据行的应用过程
OrdersSelectByCustomer_vro——通过Customer来选择Orders的只读查看表

(命名)方式,就像语言一样,不是一成不变的。的。规则来来往往,被新的规则取代。我知道我的命名方案不是完美的,但是我正在对它进行研究。

我期望收到对我这种(命名)方式的激励,以及,如果可能的话,建设性的替换方案。请给编辑发送电子邮件,发表你对这种方法的看法。


本文作者:Arthur Fuller开发数据库应用程序已经有20年了。他的专业经验包括Access ADPs、微软SQL 2000、MySQL和.NET。


责任编辑:"mailto:li_ning@zdnet.com.cn?subject=http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39201800,00.htm ">李宁

欢迎"http://forums.zdnet.com.cn/cgi-bin/leoboard.cgi" target=new>评论或"mailto:li_ning@zdnet.com.cn?subject=投稿:(稿件题目)">投稿 <script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭