Null values (again)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Null values (again)

Hi everyone here!

I'd like to discuss in detials the last comment on the subject ( here coz' not all users read comments on Tutorials. What techniques do you use to solve this problem? Lars Rönnbäck has introduced 3 possible ways to deal with Nulls recently. Here they are:

"In Anchor Modeling we assume that values are exhaustive, which simply means that for any given point in time there is a value of some kind in effect. I’d say Null is never part of the business and just a poorly implemented artifact from an insufficient understanding at the time databases were invented. What probably is part of the business are one or more of the following _special_ values:
* There is no applicable value
* There is an applicable value but it is currently not known
* There is an applicable value but it is decidedly not set
* There is an applicable value but it has been anonymized
…and so on.

There are two ways to achieve this. Either you have to create a user-defined data type that along with a regular value encodes the necessary _special_ values (the hard but elegant way), or you create a knotted historized attribute alongside your other attribute, that indicate the state a value is in (the easy but cumbersome way).

The reason I don’t mention the third way, allowing Nulls, is that it destroys many of the things Anchor modeling rely on in the database engine and its query optimizer. This is because Null is not treated as a value by the database, so it requires special treatment everywhere, as opposed to an actual value. I tried allowing it, but failed.

As a workaround, we do however support “Poor Man’s Auditability” ( in the test version of the modeling tool, which can be used in your particular situation."

The 3rd way is not recommended thought... The 2nd way is cumbersome indeed, I agree. Who did implement the 1st one? What kind of complexity did you face with? At first glance, it doesn't seen hard. As I understand we just ought to think of some constant values for each case depending on Null value nature and the jusit insert this hard-coded values into AM relations...