自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET Web開發(fā)框架之六 數(shù)據(jù)庫文檔方法

開發(fā) 后端
隨著項目的進度推進,數(shù)據(jù)庫的表越來越多,字段也頻繁的變更。如何對這些變更作出文檔說明,既要方便,又要有可維護性。比如,可以為所有的表創(chuàng)建WORD文檔來說明,各個表的含義和字段的意義。

隨著項目的進度推進,數(shù)據(jù)庫的表越來越多,字段也頻繁的變更。如何對這些變更作出文檔說明,既要方便,又要有可維護性。比如,可以為所有的表創(chuàng)建WORD文檔來說明,各個表的含義和字段的意義,但是如果數(shù)據(jù)庫表或字段變更頻繁的話,更新WORD文檔是個相對麻煩的工作。在博客園中曾經(jīng)有技術(shù)人員專門創(chuàng)建文檔生成工具,以程序的方式直接生成WORD文檔,使為數(shù)據(jù)庫創(chuàng)建文檔的可行性提高很多,輕松點擊鼠標就可以做完的工作,非常容易。

SQL Doc

推薦給各位的數(shù)據(jù)庫文檔工具箱中,排名第一的是RedGate公司的SQL Doc。

image

創(chuàng)建新項目,連接數(shù)據(jù)庫服務器,選擇數(shù)據(jù)庫,在右邊的窗格中為表或它的字段創(chuàng)建描述信息。

使用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'記錄編號' 

它使用附加屬性的方式,為表或字段創(chuàng)建備注信息,直接存放在數(shù)據(jù)庫中。

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

image

方便的地方不僅僅在這里,當你右鍵點擊表,以Script Table As生成表的創(chuàng)建腳本時,它的最后一行,會添加屬性

  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 

到目前為止,這是我發(fā)現(xiàn)的最優(yōu)秀的數(shù)據(jù)庫文檔工具。新的2.1版本支持SQL Server 2008 R2。

Management Table Description

在沒有找到SQL Doc之前,我一直尋找一種方法能為數(shù)據(jù)庫創(chuàng)建文檔,又便于維護。經(jīng)過摸索,自己創(chuàng)建了如下工具,以維護數(shù)據(jù)庫文檔。

image

這個工具的原理,和上面的SQL Doc一樣,也是運用擴展屬性。關(guān)鍵部分的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出現(xiàn)大量不是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是對字段添加擴展屬性,下面的兩行分別用于讀取。整個工具,最關(guān)鍵的部分也是這里,這些是我用查詢跟蹤器,跟蹤出來的。盡管可以直接用SQL Server Management Studio直接完成這個工作,但是沒有這個小工具直觀,把這些做成工具,方便維護。

Custom Table 自定義表

這種方法比較保守,也很穩(wěn)定。在數(shù)據(jù)庫中專門創(chuàng)建數(shù)據(jù)表,來存放表及其字段的含義,再設計工具對此進行更新和維護。以金蝶系統(tǒng)為例子,它就是應用這個方法。

要查詢表及其字段的文檔信息,需要執(zhí)行如下的語句

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

--要查具體的某張表描述,執(zhí)行該語句:

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

clip_image001 

此外,金碟的輔助工具,查看表描述信息,也做的簡單實用。

image

金碟的產(chǎn)品線眾多,不同產(chǎn)品數(shù)據(jù)表的用途會有差異,比如這里的適用于服裝鞋帽版。

這種方法簡單直觀,直接在表中存放描述信息。需要提供更新工具,讀取查看工具,如果能導出成WORD/EXCEL那就更加完美了。

 

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

 

責任編輯:張偉 來源: James Li的博客
相關(guān)推薦

2012-09-25 09:31:58

ASP.NETC#Web

2012-09-26 09:46:29

ASP.NETWeb框架

2012-09-18 11:02:10

ASP.NETC#Web Forms

2012-10-08 14:01:54

ASP.NETWebC

2009-08-11 12:52:05

ASP.NET數(shù)據(jù)庫程

2012-09-20 09:54:12

ASP.NETWebC

2012-09-19 14:10:58

ASP.NETWebC

2009-07-28 14:16:31

ASP.NET與MyS

2012-09-18 14:32:08

ASP.NETC#

2009-08-07 17:41:07

ASP.NET Web

2009-02-23 15:20:03

SQL Server數(shù)據(jù)庫ASP.NET

2009-07-31 09:57:47

ASP.NET數(shù)據(jù)庫緩

2009-07-28 17:36:21

ASP.NET數(shù)據(jù)庫連

2009-07-24 16:05:05

調(diào)用Web ServiASP.NET

2009-07-29 09:38:06

Web開發(fā)ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-31 17:07:40

ASP.NET數(shù)據(jù)庫連

2009-07-29 09:12:31

ASP.NET數(shù)據(jù)庫連

2009-07-28 17:30:55

ASP.NET 2.0

2009-07-24 10:06:33

數(shù)據(jù)庫字符串ASP.NET
點贊
收藏

51CTO技術(shù)棧公眾號