I'm building a model of the SQL query language.

It doesn't attempt to abstract SQL at all - instead, it tries to model it directly, so it has model objects named Query, Table, Column, Variable, Expression, Join, etc.

Contrast this with an object/relational mapper, which tries to abstract away SQL and the DBMS in favor of some new/different and (usually) higher-level abstractions.

My question is regarding the terminology to describe what I'm writing: generally, is a model always an abstraction? Is an abstraction always a model? Are they synonymous, more or less?

Specifically, is a model of SQL also an abstraction, or is it correct to describe it as just a model?

closed as primarily opinion-based by Ixrec, Scant Roger, user40980, gnat, GlenH7 Jan 10 '16 at 2:45

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • possible duplicate of What is abstraction? – gnat Dec 13 '15 at 19:07
  • @gnat I read the accepted response to that question, and it resounds with my understanding of abstraction. But it doesn't resolve my question. In a nutshell, what is the difference between a model and an abstraction? Is one a superset of the other? – mindplay.dk Dec 15 '15 at 13:24

This is highly philosophical, but:

A model is definitely an abstraction if it is trying to represent real-world entities, in which case, of course you cannot have cars, trees, houses etc. living inside the computer, so obviously, you are abstracting.

But if the model is not trying to represent a real-world entity, and instead it is a one-to-one mapping to already abstract entities, then I think it can safely be called a model, without the need to add the "abstraction" part.

However, the reasons to go one way or the other are trifling.

  • Does a model have to model a real-world entity? In this case, my domain is SQL, so the entities I'm modeling are Query, Condition, Join, etc. - even if those are already abstract entities (translating to an execution plan against physical data on a disk at a lower level) in terms of the domain I'm modeling, those are my entities, is that correct? – mindplay.dk Dec 15 '15 at 13:22
  • @mindplay.dk yes, of course, that's exactly what I am talking about, you may be modelling already abstract entities! so, you have a model, not an abstract model. – Mike Nakis Dec 15 '15 at 20:33

Not the answer you're looking for? Browse other questions tagged or ask your own question.