Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Second normal form
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Term in database normalization}}{{More footnotes needed|date=June 2024}} '''Second normal form''' ('''2NF'''), in [[database normalization]], is a [[Database normalization#Normal forms|normal form]]. A relation is in the second normal form if it fulfills the following two requirements: # It is in [[first normal form]]. # It does not have any [[non-prime attribute]] that is [[Functional dependency|functionally dependent]] on any [[proper subset]] of any [[candidate key]] of the relation (i.e. it lacks partial dependencies). A ''non-prime attribute of a relation'' is an attribute that is not a part of any candidate key of the relation. Put simply, a relation (or table) is in 2NF if: # It is in 1NF and has a single attribute [[unique identifier]] (UID) (in which case every non key attribute is dependent on the entire UID), or # It is in 1NF and has a multi-attribute unique identifier, and every regular attribute (not part of the UID) is dependent on ''all attributes'' in the multi-attribute UID, not just one attribute (or part) of the UID. If any regular (non-prime) attributes are predictable (dependent) on another (non-prime) attribute, that is addressed in [[third normal form]]. == History == The second normal form was originally defined by [[E.Β F. Codd]] in 1971.<ref name="Codd">Codd, E.Β F. "Further Normalization of the Data Base Relational Model". (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, May 24β25, 1971.) IBM Research Report RJ909 (August 31, 1971). Republished in Randall J. Rustin (ed.), ''Data Base Systems: Courant Computer Science Symposia Series 6''. Prentice-Hall, 1972.</ref> == Decomposition of 1NF into 2NF == To make a 1NF relation a 2NF relation, remove the functionally dependent attributes in the partial dependencies of the first normal form relation, and place those partial dependency dependent attributes in a relation where their corresponding determinant attributes are an entire candidate key. === Example === The following relation does not satisfy 2NF because: * There is a multi-attribute unique identifier/candidate key: "Manufacturer" and "Model". * {Manufacturer country} is functionally dependent (predictable) on {Manufacturer}. * {Manufacturer} is a proper subset of the {Manufacturer, Model} candidate key. * {Manufacturer country} is not part of a candidate key, so it is a non-prime attribute. (It is assumed that it is possible for two manufacturers in the same country to make a toothbrush with the same model name, so {Manufacturer country, Model} is not a candidate key even though in the current table the pair uniquely identify rows.) In other words, since {Manufacturer country} is a non-prime attribute functionally dependent on a proper subset of a candidate key, the relation is in violation of 2NF. {| class="wikitable" |+ Electric toothbrush models ! Manufacturer !! Model !! Manufacturer country |- |Forte||X-Prime||Italy |- |Forte||Ultraclean||Italy |- |Dent-o-Fresh||EZbrush||USA |- |Brushmaster||SuperBrush||USA |- |Kobayashi||ST-60||Japan |- |Hoch||Toothmaster||Germany |- |Hoch|| X-Prime||Germany |} To make the design conform to 2NF, it is necessary to have two relations. To create these relations: # Remove the functionally dependent attributes in the partial dependencies of the first normal form relation. In this example, {Manufacturer country} is the functionally dependent attribute which will be removed. # Place those partial dependency-dependent attributes (i.e. {Manufacturer country}) in a relation where their corresponding determinant attributes are a candidate key (i.e. {Manufacturer}). As seen below, {Manufacturer country} is removed from the original table: {| class="wikitable" |+ Electric toothbrush models ! Manufacturer !! Model |- |Forte||X-Prime |- |Forte||Ultraclean |- |Dent-o-Fresh||EZbrush |- |Brushmaster||SuperBrush |- |Kobayashi||ST-60 |- |Hoch||Toothmaster |- |Hoch|| X-Prime |} As seen below, the partial dependency is put into a new relation where the dependency can exist without being a partial dependency: {| class="wikitable" |+ Electric toothbrush manufacturers ! Manufacturer !! Manufacturer country |- |Forte||Italy |- |Dent-o-Fresh||USA |- |Brushmaster||USA |- |Kobayashi||Japan |- |Hoch||Germany |} It may now be desirable to add a numeric identifier to each row in the "Electric toothbrush models" table to ensure it remains in 1NF, or, the table may be left as is, allowing each unique combination of values in each row to be usable as a primary key, thus allowing the columns {Manufacturer, Model} in this table to be used as the candidate key of the table. ==See also== *[[Attribute-value system]] *[[First normal form]] (1NF) *[[Third normal form]] (3NF) *[[Fourth normal form]] (4NF) *[[Fifth normal form]] (5NF) *[[Sixth normal form]] (6NF) ==References== {{Reflist}} ==Further reading== {{Refbegin}} * [http://www.troubleshooters.com/littstip/ltnorm.html Litt's Tips: Normalization] *{{cite book |last1=Date |first1=C. J. |authorlink1=Christopher J. Date |last2=Lorentzos |first2=N. |last3=Darwen |first3=H. |year=2002 |title=Temporal Data & the Relational Model |edition=1st |publisher=Morgan Kaufmann |isbn=1-55860-855-9 |url=http://www.elsevier.com/wps/product/cws_home/680662 |url-status=dead |access-date=2006-08-16 |archive-date=2012-12-09 |archive-url=https://archive.today/20121209052842/http://www.elsevier.com/wps/product/cws_home/680662 }} *{{cite book |last=Date |first=C. J. |authorlink=Christopher J. Date |year=2004 |title=Introduction to Database Systems |edition=8th |publisher=Addison-Wesley |location=Boston |isbn=978-0-321-19784-9 |url-access=registration |url=https://archive.org/details/introductiontoda0000date }} *{{cite journal |last=Kent |first=W. |year=1983 |title=A Simple Guide to Five Normal Forms in Relational Database Theory |journal=Communications of the ACM |volume=26 |issue=2 |pages=120β125 |doi=10.1145/358024.358054 |url=http://www.bkent.net/Doc/simple5.htm |doi-access=free }} {{Refend}} ==External links== *[https://www.thoughtco.com/database-normalization-basics-1019735 Database Normalization Basics] by Mike Chapple (About.com) *[http://mikehillyer.com/articles/an-introduction-to-database-normalization/ An Introduction to Database Normalization] by Mike Hillyer. *[http://phlonx.com/resources/nf3/ A tutorial on the first 3 normal forms] by Fred Coulson *[http://support.microsoft.com/kb/283878 Description of the database normalization basics] by Microsoft {{Database normalization}} [[Category:Database normalization|2NF]] [[de:Normalisierung (Datenbank)#Zweite Normalform (2NF)]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Database normalization
(
edit
)
Template:More footnotes needed
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)