你生成数据字典吗?

时间:2008-11-11 19:59:55

标签: sql-server code-generation data-dictionary

您是否生成了数据字典?如果是这样,怎么样?

我在SQL Server 2005中使用扩展过程来保存表和字段信息。我有一些查询可以创建一个字典,但它是......嗯。您是否使用了特定的查询或工具?你是从数据库图表中生成的吗?

谷歌搜索“数据字典sql服务器”提出了许多查询,但它们都同样具有吸引力。也就是说,良好的起点,但不准备生产。

9 个答案:

答案 0 :(得分:6)

最近我有一个任务来记录一个相当大的数据库(大约500个对象),我在这里找到的细节确实有帮助。

以下是关于我们如何实现这一点的一些反馈 - 希望有人会发现它很有用,即使它已经很晚了。

技术:

记录的内容:

  • 所有表格和一些列(我们为所有表格添加了很好的描述,以确保明确表格的内容)

  • 所有观点 - 有关创建视图的原因,数据中包含哪些表格以及何时使用

  • 的说明
  • 所有存储过程 - 在整个过程中我们发现我们有很多重复的存储过程(开发人员没有看到proc是否存在所以他们创建了新的过程)

  • 所有UDF和其他一些对象,但不是全部(我们实际上不需要记录触发器)

我们最终做的是让我们的DBA拒绝来自开发人员的所有DDL更新,除非有扩展属性。

我们还有一项计划任务,即每两周自动重新创建一次文档。

答案 1 :(得分:5)

我们使用扩展属性。

要阅读它们,我们使用sys.extended_properties 它使事情变得容易多了。

我们还使用Red Gate SQL Doc

答案 2 :(得分:4)

SchemaSpy是一个非常好的工具,可以对数据库的描述进行反向工程。这包括:

  • ERD
  • 表,列和约束列表
  • 关于数据库异常的警告集(例如没有索引的表)

答案 3 :(得分:2)

我使用此工具(开源):http://www.codeplex.com/datadictionary。 我创建的所有信息都会添加到数据库的扩展属性中。

答案 4 :(得分:1)

我是从INFORMATION_SCHEMA个视图以及其他特定于应用程序的元数据表生成的。

我还使用INFORMATION_SCHEMA.ROUTINES的通配符搜索来跟踪代码中的使用模式,并识别未使用的列和表。

这篇文章刚出现在我的一条新闻Feed中:http://www.mssqltips.com/tip.asp?tip=1619

答案 5 :(得分:0)

我们在应用程序的开发者端生成数据库的字典。我们使用ADODB连接+ ADOX对象和集合有一个很好的过程。此过程将浏览数据库中的所有表。收集了以下主要数据:

  1. TableName
  2. 的ColumnName
  3. ColumnType
  4. ColumnSize
  5. bool_ColumnIsThePrimaryKey
  6. bool_ColumnHasReferentialIntegrityConstraint
  7. 您还可以跟踪字段默认值等。

    然后可以例如:

    • 检查我的字段有多少个表 currency_id(主要关键词 Tbl_currency表格被引用, 如果每个参考完整性 时间得当实施(我们非常 经常创造没有的领域 实施相应的规则 ...)。
    • 确保相似的字段 逻辑类型(如“description” 字段)具有类似的数据 类型/大小。没有什么是令人沮丧的 在表中有item_Description nvarchar(50)字段,以及a document_Description ntext在另一个 表<!/ LI>

    通过该过程提取的所有数据都插入到本地表中(可以是XML文件或其他任何内容)并保存以供进一步使用。

    可以通过

    从此数据生成列字典/报告
    SELECT DISTINT columnName FROM Tbl_Column
    

答案 6 :(得分:0)

我个人更喜欢在设计数据库时创建数据字典。当然,这并不总是一种选择......

我认为答案取决于数据库的当前状态?是完成还是生产?你还没开始吗? (等)

过去,像Cade Roux一样,我已将INFORMATION_SCHEMA中的信息提取到访问数据库中。目前,我们开发人员偶尔会将有关不同表,列,存储过程,函数等的信息添加到Access数据库中。在Access数据库中,我们创建了报告以输出整洁的“数据字典”打印输出。

这不是完成创建数据字典的最有效方法,但鉴于该项目已经用了3年而没有任何数据字典的迹象,这就是我们必须要做的事情。

所以最终,答案取决于你的数据库的状态。

最诚挚的问候,
弗兰克

答案 7 :(得分:0)

我们编写了自己的使用扩展属性的数据字典实用程序,但是当我们找到Redgate的工具时,我们放弃了它的工具。为我们工作很棒!我想这有助于我们在扩展属性中已经有了字段和表格描述。不是为公司做广告,但他们有14天免费试用。值得一看。 http://www.red-gate.com/products/SQL_Doc/index.htm

答案 8 :(得分:0)

我对SQL Data Dictionary祝你好运。