Question

Can it be useful to no design a semantic data model and go straight for the logical one? I mean literature mostly suggests to design a semantic model in the first place.

But I think most of the time its just doing twice the work.

Was it helpful?

Solution

It all depends on the data model. If you're doing a small design for a technical problem, I tend to agree that it can be done at once.

If you're doing a design of a large system and need a lot of interaction with the users, and/or the target system is not yet defined (you might even end up with a nosql system), it makes sense to do an analysis of your data (structures) first and then convert the results to fit the target system.

Some advantages of this approach are

  • The choice of the target system can be made after you know what you want to store
  • It'll be comparatively easy to support more than one database systems
  • You can make a very clean description of the data structures which will be better understood by your users (this will improve the quality of your design)
  • You can make design decisions later, which makes it easier to test different approaches (since you still know what's the real structure of the data)
  • The semantic data model is great to have if you want to combine several of them

If I think a little longer, I'll find some more advantages, but I think the ones mentioned above are already quite powerful.

OTHER TIPS

What many people describe as "logical" models generally have a lot of semantic modelling content. It's not a black or white division but more like a continuum of different varieties of model. At one end is the semantic: a description of the business domain. At the other end of the spectrum is the "physical": a technical implementation. "Logical" falls somewhere in between but exactly where depends a lot on the modeller and his intentions.

It's quite possible to go straight from a semantic model to its physical implementation without anything in between. (e.g. see Terry Halpin's "RMap" procedure). It's probably less feasible to work without a semantic model of some kind. How would you document the requirement and how would you verify that what's implemented is an accurate representation of that requirement?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top