• pjcrout (7/15/2011)


    Tom,

    Firstly, great article. I actually stumbled onto it after reading your 2NF article via the link back here, and wanted to start from the beginning. Glad I did 😉

    After reading, I was like "Wow... Good times..."

    Thanks for that - every comment like that encourages me to keep on writing.

    Then, after reading the comments, I was like "Aww... Bad Times..."

    I will echo others in saying: Good job defending you stance. The scrutiny has been, at times, excessive (I thought), but I think you really made some great points both in your article and your replies. Honestly, coming from an App Dev background into this realm of DBAs, the article definitely helped put the concept of normal forms under a more focused lens for me (all theoretical nuance squabbling aside).

    I don't think anything was actually excessive - it's all fair comment and debate. I'm glad though to hear that you thought I did a good job in defending my position. I came from an mathematician and app developer background into database research, and after a lot of other things (largely not DB related) into doing the DBA thing as well as much else (a couple of "you name it, I do it" jobs), which I think is very like coming from a developer background into the DBA realm so we probably have a lot of ideas in common. Anyway, I am trying to write for practical DBAs who got into that role accidentally (as I did) and not for the theorists. I do find it an advantage to know some of the theoretical nuances too, though - it save a lot of trouble when designing a schema.

    I also liked how you addressed the concept of context as it relates to "atomicity". So many data elements that we take for granted as being "simple" in nature rarely ever are (one nit that went unpicked: Full Name... atomic? yes/no/may-be-so), and are in fact themselves hierarchical arrays of data carried over from "real life" attempts at bringing a measure of order to The Chaos. I definitely think it was an important point to raise. I think using terms like "atomic" and "natural" in all this lingo tends to get us thinking to abstract and we forget that we're not actually talking about the indestructible, elemental entities of the cosmos.

    Ted Codd, who introduced the atomicity idea into relational database theory (which he invented, of course) didn't use the term "atomic" in his early writingss. Instead he said "simple". I like that term (indeed I prefer it to atomic, because atomic doesn't properly reflect his insistence - which I absolutely believe was correct - on sticking to a first order relational calculus) but I don't use it because sticking to "atomic" usually gets me into fewer silly arguments (I'm very lazy, so avoiding pointless arguments is one of my prime objectives).

    These data elements are, more often than not, just a bunch of non-sense concocted by a band of numb-skulls (and I do not exclude myself from being a subset of that domain) 😛

    Join the club - I'm definitely a member of that domain:-D

    Premise: Humans are imprecise, inaccurate, and to some degree unpredictable. For that reason, they are incapable of existing within a "perfect" system, because it would be too rigid, leaving no tolerance for error (which humans generate with great proficiency).

    Dilemma:

    - For the system to function properly it should be perfect

    > (i.e. - in perfect adherence with "the rules". Note: Rules created by who? Exactly.)

    - If the system is perfect it doesn't work

    Summary:

    As The Architect put it, "The problem ... is choice." Or to put it a different way (and I think more accurately): The problem is human error. Because in the world of 1 and 0, true and false, right and wrong... Choice is an illusion, and in the end you are either right or wrong. In adherence or in error.

    That only works if logic is restricted to black and white (true and false, no other possibilities). Constructive mathematicians work in a world where there are infinitely many shades of grey. Even non-constructivists are happy to use all sorts of MVLs instead of classical two valued logic (the difference between them and constructivists is that the constructivists refuse to use the 2VL black-and-white logic, because they (or we - I'm not admitting to be on either side of that debate) believe it just doesn't work). Relational Database theoreticians have a similar division - anti-MVL and pro-MVL; it's kind of sad that in the Relational Database world they don't respect each other's positions, unlike the situation in mathematics.

    Tom