Modelling is all about classification. Each statement that you make about a certain domain can be categorized as a structural, a content or a processing constraint with respect to the data that you would like to use within an application. In doing this you can define the valid states and valid state transitions of an application that you would like to develop. This doesn’t assure that the data of an application is correct, but that the data is valid and that it complies to all the constraints that you have defined. Starting from a domain model (concepts with no relationships) and a life cycle approach (views) you can easily design consistent data models and robust applications using a data-centric step-by-step approach and find re-usable patterns along the way. I’m doing this for more than 20+ years now. The danger lies in the many mappings that you have to make along the development process to come to actual applications. Each mapping has the risk that you get ‘lost in translation’ and/or lose any of the earlier defined meaning. So, it is important to minimize the number of mappings that you have to make. In the end, the data should be the application.