當前位置:成語大全網 - 新華字典 - 怎麽生成數據字典

怎麽生成數據字典

 數據字典是關於數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合。

數據庫數據字典是壹組表和視圖結構。它們存放在SYSTEM表空間中。

數據庫數據字典不僅是每個數據庫的中心。而且對每個用戶也是非常重要的信息。用戶可以用SQL語句訪問數據庫數據字典。

生成數據庫參考代碼如下:

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Carbe>

-- Create date: <2014-09-19>

-- Description: <生成數據庫字典>

-- =============================================

CREATE PROCEDURE [dbo].[CreateDatabaseDictionarie]

AS

BEGIN

DECLARE @TableName nvarchar(35),@htmls varchar(8000)

DECLARE @字段名稱 VARCHAR(200)

DECLARE @類型 VARCHAR(200)

DECLARE @長度 VARCHAR(200)

DECLARE @數值精度 VARCHAR(200)

DECLARE @小數位數 VARCHAR(200)

DECLARE @默認值 VARCHAR(200)

DECLARE @允許為空 VARCHAR(200)

DECLARE @外鍵 VARCHAR(200)

DECLARE @主鍵 VARCHAR(200)

DECLARE @描述 VARCHAR(200)

SET NOCOUNT ON;

DECLARE Tbls CURSOR

FOR

Select distinct Table_name

FROM INFORMATION_SCHEMA.COLUMNS

order by Table_name

OPEN Tbls

PRINT '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "str.definition AS VARCHAR(20)),'') + '</td>',

' <td>' + CAST(clmns.is_nullable AS VARCHAR(20)) + '</td>' ,

' <td>' + CAST(clmns.is_computed AS VARCHAR(20)) + '</td>' ,

' <td>' + CAST(clmns.is_identity AS VARCHAR(20)) + '</td>' ,

' <td>' + ISNULL(CAST(exprop.value AS VARCHAR(500)),'') + '</td>'

FROM sys.tables AS tbl

INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tbl.object_id

LEFT OUTER JOIN sys.indexes AS idx ON idx.object_id = clmns.object_id AND 1 =idx.is_primary_key

LEFT OUTER JOIN sys.index_columns AS idxcol ON idxcol.index_id = idx.index_id AND idxcol.column_id = clmns.column_id AND idxcol.object_id = clmns.object_id AND 0 = idxcol.is_included_column

LEFT OUTER JOIN sys.types AS udt ON udt.user_type_id = clmns.user_type_id

LEFT OUTER JOIN sys.types AS typ ON typ.user_type_id = clmns.system_type_id AND typ.user_type_id = typ.system_type_id

LEFT JOIN sys.default_constraints AS cnstr ON cnstr.object_id=clmns.default_object_id

LEFT OUTER JOIN sys.extended_properties exprop ON exprop.major_id = clmns.object_id AND exprop.minor_id = clmns.column_id AND exprop.name = 'MS_Description'

WHERE (tbl.name = @TableName and exprop.class = 1) --I don't wand to include comments on indexes

ORDER BY clmns.column_id ASC

OPEN TRows

FETCH NEXT FROM TRows INTO @字段名稱,@類型,@長度,@數值精度,@小數位數,@默認值,@允許為空,@外鍵,@主鍵,@描述

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT ' <tr>'

PRINT @字段名稱

PRINT @類型

PRINT @長度

PRINT @數值精度

PRINT @小數位數

PRINT @默認值

PRINT @允許為空

PRINT @外鍵

PRINT @主鍵

PRINT @描述

PRINT ' </tr>'

FETCH NEXT FROM TRows INTO @字段名稱,@類型,@長度,@數值精度,@小數位數,@默認值,@允許為空,@外鍵,@主鍵,@描述

END

CLOSE TRows

DEALLOCATE TRows

PRINT ' </table>'

PRINT ' </div>'

FETCH NEXT FROM Tbls INTO @TableName

END

PRINT ' </body>'

PRINT '</html>'

CLOSE Tbls

DEALLOCATE Tbls

END