SqlServer2008/2005生成数据字典的方法

   今天在写需求分析文档的过程中,其中一项是数据字典,由于对数据字典不是很了解,就在网上查了一下

   中文名称:数据字典

   英文名称data dictionary

   定义:数据库中所有对象及其关系的信息集合。

   应用学科:地理学(一级学科);地理信息系统(二级学科)

   详细介绍可以看百科中的介绍   :http://baike.baidu.com/view/70173.htm

   我需要写数据字典,于是又查了一下,数据字典该怎么写? 写出来的模式是什么样的?  大概截了一个图如下:

将数据字典写成这个样子就可以了,我快速的就创建了一个Excel ,想照着数据库自己写吧,着手的时候感觉很麻烦,那么多字段,应该还会有其他办法吧,例如用sql直接生成。  百度上移搜索,还真有这样的方法。下面就是我利用sql2008生成数据字典的全过程 :

    我自己对数据字典的理解,似乎就像我们平时用的字典一样吧,例如汉语字典,成语字典,英语字典等等,我们想要知道什么就去字典里 查。而数据字典也是这样,我要知道某个数据库中都包含哪些表啊,这些表中都包含什么字段啊,字段的属性,以及一些信息都可以通过数据字典查到。通过查找了一些资料,现将生成数据字典的步骤总结如下(在此以数据库中的系统数据流master为例子来生成数据字典):

 

1.首先,要确定你所查找的数据库是哪个,我就以系统数据库为例了


右击数据库(此处为你想生成数据字典的数据库名称),然后在弹出菜单中选择新建查询 

 2.其次,将生成数据字典的语句写在新建查询中,这些查询sql语句用sql20052008都可以使用,无需改动什么,只需要直接将这些代码敲好了就可以 

语句如下: 

SELECT 表名=case when a.colorder=1 then d.name else '' end,表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,字段序号=a.colorder,字段名=a.name,标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then '√' else '' end,类型=b.name,占用字节数=a.length,长度=COLUMNPROPERTY(a.id,'PRECISION'),小数位数=isnull(COLUMNPROPERTY(a.id,'Scale'),0),允许空=case when a.isnullable=1 then '√'else '' end,认值=isnull(e.text,''),字段说明=isnull(g.[value],'') FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sys.extended_propertiesg on a.id=g.major_id and a.colid=g.minor_id left join sys.extended_propertiesf on d.id=f.major_id and f.minor_id =0 --where d.name='要查询的表' --如果只查询指定表,加上此条件 order by a.id,a.colorder 


 

3.这些语句完成后,执行这些语句就可以查到相应的数据字典了例如

 



通过一些sql语句,把我以为很繁琐的工作,这么接单的就解决了,感觉不错,因此也来分享一下。(遗憾的是这些sql语句是我查找出来的,而不是自己写出来的,知识无穷,需要学的还真多! 争取自己写出来!)

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...