Re: Help! I can't support normalization

From: Paul <pbrazier_at_cosmos-uk.co.uk>
Date: 8 Nov 2002 04:38:37 -0800
Message-ID: <51d64140.0211080438.72f6fcb4_at_posting.google.com>


"Paul Vernon" <paul.vernon_at_ukk.ibmm.comm> wrote in message news:<aqe3e2$ne8$1_at_sp15at20.hursley.ibm.com>...
> "Paul" <pbrazier_at_cosmos-uk.co.uk> wrote in message
> news:51d64140.0211070129.6fab7168_at_posting.google.com...
> > OK then, what about complex numbers?
> >
> > Logically they are one "thing" so should you store them as "3+4i" in
> > one column?
> > Or as real part and imaginary part in two columns?
> > Or even in two columns r, theta where z = r * e ^ theta?
> > It's only for our convenience that we split them into two parts, the
> > complex numbers with integer (real, imaginary) parts are countable so
> > we could easily map them one to one with the integers.
>
> Don't confuse possible representations (read D&D) from the actual values
> themselves.

D&D = Date & Darwen? Which book would you recommend as a good introduction to relation databases from a theoretical viewpoint? i.e. with links to set theory and predicate logic theory?

What is the "actual value" of a complex number though? Surely a database can *only* store representations of values, and which one you choose is kind of arbitrary?  

> > I guess the answer is it depends what you want to do with it. It seems
> > very frustrating trying to think theoretically about DBMSs that so
> > much comes down to the real-world interpretation of the data which is
> > kind of external to the database itself.
>
> But theory is real! More real than our reality infact :-)
>
> > Is this because DBMSs are constrained to use first-order logic instead
> > of higher-order logic?
>
> No.

I'm reading up at the moment on logic and I was wondering if the system catalog tables are based on second-order predicates. As I understand it:

suppose I have a predicate "p" with two "parameters" so p(x,y) means: "x's favourite colour is y" say.
Then the relation based on the predicate is the set R defined by: (forall x,y)((x,y) is an element of R iff p(x,y)) where x and y are in the appropriate domains. First-order logic means the things in our "forall" clause can only be parameters to the predicates. Second-order logic means that the things in our "forall" clause can be predicates themselves.

So a system catalogue table that contains a list of relations in the database has the (second-order?) predicate S(p) meaning p is a predicate in our system.
And the relation is the set T defined by (forall p)(p is an element of T iff S(p))

Is this right?
Or am I confusing the string "foobar" with the table (or relation) foobar?
i.e. the string "foobar" is a representation of the relation known as foobar?

Can we "encode" second-order logic within our first-order logic system?

Paul. Received on Fri Nov 08 2002 - 13:38:37 CET

Original text of this message