数据库文档和逆向工程

时间:2016-04-22 19:51:58

标签: sql documentation comments database-schema multiple-databases

我知道这个问题已经以各种形式overover再次提出,但我找不到一个完整的答案,我相信这是RDBMS /数据领域和行业中的一般问题。为了解释这个问题,我会告诉你一个简短的(也许是无聊的)故事!

故事

"我有一个朋友"谁在使用100多个系统的A公司工作。这些系统的规模和规模从完整的ITIL到定制/内部,单一用途,基于LAMP / SQLite / CSV的解决方案。绝大多数这些系统在某一时刻使用数据库/数据存储......大数据现在已成为趋势,而A公司虽然保留(或记录)是一个非常好的主意)永远来自所有系统的历史数据!出于这个原因,他们建立了一个"仓库"。我的朋友负责编写将对这些数据进行分析的软件......但是,他有点困惑。该仓库中有数千个表,包含从一开始就有的数据(我认为是20世纪70年代:))。

问题

[自从我开始告诉你这个人,我应该继续]

我的朋友非常沮丧,因为该仓库缺乏文件。似乎没有人知道什么是什么?!他面临的问题很少(我引用):

  

男人,有些字段是常量......它们对应用程序有特殊意义,但我无从知晓?但这没关系...因为其他一些领域是比特掩码!字段中的不同位值具有不同的含义!

他继续......

  

这不是全部...这些是您知道的简单案例......由于我们拥有来自多个系统的数据,我们最终会遇到不同系统以不同方式引用同一事物的情况。 ..如何向您解释...例如,网络设备具有FQDN,但是有些系统将其视为主键,而其他系统则将其视为主键,而是分配自动增量整数值,反过来它们用于外键(你知道......引用这个设备)。

他可以永远继续下去!

问题

[是的,这是一个问题]

他说:

  

我们在软件世界中的文档方面取得了很大进展......我们已经开始使用文档,转移到wiki,并总结为内联docblock,既可作为参数/签名文档,也可作为wiki!我们可以自动生成文档,足够清楚,可以轻松地跟随另一个半球和这个世界的人!

他继续说道:

  

......在数据方面,我们也取得了重大成就!存储方法,序列化,传输和数据分析技术已经发生了巨大变化......我们还设法将数据库表映射到对象中,在某些情况下我们甚至可以表示关系!

     

那么为什么我们没有标准的方法/技术来记录RDBMS中的数据结构呢?

......他总结道:)

与我的朋友足够,所以我的意见:

  • 我知道有关各种系统中字段的注释,但这通常足以满足"弃用"而不是解释
  • 每次发布​​数据库补丁时,更新维基甚至更糟的文档都不是解决方案......该补丁应包含相关文档!
  • 可以根据架构信息轻松生成ER图表,但这不是最简单的文档形式......对于超过10个表格的任何内容!
  • 有这样的说法(如果你知道谁这么说,请发表评论! - 尊重)

      

    文档就像性:当它好的时候,它是非常非常好的;当它不好时,它总比没有好

    为什么SQL不提供任何手段?

1 个答案:

答案 0 :(得分:2)

如果不进行维护,任何类型的文档都会停滞不前。

此外,SQL世界提供了记录事物的各种可能性:

  • SQL文件中的注释
  • 列/表元数据中的注释
  • 如你所说 - E / R图
  • 记录内容的经典方式 - docs和wikis
  • 遵守DB中事物的直观命名方案的良好纪律 - 我认为这应该是标准

我们拥有所需的所有工具,我们只需说服我们的经理让我们编写文档(笑)