Take the 2-minute tour ×

I have read the definition of 1NF which is, "If each attribute of relation is atomic". Please tell me what is Atomic.

share|improve this question

5 Answers 5

up vote 9 down vote accepted

1NF requires that every attribute position in every tuple in every relation contains a single value of the appropriate type. The types can be arbitrarily complex. In fact, the types can be relations. (CJ Date's book Database in depth: relational theory for practitioners treats this issue in a way that's pretty easy to understand.)

"Atomic" has never really meant "indivisible", which is why that term is finally falling out of favor. Loosely speaking, "atomic" means if a value has component parts, the dbms either ignores the existence of those parts, or it provides functions to manipulate them. For example, a timestamp value has these parts.

  • Year
  • Month
  • Day
  • Hours
  • Minutes
  • Seconds
  • Milliseconds

That kind of value is obviously divisible, and all database management systems provide functions to manipulate those parts. They also provide a way to select a timestamp as a single value. (Which, of course, it is.)

share|improve this answer
Atomic is really interpreted as no repeating groups, either as delimited values within a single column or as repeating columns (of indeterminate or variable number) within a table. –  Pieter Geerkens Sep 7 at 13:43
No, atomic and repeating groups describe two different characteristics of relations with respect to first normal form. Considering the statement "If there are no repeating groups of attributes, then [the table] is in 1NF", Date says it (among others) is "at best, unclear and imprecise and, at worst, just plain wrong". See Date on Database, p 107f. –  Mike Sherrill 'Cat Recall' Sep 7 at 15:42

"Atomic" refers to Codd's original notion from 1969 that each attribute in each tuple within a relation schould consist of a single value and not allow multivalued structures of the kind supported in databases like the CODASYL model.

In modern SQL DBMSs atomicity isn't really an issue. SQL tables do not allow multivalued columns and values are always "atomic".

share|improve this answer
"SQL tables do not allow.." - a user can subvert this by storing comma-separated values in a single char() column, for example, or defining and xml column and shredding it as part of a query. While such techniques may be useful they are, to my mind, undermining 1NF and should be avoided. –  Michael Green Sep 7 at 2:51

It means that the key cannot be decomposed. Let's say that you have a table with three columns, forename, surname, and telephone_number. You declare a compound primary key on (forename, surname). That primary key is not atomic because it is actually composed of two columns. Now let's say you change your table to two columns, full_name and telephone_number, with a primary key on full_name. Is the key now atomic? No, because in your application you could split it into forename and surname still, on the space. Now let's make our table id, full_name and telephone_number, primary key on id (which is an integer). That is atomic, because the integer cannot be meaningfully decomposed.

share|improve this answer
I've never heard "atomic" applied only to a key. –  Mike Sherrill 'Cat Recall' Apr 25 '11 at 11:03
I'm a DBA not a textbook, Jim :-) The question was what does atomic mean and I use the key as an example. –  Gaius Apr 25 '11 at 11:05
your example however begins with the statament that atomicity "means that the key cannot be decomposed". That's not what it means. It means attribuites consist of a single value. There is nothing "non-atomic" about a key consisting of multiple attributes. –  sqlvogel Apr 26 '11 at 9:30

Atomic means data which cannot be divided further.

Rule of atomicity:

  • rule 1: a column with atomic data can't have several values of the same type of data in the same column.
  • rule2: a table with atomic data can't have several columns with the same datatype.

Like fullname column can't say that it could be atomic because it can be further divded into lastname, firstname. A column with interest could also be divided further, so a column which can't be divided is known as atomic.

share|improve this answer

Consider a location on Earth. I can find it with (longitude, latitude) pairs or with the HTM (Hierarchical Triangular Mesh) code. Since they both measure the same data. This is a physical fact, which we can measure with a cell phone; it translates a grid number into [longitude, latitude] for you), they must both be either atomic or compound in your model.

Do not confuse the scale used for measurement and notation used to display the data with the nature of the data.

share|improve this answer
I edited this post for a couple of typos. I don't believe that this user is the real Joe Celko, but I searched for impersonation on meta.stackexchange.com and found this thread. Check out the responses of Messrs. Atwood and Spolsky, the founders of stackexchange. It appears to be permissible. –  Vérace Sep 7 at 1:00

Your Answer


