SlideShare a Scribd company logo
Practically Normal:
A Practical Introduction to
Normalization
Ed Leighton-Dick
Who Am I?
O 22 years in IT
O SQL Server since 2000 (v6.5-2012)
O DBA, 2006-present
O Chapter Leader, I-380 PASS
O MCITP
O Husband
O Father of two
O Runner
O Beginning blogger and presenter
Let me tell you
a story…
flickr.com/photos/dbnunley/4070221002
flickr.com/photos/8175524@N05/2636978355
Practically Normal: An Introduction to Normalization
flickr.com/photos/reillymo/260487012
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
flickr.com/photos/panacheart/5166090434
Practically Normal: An Introduction to Normalization
How can we
help Frank?
Normalization
O The process of organizing data to minimize
redundancy
O Goals
O Produce smaller, well-structured relations
O Eliminate modification difficulties
O Minimize redesign when extending structure
O Make data model more informative to users
O Avoid bias toward any particular pattern of
querying
O Reduce data entry errors caused by redundant
data
First, Identify the Keys
O Candidate key: A column or group of
columns that uniquely identifies a row
O Natural key: A candidate key that consists
of a column or columns that already exist
in the table
O Surrogate key: An otherwise meaningless
column created to serve as a candidate
key
O Primary key: The candidate key chosen
as the preferred way of identifying rows
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Normal Form
O Criteria for determining a table’s degree of
vulnerability to logical inconsistencies and
anomalies
O Many normal forms exist
O Each implies adherence to lower-ranked
normal forms
First Normal Form (1NF)
O No repeating groups
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Second Normal Form (2NF)
O No non-key field is dependent on part of a
key
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Third Normal Form (3NF)
O No non-key field is dependent on another
non-key field
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Boyce-Codd Normal Form
(BCNF)
O Stronger version of 3NF
O All non-key fields are dependent on a
candidate key or a superset of a
candidate key (“superkey”)
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
Practically Normal: An Introduction to Normalization
4NF and 5NF
O How parts of a key relate to each other
O Both require keys with three or more parts
Fourth Normal Form (4NF)
O All multivalued dependencies are related
to a candidate key
O A -> B and A -> C and B -> C
4NF: Example A
Restaurant Pizza Variety Delivery Area
A1 Pizza Thick Crust Shelbyville
A1 Pizza Stuffed Crust Shelbyville
A1 Pizza Braided Crust Shelbyville
A1 Pizza Buttered Crust Shelbyville
A1 Pizza Thick Crust Capital City
A1 Pizza Stuffed Crust Capital City
A1 Pizza Braided Crust Capital City
A1 Pizza Buttered Crust Capital City
Adapted from Wikipedia
4NF: Example B
Restaurant Pizza Variety Delivery Area
A1 Pizza Thick Crust Springfield
A1 Pizza Thick Crust Capital City
A1 Pizza Stuffed Crust Springfield
A1 Pizza Stuffed Crust Shelbyville
Elite Pizza Thin Crust Capital City
Elite Pizza Stuffed Crust Capital City
Elite Pizza Stuffed Crust Springfield
Vincenzo’s Pizza Thin Crust Springfield
Adapted from Wikipedia
Fifth Normal Form (5NF)
O All join dependencies are implied by a
candidate key
O The combination of A and B does not imply
C
5NF: Example A
Salesman Brand Product Type
Jack Acme Vacuum
Jack Acme Breadbox
Willy Robusto Pruning Shears
Willy Robusto Vacuum
Willy Robusto Breadbox
Louis Nimbus Vacuum
Louis Robusto Vacuum
Louis Acme Vacuum
Adapted from Wikipedia
5NF: Example B
Salesman Type
Jack Vacuum
Jack Breadbo
x
Willy Shears
Willy Vacuum
Willy Breadbo
x
Louis Vacuum
Salesma
n
Brand
Jack Acme
Willy Robusto
Louis Acme
Louis Robusto
Louis Nimbus
Brand Type
Acme Vacuum
Acme Breadbo
x
Robusto Shears
Robusto Vacuum
Robusto Breadbo
x
Nimbus Vacuum
Adapted from Wikipedia
Why normalize?
O Manageability
O Smaller tables
O More informative data model
O Easier to add rows than columns
O Scalability
O Structures are “vertical” not “horizontal”
O Number of columns is finite
O Minimize redesign
O Avoid query bias
O Space savings
O Less repeated data
O Increased data integrity
O Less repeated data => More consistent data
But doesn’t normalization help
performance?
O Well… sometimes
O Does not directly help performance
O Helps you work with the database engine in
an optimal way
O Smaller tables => Fewer I/Os
O Avoids procedural code
O Can be slower in some cases!
Denormalization
O Process of “undoing” normalization
O Good for…
O Data warehouses
O Frequently-accessed reports
O Making database easier for novice users to
query against
O Always normalize first!
O “Normalize until it hurts…
Denormalize until it makes sense”
Questions?
Resources
O Wikipedia
http://en.wikipedia.org/wiki/Database_normalization
O “A Simple Guide to Five Normal Forms…”
http://www.bkent.net/Doc/simple5.htm
O Karen Lopez series
http://www.dataversity.net/archives/3898
Thank you!
Ed Leighton-Dick
Email: ed@leightondick.com
Twitter: @eleightondick
Website: edleightondick.com
Please fill out your
speaker comment cards!

More Related Content

What's hot (7)

PPT
Roja128
meherdeepu
 
PPTX
Krystal krull ppp_final
KrystalTKrull
 
PDF
Gost mark 1944
Grant Cole
 
PDF
Gost certificate of conformity 312
app_don
 
PDF
Laws in russia 1341
binga_gujjar
 
PDF
Cs 612
Web Developer
 
PDF
Boolean Book Table of Contents
Irina Shamaeva
 
Roja128
meherdeepu
 
Krystal krull ppp_final
KrystalTKrull
 
Gost mark 1944
Grant Cole
 
Gost certificate of conformity 312
app_don
 
Laws in russia 1341
binga_gujjar
 
Boolean Book Table of Contents
Irina Shamaeva
 

Viewers also liked (18)

PPTX
Por qué Pipeliner CRM - El mejor CRM
tic top sales
 
PPTX
Calcium Imbalance (Updates)
AHMED TANJIMUL ISLAM
 
DOCX
Hoja de vida
Leslie2209
 
PDF
Kibera Final Presentation - Final Edits
Raphael Rique, MBA
 
PDF
PM Relocations 2016 - 2017
Jithin Raj R
 
PDF
КЕЙС: Как снизить риски при привлечении валютных инвестиций в МФО?
Marina Khazheeva
 
PDF
Planificación Estudiantil
Gaby Bermeo
 
PPT
(Graham Brown mobileYouth) The 10 Laws of Selling to Digital Natives
Graham Brown
 
PDF
KIA CPO Brochure
Pepper Gang
 
PDF
Videofied - Evlərin Mühafizəsi
Murad AKHUNDOV
 
PPT
Job Market Update - September, 2015
Adecco Staffing, USA
 
PDF
Advisor Live: Advancing Antimicrobial Stewardship
Premier Inc.
 
PDF
How To Rapidly Grow Your Online Community - Going For The Big Wins
FeverBee Limited
 
PDF
Luyện sieu tri nho (1 32 trang)
mcbooksjsc
 
PPT
Los músculos
sfidalgo
 
DOCX
Location recce sheet
Danielle
 
DOCX
Shot Log: School location
Danielle
 
PDF
principales musculos del cuerpo humano
jaquelinarellano
 
Por qué Pipeliner CRM - El mejor CRM
tic top sales
 
Calcium Imbalance (Updates)
AHMED TANJIMUL ISLAM
 
Hoja de vida
Leslie2209
 
Kibera Final Presentation - Final Edits
Raphael Rique, MBA
 
PM Relocations 2016 - 2017
Jithin Raj R
 
КЕЙС: Как снизить риски при привлечении валютных инвестиций в МФО?
Marina Khazheeva
 
Planificación Estudiantil
Gaby Bermeo
 
(Graham Brown mobileYouth) The 10 Laws of Selling to Digital Natives
Graham Brown
 
KIA CPO Brochure
Pepper Gang
 
Videofied - Evlərin Mühafizəsi
Murad AKHUNDOV
 
Job Market Update - September, 2015
Adecco Staffing, USA
 
Advisor Live: Advancing Antimicrobial Stewardship
Premier Inc.
 
How To Rapidly Grow Your Online Community - Going For The Big Wins
FeverBee Limited
 
Luyện sieu tri nho (1 32 trang)
mcbooksjsc
 
Los músculos
sfidalgo
 
Location recce sheet
Danielle
 
Shot Log: School location
Danielle
 
principales musculos del cuerpo humano
jaquelinarellano
 
Ad

Similar to Practically Normal: An Introduction to Normalization (20)

PPTX
Entity relationship diagram - Concept on normalization
Satya Pal
 
PPTX
Normalization in Relational database management systems
backiyalakshmi14
 
PPTX
Normalization in rdbms types and examples
BackiyalakshmiVenkat
 
PDF
Dependencies in various topics like normalisation and its types
nsrChowdary1
 
PDF
Relational Theory for Budding Einsteins -- LonestarPHP 2016
Dave Stokes
 
PPTX
Normalization and three normal forms.pptx
Zoha681526
 
PPT
Normalisation revision
Dr. Ramkumar Lakshminarayanan
 
PPTX
Functional dependencies and normalization
daxesh chauhan
 
PDF
functionaldependenciesandnormalization-150628061940-lva1-app6891.pdf
Anvesha Joshi
 
PPTX
Database normalization
Jignesh Jain
 
PPTX
database Normalization
Harsiddhi Thakkar
 
PPT
normalization-Normalization -Process of Divide Tables
dharawagh9999
 
PPT
normalization in Database Management Systems.ppt
mohsinkhanscientist
 
PPT
Database Normalization.ppt
sabi ben
 
PPT
normalization.ppt
FaizanBashirSidhu
 
PPT
normalization.ppt
Infotech27
 
PPT
normalization.ppt
niteshkumar334392
 
PDF
Normalization | (1NF) |(2NF) (3NF)|BCNF| 4NF |5NF
Biplap Bhattarai
 
PPT
normalization.ppt fgnbftnhgkdnghtnhnbkfnbolhtlhtjm;dsbdt.htmjhnm
pakevik248
 
Entity relationship diagram - Concept on normalization
Satya Pal
 
Normalization in Relational database management systems
backiyalakshmi14
 
Normalization in rdbms types and examples
BackiyalakshmiVenkat
 
Dependencies in various topics like normalisation and its types
nsrChowdary1
 
Relational Theory for Budding Einsteins -- LonestarPHP 2016
Dave Stokes
 
Normalization and three normal forms.pptx
Zoha681526
 
Normalisation revision
Dr. Ramkumar Lakshminarayanan
 
Functional dependencies and normalization
daxesh chauhan
 
functionaldependenciesandnormalization-150628061940-lva1-app6891.pdf
Anvesha Joshi
 
Database normalization
Jignesh Jain
 
database Normalization
Harsiddhi Thakkar
 
normalization-Normalization -Process of Divide Tables
dharawagh9999
 
normalization in Database Management Systems.ppt
mohsinkhanscientist
 
Database Normalization.ppt
sabi ben
 
normalization.ppt
FaizanBashirSidhu
 
normalization.ppt
Infotech27
 
normalization.ppt
niteshkumar334392
 
Normalization | (1NF) |(2NF) (3NF)|BCNF| 4NF |5NF
Biplap Bhattarai
 
normalization.ppt fgnbftnhgkdnghtnhnbkfnbolhtlhtjm;dsbdt.htmjhnm
pakevik248
 
Ad

More from Ed Leighton-Dick (10)

PPTX
SQL Server: Now It's Everywhere You Want to Be
Ed Leighton-Dick
 
PPTX
How to Keep Your Databases Secure in Just Minutes a Day
Ed Leighton-Dick
 
PPTX
DevOps+Data: Working with Source Control
Ed Leighton-Dick
 
PPTX
Understanding SQL Server 2016 Always Encrypted
Ed Leighton-Dick
 
PPTX
Dammit Jim! Dr McCoy’s Field Guide to system_health (and the default trace)
Ed Leighton-Dick
 
PPTX
Protecting Your Data with Encryption
Ed Leighton-Dick
 
PPTX
Extending Your Availability Group for Disaster Recovery
Ed Leighton-Dick
 
PPTX
SQL Server Features That Will Blow Your Mind!
Ed Leighton-Dick
 
PPTX
Get Involved!
Ed Leighton-Dick
 
PPTX
Service Broker: The Queue Continuum
Ed Leighton-Dick
 
SQL Server: Now It's Everywhere You Want to Be
Ed Leighton-Dick
 
How to Keep Your Databases Secure in Just Minutes a Day
Ed Leighton-Dick
 
DevOps+Data: Working with Source Control
Ed Leighton-Dick
 
Understanding SQL Server 2016 Always Encrypted
Ed Leighton-Dick
 
Dammit Jim! Dr McCoy’s Field Guide to system_health (and the default trace)
Ed Leighton-Dick
 
Protecting Your Data with Encryption
Ed Leighton-Dick
 
Extending Your Availability Group for Disaster Recovery
Ed Leighton-Dick
 
SQL Server Features That Will Blow Your Mind!
Ed Leighton-Dick
 
Get Involved!
Ed Leighton-Dick
 
Service Broker: The Queue Continuum
Ed Leighton-Dick
 

Recently uploaded (20)

PDF
R Cookbook - Processing and Manipulating Geological spatial data with R.pdf
OtnielSimopiaref2
 
PPTX
Advanced_NLP_with_Transformers_PPT_final 50.pptx
Shiwani Gupta
 
PDF
AUDITABILITY & COMPLIANCE OF AI SYSTEMS IN HEALTHCARE
GAHI Youssef
 
PDF
Web Scraping with Google Gemini 2.0 .pdf
Tamanna
 
PPT
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
PPTX
apidays Helsinki & North 2025 - Running a Successful API Program: Best Practi...
apidays
 
PDF
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...
apidays
 
PPTX
apidays Singapore 2025 - Designing for Change, Julie Schiller (Google)
apidays
 
PPTX
apidays Singapore 2025 - From Data to Insights: Building AI-Powered Data APIs...
apidays
 
PPTX
AI Presentation Tool Pitch Deck Presentation.pptx
ShyamPanthavoor1
 
PDF
Merits and Demerits of DBMS over File System & 3-Tier Architecture in DBMS
MD RIZWAN MOLLA
 
PDF
apidays Helsinki & North 2025 - API-Powered Journeys: Mobility in an API-Driv...
apidays
 
PDF
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
PDF
Avatar for apidays apidays PRO June 07, 2025 0 5 apidays Helsinki & North 2...
apidays
 
PDF
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
PDF
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
PPTX
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
PDF
The European Business Wallet: Why It Matters and How It Powers the EUDI Ecosy...
Lal Chandran
 
PPTX
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
apidays
 
PDF
Choosing the Right Database for Indexing.pdf
Tamanna
 
R Cookbook - Processing and Manipulating Geological spatial data with R.pdf
OtnielSimopiaref2
 
Advanced_NLP_with_Transformers_PPT_final 50.pptx
Shiwani Gupta
 
AUDITABILITY & COMPLIANCE OF AI SYSTEMS IN HEALTHCARE
GAHI Youssef
 
Web Scraping with Google Gemini 2.0 .pdf
Tamanna
 
tuberculosiship-2106031cyyfuftufufufivifviviv
AkshaiRam
 
apidays Helsinki & North 2025 - Running a Successful API Program: Best Practi...
apidays
 
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...
apidays
 
apidays Singapore 2025 - Designing for Change, Julie Schiller (Google)
apidays
 
apidays Singapore 2025 - From Data to Insights: Building AI-Powered Data APIs...
apidays
 
AI Presentation Tool Pitch Deck Presentation.pptx
ShyamPanthavoor1
 
Merits and Demerits of DBMS over File System & 3-Tier Architecture in DBMS
MD RIZWAN MOLLA
 
apidays Helsinki & North 2025 - API-Powered Journeys: Mobility in an API-Driv...
apidays
 
Data Chunking Strategies for RAG in 2025.pdf
Tamanna
 
Avatar for apidays apidays PRO June 07, 2025 0 5 apidays Helsinki & North 2...
apidays
 
JavaScript - Good or Bad? Tips for Google Tag Manager
📊 Markus Baersch
 
Driving Employee Engagement in a Hybrid World.pdf
Mia scott
 
apidays Helsinki & North 2025 - APIs at Scale: Designing for Alignment, Trust...
apidays
 
The European Business Wallet: Why It Matters and How It Powers the EUDI Ecosy...
Lal Chandran
 
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
apidays
 
Choosing the Right Database for Indexing.pdf
Tamanna
 

Practically Normal: An Introduction to Normalization

  • 1. Practically Normal: A Practical Introduction to Normalization Ed Leighton-Dick
  • 2. Who Am I? O 22 years in IT O SQL Server since 2000 (v6.5-2012) O DBA, 2006-present O Chapter Leader, I-380 PASS O MCITP O Husband O Father of two O Runner O Beginning blogger and presenter
  • 3. Let me tell you a story…
  • 12. How can we help Frank?
  • 13. Normalization O The process of organizing data to minimize redundancy O Goals O Produce smaller, well-structured relations O Eliminate modification difficulties O Minimize redesign when extending structure O Make data model more informative to users O Avoid bias toward any particular pattern of querying O Reduce data entry errors caused by redundant data
  • 14. First, Identify the Keys O Candidate key: A column or group of columns that uniquely identifies a row O Natural key: A candidate key that consists of a column or columns that already exist in the table O Surrogate key: An otherwise meaningless column created to serve as a candidate key O Primary key: The candidate key chosen as the preferred way of identifying rows
  • 17. Normal Form O Criteria for determining a table’s degree of vulnerability to logical inconsistencies and anomalies O Many normal forms exist O Each implies adherence to lower-ranked normal forms
  • 18. First Normal Form (1NF) O No repeating groups
  • 24. Second Normal Form (2NF) O No non-key field is dependent on part of a key
  • 29. Third Normal Form (3NF) O No non-key field is dependent on another non-key field
  • 34. Boyce-Codd Normal Form (BCNF) O Stronger version of 3NF O All non-key fields are dependent on a candidate key or a superset of a candidate key (“superkey”)
  • 40. 4NF and 5NF O How parts of a key relate to each other O Both require keys with three or more parts
  • 41. Fourth Normal Form (4NF) O All multivalued dependencies are related to a candidate key O A -> B and A -> C and B -> C
  • 42. 4NF: Example A Restaurant Pizza Variety Delivery Area A1 Pizza Thick Crust Shelbyville A1 Pizza Stuffed Crust Shelbyville A1 Pizza Braided Crust Shelbyville A1 Pizza Buttered Crust Shelbyville A1 Pizza Thick Crust Capital City A1 Pizza Stuffed Crust Capital City A1 Pizza Braided Crust Capital City A1 Pizza Buttered Crust Capital City Adapted from Wikipedia
  • 43. 4NF: Example B Restaurant Pizza Variety Delivery Area A1 Pizza Thick Crust Springfield A1 Pizza Thick Crust Capital City A1 Pizza Stuffed Crust Springfield A1 Pizza Stuffed Crust Shelbyville Elite Pizza Thin Crust Capital City Elite Pizza Stuffed Crust Capital City Elite Pizza Stuffed Crust Springfield Vincenzo’s Pizza Thin Crust Springfield Adapted from Wikipedia
  • 44. Fifth Normal Form (5NF) O All join dependencies are implied by a candidate key O The combination of A and B does not imply C
  • 45. 5NF: Example A Salesman Brand Product Type Jack Acme Vacuum Jack Acme Breadbox Willy Robusto Pruning Shears Willy Robusto Vacuum Willy Robusto Breadbox Louis Nimbus Vacuum Louis Robusto Vacuum Louis Acme Vacuum Adapted from Wikipedia
  • 46. 5NF: Example B Salesman Type Jack Vacuum Jack Breadbo x Willy Shears Willy Vacuum Willy Breadbo x Louis Vacuum Salesma n Brand Jack Acme Willy Robusto Louis Acme Louis Robusto Louis Nimbus Brand Type Acme Vacuum Acme Breadbo x Robusto Shears Robusto Vacuum Robusto Breadbo x Nimbus Vacuum Adapted from Wikipedia
  • 47. Why normalize? O Manageability O Smaller tables O More informative data model O Easier to add rows than columns O Scalability O Structures are “vertical” not “horizontal” O Number of columns is finite O Minimize redesign O Avoid query bias O Space savings O Less repeated data O Increased data integrity O Less repeated data => More consistent data
  • 48. But doesn’t normalization help performance? O Well… sometimes O Does not directly help performance O Helps you work with the database engine in an optimal way O Smaller tables => Fewer I/Os O Avoids procedural code O Can be slower in some cases!
  • 49. Denormalization O Process of “undoing” normalization O Good for… O Data warehouses O Frequently-accessed reports O Making database easier for novice users to query against O Always normalize first! O “Normalize until it hurts… Denormalize until it makes sense”
  • 51. Resources O Wikipedia http://en.wikipedia.org/wiki/Database_normalization O “A Simple Guide to Five Normal Forms…” http://www.bkent.net/Doc/simple5.htm O Karen Lopez series http://www.dataversity.net/archives/3898
  • 52. Thank you! Ed Leighton-Dick Email: [email protected] Twitter: @eleightondick Website: edleightondick.com Please fill out your speaker comment cards!

Editor's Notes

  • #5: Once upon a time, a guy named Frank opened a small fruit stand that sold apples.
  • #6: This is Frank.
  • #7: Frank decides to start keeping track of his fruit sales in a spreadsheet.
  • #8: Business is booming, so he begins to diversify his business.
  • #9: Frank adds columns to track the new produce.
  • #10: Now Frank needs to start tracking his inventory. He adds more columns.
  • #11: Business was so good that Frank decided to open a second fruit stand. He adds more columns to track sales and inventory at the second location.
  • #12: Frank’s spreadsheet is collecting the information he needs, but it has become difficult to manage. He decides to contact a consultant for help.
  • #18: Many more normal forms than what I’m going to show… Most above BCNF deal with less-common cases. I learned six in college; Wikipedia lists 9; I’ve seen lists that show more. New ones are added occasionally to handle additional cases.
  • #48: Goals Produce smaller, well-structured relations Eliminate modification difficulties Minimize redesign when extending structure Make data model more informative to users Avoid bias toward any particular pattern of querying Reduce data entry errors caused by redundant data Manageability Tables are smaller Easier to add rows than columns More informative data model - Easier to find columns for querying, modifications Scalability Structures are “vertical” not “horizontal” – Rows can be added indefinitely; columns are finite Minimize redesign when columns need to be added/deleted Avoid bias toward any particular pattern of querying Space savings Less repeated data Increased data integrity Less repeated data => More consistent data
  • #50: Final comments: This is not hard stuff… It just takes practice. Anything can be used for practice!
  • #53: Add contact info I want feedback!