现在的位置: 首页 > 综合 > 正文

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

2013年01月07日 ⁄ 综合 ⁄ 共 1773字 ⁄ 字号 评论关闭

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

   中文名称:数据字典

   英文名称: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,a.name,'PRECISION'),  
 
  小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'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语句是我查找出来的,而不是自己写出来的,知识无穷,需要学的还真多! 争取自己写出来!)

抱歉!评论已关闭.