Information Modeling and Relational Databases, Second Edition (The Morgan Kaufmann Series in Data Management Systems)

Category: Programming
Author: Terry Halpin
This Month Stack Overflow 1


by anonymous   2017-08-20

Actually, there's more than one problem with your model, even as simple as it is. A thing may have a date of birth if it was ever living. It may once have been living, yet now be dead.

Also, you'll want to clarify whether the absence of the fact "Type lives" implies "Type does not live" (Closed World Assumption), or whether it only implies "Type is not known to live" (Open World Assumption, I think).

One additional concern I have is that your question seems to be somewhat confused, combining "relational model" and "ORM" in the same "sentence". Object-Role Modeling is a Conceptual modeling tool for creating conceptual models, which may then be mapped to a Relational schema. Even if you are reverse-engineering an existing Relational schema, it's best to use the schema as only part of the information you would use to create a correct Conceptual model. In addition, use examples of valid input and output, and also discussions with the domain experts. This will often help you discover important constraints which were not captured by the Relational schema, or which may have been captured incorrectly.

BTW, for an excellent ORM tool, see NORMA. It's an add-in to Visual Studio 2005 or 2008 (Standard Edition or above), and uses the modern ORM2 notation. It can generate SQL for several different databases, as well as ER diagrams and even code.

Also, see The Book: