【问题标题】:How do you document your database structure? [closed]你如何记录你的数据库结构? [关闭]
【发布时间】:2008-10-09 08:23:02
【问题描述】:

许多数据库系统不允许对表和字段进行 cmets 或描述,那么除了显然具有良好的命名约定之外,您如何记录表/字段的用途?

(我们现在假设“优秀”的表和字段名称不足以记录数据库中每个表、字段和关系的完整含义。)

我知道很多人使用 UML 图来可视化数据库,但我很少(如果有的话)见过包含字段 cmets 的 UML 图。但是,我在 .sql 文件中使用 cmets 有很好的经验。这种方法的缺点是它需要在数据库结构随时间变化时手动更新.sql 文件,但如果您这样做,您也可以将其置于版本控制之下。

我见过的其他一些技术是描述数据库结构和关系的单独文档,以及在 ORM 代码或其他数据库映射代码中手动维护的 cmets。

您过去是如何解决这个问题的?存在哪些方法以及与之相关的各种利弊?您希望如何在“完美世界”中解决这个问题?

更新

正如其他人所指出的,大多数流行的 SQL 引擎实际上都允许 cmets,这很棒。奇怪的是,人们似乎并没有过多地使用这些功能。至少在我过去参与的项目中没有。

【问题讨论】:

    标签: sql database documentation relational


    【解决方案1】:

    表和行上的 MySQL allows cmets。 PostgreSQL does 也是如此。从其他答案来看,Oracle 和 MSSQL 也有 cmets。

    对我来说,UML 图的组合用于快速复习字段名称、类型和约束,以及外部文档(TeX,但可以是任何格式)以及对所有与数据库相关的内容的扩展描述 - 特殊值、字段cmets、访问笔记等 - 效果最好。

    【讨论】:

    • 编写一个从 MySQL 数据库中提取结构和 cmets 并生成一组描述数据库的 HTML 文档的脚本非常简单。
    • 我正在寻找这样的脚本。书面。
    • 我使用Toad 制作图表、报告和事件SQL 创建/删除脚本。有一个免费软件版本。不是脚本,但它适用于这个 porpouse
    【解决方案2】:

    迟到但希望有用…… 这是我们在开发相对较大的数据库(大约 100 个表,总共大约 350 个对象)时使用的一个过程

    • 要求开发人员使用扩展属性向所有对象添加详细信息。
    • 管理员拒绝了任何没有扩展属性的 DDL
    • 每天使用第三方工具通过命令行界面自动生成可视化文档。我们使用了ApexSQL Doc,它工作得很好,但我也成功地使用了其他公司 Red Gate 的 SQL Doc。

    这个过程确保我们记录了所有对象并且文档是最新的。

    困难在于让开发人员始终如一地编写好的 cmets ;)

    【讨论】:

      【解决方案3】:

      SQL Server 具有可以处理此问题的扩展属性。

      本文描述了如何在 SQL Sever 中设置它们 http://www.developer.com/db/article.php/3677766

      MSDN Reference

      它可以与RedGate SQL Doc结合使用来创建一个漂亮的数据字典。

      【讨论】:

        【解决方案4】:

        我使用附加到表格和列的 cmets。 SchemaSpy 是一个很棒的工具,可以从你的架构中生成 html 文档文件,包括 cmets。

        【讨论】:

          【解决方案5】:

          有一次,我编写了一个基本的 SQL 解析器,它可以解析 CREATE TABLE 语句并去除特殊格式的 cmets。然后将这些后处理为 LaTeX 源并呈现为 PDF。这受到Javadoc 的启发,并用于为This product 创建文档。随后,仓库管理器中内置了数据字典功能,并使用 LaTeX 生成器的修改版本从仓库管理器中呈现数据字典。

          在我使用 Visio 的另一个项目中 - Visual Studio Enterprise Architect 附带的版本将转发工程数据库。如此生成的 SQL 将表和列 cmets 呈现在非常易于解析的注释字符串中。我编写的工具生成了 MIF 文件,这些文件包含在使用 FrameMaker 构建的规范文档中。

          如果您有诸如Powerdesigner 之类的存储库工具,您可以在其中维护数据模型并获取包含您输入的文档的存储库报告。如果您需要将数据字典与功能规范进行更深入的集成(对于 ETL 复杂且涉及派生值的大量计算的数据仓库系统非常有用),您仍然可以提取元数据并编写实用程序来生成将集成数据的东西字典转换成规范文档。 这还允许在数据字典项和其他规范文档之间进行交叉引用,并生成涵盖数据字典定义和相关文档的索引,例如使用示例计算某事物的规范。

          【讨论】:

          • 您的“此产品”链接已失效。
          【解决方案6】:

          我们编写了一个 word 文档,其中列出了表格、字段以及所有内容。这得到了一个图表的支持,该图表显示了所有内容如何相互链接/关联。这真的是一个非常简单的文档,只是一堆字段名称 > 数据类型 > 目的的表格

          【讨论】:

          • 您如何确保文档与当前的实施/生产环境保持同步?
          • Anders - 结构很少改变(幸运的是!)我们通常在流程开始时使用它,以便我们可以绘制后端集成点
          【解决方案7】:

          我正在使用Firebird,它具有所有系统对象(表、列、视图、过程和参数、触发器等)的描述字段。这很好,因为您可以轻松地与其他人共享它(文档与数据库一起使用,不是分开的),你永远不会失去它。

          大多数管理员。 Firebird 工具允许您编辑这些描述,并且有一些专门的工具(例如 IBDesc)可以创建漂亮的 HTML 或 PDF 报告,您可以轻松地打印(部分或全部表格)。

          【讨论】:

            【解决方案8】:

            这是一种非常简单的方法,但我使用了一对 wiki 页面:一个带有数据库的 mysqldump,另一个以更类似于英语的格式编写。

            对于我从事的项目,这已经足够了(通过几十个表级别)。我不知道它可以扩展到多大的项目(比如数百个表),但到目前为止效果很好。

            【讨论】:

              【解决方案9】:

              我在评论我的程序时评论我的数据库。通过在源代码(包含 DDL 指令的 SQL 文件)中编写好的(我希望的)cmets。

              使用 SQL COMMENT 是另一种可能性。它们的好处是它们始终与您的对象在一起,有它们的备份等。坏处是它们受到更多限制(例如长度)。

              【讨论】:

                【解决方案10】:

                我最近开始编写 Markdown 文档,其中包括链接到单个表 .sql 文件(希望表和字段可以直观地使用大量 cmets 命名)。

                我使用以下命令将单个表架构保留在版本控制中:

                mysqldump --no-data --tab=./tables dbname

                单个表的架构允许您查看 cmets、索引、唯一键等。因此是相当不言自明的(至少是这样的想法)。

                主 Markdown 文档有超链接,例如贯穿始终的用户表,因此读者可以轻松转到不同的表。

                【讨论】:

                  【解决方案11】:

                  由于我们使用 Rational Software Architect,我们使用它的数据发现功能来记录我们的数据库,然后从那里注释它们。

                  【讨论】:

                    【解决方案12】:

                    在 Oracle 中,您可以对表进行注释并将其存储在数据字典中。

                    但是,我将所有表、列、索引 cmets 存储在一个非常旧的 ERWin 版本中。它是事实的主要来源,并生成 DDL 以创建表格等。从那里,我可以将其提取到 word 文档或 pdf 中。

                    【讨论】:

                    • 也可以在列上添加cmets
                    猜你喜欢
                    • 2011-02-04
                    • 2017-04-08
                    • 1970-01-01
                    • 2016-04-02
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-10-08
                    • 2011-03-06
                    相关资源
                    最近更新 更多