Re: Normalisation

From: Jan Hidders <>
Date: Fri, 08 Jul 2005 21:30:05 GMT
Message-ID: <xfCze.140548$>

Jon Heggland wrote:
> In article <03fze.139573$>,
> says...

>>>>These sets are very similar to unary relations. Treating them 
>>>>differently would make not much sense because there are simple 
>>>>operations that transform one into the other.
>>>>>Why not about strings?
>>>>They are not very similar to relations. :-)  
>>>A set can be transformed into a unary relation with a simple operation. 
>>>A string can be transformed into a binary relation (integer and 
>>>character) with a simple operation.
>>That requires logarithmic space, and not constant space as my 
>>transformation. So it is arguably more complex.

> Please elaborate. Assuming for the sake of the argument that you are
> right, so what?

It indicates that in one case there is a larger similarity than in the other because you meed more work to do the transformation. You're not asking me to explain the stated complexity classes of the operations, are you?

>>>>Besides, most nested 
>>>>relational algebras I know are not equipped with an operation for 
>>>>unnesting strings. 
>>>That's just because it's a pretty useless thing to do. :) My point it 
>>>that the difference between sets and strings in this context is pragma, 
>>>not logic.
>>My definition of 1NF doesn't make that distinction. 

> Your definition of 1NF seems singularly useless if you cannot use it to
> determine the quality of a relvar in any way---unless you introduce a
> lot of unstated and pragmatic assumptions.

Usually it is relatively well-known which operations are possible in a DBMS and which aren't. That makes it in practice actually a quite stable notion even though it is a relative one.

> It is also rather
> complicated, imo, since you have to refer to operations over signatures
> and proper classes as opposed to sets/domains.

The definition does not refer to proper classes, and it is always a bit dangerous to call something complicated just because you had trouble understanding it. :-) As any good database researcher you probably know and understand the notion of "genericity". Just as a test to see if you really understood it, can you tell me the relationship between this notion and the notion of 1NF I defined?

> I see your point, but for me it smacks of the kind of reasoning that
> leads you to "denormalise" relations because join is too complex and
> slow. It may be the right choice at the implementation level, but we
> should separate that from the logical level.

I think the situation is a bit more complex than that. For me there are actually two logical levels: one at the conceptual level and one at the external level (as defined in the ANSI/SPARC model). For the external level I would agree that the form of the data model should be dictated by purely logical arguments. It should simply properly model how the users see their data. No more, no less.

However, at the conceptual level the task of the model becomes more complex. Its job is to unify all the different models of the different user groups, but in a relatively implementation independent way. That means, for example, that if two groups want to nest the relations differently, then they probably should be modeled at this level by flat relations. It is for this level that I think 1NF is still useful.

  • Jan Hidders
Received on Fri Jul 08 2005 - 23:30:05 CEST

Original text of this message