Features
We developed first version of ORM Designer for our company's usage in early 2008. We couldn't find any suitable tool for designing the database model without the need to rewrite the whole model again in ORM XML definitions. In 2009 we decided to make a public release of ORM Designer. We bought two big whiteboards and wrote all the features we were missing. The ORM Designer was rewritten from scratch and most of the features written on the whiteboard are marked as finished. We believe you will find ORM Designer very useful because we gave into this software our everyday experience and tons of hours of work.
User Interface Features
ORM framework support is not the only strength of ORM Designer. It's built on a well designed user interface which makes creating models fun. We focused on clear and well-arranged data model visualization and easy navigation through models with tens of tables. That all is wrapped in modern user interface. To reduce the possibility of error we added transparent consistency checking.
Model Manipulation
ORM Designer has some features known from IDEs (Integrated Development Environments). Developers will be familiar with a project tree. It's a tree representation of database model with regions, columns, indexes and foreign keys. Project tree is not only another visualization of database model. it can be used to run all model management tasks. ORM Designer also has advanced searching tools which are able to search through relations, columns, regions and tables. Database model can be printed in a predefined zoom level or to fit model to a number of papers.
Files and Serialization
ORM Designer is based on a very flexible XML document which is used to store data model definitions and visualization data. Thanks to the open XML format it is very easy to extend ORM Designer with another features, customize it for a new ORM framework or use stored data for post processing tasks. ORM Designer can be configured to save all definitions into one file or to use separate files for each module and also to keep data definitions and visualization data in separate files. ORM Designer contains advanced merging which means you can import parts of other projects or ORM definitions into an existing ORM Designer project.
ORM Frameworks
Any framework with its definitions stored in a markup language (XML or YAML) or another structured document might be fully supported by ORM Designer. ORM Designer can read from and write into native ORM framework format. ORM framework specific features like inheritance, translatable tables, cascading deletes, behaviours etc. can be defined through attributes on each data model object. Also column types can be defined for each ORM framework. More attributes can be extended with user defined definitions.
Custom Object Properties
ORM framework support in ORM Designer is defined in human readable XML documents. All database model objects properties can be customized for ORM framework. Object properties can have simple values of scalar types. For example boolean values (set column as primary key or auto increment) or numbers (string length). ORM frameworks extend regular databases with advanced features: versioning, translatable tables, application cascade deletes, inheritance etc. ORM Designer contains complex object properties. You can select columns to be translated, or tables to be versioned.
Programming Practices
ORM Designer has support for best programming practicies in web projects. You can benefit from separating database model into multiple files which is useful for plugins or modules. Visualization data are related to a module. Position of tables, relations and relation visualization is stored into module file and used once imported into other project. ORM framework definitions exported from ORM Designer are unified and can be compared on commit for changes. Another great feature you would appreciate if using versioning systems (Subversion, CVS etc.) is separation of database model definitions and visualization. When comparing on commit, you can check only for changes in database model.


