代码之家  ›  专栏  ›  技术社区  ›  Anders Sandvig

如何记录数据库结构?[关闭]

  •  25
  • Anders Sandvig  · 技术社区  · 16 年前

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

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

    我知道许多人使用UML图来可视化数据库,但我很少看到包含字段注释的UML图。但是,我在使用内部评论方面有很好的经验 .sql 文件夹。这种方法的缺点是它需要 SQL 当数据库结构随时间变化而变化时,要手动保持最新的文件,但如果这样做,您也可以对其进行版本控制。

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

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

    更新

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

    12 回复  |  直到 16 年前
        1
  •  8
  •   MaxVT    16 年前

    MySQL allows 表和行的注释。波斯特雷斯尔 does 也。从其他答案来看,Oracle和MSSQL也有评论。

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

        2
  •  8
  •   Joel Cuff    11 年前

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

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

    这一过程确保了我们对所有对象都进行了记录,并记录了最新的内容。

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

        3
  •  6
  •   evilhomer    16 年前

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

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

    MSDN Reference

    它可以与 RedGate SQL Doc 创建一个好的数据字典。

        4
  •  5
  •   bernardn    16 年前

    我使用附在表和列上的注释。 SchemaSpy 是从架构中生成HTML文档文件(包括注释)的好工具。

        5
  •  2
  •   ConcernedOfTunbridgeWells    11 年前

    有一次,我编写了一个基本的SQL解析器,它将解析create table语句并去掉特殊格式的注释。然后,这些被后处理成乳胶源,并呈现为PDF格式。它的灵感来自 Javadoc 并用于创建 This product . 随后,在仓库管理器中构建了数据字典功能,并使用修改版本的LaTex生成器从仓库管理器中呈现数据字典。

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

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

        6
  •  1
  •   Katy    16 年前

    我们已经编写了一个Word文档,其中列出了表、字段以及所有操作。这是由一个图表来支持的,该图表显示了所有东西是如何相互链接/关联的。这真的是一个非常简单的文档,只是一堆具有字段名>数据类型>用途的表

        7
  •  1
  •   Milan BabuÅ¡kov    16 年前

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

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

        8
  •  1
  •   warren    16 年前

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

    对于我工作过的项目,这已经足够了(通过几十个表级别)。我不知道它能在多大程度上扩展到更大的项目(比如在数百个表中),但到目前为止它是好的。

        9
  •  1
  •   bortzmeyer    16 年前

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

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

        10
  •  0
  •   paxdiablo    16 年前

    因为我们使用RationalSoftwareArchitect,所以我们使用它的数据发现特性来记录我们的数据库,然后从那里对它们进行注释。

        11
  •  0
  •   WW.    16 年前

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

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

        12
  •  0
  •   hhh    10 年前

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

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

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

    单个表的模式允许您查看注释、索引、唯一键等,因此这是非常简单的(至少这是一个想法)。

    主标记文档中有一些超链接,例如贯穿整个用户表,因此读者可以很容易地访问不同的表。

    推荐文章