【问题标题】:Do you generate your data dictionary? [closed]您是否生成数据字典? [关闭]
【发布时间】:2010-09-21 20:55:01
【问题描述】:

您是否生成数据字典?如果有,怎么做?

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

谷歌搜索“数据字典 sql server”会出现许多查询,但它们都同样具有吸引力。也就是说,良好的起点,但尚未准备好生产。

【问题讨论】:

  • 可以使用简单的sql语句生成数据字典。你可以在这里找到例子csharpalley.com/…
  • 您可以在这里搜索工具:tools.dataedo.com。相当多的数据字典工具。

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


【解决方案1】:

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

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

技术:

记录的内容:

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

  • 所有视图 – 说明创建视图的原因、数据中包含哪些表等以及何时使用

  • 所有存储过程 - 在处理过程中,我们发现我们有很多重复的存储过程(开发人员没有费心去查看 proc 是否存在,所以他们创建了新的)

  • 所有 UDF 和其他一些对象也是如此,但不是全部(我们真的不需要记录触发器)

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

我们还有一个计划任务,每 2 周自动重新创建文档。

【讨论】:

    【解决方案2】:

    我们使用扩展属性。

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

    我们也使用 Red Gate SQL Doc

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我也曾经有一个 BBC ;-}
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

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

          1. 表名
          2. 列名
          3. 列类型
          4. 列大小
          5. bool_ColumnIsThePrimaryKey
          6. 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 年没有任何数据字典的迹象,这就是我们必须做的。

            所以最终,这个问题的答案取决于您的数据库的状态。

            最好的问候,
            弗兰克

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

                SQL Data Dictionary 我运气不错。

                【讨论】:

                  猜你喜欢
                  • 2011-03-19
                  • 1970-01-01
                  • 2016-02-10
                  • 2010-09-08
                  • 2013-07-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-02-24
                  相关资源
                  最近更新 更多