我想在我的宠物项目上写下文档。
我的PostgreSQL数据库中有30个表和近50个视图以及大约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_aaaa和f_bbbb的函数f_cccc。我将不得不修改f_aaaa和f_bbbb
上的文档我知道UML描述了关于实体的关系(它确实如此,对吧???)。 但是我想要一些简单的东西,我不想接受75小时的训练...... 而且我不确定你能否按照我的要求在实体和功能之间建立“链接”。
你有什么建议吗?
我在Linux上使用PostgreSQL(Fedora)。如果你提出一个这样做的工具,它必须与PostgreSQL兼容: - )
对于我的代码文档,我使用Doxygen。
谢谢
答案 0 :(得分:4)
您实际上可以通过查询数据库的内部“依赖”信息来收集部分信息。如果有什么东西取决于另一个,那表明它使用它。这是一个示例查询,可以让您了解如何遍历所涉及的两个结构:
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;
有关所有这些内部位的信息,请参阅system catalog文档。
答案 1 :(得分:2)
答案 2 :(得分:0)
绘制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是你的功能。
答案 3 :(得分:0)
考虑使用命名约定来强化SQL对象依赖性:
表1
表2
vw_table1_byField1
vw_table1_byField1_table2
vw_table2
fn_table1
fn_table1_table2
答案 4 :(得分:-1)
我最终构建了一个巨大的html文件。
文件包含很多锚点,并且很容易导航到不同的对象。
这是很多工作,但它正是我想要的: - )