30

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

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

我知道很多人使用 UML 图来可视化数据库,但我很少(如果有的话)见过包含字段注释的 UML 图。.sql但是,我在文件中使用注释方面有很好的经验。这种方法的缺点是,.sql当数据库结构随时间发生变化时,它需要手动保持文件是最新的——但如果你这样做了,你也可以让它处于版本控制之下。

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

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

更新

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

4

12 回答 12

10

MySQL允许对表和行进行注释。PostgreSQL也是如此。从其他答案来看,Oracle 和 MSSQL 也有评论。

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

于 2008-10-09T12:09:27.557 回答
8

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

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

这个过程确保我们将所有对象记录在案并保持最新状态。

困难的事情是让开发人员始终如一地写出好的评论;)

于 2013-07-31T13:46:19.787 回答
6

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

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

MSDN 参考

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

于 2008-10-09T08:28:05.117 回答
6

我使用附在表格和列上的注释。SchemaSpy是一个很棒的工具,可以从你的模式中生成 html 文档文件,包括注释。

于 2009-01-12T20:10:42.997 回答
2

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

在另一个项目中,我使用了 Visio——Visual Studio Enterprise Architect 附带的版本将对数据库进行正向工程。如此生成的 SQL 将表和列注释呈现在注释字符串中,这些注释字符串解析起来相当简单。我编写的工具生成了 MIF 文件,这些文件包含在使用 FrameMaker 构建的规范文档中。

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

于 2008-10-09T09:06:04.400 回答
1

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

于 2008-10-09T09:13:44.197 回答
1

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

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

于 2008-10-09T09:21:03.903 回答
1

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

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

于 2008-10-09T11:49:26.457 回答
1

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

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

于 2008-12-16T10:08:15.607 回答
1

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

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

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

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

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

于 2014-08-13T21:24:44.557 回答
0

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

于 2008-10-09T08:25:26.573 回答
0

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

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

于 2008-10-09T09:22:01.840 回答