DB>doc: generování databázové dokumentace snadno a rychle

Pro jeden projekt, na kterém momentálně pracuji, jsem hledal nástroj, který by mi umožnil snadno vygenerovat dokumentaci k používaným databázovým objektům. Zejména tedy k čemu jsou dobré jednotlivé tabulky a jaký význam mají jejich sloupečky. Bohužel jsem takový nástroj nenašel. Vytváření komentářů je v SQL serveru poměrně snadné, jde to dělat snadno třeba z databázového diagramu. Ale potom s těmi komentáři nějak rozumně pracovat, na to jsem dobré řešení nenašel. Zkoušel jsem databázové diagramy ve Visiu a podobných nástrojích, nicméně ty se zaměřují spíše na popisování vztahů mezi jednotlivými entitami, než na popisy jejich obsahu, tedy co je tam konkrétně za sloupečky a především, co se očekává, že budou obsahovat za hodnoty.

Našel jsem spoustu obludně složitých nástrojů, ale nic, co by mne uspokojilo. Naštěstí je ale poměrně snadné napsat nástroj, který zmapuje strukturu předhozené mu databáze a načte související komentáře. Výsledek pak může vypadat nějak takto:

20110127-dbdoc

DB>doc for Microsoft SQL Server

Napsal jsem jednoduchou utilitku, která se ovládá z příkazové řádky a přesně tohle dokáže. Zmapuje tabulky, pohledy a vztahy mezi nimi a vygeneruje XML dokument, který obsahuje všechny potřebné informace. Výstup je pak k dispozici v několika různých formátech:

  • XML – původní XML dokument, který můžete použít pro další zpracování, například pomocí XSLT transformací. Program sám obsahuje dvě transformace, které umožňují výstup v dalších dvou formátech.
  • HTML – výsledkem této transformace je HTML dokument, který obsahuje informace o všech tabulkách. Funguje interaktivně, foreign klíče vedou na odkazované tabulky a obsahuje dostatek prostoru pro komentáře. Zároveň je tento dokument optimalizován pro tisk, takže jej lze použít pro tvorbu dokumentace buďto tištěné a nebo třeba v PDF nebo XPS.
  • WikiPlex – třetí formát, do nějž lze dokumentaci exportovat, je textový dokument s wiki syntaxí projektu WikiPlex. Tento formát používá třeba populární server CodePlex, ale je snadné jej zahrnout i do vlastních projektů.

K dispozici je též ukázka dokumentace vygenerované pro populární databáze Northwind a AdventureWorks. Vzhledem k použité technologii XSL transformací je možné tyto šablony snadno modifikovat nebo vytvářet nové, podle požadavků daného projektu.

Podstatné je, že žádnou dokumentaci není nutné vyvíjet zvlášť, všechno je drženo v rámci SQL serveru samotného a jeho metadat.

Mým současným požadavkům aplikace vyhovuje, přestože neumí dokumentovat třeba uložené procedury, já je beztak moc nepoužívám, obecně dávám přednost řešení na straně .NETu. Nicméně, pokud bude mít někdo zájem, je možné jej o tyto a další možnosti snadno rozšířit, infrastruktura je ta. Podporovaná platforma je Microsoft SQL Server 2008 a 2008 R2. Nástroj by měl nicméně fungovat i proti SQL Azure nebo proti SQL Serveru 2005, ačkoliv jsem to zatím ještě netestoval.

DB>doc for Microsoft SQL Server si můžete stáhnout na adrese sqldbdoc.codeplex.com. Program je licencován pod Ms-PL (Microsoft Public License) a k dispozici jsou tedy i jeho zdrojové kódy pro další vývoj či inspiraci.

Titulek:
Text komentáře:
Vaše jméno:
Váš e-mail: (nebude zveřejněn)

WWW stránka:
Opište text z obrázku:

Potěšilo mě (a svým způsobem překvapilo), že se objevil někdo další, kdo používá MS_Description extended properties pro dokumentování databáze. I když mi to přijde úplně přirozené, nepotkal jsem ještě nikoho, kdo by to využíval.

První feedback

- nereflektuje to Custom Types, používáme třeba pro SQL2005 a starší typ TDate pro označení pole, které nese hodnotu data (bez času), ale tobě to vypadne jako datetime.

- fajn by bylo, kdyby to umělo vypsat i další extended attributes, než jenom MS_Description

- fajn by bylo, kdyby to umělo vypsat i další objekty, než jenom tables/views, třeba storky, funkce, ...

- fajn by bylo (z říše snů), kdyby to umělo vytáhnout přímo obrázky diagramů :-)))

Každopádně díky za prima utilitku, ze které se přinejmenším dá dobře vycházet pro další vlastní customizace.

- Custom types nepoužívám a mám-li být upřímný, moc nevím, jak vůbec fungují. Mělo by být ale vcelku jednoduché to tam dopsat,pokud ty ano, od toho je to open source.

- Další extended attributes: já jsem nikdy žádné další extended attributes než MS_Description neviděl, s výjimkou atributů pro layout diagramů. Je triviální napsat jejich generování do XML, transformaci do HTML můžu změnit, pokud mi řekneš, jaké atributy tam mají být a jak se mají zobrazit.

- S podporou dalších typů objektů (minimálně uložených procedur) se do budoucna počítá.

- Obrázky diagramů neplánuju, moje představa je, že tento nástroj bude sloužít jako jejich doplněk, ne jako náhrada.

S další customizací se počítá. Ty, i kdokoliv jiný, jste vítáni se připojit k vývoji na CodePlexu.

  • Altairis
  • Nemesis
  • Microsoft MVP
  • IIS
  • ASP.NET