网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET Web开发框架之六 数据库文档方法

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05

随着项目的进度推进,数据库的表越来越多,字段也频繁的变更。如何对这些变更作出文档说明,既要方便,又要有可维护性。比如,可以为所有的表创建WORD文档来说明,各个表的含义和字段的意义,但是如果数据库表或字段变更频繁的话,更新WORD文档是个相对麻烦的工作。在博客园中曾经有技术人员专门创建文档生成工具,以程序的方式直接生成WORD文档,使为数据库创建文档的可行性提高很多,轻松点击鼠标就可以做完的工作,非常容易。

SQL Doc

推荐给各位的数据库文档工具箱中,排名第一的是RedGate公司的SQL Doc。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" alt="image" border="0" src="/uploadfile/201301/5/9D152640612.png" />

创建新项目,连接数据库服务器,选择数据库,在右边的窗格中为表或它的字段创建描述信息。

使用SQL Profiler查询跟踪器,检测到它进行如下的SQL语句

  1. exec sp_executesql N''if (SELECT count(*)   
  2. FROM ::fn_listextendedproperty (@propertyName, @myLevel0Type, @myLevel0Name, @myLevel1Type, @myLevel1Name, @myLevel2Type, @myLevel2Name))> 0   
  3. begin   
  4.     EXEC sp_updateextendedproperty  @propertyName, @propertyValue, @myLevel0Type, @myLevel0Name, @myLevel1Type, @myLevel1Name, @myLevel2Type, @myLevel2Name;   
  5. end   
  6. else   
  7. begin   
  8.     EXEC sp_addextendedproperty @propertyName, @propertyValue, @myLevel0Type, @myLevel0Name, @myLevel1Type, @myLevel1Name, @myLevel2Type, @myLevel2Name;   
  9. end'',N''@propertyName nvarchar(14),@myLevel0Type nvarchar(6),@myLevel0Name nvarchar(3),@myLevel1Type nvarchar(5),@myLevel1Name nvarchar(10),@myLevel2Type nvarchar(6),@myLevel2Name nvarchar(6),@propertyValue nvarchar(4)'',@propertyName=N''MS_Description'',@myLevel0Type=N''SCHEMA'',@myLevel0Name=N''dbo'',@myLevel1Type=N''TABLE'',@myLevel1Name=N''ADBBSYSMSG'',@myLevel2Type=N''COLUMN'',@myLevel2Name=N''RECNUM'',@propertyValue=N''记录编号'' 

它使用附加属性的方式,为表或字段创建备注信息,直接存放在数据库中。

回到SQL Server Management Studio中查看,看到它直接附加在字段的扩展属性中。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" alt="image" border="0" src="/uploadfile/201301/5/79152640314.png" />

方便的地方不仅仅在这里,当你右键点击表,以Script Table As生成表的创建脚本时,它的最后一行,会添加属性

  1. CREATE TABLE [dbo].[ADBBSYSMSG](  
  2.     [RECNUM] [int] IDENTITY(1,1) NOT NULL,  
  3.     [SYSMSG_ID] [nvarchar](16) NOT NULL,  
  4.     [MESSAGE] [nvarchar](255) NOT NULL,  
  5.     [CREATED_DATE] [datetime] NOT NULL,  
  6.     [CREATED_BY] [nvarchar](10) NOT NULL,  
  7.     [REVISED_DATE] [datetime] NOT NULL,  
  8.     [REVISED_BY] [nvarchar](10) NOT NULL,  
  9.  CONSTRAINT [PK_ADBBSYSMSG] PRIMARY KEY CLUSTERED   
  10. (  
  11.     [SYSMSG_ID] ASC 
  12. )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 70) ON [PRIMARY]  
  13. ON [PRIMARY]  
  14. GO  
  15. EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N''记录编号'' , @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N''ADBBSYSMSG'', @level2type=N''COLUMN'',@level2name=N''RECNUM'' 
  16. GO 

到目前为止,这是我发现的最优秀的数据库文档工具。新的2.1版本支持SQL Server 2008 R2。

Management Table Description

在没有找到SQL Doc之前,我一直寻找一种方法能为数据库创建文档,又便于维护。经过摸索,自己创建了如下工具,以维护数据库文档。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" alt="image" border="0" src="/uploadfile/201301/5/E3152640615.png" />

这个工具的原理,和上面的SQL Doc一样,也是运用扩展属性。关键部分的C#代码如下所示

  1.    string tablesql = @"  if(select count(1) from fn_listextendedproperty(N''MS_Description''," +  
  2.   "   N''SCHEMA'',N''{2}'',N''TABLE'',N''{0}'',NULL,NULL))>0 " +  
  3.  "    EXEC sp_updateextendedproperty N''MS_Description'',N''{1}'', " +  
  4.  "    N''SCHEMA'',N''{2}'', N''TABLE'',N''{0}'',NULL,NULL  " +  
  5.  "   ELSE   " +  
  6. "   EXEC sp_addextendedproperty  N''MS_Description'',N''{1}'', " +  
  7. "  N''SCHEMA'',N''{2}'',N''TABLE'',N''{0}''   ";  
  8.  
  9.        //更新字段的描述 {2} 默认是dbo,但是AdventureWorks出现大量不是dbo的情况  
  10.        string fieldSql=@"if(select count(1) from fn_listextendedproperty(N''MS_Description'',N''SCHEMA'', "+  
  11.       " N''{3}'',N''TABLE'',N''{0}'',N''COLUMN'', N''{1}''))>0   "+  
  12.       " EXEC sp_updateextendedproperty N''MS_Description'',N''{2}'',  "+  
  13.       "    N''SCHEMA'',N''{3}'', N''TABLE'',N''{0}'',N''COLUMN'', N''{1}''  "+  
  14.       "  ELSE   "+  
  15.       "  EXEC sp_addextendedproperty  N''MS_Description'',N''{2}'', "+  
  16.        "      N''SCHEMA'',N''{3}'',N''TABLE'',N''{0}'',N''COLUMN'', N''{1}''   ";  
  17.  
  18.        //读取表的描述  
  19.        string getTableDescription = " select value from  " +  
  20.        " fn_listextendedproperty(N''MS_Description'',N''SCHEMA'',N''{1}'',N''TABLE''," +  
  21.        " N''{0}'',NULL, NULL)  ";  
  22.  
  23.        //读取字段的描述  
  24.        string getFieldDescription=" select objname,value from  "+  
  25.        " fn_listextendedproperty(N''MS_Description'',N''SCHEMA'',N''{1}'',N''TABLE'',"+  
  26.        " N''{0}'',N''COLUMN'', NULL)  "

tableSql是对表进行注释,添加扩展属性,fieldSql是对字段添加扩展属性,下面的两行分别用于读取。整个工具,最关键的部分也是这里,这些是我用查询跟踪器,跟踪出来的。尽管可以直接用SQL Server Management Studio直接完成这个工作,但是没有这个小工具直观,把这些做成工具,方便维护。

Custom Table 自定义表

这种方法比较保守,也很稳定。在数据库中专门创建数据表,来存放表及其字段的含义,再设计工具对此进行更新和维护。以金蝶系统为例子,它就是应用这个方法。

要查询表及其字段的文档信息,需要执行如下的语句

  1. select * from t_tabledescription   
  2. select * from t_fielddescription  

--要查具体的某张表描述,执行该语句:

  1. select * from t_fielddescription where FTableID=(select FTableID from t_tabledescription where FTableName=''t_Item'')  

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="clip_image001" alt="clip_image001" border="0" src="/uploadfile/201301/5/0F152640631.jpg" /> 

此外,金碟的辅助工具,查看表描述信息,也做的简单实用。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" alt="image" border="0" src="/uploadfile/201301/5/96152640918.png" />

金碟的产品线众多,不同产品数据表的用途会有差异,比如这里的适用于服装鞋帽版。

这种方法简单直观,直接在表中存放描述信息。需要提供更新工具,读取查看工具,如果能导出成WORD/EXCEL那就更加完美了。

原文链接:http://www.cnblogs.com/JamesLi2015/archive/2012/09/29/2708000.html

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号