I’ve long been interested in fact-based data modelling, also known
as conceptual modeling, using the technique of Object Role Modeling
(see http://www.orm.net). An algorithm called RMap is known which
maps an ORM model to a relational model, and is implemented in some
existing tools - for example NORMA, an open source Visual Studio
plugin, at http://sourceforge.com/projects/orm.
The fact-based modeling process reliably creates correct database
schemas by dealing in elementary facts, delaying and automating
decisions about how to group those fact into tables and columns
until the facts are verified. Because each fact is elementary, it
can be automatically verbalised as natural-language sentences that
read smoothly in English, which allows verification by a domain
expert who doesn’t understand the graphical language.
Queries against the conceptual schema are more stable and simpler
than the SQL which implements the same query, mainly because there
are no explicit joins.
I’ve commenced a Ruby project to implement (progressively over time):
- an API to allow manipulation of an ORM model
- an XML import tool for models from NORMA
- a reflection tool to extract a conceptual model from a database
- a verbalization generator (and possibly a parser)
- the Rmap algorithm to produce an ER schema
- a remapping process that generates database migrations dynamically
- a conceptual query implementation that creates and executes SQL
- various even more ambitious things I’m not publicising yet
In time, this could become an viable alternative to ActiveRecord .
I’m convinced that this direction is the future of databases…
In any case, I thought I’d post this brief description in a search
for collaborators - or even just folk with whom to discuss things.
I’ll be at Rails Conf in Portland - perhaps a modeling BOF is an
Clifford H. (First . Last AT gmail . com)