相信很多小伙伴都对【数据字典】很头疼。
小编刚入职的时候,老大丢一个项目过来,就一个设计文档,数据字典木有,字段说明木有,
全部都需要靠“联系上下文”来猜。所以小伙伴门一定要养成说明字段的习惯哦。
说明字段后我们无需特意建立数据字典,直接建立一个存储过程就可以查询字段意义了。
存储过程建立如下,小伙伴们直接拷贝执行就行了。
- /****** 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' --指定表
效果如下:

这样我们就无需建立数据字典,只需要写好字典说明即可。
对于别人写好了说明,没有数据字典的小伙伴们也可以直接进行字段意义查看哦。
当然,做为一个合格的程序员,设计文档和数据字典是必须的,我们要为后来者节省时间,更容易理解数据结构。