GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
GraphViz2::DBI(3) User Contributed Perl Documentation GraphViz2::DBI(3)

GraphViz2::DBI - Visualize a database schema as a graph

        use DBI;
        use GraphViz2;
        use GraphViz2::DBI;

        exit 0 if (! $ENV{DBI_DSN});

        my($graph) = GraphViz2->new (
                edge   => {color => 'grey'},
                global => {directed => 1},
                graph  => {rankdir => 'TB'},
                node   => {color => 'blue', shape => 'oval'},
        );
        my($attr)              = {};
        $$attr{sqlite_unicode} = 1 if ($ENV{DBI_DSN} =~ /SQLite/i);
        my($dbh)               = DBI->connect($ENV{DBI_DSN}, $ENV{DBI_USER}, $ENV{DBI_PASS}, $attr);

        $dbh->do('PRAGMA foreign_keys = ON') if ($ENV{DBI_DSN} =~ /SQLite/i);

        my($g) = GraphViz2::DBI->new(dbh => $dbh, graph => $graph);

        $g->create;

        my($format)      = shift || 'svg';
        my($output_file) = shift || File::Spec->catfile('html', "dbi.schema.$format");

        $graph->run(format => $format, output_file => $output_file);

See scripts/dbi.schema.pl ("Scripts Shipped with this Module" in GraphViz2).

The image html/dbi.schema.svg was generated from the database tables of my module App::Office::Contacts.

Takes a database handle, and graphs the schema.

You can write the result in any format supported by Graphviz <http://www.graphviz.org/>.

Here is the list of output formats <http://www.graphviz.org/content/output-formats>.

"new()" is called as "my($obj) = GraphViz2::DBI->new(k1 => v1, k2 => v2, ...)".

It returns a new object of type "GraphViz2::DBI".

Key-value pairs accepted in the parameter list:

o dbh => $dbh
This options specifies the database handle to use.

This key is mandatory.

o graph => $graphviz_object
This option specifies the GraphViz2 object to use. This allows you to configure it as desired.

The default is GraphViz2->new. The default attributes are the same as in the synopsis, above, except for the graph label of course.

This key is optional.

Creates the graph, which is accessible via the graph() method, or via the graph object you passed to new().

Returns $self to allow method chaining.

Parameters:

o exclude
An optional arrayref of table names to exclude.

If none are listed for exclusion, all tables are included.

o include
An optional arrayref of table names to include.

If none are listed for inclusion, all tables are included.

Returns the graph object, either the one supplied to new() or the one created during the call to new().

For plotting foreign keys, the code has an algorithm to find the primary table/key pair which the foreign table/key pair point to.

The steps are listed here, in the order they are tested. The first match stops the search.

o Ask the database for foreign key information
DBIx::Admin::TableInfo is used for this.
o Take a guess
Assume the foreign key points to a table with a column called "id", and use that as the primary key.
o Die with a detailed error message

See "FAQ" in DBIx::Admin::TableInfo.

Yes. See "FAQ" in DBIx::Admin::TableInfo.

See "FAQ" in DBIx::Admin::TableInfo.

It uses DBIx::Admin::TableInfo.

If the environment vaiables DBI_DSN, DBI_USER and DBI_PASS are set (the latter 2 are optional [e.g. for SQLite]), then this demonstrates building a graph from a database schema.

Also, for Postgres, you can set $ENV{DBI_SCHEMA} to a comma-separated list of schemas, e.g. when processing the MusicBrainz database. See scripts/dbi.schema.pl.

For details, see <http://blogs.perl.org/users/ron_savage/2013/03/graphviz2-and-the-dread-musicbrainz-db.html>.

Outputs to ./html/dbi.schema.svg by default.

Demonstrates how to find foreign key info by calling SQLite's pragma foreign_key_list.

Outputs to STDOUT.

Many thanks to the people who chose to make Graphviz <http://www.graphviz.org/> Open Source.

And thanks to Leon Brocard <http://search.cpan.org/~lbrocard/>, who wrote GraphViz, and kindly gave me co-maint of the module.

GraphViz2 was written by Ron Savage <ron@savage.net.au> in 2011.

Home page: <http://savage.net.au/index.html>.

Australian copyright (c) 2011, Ron Savage.

        All Programs of mine are 'OSI Certified Open Source Software';
        you can redistribute them and/or modify them under the terms of
        The Perl License, a copy of which is available at:
        http://dev.perl.org/licenses/
2020-11-05 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.