• All information can be represented without nulls or anything like them and I don't recall that Codd ever said otherwise. Science, mathematics and logic were able to describe the real world without using any symbol like a null for thousands of years before SQL came along. They continue to do so today. In any case, SQL's model of null certainly doesn't match real world requirements. Where in the "real world" (or in common sense for that matter) is x = x anything other than a True proposition (whether x is known or not)? Where in the real world does the sum of nothing equal something other than Zero?

    Null is not "nothing". Null is "unknown value". Nothing is 0.

    Keep in mind that the invention of the concept of 0 in mathematics took tens of thousands of years to develop, and revolutionized the whole subject radically.

    And, in the real world of real science x != x if x is a real world object/particle/phenomenon. No two apples are equal to a physicist, chemist or biologist. Only in the world of mathematics are they equal, and that's a mental construct used as an abstraction of reality.

    As for science not using "unknown value" (null) for thousands of years, you're just dead wrong about that. The whole basis of all higher mathematics is that you can have unknown values. They are called "variables" in math. If you have two that you can't resolve in a particular situation, you end up with "unknown value". Math simply assigns these to non-numeric symbols in order to be able to write them down. They've been in use for thousands of years. Different word, same concept.

    On the question of, "Where in the real world does the sum of nothing equal something other than Zero?", you're asking the wrong question. What's the sum of 5 + unknown value? What's the average of 2, 30, and unknown? Null doesn't necessarily equal 0. Null means "unknown". You're using the wrong definition of the concept.

    Outside of numeric situations, what would you put for my first, middle and last names in you contact database, if you had one? You could enter an alias, "GSquared" with certainty. If you do a little digging around on this site, you could easily find that I answer to "Gus" as a first name, and you might be able to find my last name if you look hard enough. But what about my middle name? Can you enter into your database that I don't have one? That's pretty much what an empty string would mean. Or would it be more useful to leave the MiddleName column in your Contacts table listed as "Unknown". In database parlance, you'd leave it null, since entering the string "Unknown" could end up with a letter being addressed with that as the middle name, which would look stupid. Also, if you put "Gus" as my first name, you'd technically be incorrect, and you'd be better off entering that as a valid nickname and leaving the first name null as well as the middle name, till you gather further information. So, how would you record my name in a "truly relational database", without something that indicates "unknown/unverified value"?

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon