今天在写需求分析文档的过程中,其中一项是数据字典,由于对数据字典不是很了解,就在网上查了一下
英文名称:data dictionary
定义:数据库中所有对象及其关系的信息集合。
应用学科:地理学(一级学科);地理信息系统(二级学科)
详细介绍可以看百科中的介绍 :http://baike.baidu.com/view/70173.htm我需要写数据字典,于是又查了一下,数据字典该怎么写? 写出来的模式是什么样的? 大概截了一个图如下:
将数据字典写成这个样子就可以了,我快速的就创建了一个Excel ,想照着数据库自己写吧,着手的时候感觉很麻烦,那么多字段,应该还会有其他办法吧,例如用sql直接生成。 百度上移搜索,还真有这样的方法。下面就是我利用sql2008生成数据字典的全过程 :
我自己对数据字典的理解,似乎就像我们平时用的字典一样吧,例如汉语字典,成语字典,英语字典等等,我们想要知道什么就去字典里 查。而数据字典也是这样,我要知道某个数据库中都包含哪些表啊,这些表中都包含什么字段啊,字段的属性,以及一些信息都可以通过数据字典查到。通过查找了一些资料,现将生成数据字典的步骤总结如下(在此以数据库中的系统数据流master为例子来生成数据字典):
1.首先,要确定你所查找的数据库是哪个,我就以系统数据库为例了
右击数据库(此处为你想生成数据字典的数据库名称),然后在弹出菜单中选择新建查询
2.其次,将生成数据字典的语句写在新建查询中,这些查询的sql语句用sql2005或2008都可以使用,无需改动什么,只需要直接将这些代码敲好了就可以
语句如下:
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语句是我查找出来的,而不是自己写出来的,知识无穷,需要学的还真多! 争取自己写出来!)