A tale of duplicates
Date: Sat, 9 Oct 2004 07:24:29 -0400
Message-ID: <O_qdndNMpYsdV_rcRVn-hA_at_comcast.com>
This thread is derived from the other thread about "true relational". Here's what Kenneth said in that thread:
> It said often here that no commercially available DBMS is truly
relational,
> but I haven't seen a succinct list of reasons. What are they?
>
> One that I have gleaned from lurking is that the DBMS's allow duplicates,
as
> in:
>
> CREATE TABLE AnyTable (col1 char(1), col2 char(1), col3 char(1));
> INSERT INTO AnyTable (col1,col2,col3) VALUES ('A','B','C');
> INSERT INTO AnyTable (col1,col2,col3) VALUES ('A','B','C');
>
> The table create specifies no constraints, and so the next two insert
> statements are both allowed. The objection to this seems to be that the
> RDM requires an implied unique constraint on all columns of all tables.
> Because such a constraint is not present, they are not truly relational.
>
> Is that right?
I was once interviewing with a customer, and when the asked me to descibe my
skills, I happened to mention data normalization. "What's normalization?"
they asked. I tried to give a straight answer, but I could tell from their
facial expressions that the interview was going the wrong way. So I asked
them to show me some of their data definitions.
It seems one of their billing tables allowed duplicate entries for orders.
If you had two orders from different customers, or on different dates, or
of different products, no problem. But you could have two identical
entries in this table, witth the same date, product, and customer. They had
no "order number" to tell the two entries apart.
So I asked them, "If you get a complaint about a duplicate billing from a
customer, how do you know whether your data entry clerk simply entered the
same order twice, or whether the customer called in two separate orders on
the same day?"
"Funny you should ask that," came the answer. "We've never been able to
figure that out in our system." "So we just issue a credit whenever the
customers complain about duplicate billings."
I didn't get the contract. The broker said the client had called me "too
theoretical". The broker thought that meant "too expensive." They didn't
want a computer consultant. They wanted a temp coder.