資料字典是一個預留空間,一個資料庫,這是用來儲存資訊資料庫本身。
資料字典可能包含的資訊,例如:
資料庫設計資料
儲存的SQL程式
使用者權限
使用者統計
資料庫的過程中的資訊
資料庫增長統計
資料庫效能統計
資料字典則是系統中各類資料描述的集合,是進行詳細的資料收集和資料分析所獲得的主要成果.
資料字典通常包括資料項目/資料結構/資料流/資料存放區和處理過程五個部分.
資料字典是關於資料的資訊的集合,也就是對資料流圖中包含的所有元素的定義的集合.
組成
1資料流
2資料流分量,即資料元素
3資料存放區
4處理
資料字典
資料庫的重要部分是資料字典。它存放有資料庫所用的有關資訊,對使用者來說是一組唯讀表。資料字典內容包括:
資料庫中所有模式對象的資訊,如表、視圖、簇、及索引等。
分配多少空間,當前使用了多少空間等。
列的預設值。
約束資訊的完整性。
使用者的名字。
使用者及角色被授與權限。
使用者訪問或使用的審計資訊。
其它產生的資料庫資訊。
資料庫資料字典是一組表和視圖結構。它們存放在SYSTEM資料表空間中。
資料庫資料字典不僅是每個資料庫的中心。而且對每個使用者也是非常重要的資訊。使用者可以用SQL語句訪問資料庫資料字典。
資料庫字典包括表結構(分2K和2005)、索引和主鍵. 外鍵.約束.視圖.函數.預存程序.觸發器。可以在企業管理器、查詢分析器中簡單執行,直接了當的查出SQL2K及SQL2005的所有資料字典,方便文檔的編寫,希望對大家有協助。
1. SqlServer2000資料庫字典--表結構.sql
SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表說明, a.colorder AS 欄位序號, a.name AS 欄位名, CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 標識, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysindexes si INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主鍵, b.name AS 類型, a.length AS 長度, COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位元, CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允許空, ISNULL(e.text, '') AS 預設值, ISNULL(g.[value], '') AS 欄位說明, d.crdate AS 建立時間, CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改時間 FROM dbo.syscolumns a LEFT OUTER JOIN dbo.systypes b ON a.xtype = b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND g.name = 'MS_Description' LEFT OUTER JOIN dbo.sysproperties f ON d.id = f.id AND f.smallid = 0 AND f.name = 'MS_Description' ORDER BY d.name, a.colorder |
SqlServer2005資料庫字典--表結構.sql
SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表說明, a.colorder AS 欄位序號, a.name AS 欄位名, CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 標識, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysindexes si INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主鍵, b.name AS 類型, a.length AS 長度, COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位元, CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允許空, ISNULL(e.text, '') AS 預設值, ISNULL(g.[value], '') AS 欄位說明, d.crdate AS 建立時間, CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改時間 FROM dbo.syscolumns a LEFT OUTER JOIN dbo.systypes b ON a.xtype = b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND g.name = 'MS_Description' LEFT OUTER JOIN dbo.sysproperties f ON d.id = f.id AND f.smallid = 0 AND f.name = 'MS_Description' ORDER BY d.name, a.colorder |
2. SqlServer資料庫字典--索引.sql
SELECT TOP 100 PERCENT --a.id, CASE WHEN b.keyno = 1 THEN c.name ELSE '' END AS 表名, CASE WHEN b.keyno = 1 THEN a.name ELSE '' END AS 索引名稱, d.name AS 列名, b.keyno AS 索引順序, CASE indexkey_property(c.id, b.indid, b.keyno, 'isdescending') WHEN 1 THEN '降序' WHEN 0 THEN '升序' END AS 排序, CASE WHEN p.id IS NULL THEN '' ELSE '√' END AS 主鍵, CASE INDEXPROPERTY(c.id, a.name, 'IsClustered') WHEN 1 THEN '√' WHEN 0 THEN '' END AS 聚集, CASE INDEXPROPERTY(c.id, a.name, 'IsUnique') WHEN 1 THEN '√' WHEN 0 THEN '' END AS 唯一, CASE WHEN e.id IS NULL THEN '' ELSE '√' END AS 唯一約束, a.OrigFillFactor AS 填滿因數, c.crdate AS 建立時間, c.refdate AS 更改時間 FROM dbo.sysindexes a INNER JOIN dbo.sysindexkeys b ON a.id = b.id AND a.indid = b.indid INNER JOIN dbo.syscolumns d ON b.id = d.id AND b.colid = d.colid INNER JOIN dbo.sysobjects c ON a.id = c.id AND c.xtype = 'U' LEFT OUTER JOIN dbo.sysobjects e ON e.name = a.name AND e.xtype = 'UQ' LEFT OUTER JOIN dbo.sysobjects p ON p.name = a.name AND p.xtype = 'PK' WHERE (OBJECTPROPERTY(a.id, N'IsUserTable') = 1) AND (OBJECTPROPERTY(a.id, N'IsMSShipped') = 0) AND (INDEXPROPERTY(a.id, a.name, 'IsAutoStatistics') = 0) ORDER BY c.name, a.name, b.keyno |
3. SqlServer資料庫字典--主鍵.外鍵.約束.視圖.函數.預存程序.觸發器.sql
SELECT DISTINCT
TOP 100 PERCENT o.xtype,
CASE o.xtype WHEN 'X' THEN '擴充預存程序' WHEN 'TR' THEN '觸發器' WHEN 'PK' THEN
'主鍵' WHEN 'F' THEN '外鍵' WHEN 'C' THEN '約束' WHEN 'V' THEN '視圖' WHEN 'FN'
THEN '函數-標量' WHEN 'IF' THEN '函數-內嵌' WHEN 'TF' THEN '函數-表值' ELSE '預存程序'
END AS 類型, o.name AS 對象名, o.crdate AS 建立時間, o.refdate AS 更改時間,
c.text AS 聲明語句
FROM dbo.sysobjects o LEFT OUTER JOIN
dbo.syscomments c ON o.id = c.id
WHERE (o.xtype IN ('X', 'TR', 'C', 'V', 'F', 'IF', 'TF', 'FN', 'P', 'PK')) AND
(OBJECTPROPERTY(o.id, N'IsMSShipped') = 0)
ORDER BY CASE o.xtype WHEN 'X' THEN '擴充預存程序' WHEN 'TR' THEN '觸發器' WHEN
'PK' THEN '主鍵' WHEN 'F' THEN '外鍵' WHEN 'C' THEN '約束' WHEN 'V' THEN '視圖'
WHEN 'FN' THEN '函數-標量' WHEN 'IF' THEN '函數-內嵌' WHEN 'TF' THEN '函數-表值'
ELSE '預存程序' END DESC