I think there is a major problem in not being able to understand and work with different levels of abstraction. By "abstraction" in this sense I mean one concept system that somehow describes or defines (not merely relates to) another concept system. I think this is a big problem for definitions in data models.
Let us take an example in a retail business such as mortgage banking: Customer Name. Customer Name exists in the business. They use it all the time. Maybe it is sometimes called Borrower Name, but the concept is the same. This is the Level 1 abstraction.
Now let us think of data values in a column in a table that holds Customer Name. These data values are stored as a code of 1's and 0's. Of course these bits are rendered into something we can read. However, this is not the same as the Customer Name in the business. I worked for a place where they prefixed the name of anyone who had recently left with "ZZZ". So we could have "ZZZ_John Smith" as a data value, but the business would call him "John Smith" still. The data value is the Level 2 abstraction.
Now let us think of the column itself that stores Customer Name, irrespective of whatever it contains. This is the container used for the data. It is merely a container, and anything can be put into it - just in the same way as the old peanut jelly jar I have on my desk is used to hold pens. The column has certain characteristics, like the maximum length of text it can hold. This is the Level 3 abstraction.
Now let us think of the data model that describes the column that will hold Customer Name. In this, Customer Name is an attribute. We worry about what naming convention to give it. And behold! Our data modeling tool asks us to enter a definition for Customer Name! Yet, we are now at Level 4 of abstraction.
Let's summarize. The concept system of the data model (Level 4) is a design for the concept system of the container of the data (Level 3) which will store the concept system of data values (Level 2) which we hope will satisfy the concept system of the information needs of our users (Level 1).
So tell me again what the definition entered in the data model is referring to? Which of the four concept systems?. Suppose it is stated as "an attribute that holds customer name" - I have seen this kind of thing quite often. Well, an attribute is something in a data model (Level 4), and a thing that holds data is a container (Level 3).
Malcolm,
ReplyDeleteI much like your different views, but I am not sure about the term abstraction. To me they are not abstractions of each other but different perspectives that need each other to form the complete picture. Sounds like level 2 is the domain definition (or representation types) of a level 1 concept. Level 3 complements level 2 with syntactic constraints. Level 4 gives the actual representation of level 1, fulfilling the level 2 and 3 constraints.
Data model tooling does not support very well domains (level 2) but the definition requested at level 4 should hold explicit reference to level 1 and level 2 domain definitions while having an implicit conformance to level 3. Level 4 may contain additional descriptions of used conventions.
Limitations of the modeling tools should not keep a designer for addressing all 4 perspectives, including a pragmatic level 1 understanding of real world concepts, well defined as you advocate perfectly in your book.
Rob Roddeman
Very priceless blog and actual advisory blog. I absolutely acknowledge your assignment and additionally your idea, anticipation and your content. You guys are done a abundant job. This is so accessible me.
ReplyDeletedomain name web hosting