如何记录您的数据库代码,看看数据库对象之间的依赖关系? [关闭](How do you docu

2019-07-30 15:06发布

我想在我的宠物项目写文档。

我有30桌,几乎50次,在我的PostgreSQL数据库大约30功能(存储过程)。

我想看到的表(其视图和其功能)被使用。

我想看到的视图(其视图和其功能)被使用。

我想看看如果一个函数被另一个函数。

我想也写入每个对象的说明(表,视图和函数)

和字段的简要描述。

不久,我希望能够看到什么使用特定的对象和对象使用一个特定的对象。

我想用一个文本文件,并为每个对象。 我可以列出使用当前的和哪些是由当前使用的对象。

<pre>
Table aaaa
A short description
used by : view v_aaaa

id  int     primary key
name  varchar(30)   name of a...

================================
view v_aaaa
A short description

list of fields...

used by function f_aaaa
Depends on  table aaaa



==============================

function f_aaaa
A short description
Parameters ( description, IN/OUT )
Depends on view v_aaaa
           function fbbbb 

==============================

function f_bbbb
A short description
Parameters
Called by function f_aaaa

我怕我的文档会取消同步快速想象我添加了一个功能f_cccc调用f_aaaa和f_bbbb。 我将不得不修改f_aaaa和f_bbbb DOC

我知道,UML介绍有关机构的关系(它做的,对吧???)。 但是,我想简单的东西,我不想遵循75小时练习......而且我不知道,你可以有实体和功能之间的“联系”,因为我想要的。

你有什么建议吗?

我使用PostgreSQL在Linux(Fedora的)。 如果你提出了一个工具,做到这一点,它必须与PostgreSQL的兼容:-)

对于我的代码文档,我使用Doxygen的。

谢谢

Answer 1:

实际上,你可以通过查询数据库内部的“依赖”的信息收集一些这方面的信息。 如果事情依赖于另一个,这表明它使用它。 下面是一个示例查询,以给你一个想法如何遍历所涉及的两种结构:

SELECT
  c1.oid as relid,
  n1.nspname || '.' || c1.relname as relation,
  c1.relkind,
  c2.oid as relid,
  n2.nspname || '.' || c2.relname as dependency,
  c2.relkind
FROM 
  pg_depend d,
  pg_class c1,
  pg_namespace n1,
  pg_class c2,
  pg_namespace n2
WHERE 
  d.objid = c1.oid AND
  c1.relnamespace = n1.oid AND 
  n1.nspname NOT IN('information_schema', 'pg_catalog') AND
  n1.nspname !~ '^pg_toast' AND
  d.refobjid = c2.oid AND
  c2.relnamespace = n2.oid AND 
  n2.nspname NOT IN('information_schema', 'pg_catalog') AND
  n2.nspname !~ '^pg_toast' AND
  c1.oid != c2.oid
GROUP BY n1.nspname,c1.relname,c1.oid,c1.relkind,
  n2.nspname,c2.relname,c2.oid,c2.relkind
ORDER BY n1.nspname,c1.relname;

所有这些内部位的信息可以在中找到系统目录文件。



Answer 2:

我不为了看文件的依赖性。 文档自动过期。

我使用该工具。 目前我使用的产品从ApexSQL ,但我用展鹏工具过去。



Answer 3:

只是画一个EAR图。 实体 - 关系图。

本教程应该给你一个很好的了解。 http://www.scribd.com/doc/7500847/entity-relationship-diagram

你有这样的一个http://www.getahead-direct.com/gwentrel.htm

编辑:

比方说你有一个多部未华CAR,那么你画一个方框CAR:

CAR
----------
id (int)
name (vchar)
numbSeats (int)
----------
GetCar
SetCar
DeleteCar

Thelast 3是你的职责。



Answer 4:

可以考虑使用一个命名约定,以加强SQL对象相关性:

表格1

表2

vw_table1_byField1

vw_table1_byField1_table2

vw_table2

fn_table1

fn_table1_table2



Answer 5:

我终于建立一个庞大的HMTL文件。

文件中包含了很多的锚,并可以很容易地导航到不同的对象。

这是一个大量的工作,但它正是我想要的:-)



文章来源: How do you document your database code to see dependencies between database objects? [closed]