Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何记录数据库结构?_Sql_Database_Documentation_Relational - Fatal编程技术网

Sql 如何记录数据库结构?

Sql 如何记录数据库结构?,sql,database,documentation,relational,Sql,Database,Documentation,Relational,许多数据库系统不允许对表和字段进行注释或描述,因此,除了具有良好的命名约定外,如何记录表/字段的用途 (现在我们假设“优秀”的表名和字段名不足以记录数据库中每个表、字段和关系的全部含义。) 我知道很多人使用UML图来可视化数据库,但我很少看到包含字段注释的UML图。但是,我有在.sql文件中使用注释的良好经验。这种方法的缺点是,当数据库结构随时间变化时,需要手动更新.sql文件,但如果这样做,还可以对其进行版本控制 我见过的其他一些技术是描述数据库结构和关系的单独文档,以及ORM代码或其他数据库

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

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

我知道很多人使用UML图来可视化数据库,但我很少看到包含字段注释的UML图。但是,我有在
.sql
文件中使用注释的良好经验。这种方法的缺点是,当数据库结构随时间变化时,需要手动更新
.sql
文件,但如果这样做,还可以对其进行版本控制

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

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

更新


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

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

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

本文介绍如何在SQLServer中设置它们


它可以与结合使用来创建一个好的数据字典。

我曾经编写了一个基本的SQL解析器,它可以解析create TABLE语句并去掉特殊格式的注释。然后将其后处理为LaTeX源文件并呈现为PDF。这本书的灵感来源于,并被用于创建的文档。随后,在仓库管理器中内置了数据字典功能,并使用LaTeX生成器的修改版本从仓库管理器中呈现数据字典

在另一个项目中,我使用了Visio—VisualStudioEnterpriseArchitect附带的版本将对数据库进行正向工程。这样生成的SQL将表和列注释呈现在注释字符串中,这些注释字符串非常容易解析。我编写的工具生成了MIF文件,这些文件包含在使用FrameMaker构建的规范文档中

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

我们编写了一个word文档,其中列出了表,田野和一切都在做什么。这是由一个图表支持的,该图表显示了所有事物如何相互链接/关联。这真的是一个非常简单的文档,只是一堆带有字段名>数据类型>用途的表,我正在使用它,其中包含所有系统对象(表、列、视图、过程和参数、触发器等)的描述字段。这很好,因为您可以轻松地与其他人共享它(文档与数据库一起使用,而不是单独使用)你永远不会失去它


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

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


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

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

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

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


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

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


使用SQL注释是另一种可能性。它们的优点是它们总是与您的对象在一起,并用它们进行备份,等等。缺点是它们更有限(例如长度)。

我使用附加到表和列的注释。是一个很好的工具,可以从您的模式中生成html文档文件,包括注释。

最新版本,但希望有用… 下面是我们在开发相对较大的数据库(大约