【问题标题】:Do you generate your data dictionary? [closed]您是否生成数据字典? [关闭]
【发布时间】:2010-09-21 20:55:01
【问题描述】:
您是否生成数据字典?如果有,怎么做?
我在 SQL Server 2005 中使用扩展过程来保存表和字段信息。我有一些查询可以从中创建字典,但它是……嗯。您是否使用了特定的查询或工具?你是从你的数据库图表中生成它的吗?
谷歌搜索“数据字典 sql server”会出现许多查询,但它们都同样具有吸引力。也就是说,良好的起点,但尚未准备好生产。
【问题讨论】:
标签:
sql-server
code-generation
data-dictionary
【解决方案1】:
最近我的任务是记录一个相当大的数据库(大约 500 个对象),我在这里找到的详细信息确实很有帮助。
这里有一些关于我们如何实现它的反馈——希望有人会发现它很有用,即使它已经很晚了。
技术:
记录的内容:
所有表格和一些列(我们为所有表格添加了良好的描述,以确保清楚表格的内容)
所有视图 – 说明创建视图的原因、数据中包含哪些表等以及何时使用
所有存储过程 - 在处理过程中,我们发现我们有很多重复的存储过程(开发人员没有费心去查看 proc 是否存在,所以他们创建了新的)
所有 UDF 和其他一些对象也是如此,但不是全部(我们真的不需要记录触发器)
我们最终做的是让我们的 DBA 拒绝来自开发人员的所有 DDL 更新,除非有扩展属性。
我们还有一个计划任务,每 2 周自动重新创建文档。
【解决方案3】:
SchemaSpy 是一个非常好的工具,可以对数据库的描述进行逆向工程。这包括:
- ERD
- 表、列和约束列表
- 关于数据库异常的一组警告(例如没有索引的表)
【解决方案6】:
我们在应用程序的开发者端生成数据库的字典。我们有一个使用 ADODB 连接 + ADOX 对象和集合的好程序。此过程将浏览数据库中的所有表。主要收集以下数据:
- 表名
- 列名
- 列类型
- 列大小
- bool_ColumnIsThePrimaryKey
- bool_ColumnHasReferentialIntegrityConstraint
还可以跟进字段默认值等
然后可以例如:
- 检查我的字段有多少表
currency_id(主键
Tbl_currency 表)被引用,
如果参照完整性是每个
正确实施的时间(我们非常
经常在没有的情况下创建领域
执行相应的规则
...)。
- 确保类似的字段
逻辑类型(如“
description”
字段)具有相似的数据
类型/尺寸。没有什么比这更令人沮丧
在表中有一个item_Description nvarchar(50) 字段,以及一个
document_Description ntext 在另一个
桌子!
- 等
通过该过程提取的所有数据都插入到本地表(可以是 XML 文件或其他文件)中并保存以供进一步使用。
可以通过此数据生成列字典/报告
SELECT DISTINT columnName FROM Tbl_Column
【解决方案7】:
我个人更喜欢在设计数据库时创建数据字典。当然,这并不总是一种选择...
我认为答案取决于数据库的当前状态?是否已完成并投入生产?你还没有开始吗? (等等)
过去,我像 Cade Roux 一样,将信息从 INFORMATION_SCHEMA 提取到访问数据库中。目前,我们有开发人员偶尔将有关不同表、列、存储过程、函数等的信息添加到 Access 数据库中。在 Access 数据库中,我们创建了报告以输出一个整洁的“数据字典”打印输出。
这不是完成创建数据字典的最有效方法,但鉴于该项目已经 3 年没有任何数据字典的迹象,这就是我们必须做的。
所以最终,这个问题的答案取决于您的数据库的状态。
最好的问候,
弗兰克