My professional background was in database design, both the logical modeling of the information as well as the implementation (primarily with Oracle). While the implementation involves a lot of compromises and trades (between flexibility and performance), the design is a pure logical construct of semantics and ontology driven by the business requirements. There are a couple of principles that drive my thinking:
- There are always more details. All models are a lie, though good ones are useful. A model airplane is not the same size, materials or parts of a full scale airplane; but it is still useful to identify what one looks like. Data models are much the same.
- I was heavily influenced by Peter Coad and his universal model pattern ( https://edn.embarcadero.com/article/29697) Everything can be modeled as an activity, with associated people, places and things. Often this is too ‘heavy’ on the data and some things get dropped off if they have no business value. For example, a hospital records a birth as a series of events, but your driver’s license shows birthday as a simple attribute of the person.