相信很多小伙伴都对【数据字典】很头疼。
www.887551.com刚入职的时候,老大丢一个项目过来,就一个设计文档,数据字典木有,字段说明木有,
全部都需要靠“联系上下文”来猜。所以小伙伴门一定要养成说明字段的习惯哦。
说明字段后我们无需特意建立数据字典,直接建立一个存储过程就可以查询字段意义了。
存储过程建立如下,小伙伴们直接拷贝执行就行了。
/****** object: storedprocedure [dbo].[sp_tabledict] script date: 2019/1/14 10:49:40 ******/ set ansi_nulls on go set quoted_identifier on go create procedure [dbo].[sp_tabledict] ( @tablename as varchar(100) ) --@parameter_name as scalar_data_type ( = default_value ), ... -- with encryption, recompile, execute as caller|self|owner| 'user_name' as 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_properties g on a.id = g.major_id and a.colid = g.minor_id left join sys.extended_properties f on d.id = f.major_id and f.minor_id = 0 where d.name = @tablename order by a.id , a.colorder
我们新建表字段的时候顺带说明当前字段是什么意思,如下图
字典说明写好后我们调用之前写好的存储过程,
--调用存储过程 exec dbo.sp_tabledict @tablename = 'tblapplicationacceptance' --指定表
效果如下:
这样我们就无需建立数据字典,只需要写好字典说明即可。
对于别人写好了说明,没有数据字典的小伙伴们也可以直接进行字段意义查看哦。
当然,做为一个合格的程序员,设计文档和数据字典是必须的,我们要为后来者节省时间,更容易理解数据结构。