Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm reading the Wikipedia page on first normal form, and am confused about the last bullet point:

5) All columns are regular [i.e. rows have no hidden components such as row IDs, object IDs, or hidden timestamps].

Does this mean "all information about a row is contained in its values" (my words)?


I understand the rest of the points about 1NF; it's only this one that I'm confused about.

share|improve this question
    
how could one go about defining a hidden timestamp in a RDBMS table? This wording in Wikipedia is strange. –  Emmad Kareem Feb 28 '12 at 21:52
    
This is a good question for the dba site. I think your assumption is correct. SQL Server is one RDBMS that will do some things in the background if you don't have a clustered index. –  JeffO Feb 28 '12 at 22:59

2 Answers 2

up vote 3 down vote accepted

I think that's basically true. The core of 1NF is that a table is strictly relational, i.e., all values in the table are some description of what the primary key identifies. Lots of RDBMSs use 'hidden' columns that don't describe the relation, they exist for some sort of internal housekeeping, yet are part of the table instead of being kept elsewhere in the schema (or some other mechanism the DB engine can use). Oracle, for instance, has 'hidden' rowID's everywhere.

The problem with this, as I understand it, is that because you have non-relational data skulking about your relations (i.e., tables), you create the possibility of reasoning about your data (i.e., creating SQL statements) which do not conform to relational algebra.

share|improve this answer
2  
all values being part of a description of the PK in not 1NF, it's 3NF/B-CNF –  Ryathal Feb 28 '12 at 19:09

First normal form means that each column has exactly one meaningful thing in it. An easy way to tell is if: data from a single column is broken up into multiple values before it is used; or, conversely, if multiple values are concatenated and then stored in one column, then first normal form is broken.

This is a somewhat poor example, but I'm stuck on thinking of a better one. Storing names as a single column that is first and last name concatenated it would break 1NF, because you are storing more than a single meaningful value in that column. This is a poor example though because it's not 100% true, if names are always used as first+last together then it wouldn't break 1NF, though this generally isn't the case.

To address this point specifically, it is not part of Codd's original definition, its an addition that Date feels is important and is further explained in his book Date On Database. This basically means that the spirit of points 1-4 are not violated by special ways to access additional information about a row. RDMSs have started adding features that can violate this point if used.

share|improve this answer
    
Maybe 'address' - street, apt/suite no., city, state is a better example :) –  PhD Feb 28 '12 at 21:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.