sql - 你如何记录你的数据库结构?




database documentation (8)

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

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

我知道很多人使用UML图来显示数据库,但是我很少(如果有的话)看到包含字段注释的UML图。 不过,我在使用.sql文件里面的注释方面有很好的经验。 这种方法的缺点是它需要手动将.sql文件保持最新,因为数据库结构会随着时间而改变 - 但是如果你这样做的话,你也可以在版本控制下进行。

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

你过去怎么解决这个问题? 存在哪些方法,以及与它们相关的各种利弊有哪些? 你如何在“完美世界”中解决这个问题?

更新

正如其他人所指出的,大多数流行的SQL引擎确实允许评论,这是很好的。 奇怪的是,人们似乎并没有太多的使用这些功能。 至少不是我曾经参与过的项目。

https://code.i-harness.com


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

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



我们已经写了一个文档,列出了表格,字段和一切。 这是由一个图表,如何显示所有链接/相互关联的备份。 这真的是一个非常简单的文档,只是一个表的字段名称>数据类型>目的负载


我使用的火鸟有描述字段为所有系统对象(表,列,视图,程序和参数,触发器等)这很好,因为你可以轻松地与他人分享(文档与数据库,不分开),你永远不会失去它。

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


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

对于我所做的项目,这已经足够了(通过几十个表级)。 我不知道它可以扩展到更大的项目(比如在数百张表格中),但是到目前为止还是不错的。


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

使用SQL COMMENT是另一种可能性。 与他们的好处是,他们总是与你的对象,备份与他们等等。坏的是,他们是更有限的(例如长度)。


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

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

这个过程确保了我们拥有所有的对象文件和文件最新。

虽然困难的事情是让开发人员持续写好评论;)


有一次,我写了一个基本的SQL解析器,它将解析CREATE TABLE语句并去除特殊格式的注释。 然后将这些后处理成LaTeX源文件并呈现为PDF。 这是由Javadoc的启发,并用于创建此产品的文档。 随后,在仓库管理器中构建了一个数据字典功能,并使用LaTeX生成器的修改版本来呈现仓库管理器中的数据字典。

在另一个项目中,我使用了Visio - Visual Studio Enterprise Architect附带的版本将正向设计一个数据库。 如此生成的SQL具有在评论字符串中呈现的表格和列注释,这些注释字符串相当直接地解析。 我写的工具生成了MIF文件,这些文件被包含在使用FrameMaker构建的spec文档中。

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





relational