2009-07-22 3 views
3

Ich möchte Dokumentation über mein Haustierprojekt schreiben.Wie dokumentieren Sie Ihren Datenbankcode, um Abhängigkeiten zwischen Datenbankobjekten zu erkennen?

Ich habe 30 Tabellen und fast 50 Ansichten und etwa 30 Funktionen (gespeicherte Prozeduren) in meiner PostgreSQL-Datenbank.

Ich würde gerne sehen, wo Tabellen (welche Ansichten und welche Funktionen) verwendet werden.

Ich würde gerne sehen, wo Ansichten (welche Ansichten und welche Funktionen) verwendet werden.

Ich würde gerne sehen, ob eine Funktion von einer anderen Funktion verwendet wird.

Ich möchte auch eine Beschreibung der einzelnen Objekte (Tabellen, Ansichten und Funktionen)

und eine kurze Beschreibung der Felder schreiben.

Kurz möchte ich in der Lage zu sehen, was ein bestimmtes Objekt verwenden und welche Objekte ein bestimmtes Objekt verwenden.

Ich dachte, eine Textdatei und für jedes Objekt zu verwenden. Ich könnte Objekte auflisten, die die aktuelle verwenden und welche von der aktuellen verwendet werden.

<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 

Ich habe Angst, dass meine Dokumentation heben die Synchronisierung wird schnell Stellen ich eine Funktion f_cccc hinzufügen, die f_aaaa und f_bbbb nennt. Ich muss doc auf f_aaaa und f_bbbb

ändern Ich weiß, dass UML beschreibt Beziehungen über Entitäten (tut es, richtig ???). Aber ich will etwas Einfaches und ich möchte kein 75 Stunden Training folgen ... Und ich bin mir nicht sicher, ob Sie eine "Verbindung" zwischen Entitäten und Funktion haben können, wie ich will.

Haben Sie etwas, das Sie mir vorschlagen können?

Ich benutze PostgreSQL unter Linux (Fedora). Wenn Sie ein Tool vorschlagen, das dies tut, muss es mit PostgreSQL kompatibel sein :-)

Für meine Codedokumentation verwende ich Doxygen.

Vielen Dank

Antwort

-1

ich bauen schließlich eine riesige HMTL-Datei.

Datei enthält viele Anker und es ist einfach, zu verschiedenen Objekten zu navigieren.

Es ist eine Menge Arbeit, aber es war genau das, was ich will :-)

+1

Manuell bauen, das muss schmerzhaft gewesen sein in '09! In gewissem Sinne ist dies, was Javadoc, Sphynx und Andere Dokumentations-Tools tun dies, außer dass sie den Code analysieren und Kommentare lesen, die in einem bestimmten Format definiert sind, und erzeugen den gesamten HTML-Code für Sie selbst. Es ist schade, dass es für postgresql nicht so etwas gibt Ich bin hierher gekommen, um nach einer solchen Lösung zu suchen, habe aber noch keine gesehen. – Davos

0

Zeichnen Sie einfach ein EAR-Diagramm. Entity-Relation-Diagramm.

Dieses Tutorial sollte Ihnen ein gutes Verständnis davon geben. http://www.scribd.com/doc/7500847/entity-relationship-diagram

Und Sie haben diese eine http://www.getahead-direct.com/gwentrel.htm

Edit:

Lassen Sie uns sagen Sie tabe Auto haben, Sie dann eine Box CAR ziehen:

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

thelast 3 deine Funktionen.

+0

Wo kann ich sehen, dass GetCar von GetFastestCar genannt wird? –

+0

Sie nicht. Sie können eine Klasse namens CAR haben, in der GetCar und GetFastesCar Funktionen sind, die jeweils eine DB-Klasse aufrufen, um Informationen abzurufen. Natürlich kann GetFAstesCar ein Kind von GetCar sein, aber dann sprechen wir OO und Vererbung. Wenn Sie Klassen zuordnen möchten, müssen Sie UML lernen. – Steven

2

Ich dokumentiere nicht, um Abhängigkeiten zu sehen. Die Dokumentation ist automatisch veraltet.

Ich benutze ein Werkzeug dafür. Derzeit verwende ich die Produkte von ApexSQL, aber ich habe die Redgate Werkzeuge in der Vergangenheit verwendet.

+0

Es ist ein bisschen teuer für ein Haustier Projekte :-) Es gibt keine Version für PostgreSQL :-( –

4

Sie können einige dieser Informationen tatsächlich sammeln, indem Sie die internen "abhängigen" Informationen der Datenbank abfragen. Wenn etwas von einem anderen abhängt, deutet das darauf hin, dass es es benutzt. Hier ist eine Beispielabfrage, um Ihnen eine Vorstellung davon, wie die beiden Strukturen zu durchqueren beteiligt: ​​

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; 

Informationen über all diese internen Bits in der system catalog Dokumentation.

0

betrachten eine Namenskonvention verwenden SQL Objektabhängigkeiten zu verstärken:

Tabelle1

Table2

vw_table1_byField1

vw_table1_byField1_table2

vw_table2

fn_tabl

e1

fn_table1_table2

+3

IMHO ist es eine wirklich schlechte Idee. Funktionsnamen müssen ausdrücken, was sie tun und nicht, was die Funktion verwenden –

+0

Ja, das kann ich sehen, Er fragt nach Dokumentation, und Sie können die Benennungskonvention sowohl für das, was es macht, als auch darauf, was es ist, verwenden. – Beth

Verwandte Themen