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
First normal form
(section)
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!
== Rationale and drawbacks == {{Multiple issues|section=yes| {{Confusing section|date=May 2025}} {{Importance section|date=May 2025}} }} Normalization to 1NF is the major theoretical component of transferring a database to the [[relational model]]. Use of a relational database in 1NF brings certain advantages: * It enables data to be stored in regular [[two-dimensional array]]s; supporting nested relations would require more complex data structures.{{r|Codd 1970}}{{rp|page=381}} * It allows for the use of a simpler [[query language]], like [[SQL]], since any data item can be identified using only a relation name, attribute name and key; addressing nested data items would require a more complex language with support for hierarchical data paths. * Representing relationships using foreign keys is more flexible and allows for features such as [[Many-to-many (data model)|many-to-many]] relationships, while a hierarchical model can represent only [[One-to-one (data model)|one-to-one]] or [[One-to-many (data model)|one-to-many]] relationships. * Since locating data items is not coupled to a parent–child hierarchy, a database in 1NF creates greater [[data independence]] and is more resilient to structural changes over time.{{Clarify|date=May 2025}} * From 1NF, further normalization becomes possible (for example to [[Second normal form|2NF]] or [[Third normal form|3NF]]), which can reduce data redundancy and anomalies. The use of 1NF also comes with certain drawbacks: * Performance worsens for certain operations. In a hierarchical model, nested records are physically stored after the parent record, which means a whole subtree can be retrieved in a single read operation. In 1NF, this will require a join operation per record type, which can be costly, especially for complex trees. For this reason, [[document-oriented database]]s eschew 1NF. * [[Object-oriented language]]s represent runtime state as trees or [[directed graph]]s of objects connected by [[Pointer (computer programming)|pointers]] or references. This does not map cleanly to a 1NF relational database, creating a gap sometimes called the [[object–relational impedance mismatch]], which [[object–relational mapping]] (ORM) libraries try to bridge. * 1NF has been interpreted as not allowing complex data types for values. This is open to interpretation though, and [[Christopher J. Date]] has argued that values can be arbitrarily complex objects.{{citation-needed|date=June 2023}}
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)