[Koha-devel] SQL schema of Koha 3.0.3
Zeno Tajoli
tajoli at cilea.it
Fri Jul 17 17:00:46 CEST 2009
Hi to all,
as I say in previous post and on IRC, CILEA has sponsor writing
documentation of Koha logical SQL schema.
So CILEA has partial done the RFC
<http://wiki.koha.org/doku.php?id=en:development:rfcs3.2:rfc32_koha_api_uml_diagrams_and_e-r_diagrams>Koha
E-R diagrams and tables information
If you go to http://wiki.koha.org/doku.php?id=en:development:dbschema
you can see now two new links about
Koha 3.0.3 logical schema
In fact the SQL documentation is the same, the second has a proposal
how to keep this documentation.
From the README:
Firstly, to automatize as much as possible the documentation task we
used a tool called SchemaSpy <http://schemaspy.sourceforge.net/>
which allows one to explore and produce a diagram representation of
the MYSQL DB.
Secondly, to store the produced documentation we leveraged the
capability of MYSQL of associating comments to both tables and
columns. Even though there are some (but not critical, in this case)
drawbacks in using MYSQL comments to document the DB, such as limited
length of table-level comments, the main benefit is that once entered
they become part of the DB itself and thus they can be inherited, no
matters if table or column definitions change with subsequent
releases of the softwares.
Documentation information is added by using an SQL script called
"documentation patch". This patch has to be created dynamically,
starting from an existing installation of KOHA because in order to
add a comment is necessary to change the table/columns definition.
Since the table/column definition can change at any time during the
development process, we want to be able to "desume" this definition
by looking at the DB structure.
To do so, we leverage the XML file containing a representation the DB
structure created by SchemaSpy when it runs on the DB of a Koha
installation (note: the file will be called "koha.xml" if the DB name
is "koha"). By transforming this XML file through an XSLT stylesheet
we obtain dynamically an SQL patch. This SQL file can now be edited,
for example to add new table/columns comments, and then it should be
run again against the DB in order to update it. It's a good practice
to re-generate the SQL patch every time we want to modify the
documentation in order to avoid that in the meanwhile the DB structure changed.
Example of commands needed to create the SQL patch:
Step 1: Running SchemaSpy
> java -jar schemaSpy_4.1.1.jar -dp <path_to_mysql_java_connector>
-o <output_folder> -t mysql -host <host> -u <user> -p <password> -db
<db_to_describe>
Step 2: Creating the SQL patch:
> java -jar saxon9.jar -s:<path_to_XML_file_generated_by_SchemaSpy>
-xsl:generate_sql_dbdoc_patch.xsl -o:autogen_dbdoc_patch.sql
Step 3: Update autogen_dbdoc_patch.sql
vi autogen_dbdoc_patch.sql
Insert the comments about new column, fix errors, etc.
Step 4: Running the SQL script:
> mysql -u <user> -p -h <host> < autogen_dbdoc_patch.sql
So the work of Matteo Romanello is done.
The questions are:
-Do you like the selection of those tools ?
-Do you think this is a good workflow to keep updated the
documentation of MySQL level ?
Bye to all
Zeno Tajoli
CILEA - Segrate (MI)
tajoliAT_SPAM_no_prendiATcilea.it
(Indirizzo mascherato anti-spam; sostituisci quanto tra AT con @)
More information about the Koha-devel
mailing list