Alzabo is a two-fold program. Its first function is as a data
modelling tool. Through either a schema creation interface or a custom
perl program, you can create a set of schema, table, column,
etc. objects that represent your data model. Alzabo is also capable of
reverse engineering an existing data model.

Its second function is as a RDBMS to object mapping system. Once you
have created a schema, you can use the Alzabo::Runtime::Table and
Alzabo::Runtime::Row classes to access its data. These classes offer a
high level interface to common operations such as SQL SELECT, INSERT,
DELETE, and UPDATE commands.

To take it a step further, you could then aggregate a set of rows from
different tables into a larger container object which could understand
the logical relationship between these tables.  The
Alzabo::MethodMaker module can be very helpful in this regard.

For more information please see the Alzabo (start with perldoc Alzabo)
or the Alzabo homepage at http://alzabo.sourceforge.net/.  The full
documentation in HTML form is available at
http://alzabo.sourceforge.net/docs/

Install information is in the INSTALL file.

UPGRADING

If you have an older version of Alzabo installed and you want to
continue to use older schema objects you need to do the following
steps _before_ installation.

Run the convert.pl script in the eg/ directory.  By default, it will
attempt to convert all your schemas.  This script generates files
containing Perl code which will recreate your schema with the latest
of version of Alzabo.  

Once you've run the convert.pl script for the all schemas you need to
upgrade, install the latest version of Alzabo.  Then run the files
created by the convert.pl script.  This overwrites your old files so
_make backups first_!

BUGS

- Forking apps and Postgres

In testing, I found that there were some problems using Postgres in a
situation where you start the app, connect to the database, get some
data, fork, reconnect, and and then get more data.  I suspect that
this has more to do with the DBD::Pg driver and/or Postgres itself
than Alzabo.  I don't believe this would be a problem with an app
which forks before ever connecting to the database (such as mod_perl).
I have structured the test suite to avoid this problem in testing but
forewarned is forearmed (or something like that).

- make_html_docs.pl and Pod::Html

There are links in the pod for Alzabo/Runtime/Table.pm back to
Alzabo.pm that Pod::Html fails to resolve.  This patch (against the
version of Pod::Html that comes with Perl 5.6.1) fixes this, though it
may break other things.

--- Html.pm.old	Mon Jul  2 11:52:46 2001
+++ Html.pm	Mon Jul  2 11:52:54 2001
@@ -1697,7 +1697,7 @@
     $page=$page83 if (defined $pages{$page83});
     if ($page eq "") {
 	$link = "#" . htmlify( $section );
-    } elsif ( $page =~ /::/ ) {
+    } elsif ( $page =~ /::|(?:^\w+$)/ ) {
 	$page =~ s,::,/,g;
 	# Search page cache for an entry keyed under the html page name,
 	# then look to see what directory that page might be in.  NOTE:

CREDITS

Thanks very much to Randal Schwartz for spending time with me on IRC
helping me find problems with the install process.

Bob Gustafson has provided extensive assistance in testing and
debugging.

Various bug reports and assistance from:

Robin Berjon
Rami Cohen-Scali
Robert Goff
Michael Graham
Sam Horrocks
Aaron Johnson
Dana Powers
Ron Savage