I like Object-Role Modeling very much. Some ORM gurus even say with ORM, you can forget about Normalization. Of course, normalization is built in the ORM procedure. However, I do not agree with such extreme views. Why would I forget something I know? In my age, with all the beer I drink, I keep on forgetting things anyway. Why would I do this intentionally? There are also more serious reasons why you should not forget the normalization.

Although you should get to the same or very similar model no matter of the method you are using, no matter it is ORM, ER, Normalization or anything else, the Normalization is the only mathematical process that leads to the desired goal – one set per table. What I mean Normalization is the only process that, when done properly, guarantees a normalized database. What if the relational mapping procedure, the procedure that converts ORM model to ER model and physical code, built in the tool has some bugs? You should not forget about the Normalization, you should use it for checking your model created with other methods.

In addition, nothing comes for free. In order to get fully normalized model with ORM, you have to follow a very strict procedure. This is the Conceptual Schema Design procedure (CSDP). It has seven steps:

  1. Transform familiar information examples into elementary facts and apply quality checks.
  2. Draw the fact types and apply a population check (that is, write examples) for each fact.
  3. Check for entity types that should be combined and note any arithmetic derivation.
  4. Add uniqueness constraints and check arity of fact types. Arity means how many objects are involved in the proposition. Typical facts are binary; they involve two objects. You can also have unary, ternary, and quaternary facts. You must check whether you can decompose facts of bigger arity to more elementary facts.
  5. Add mandatory role constraints and check for logical derivations.
  6. Add value, set comparison, and subtype constraints.
  7. Add other constraints and perform final checks.

I will discuss the steps in forthcoming blogs.

Dejan Sarka