First Normal Form: First Normal Form (1NF) Is A Property of A Relation in A Relational Database. A

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

First normal form

From Wikipedia, the free encyclopedia

First normal form (1NF) is a property of a relation in a relational database. A


relation is in first normal form if and only if the domain of each attribute contains
only atomic (indivisible) values, and the value of each attribute contains only a
single value from that domain.[1] The first definition of the term, in a 1971
conference paper by Edgar Codd, defined a relation to be in first normal form
when none of its domains have any sets as elements.[2]

First normal form is an essential property of a relation in a relational database.


Database normalization is the process of representing a database in terms of
relations in standard normal forms, where first normal is a minimal requirement.

First normal form enforces these criteria:

Eliminate repeating groups in individual tables.


Create a separate table for each set of related data.
Identify each set of related data with a primary key

Contents
1 Examples
1.1 Domains and values
1.2 A design that complies with 1NF
1.3 A design that also complies with higher normal forms
2 Atomicity
3 1NF tables as representations of relations
4 References
5 Further reading

Examples
The following scenario illustrates how a database design might violate first normal
form.[3][4]

Domains and values

Here is a table that records the names and telephone numbers of customers:
Customer
Customer ID First Name Surname Telephone Number
123 Robert Ingram 555-861-2025
456 Jane Wright 555-403-1659
789 Maria Fernandez 555-808-9633

One requirement though is to record multiple telephone numbers for some


customers. The simplest way of satisfying this requirement is to allow the
"Telephone Number" field in any given record to contain more than one value:

Customer
Customer ID First Name Surname Telephone Number
123 Robert Ingram 555-861-2025
555-403-1659
456 Jane Wright
555-776-4100
789 Maria Fernandez 555-808-9633

Assuming, however, that the Telephone Number column is defined on some


telephone number-like domain, such as the domain of 12-character strings, this
representation is not in first normal form.

A design that complies with 1NF

In the first normal form, the previous table can be represented in the following
way.

Customer
Customer ID First Name Surname Telephone Number
123 Robert Ingram 555-861-2025
456 Jane Wright 555-403-1659
456 Jane Wright 555-776-4100
789 Maria Fernandez 555-808-9633

However, if we assume that two customers can in principle have the same name
(although there are no such in the current table), this database design does not
meet the more stringent requirements of third normal form and possibly not even
second normal form.[5]

A design that also complies with higher normal forms

Another design for the same data makes use of two tables: a Customer Name table
and a Customer Telephone Number table.

Customer Name Customer Telephone Number


Customer ID First Name Surname Customer ID Telephone Number
123 Robert Ingram 123 555-861-2025
456 Jane Wright 456 555-403-1659
789 Maria Fernandez 456 555-776-4100
789 555-808-9633

Indeed, repeating groups of telephone numbers do not occur in this design.


Instead, each Customer-to-Telephone Number link appears on its own record.
With Customer ID as key, a one-to-many relationship exists between the two
tables. A record in the "parent" table, Customer Name, can have many telephone
number records in the "child" table, Customer Telephone Number, but each
telephone number belongs to one, and only one customer. It is worth noting that
this design meets the additional requirements for second and third normal form.

Atomicity
Edgar F. Codd's definition of 1NF makes reference to the concept of 'atomicity'.
Codd states that the "values in the domains on which each relation is defined are
required to be atomic with respect to the DBMS."[6] Codd defines an atomic value
as one that "cannot be decomposed into smaller pieces by the DBMS (excluding
certain special functions)"[7] meaning a field should not be divided into parts with
more than one kind of data in it such that what one part means to the DBMS
depends on another part of the same field.

Hugh Darwen and Chris Date have suggested that Codd's concept of an "atomic
value" is ambiguous, and that this ambiguity has led to widespread confusion
about how 1NF should be understood.[8][9] In particular, the notion of a "value
that cannot be decomposed" is problematic, as it would seem to imply that few, if
any, data types are atomic:

A character string would seem not to be atomic, as the RDBMS typically


provides operators to decompose it into substrings.
A fixed-point number would seem not to be atomic, as the RDBMS typically
provides operators to decompose it into integer and fractional components.
An ISBN would seem not to be atomic, as it includes language and publisher
identifiers.

Date suggests that "the notion of atomicity has no absolute meaning":[10] a value
may be considered atomic for some purposes, but may be considered an
assemblage of more basic elements for other purposes. If this position is accepted,
1NF cannot be defined with reference to atomicity. Columns of any conceivable
data type (from string types and numeric types to array types and table types) are
then acceptable in a 1NF table—although perhaps not always desirable; for
example, it would be more desirable to separate a Customer Name field into two
separate fields as First Name, Surname.

First normal form, as defined by Chris Date, permits relation-valued attributes


(tables within tables). Date argues that relation-valued attributes, by means of
which a field within a table can contain a table, are useful in rare cases. [11]

1NF tables as representations of relations


According to Date's definition, a table is in first normal form if and only if it is
"isomorphic to some relation", which means, specifically, that it satisfies the
following five conditions:[12]

1. There's no top-to-bottom ordering to the rows.


2. There's no left-to-right ordering to the columns.
3. There are no duplicate rows.
4. Every row-and-column intersection contains exactly one value from
the applicable domain (and nothing else).
5. All columns are regular [i.e. rows have no hidden components such
as row IDs, object IDs, or hidden timestamps].

Violation of any of these conditions would mean that the table is not strictly
relational, and therefore that it is not in first normal form.

Examples of tables (or views) that would not meet this definition of first normal
form are:

A table that lacks a unique key. Such a table would be able to accommodate
duplicate rows, in violation of condition 3.
A view whose definition mandates that results be returned in a particular
order, so that the row-ordering is an intrinsic and meaningful aspect of the
view.[13] This violates condition 1. The tuples in true relations are not ordered
with respect to each other.
A table with at least one nullable attribute. A nullable attribute would be in
violation of condition 4, which requires every field to contain exactly one
value from its column's domain. It should be noted, however, that this aspect
of condition 4 is controversial. It marks an important departure from Codd's
later vision of the relational model,[14] which made explicit provision for
nulls.[15]

You might also like