I've grouped the feedback & questions into this one mail to answer them all at
once:
Is this a MW item or something you created for your
own (shared)
information.
It was done for my own amusement and interior decoration. If my plan works out, then
it will constitute half of something larger (a MediaWiki technical wall poster). I'd
like the other half to be an overview map / diagram of the core code, created as much
as possible from the code itself, using the class comments and so forth in the code,
showing which classes derive from which others, grouping related files together into
logical groups, and _maybe_ showing which classes call which others using arrows to
help indicate the most core functionality. (Although I don't know if this is even
going to be possible / practical, so if anyone knows of pre-existing good tools that
will do this type of thing, please let me know).
Did you make this manually or with a schema->graph
tool? If the latter, can you recommend a good open source one? I
have some other database projects where I could use diagrams like this.
With a schema to graph tool. I _really_ didn't want to create it completely
from scratch :)
I first had a quick look around, and only saw two database schema diagrams
for open-source software that were close to what I was looking for, namely these two:
http://www.dcm4che.org/confluence/display/ee2/Database+Schema+Diagram
http://www.torkiljohnsen.com/wp-content/uploads/2006/04/joomla_15_database_…
I don't know how the first was created (I've asked on the guy's blog, but
haven't got
an answer yet), but the second was done with dbdesigner4 as per this blog post:
http://www.torkiljohnsen.com/2006/04/30/joomla-15-database-schema/ - and it was what
was used for this diagram, as Jared correctly guessed.
Dbdesigner4 is open source (GPL), and is available for Windows and Linux. It works on
MySQL, SQLlite, Oracle, MS SQL, and ODBC databases. (
http://fabforce.net/dbdesigner4/ )
It seems fairly good to me - it has a couple of minor annoyances (e.g. you can't
export
to SVG, only to PNG or BMP), but probably try it first for your other projects.
I also had a play with schemaSpy (
http://schemaspy.sourceforge.net/ ), (example diagram:
http://schemaspy.sourceforge.net/sample/relationships.html ), which is a Java package,
but I got an error trying to run it under GCJ (rather than Sun's JVM), so in the end
I just stuck with dbdesigner4.
I see one line, from the hit_counter box,
that appears to run through the revision box
to the page box.
This kind of layout work is hard,
but rerouting the line would probably
be worth the gain in clarity.
Good idea - I have moved the hitcounter table up now so that the link doesn't go
through the middle of the revision box.
Maybe, if you include documentation
of the tools used to produce the diagram
and provide their intermediate files,
you will be able to get others to help
with revisions when the schema changes.
In terms of what you do to recreate the diagram, using dbdesigner 4.0.5.6, you go to the
Database
menu -> Reverse Engineering -> specify the host / database / username / password,
and it will
create a diagram without any coloured boxes, and very few relationships, and no
descriptions,
but with all the database tables.
The coloured boxes you add with the "R" / "new region" button in the
toolbar. The relationships
were added with the "New 1:n Non-identifying relation" toolbar button (you
select it and click
on the source column in one table, then click on the dest column in the other table, then
supply
a description of what the relationship is, and correct the field name in the destination
table,
which it always seems to get wrong, and then it will draw a link between the two). The
text
descriptions of tables were added using the text toolbar icon (looks like a letter
"T" on a bit
of paper), and most of the descriptions came from
MediaWiki.org or tables.sql.
However, there's no need for anyone to reinvent the wheel doing the above, just open
the saved
XML data file in dbdesigner, and save yourself the hassle - it's available at:
http://files.nickj.org/MediaWiki/mediawiki-dbdesigner-schema-data.xml
(it's under the same licenses as the image, as per below).
I hope you make this generally available.
...
Please upload to Commons??? :)
Done, now at:
http://commons.wikimedia.org/wiki/Image:Mediawiki-database-schema.png
I'm not quite sure what license I should be using, but I've currently put it under
both the GFDL
& GPL. The reason I'm not 100% sure what licence to use is that it is derived from
the great
work that others have done (both in MediaWiki's tables.sql, which is GPLv2, and on
MediaWiki.org,
which is GFDL) in terms of documenting descriptions of tables and fields that are used for
joins.
So if there are any problems with this, please tell me what license / licenses it should
be
under and I will happily change it.
-- All the best,
Nick.