1 21 22 23 24 25 26 385 Replies Latest reply on Aug 20, 2007 12:26 PM by Alessandro Rossi Go to original post
• ###### 330. Re: Treatment of zero-length strings as NULLs?
Sorry, too late today.
Nearly right. It's rather the case that when x is null we have
x - x
null - null
null
Hence it is not the case that x-x=0 if x may be null. Similarly, the law of the excluded middle
does not hold for values that may be null -- apart from the operators IS NULL and IS NOT NULL.
From this we conclude that the law of the excluded middle doesn't contribute anything
meaningful
to a discussion of the implementation details of NULL in one RDBMS or another.
It's true, it doesn't contribute anything to this discussion, just like the Gauss law of normal distribution doesn't contribute anything to this discussion, but it is perfectly valid. That's all. I did't bring that law in this discussion. Andrew Max did. I've just said - yes, that's it, and shown that it's perfectly valid law in our 3VL world staying at the logical level of releational theory where NULL means that a value is missing, not that "proposition can be neither true nor false" (fuzzy-logic).

We didn't talk here about 3VL in the context of fuzzy-logic: "a proposition is neither true nor false at the same time, but may have a degree of truth between 0 and 1 (eg 0.1, 0.6 etc), so truth values are possible: 1) true, 2) false, 3) undecided degree of truth". UNKNOWN in relational theory doesn't refer to "UNDECIDED DEGREE OF TRUTH". It just means "the proposition is exactly true or false and nothing else, but we don't know the right value since information is missing"

Here is a "practical example" as illustration of what you did:
```SQL> CREATE TABLE fuzzy (
2  X NUMBER NULL
3  );

Table created.

SQL> INSERT INTO fuzzy (X) VALUES (NULL);

1 row created.

SQL> SET NULL NULL
SQL> SELECT X FROM fuzzy;

X
----------
NULL

SQL> SELECT (X - X) FROM fuzzy;

(X-X)
----------
NULL```
Believe me, there are many "fools" on the earth, who would argue that (X - X), when X is defined as NUMBER, must always be equal to 0 (zero), regardless of whether X is NULL (UNKNOWN) or NOT NULL (KNOWN).

Albert
• ###### 331. Re: Treatment of zero-length strings as NULLs?
Null describes the STATE of the variable. Not a value!
Agreed. In the sense that

{TRUE, FALSE, UNKNOWN} is the same as { TRUE,  FALSE,  {TRUE  |  FALSE} } and, as such, is redundant as a logical value.

Agreed Billy. You are doing well today.

Albert
• ###### 332. Re: Treatment of zero-length strings as NULLs?
I think Albert doesn't understand the state of his own mind let alone the state of data.

Albert,
What is domain of attribute (column) "AGE" in an employees table?
I'd say 18-65 ages. If a scalar is UNKNOWN, is it "totally unknown" or
just "partially unknown"? I'd say partially, since we exactly know that
250 years old man cannot be an employee in our company.
You said:

The problem with your explanation here is that you are mixing database level concepts and business level concepts. Just because you create a column on your database that is called age, this will simply be a numeric datatype. The database has no concept of what "age" is and doesn't know that 250 would be an unreasonable value. The domain of reasonable values is something that is determined by business logic that is applied at a level above the database level. As far as the database is concerned if a value isn't entered for the age then it is just "unknown", not "partially unknown" or "totally unknown", just plain old "unknown". You obviously have some understanding of programming concepts but obviously a total lack of understanding or confusion when it comes to systems design concepts.

I'd really be happy to convince you that I DON'T THINK that you don't understand the state of YOUR mind. I really DON'T THINK that. I KNOW that. And I'm going to explain this to you. Just consider an example from yesterday, not yours, but very illustrative to show that the overall confusion on this thread is constantly being made by people who don't understand what they are talking about .

Sundar M:
--------------
I'd say that (x - x) is always zero regardless of whether x is KNOWN or UNKNOWN
Suppose x is ∞, Would you say infinity(∞) - ∞ is zero?
--------------

---------------
Saying "x is infinity" is wrong. We can say then

LIMIT (x - x) = 0
x -> ∞
---------------

Sundar M:
----------------
Well, you can argue with this guy.
http://www.netscape.com/viewstory/2007/01/07/math-proof-infinity-subtracted-from-infinity-does-not-equal-to-zero/?url=http%3A%2F%2Fwww.philforhumanity.com%2FInfinity_Minus_Infinity.html++&frame=true
----------------

-----------------
I've just done it. Guy is OK. Here is his conclusion:

"Woops! It is impossible for infinity subtracted from infinity to be equal to one and zero. Using
this type of math, we can get infinity minus infinity to equal any real number. Therefore, infinity
subtracted from infinity is undefined."

Hence we should write the equation as I've already shown:

LIMIT (x - x) = 0
x-> oo
------------------

As you see, the person, who knows NOTHING about Infinitesimal and Integral theory and calculus was trying to force discussion about it, and, of course, fell short of it - own pitfall (trap). The only result: the thread was expanded with 2 additional petties and nonsenses. Total confusion.

So, please, don't do the same.

I was not talking about database level concepts and business level concepts. And therefore I couldn't mixed them. I know that a database (software) cannot guess our thoughts. What I was talking about has nothing to do with it. So, please!

Regards

Albert
• ###### 333. Re: Treatment of zero-length strings as NULLs?
Albert,

"Infinitesimal and Integral theory and calculus". More distractions, which it seems you're mistaking for distinctions.

Scott
• ###### 334. Re: Treatment of zero-length strings as NULLs?
To all
---------

Since the thread is no more interesting for anyone, allow me to "officially" close it by putting it in its "final version".
As the "initial poster" and the "main maintainer" of the thread, I'm feeling an obligation to make a short resume and put
some final words on it.

First of all, I want to thank all of you who took part in the thread, either as passive watchers in background, or as active
discussants and contributors. There were many nice points and many nice thoughts.

My "special thanks" go to those who were constantly obstructing any decent discussion by posting only petties and nonsenses.
Whenever they said the truth, it was something trivial; whenever they said something that was not trival, it was wrong - thus
helping me to show the overall confusion dominating in this Forum in regards of the point we discussed. In this sense, although
I totally failed regarding my initial intention, the thread itself can be considered as a great success for all of us.

I was not here to blame Oracle. I knew Oracle was great and the most robust and sophisticated database in the world,
capable of dealing with and solving the most complex business problems. Oracle has plenty of features all other
databases on the market are still lacking and has the most robust, complex and systematic SQL implementation. Just
because I knew that, the problem we discussed was awful for me. Important for you or not, it remains literally a stone
in my shoe.

All I wanted from you was to encourage most of you to post a collective request or so to Oracle to fix it, at least by
implementing an option to bypass such a behaviour in the upcoming 11g version, now in beta. Obviously, I failed.

The best and the most intelligent what happened on this thread was the point when Tony Andrews, in reply to someone's post,
wrote:

"I agree that Oracle does what it does and that we have to (and can) live with that, and indeed that it isn't a big deal
to do so - maybe it even has some advantages. But you are wrong to suggest that '' and NULL really are the same thing
conceptually. I'm confident that C J Date and J Celko would for once unite in their agreement on that point."

I agreed with Tony and admitted it by responding him - "Well spoken". We should have stopped at this point and I would have
been grateful to you saying goodbye. Instead of doing that, you were continuing along the road drilling my brain over and over
again, trying even to rebut the Aristotle's law of the excluded middle. It was not permitted.

I learned many things from you and realised many crucial points. This thread definitively convinced me of what I thought and
believed all my life.

The substantial difference between intelligent and non-intelligent people is, of course, in levels of their intelligence
quotients (IQs). However, the perilous difference between them, with fatal consequences, is in the fact that Mr/Mrs "IQ"
DOES KNOW he/she is the "IQ", whereas Mr/Mrs "non-IQ" DOES NOT KNOW he/she is the "non-IQ". It's by definition.

I don't want to suggest anything here. In any case it should be clear that the second part of the second proposition does not
point to people like Tony Andrews, Alessandro Rossi, Kamal Kishore, Scott.Swank, David Tyler and others reasoning alike.

The democracy is probably the best thing ever happened in the history. Unfortunately, it has one big and fatal "design flaw":
a vote of fool and a vote of smart one are equally worth and being counted.

Once again, thanks a lot.

I wish you all the best and lots of luck.

Albert Richter
albert.richter@yahoo.com
• ###### 335. Re: Treatment of zero-length strings as NULLs?
>The substantial difference between intelligent and non-intelligent people is,
of course, in levels of their intelligence quotients (IQs). However, the
perilous difference between them, with fatal consequences, is in the fact
that Mr/Mrs "IQ" DOES KNOW he/she is the "IQ", whereas Mr/Mrs "non-IQ" DOES
NOT KNOW he/she is the "non-IQ". It's by definition.

I don't want to suggest anything here.

You do not want to suggest anything..!?
But yet you make a statement like that, that
do most definitely imply that you are suggesting something.

Permit me to respond in kind. Stating something,
without suggesting anything.

Some people are born assholes.
Then they grow bigger.
• ###### 336. Re: Treatment of zero-length strings as NULLs?
Ohhhhh, my favourite bit has to be this:
My "special thanks" go to those who were constantly obstructing any
decent discussion by posting only petties and nonsenses.
Whenever they said the truth, it was something trivial; whenever they
said something that was not trival, it was wrong
That's like saying "I'm going to take my subjective view (or should that be judgement) of people and state it as fact. Because I'm right!"

LMFAO
• ###### 337. Re: Treatment of zero-length strings as NULLs?
Important for you or not, it remains literally a stone in my shoe.
It is not literally a stone in your shoe. For that to be true it would have to be in your shoe, and be a stone.
• ###### 338. Re: Treatment of zero-length strings as NULLs?
>
Wouldn't your time be better spent finding a database
you are capable of understanding and learning to use
without whining and leave Oracle alone?
The issue is not about being capable of understanding something. There is null to understand. It is about believing weather something is implemented the best way. You seem to like throwing that one at people.

I've whined earlier about having to write a trigger everytime I need a surrogate key because Oracle does not support the identity column. That does not mean I don't understand triggers.
• ###### 339. Re: Treatment of zero-length strings as NULLs?
I've just said - yes, that's it, and shown that
it's perfectly valid law in our 3VL world
You didn't show anything. You just randomly claimed it. There is a difference.

Then you selected to completely ignore a disproof by example of your claim.

>
We didn't talk here about 3VL in the context of
fuzzy-logic: "a proposition is neither true nor false
at the same time, but may have a degree of truth
between 0 and 1 (eg 0.1, 0.6 etc), so truth values
are possible: 1) true, 2) false, 3) undecided degree
of truth".
3VL has nothing to do with fuzzy logic.

It's not an "undecided degree of truth", you're missing the point. It is an unknown outcome. It represents the evaluation of a predicate to the value UNKNOWN, and doesn't represent a value in the predicate.

You've managed to make yourself look like a fool. Now you are keeping to talk in order to dillute the fact.
• ###### 340. Re: Treatment of zero-length strings as NULLs?
{TRUE, FALSE, UNKNOWN} is the same as { TRUE,
FALSE, {TRUE  |  FALSE} } and, as such, is
redundant as a logical value.
It's not redundant. It's required to represent evaluation to neither of true, false.
• ###### 341. Re: Treatment of zero-length strings as NULLs?
The domain of reasonable values is something that is determined by business logic that is applied at a level above the database level.
Aside from which, this is completely incorrect. The correct place to restrict the domain of a type is in the database.
• ###### 342. Re: Treatment of zero-length strings as NULLs?
The domain of reasonable values is something that
is determined by business logic that is applied at a
level above the database level.

Aside from which, this is completely incorrect. The
correct place to restrict the domain of a type is in
the database.
Actually it was me that said that but our "friend" is not very good at quoting things so it's obvious someone else said it.

The point is that you may perform your restriction of the domain on the database itself, but it is Business logic and not something directly relating to data types on the database. Therefore, good design should ensure that database design and business logic are clearly distinct. Otherwise you'd spend all your time creating a whole set of datatypes to create your tables with and you'd see something like:
``````CREATE TABLE mytable (person_id sequence,
name      name_domain,
age       age_domain,
gender    sex_domain
.
.
)``````
Which would just be unrealistic to implement.
• ###### 343. Re: Treatment of zero-length strings as NULLs?
Which would just be unrealistic to implement.
Actually it would be nice if we could implement domain enforcement in the database. But I agree that trying to do it using Oracle Types would be horrendous in the extreme.

Cheers, APC
• ###### 344. Re: Treatment of zero-length strings as NULLs?
You would probably define the domains in a tool such as Oracle Designer.

Perhaps user-defined scalar types are another feature that Oracle should implement.

Message was edited by:
William Robertson
1 21 22 23 24 25 26