The ORM Foundation

Get the facts!

What you can do (better) with ORM

Specify requirements
Agree semantics before writing code
Generate a class model
Generate a fully normalized schema
Generate DDL
Analyse database semantics
Audit an organisation 

Events & News 

3 April 2024  The site was re-opened after being shut down in October 2023. The shut-down was in response to being hacked in September 2023.
.5 April 2023 Norma for VS2022  Norma Tutorial 1 has been updated to include instructions for installing NORMA For Visual Studio 2022.

9 March 2020 
Understand the Relational Model - before learning anything else! Fabian Pascal's website  is probably the best site for learning about the many misconceptions of what a "data model" is and what it is not!  

23 May 2019  NORMA Tutorial 1 - updated for Visual Studio 2019
This new version of Tutorial 1 contains 63 PowerPoint slides that cover the basic functions of NORMA. The Tutorial has been updated using screen shots from NORMA for Visual Studio. Thanks to Terry Halpin.  


Click an image

Microsoft's ORM tool

  For ORM users

ORM details book. 

Welcome!

Object-role modeling is a formal language for defining requirements and systems.

I first heard about ORM in the early 1990's.  Intrigued by the productivity claims, 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 teaching many analysts, developers and university staff  how to use ORM to design databases, Terry asked me to co-author a book about Microsoft's ORM tool "Visio for Enterprise Architects" (VEA). The book was published in 2003.

The first ORM Workshop (1994) was run by Terry Halpin and Robert Meersman on Magnetic Island, Australia. Between 2005 and 2013, the ORM Workshop ran in conjunction with Robert Meersman' s On The Move conference. In 2005, those present agreed by unanimous vote that an ORM Foundation was needed to promote ORM. So I set up this website as a service to the global ORM Community.

Ken Evans

=============================================================

This video gives an overview of the ORM data driven development process. The  video uses material that I made when I was teaching University students.

ORM Book: Terry Halpin's "Object-Role Modeling Workbook"  explains how to generate 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: was held in the beautiful town of Bolzano, Italy. The event started on September 22 at the KRDB Research Centre in the Faculty of Computer Science at the Free University of Bozen-Bolzano. The workshop was 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. 

==================================================== 

Why ORM? 

Many software projects exceed budgets and timescales or are cancelled. People who write about failed IT projects such as Tony Collins  cite "vague requirements" as a main cause of failure.

There would be fewer failures if each project started with a clear and agreed set of requirements that defined "what" the project had to deliver before investing in an implementation project. 

In 1975, Fred Brooks said"Because our ideas are faulty, we have bugs." (The Mythical Man Month). In 2000, Tony Collins said that projects should be split into two separate contracts: The first contract defines requirements and the second contract develops software that conforms to the requirements.

But projects still keep failing which suggests that the "requirements lesson" of the 1950' has been dismissed, disparaged or discarded. Why? Let's consider thee sources: sponsors, documentation and development methods.  

Some sponsors don't get involved in the development process. Others, having agreed benefits and budget, 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 to understand what the sponsors want. But requirements documents often contain hundreds of pages of verbose and ambiguous prose. Can this problem be solved?

Over the last 70 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 project. Waterfall was used by NASA's Apollo project which used IMS, IBM's hierarchical database management system. A hierarchical database is fast when you want to find data by navigating the existing hierarchical pointer structure, but it is hard to extract data that is spread across several branches of the hierarchy.  

In 1969, Edgar Codd proposed the relational model to solve this problem. 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".  Codd  introduced the concept of normal form and normalization which is used to avoid logical inconsistencies, 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 this 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. But 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? ORM is a formal language that can be used to specify requirements, design databases and audit organisations. When you design an object-role model, you don't need to write long ambiguous documents. Non-technical sponsors can easily validate an object-role model because it is easy to understand formal sentences. After the domain experts have validated the object-role model it can be used to generate a fully normalized database schema

================================ 

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

The scope of a fact type must be restricted. For example, in 2020, you can't have someone with a birth date that is in the year 2021 or later. So you use ORM to limit the allowable values of "Birth Date". For example: "The value of Birth Date cannot be greater than today's date."

The analyst uses an ORM tool to create the object-role model by adding new fact types and constraints one at a time. The ORM tool can generate easy-to-read sentences that define the fact types and constraints.

This makes it easy for sponsors to check that the model accurately represents their ideas. The sponsor just agrees or disagrees with the formal 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 for developers to use. 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. 

ORM reduces development costs and helps to minimize the risk of costly design errors.

================================ 

What is the history of ORM? ORM evolved from European research into semantic modeling. There were many contributors. 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". Later, Sjir Nijssen introduced the "circle-box" notation and 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 kept 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 led the team that developed the ORM tool called "Natural ORM Architect for Visual Studio" (NORMA). You can download 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 and the Library contains ORM software, ORM tutorials and over one hundred ORM presentations of peer reviewed scientific papers.

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".

Who Is Online

© 2008-2024 ------- Terms of Service