The ORM Foundation

Get the facts!

What you can do with ORM

Agree semantics before writing code
Generate a class model
Generate a fully normalized schema
Generate DDL
Analyse database semantics

Events & News 

14 Sep 2016: Free Course in Logic
Click here to join a free online course in Logic taught by Associate Professor Michael Genesereth of Stanford University.

Sep 2016:
Update to NORMA Tutorial
A new version of NORMA Tutorial 1 is now available in the Library.  

9 July 2016: All Models are Logical
Professor Gordon Everest has posted this new video that positions ORM and explains why "All Models are Logical".   

29 March 2016: ORM Video
To see how easy it is to use ORM to design a fully normalised schema, create a database and then access the data via a simple web page just view the video in the lower part of this page.

NORMA runs in the FREE Editions of Visual Studio 2013 & 2015 

Click an image

Microsoft's ORM tool

  For ORM users

ORM details book. 


In the early 1990's whilst looking for a data modeling tool, I heard about object-role modeling (ORM). Intrigued by the productivity claims, I wanted to know more. So I flew to Seattle to meet Terry Halpin and the team who were developing InfoModeler for Paul Allen. I was so impressed that I agreed to promote and distribute InfoModeler in Europe.

Years later, after I had taught many business analysts, software developers and university professors how to design databases using InfoModeler and VisioModeler, Terry asked me to co-author a book about Microsoft's new ORM tool called "Visio for Enterprise Architects" (VEA). (the blue book in the sidebar). The book was published in 2003 to coincide with Microsoft's VEA product launch.

The first international ORM Workshop was organised in 1994 by Terry Halpin and Robert Meersman on Magnetic Island, Australia. Between 2005 and 2013, the ORM Workshop ran in conjunction with Robert Meersman's annual On The Move conference. At the 2005 Workshop, those present agreed by unanimous vote that an ORM Foundation was needed to promote ORM. This led me to set up this website as a service to the global ORM Community.

Ken Evans

ORM Book: Terry Halpin's "Object-Role Modeling Workbook" has lots of exercises and explains generating reports, glossaries, relational mapping options, annotated relational schemas, schema optimization and data modeling patterns. Click the image to read more. 

Try the exercises with the freeware NORMA tool.

ORM 2014 Workshop: The ORM 2014 Workshop was held in the beautiful town of Bolzano, Italy. The two day event started on Monday September 22 at the KRDB Research Centre in the Faculty of Computer Science at the Free University of Bozen-Bolzano. The workshop was kindly hosted by Professor Enrico Franconi and chaired by Professor Terry Halpin. The workshop was followed by a meeting of the Fact Based Modeling Working Group chaired by Serge Valera of the European Space Agency. 


This video shows an end-to-end overview of the ORM based data driven development process.
This is an experimental video that I compiled from material that I made about four years ago when I was teaching ORM to University students in their 3rd year of a computer science degree. Future videos will be of better quality. 



The need for object-role modeling

All too often, software projects greatly exceed budget and timescale or are cancelled at great cost. People who study and write about failed IT projects such as journalist Tony Collins often cite "vague requirements" as a main cause of project failure.

So you might conclude that there would be fewer failed projects if each project started with a clear and agreed set of requirements that defined "what" the project had to deliver before investing in a project to implement the "how".

In 1975, Fred Brooks said "Because our ideas are faulty, we have bugs."  (The Mythical Man Month). Twenty five years later, after extensive research into the causes of IT project failures, Tony Collins suggested that every project should be split into two separate and independent contracts: The first contract should define requirements and the second contract should develop software and systems that conform to the requirements.

But projects still keep failing which suggests that the "requirements lesson" learned in the 1950's seems to have been forgotten, disparaged or discarded. So let's consider three possible problem sources: sponsoring managers, documentation and development methods.  

Some sponsors just don't have time to get involved in the development process. Others, having agreed a project's concepts, benefits and budget, choose not to get involved and just want the developers to "get on with it". But whatever the style of management, busy sponsors would benefit by ensuring that their needs are understood by developers. So what's most efficient way to do it?

Developers need a clear understanding of what the sponsors want. But requirements documents often contain dozens if not hundreds of pages of verbose and ambiguous prose. Can this problem be solved?

Over the last 60 years, several methods have been used to bridge the requirements gap between sponsors and developers.

In the 1950's, the waterfall method was used for the SAGE computer project. Waterfall was also used by NASA's Apollo project which operated with IMS, IBM's hierarchical database management system. A hierarchical database is very fast when you want to find data by navigating the hierarchical pointer structure that was specified by the database designer. But it is much harder to extract data that is spread across several branches of the hierarchy.  

In 1969, Edgar Codd proposed the relational model as a solution to this problem. The first sentence of his 1970 paper says "Future users of large data banks must be protected from having to know how the data is organized in the machine".  His paper introduced the concept of normal form and the related process of normalization which is needed to avoid logical inconsistencies, anomalies, data duplication and excessive maintenance costs.

In 1976, Peter Chen proposed the Entity-Relationship (ER) model for database design. ER remains popular but there is no standard. One problem with ER is that to remove anomalies and redundancies, you must use complex, time-consuming and error prone manual methods such as functional dependency analysis to normalize your ER model. So my "elephant in the room" question for ER modelers is: "If it is so difficult to get rid of the anomalies and redundancies in your ER model, why did you put them there in the first place?" I wonder if Edsger Dijkstra was thinking about ER when he said "All unmastered complexity is of our own making!"

In the 1990's, Grady Booch, Ivar Jacobson and James Rumbaugh developed UML, a method for designing object-oriented programs. With UML, you define a data structure by using a class diagram. UML is complex, ambiguous and inconsistent which makes it hard to design a class structure that does not contain similar anomalies to those in an ER model.


Why ORM? Object-role models avoid the need to write long documents in ambiguous natural language prose. Non-technical sponsors can easily validate an object-role model because it can be expressed in easy-to-understand sentences. After the domain experts have validated the object-role model it can be used to generate a class model or a fully normalized database schema. 


How do you make an object-role model? An ORM analyst guides sponsors to express their ideas using simple sentences such as "The person called Fred was born on 15th July 1985." and "The person called Mary was born on 10th July 1990". In ORM we call such sentences "facts".  The analyst then looks for patterns in the facts. So, for example, these two facts fit the pattern "Person was born on BirthDate". In ORM, we call such patterns "fact types".  

Usually, the scope of the fact types must be restricted. For example in the year 2016, you can't have someone with a birth date that is in the year 2017 or later. So you use ORM to put a constraint on the allowable values of "BirthDate". For example: "The value of BirthDate cannot be greater than today's date."

The analyst creates the object-role model by adding each new fact type and constraint into the object-role model. The analyst uses an ORM tool to generate easy-to-read sentences that show the fact types and constraints that have been defined within the object-role model.

This makes it easy for sponsors to check that the model accurately represents their ideas. The sponsor just agrees or disagrees with the output generated by the ORM tool. The cycle of input and validation continues until the model is considered complete.

The analyst then generates a data structure against which developers can write application software. The data structure can be a class model or a relational database schema. When generating a relational schema, the ORM tool automatically generates a fully normalized schema which avoids the considerable effort required for manual normalization that is needed in the ER method as described by Stanford University Professor Jennifer Widom in this video.

Cost conscious managers should note that ORM helps to reduce development costs and helps to minimize the risk of making costly design errors.


What is the history of ORM? ORM has evolved from European research into semantic modeling during the 1970's. There were many contributors and this paragraph only mentions a few. In 1973, the IBM Systems Journal published a paper by Michael Senko about "Data Structuring". In 1974 Jean-Raymond Abrial contributed an article about "Data Semantics" and in June 1975, Eckhard Falkenberg published his doctoral thesis. In 1976, Falkenberg used the term "object-role model" in one of his papers. Later, Sjir Nijssen introduced the "circle-box" notation together with an early version of the conceptual schema design procedure. Robert Meersman added subtyping, and a conceptual query language.

In 1989, Terry Halpin formalized ORM in his PhD thesis. In the same year, Terry and Sjir Nijssen co-authored the book "Conceptual Schema and Relational Database Design".

ORM Tools: Early ORM tools such as IAST and RIDL* (Control Data) were followed by InfoDesigner (ServerWare), InfoModeler (Asymetrix) and VisioModeler (Visio Corporation). In 2000, Microsoft bought the Visio Corporation and improved VisioModeler.  In 2003, Microsoft published its first ORM implementation as a component of Visual Studio for Enterprise Architects called "Microsoft Visio for Enterprise Architects" (VEA).  

Microsoft retained VEA in the high-end version of Visual Studio 2005 but then discontinued its ORM project. The book "Database Modeling with Microsoft Visio for Enterprise Architects" (see sidebar) contains a comprehensive guide to VEA

Terry Halpin and Matt Curland have developed an ORM tool called "Natural ORM Architect for Visual Studio" (NORMA). You can download the latest release of NORMA from the Library.  

How can I learn more? The definitive book on ORM is "Information Modeling and Relational Databases - Second Edition". You can order the book by clicking on the image in the sidebar.

The research page describes the scientific experiment that I used to support my MSc dissertation in 2008. I designed the experiment to test the hypothesis that "ORM based methods require at least 25% less effort than alternative methods such as UML and ER."  

The Forum contains over 3,000 posts of ORM related discussions. The Library contains ORM software, ORM tutorials and over one hundred ORM presentations of peer reviewed scientific papers given by ORM researchers at the annual ORM Workshops.

You can browse the Library and Forum and registered members can download documents and participate in the forum discussions.

Recent spam attacks on this website mean that membership is now "by invitation only". If you want to request membership, click on the "join" button at the top right and fill in the form.

What's New

  • Re: Using ORM to Model User-defined DataTypes

    Thank you, Terry. That answers my question about NORMA's functionality, and your suggested work-arounds would work well for me. I agree with all the posted comments on the separation of conceptual and logical/physical modeling concerns, and usually follow them in my own practice. I simply needed a compromise approach in this instance. Ken, I would...
    Posted to ORM Techniques (Forum) by jemstl on Mon, Oct 24 2016
  • Re: Using ORM to Model User-defined DataTypes

    ORM recognizes three kinds of object types: entity type (e.g. Country); domain value type (e.g. CountryCode) often shortened to "value type", and data type (e.g. string). Value types carry more semantics than data types (e.g. the CountryCodes 'CH'and 'DE' are based on Latin and German respectively, but the same does not apply...
    Posted to ORM Techniques (Forum) by Terry Halpin on Sun, Oct 23 2016
  • Re: Using ORM to Model User-defined DataTypes

    " his business problem was the original business problem that his database was part of the solution for " Yes Erwin, of course I agree with you on this one. The posts suggest that for "some reason" John was trying to force a database specific feature into the conceptual model - which, as you say, is not appropriate. However, some...
    Posted to ORM Techniques (Forum) by Ken Evans on Sat, Oct 22 2016
  • Re: Using ORM to Model User-defined DataTypes

    Of course. And do you think this was the OP's case ? That his business problem was the database design itself ? Or would you rather think his business problem was the original business problem that his database was part of the solution for ?
    Posted to ORM Techniques (Forum) by Erwin Smout on Sat, Oct 22 2016
  • Re: Using ORM to Model User-defined DataTypes

    "The intended use of ORM is to model *business* stuff at the *conceptual* level." That's true - but it does depend on what you mean by the term "business" For example you can design an object-role model from statements such as: The database type with the name of SQL Server can be queried with the language called SQL. The database...
    Posted to ORM Techniques (Forum) by Ken Evans on Sat, Oct 22 2016

Who Is Online

© 2008-2016 The ORM Foundation: A UK not-for-profit organisation -------------- Terms of Service