0% found this document useful (0 votes)
64 views

Normalization Is For Sissies: Pat Helland Microsoft

Normalization aims to eliminate update anomalies by ensuring each data item lives in one place. However, de-normalization is acceptable if updates are infrequent. Most applications use independent business objects with their own unique keys that are loaded into memory as a whole. Joins are used to relate these objects when needed, rather than across objects in code. Database logs are append-only and capture all changes, so most data is immutable and added to over time rather than updated in place. Normalization should be avoided for immutable data unless optimizing storage. Cultural biases toward normalization can overlook more natural object-oriented approaches.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views

Normalization Is For Sissies: Pat Helland Microsoft

Normalization aims to eliminate update anomalies by ensuring each data item lives in one place. However, de-normalization is acceptable if updates are infrequent. Most applications use independent business objects with their own unique keys that are loaded into memory as a whole. Joins are used to relate these objects when needed, rather than across objects in code. Database logs are append-only and capture all changes, so most data is immutable and added to over time rather than updated in place. Normalization should be avoided for immutable data unless optimizing storage. Cultural biases toward normalization can overlook more natural object-oriented approaches.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 8

Normalization Is

for Sissies
Pat Helland
Microsoft
Why Normalize?
• Normalization’s Goal Is Eliminating Update
Anomalies
– Can Be Changed Without “Funny Behavior”
– Each Data Item Lives in One Place

Classic problem
De-normalization is with de-normalization
OK if you aren’t going to update!
Can’t update
Emp # Emp Name Emp Phone Mgr # Mgr Name Mgr Phone Sam’s phone #
since there are
47 Joe 5-1234 13 Sam 6-9876 many copies
18 Sally 3-3123 38 Harry 5-6782
91 Pete 2-1112 13 Sam 6-9876
66 Mary 5-7349 02 Betty 4-0101
Real Programmers Encapsulate Their Joins…
• Persistent Business Objects
– Encapsulated by Logic
– Kept in SQL
– Uses Optimistic Concurrency (Low Update)
• Stored as Collection of Records Table-B
ID-X <key1> <record>
– May Use Records in Many Tables
ID-X <key2> <record>
– Keys of Records Prefixed with Unique ID
ID-X <key3> <record>
• This is the Object ID
• Encapsulation by Convention ID-Y <key1> <record>
SQL ID-Y <key2> <record>

Table-A Database-Key
ID-X <key> <record>
ID-Y <key> <record>
ID-Z <key> <record>
Persistent Object
Database-Key ID=Y
Business Objects Dominate
• Most Apps Use Independent Business Objects
– Each Object Has a Unique Key
– The Relational Version Has the Key as a Field for
– The Object Is Sucked into Memory as a Whole
– Updates Made in Memory; Changed Records Written Back
• Joins Are Used to Overcome Normalization
– We Have to Put the Objects Back Together…
• It Is Unusual to See Joins across Business Objects in
Mainstream Application Code
– Ad-hoc Business Intelligence May Cross Business Objects
Accountants Don’t Use Erasers
• Database Logs Are Append-Only
– The Entire State of EVERYTHING that Has Ever Happened to
the Database Is Kept in the Log
– The Database Is a Caching of a Subset of the Transaction Log
• Most Data Is Accrete-Only
– You Add Transactions to the End of Your Bank Account
– You Append a Purchase-Order to the Order-Log
– You Append a Change-Order, etc
• Some Data Is Roll-Up Data
– Balance Calculated as Delta from Last Month’s
We Are Swimming in
a Sea of Immutable Data
Data Owning Service
Wednesday’s
Price-List

Wednesday’s Listening
Price-List Price-List Partner
Service-8

Wednesday’s Wednesday’s
Price-List Price-List Tuesday’s
Price-List

Tuesday’s
Price-List Tuesday’s Monday’s
Price-List Price-List

Monday’s
Price-List
Listening Listening Listening
Partner Partner Partner
Service-1 Service-5 Service-7
Think First Before You Normalize

• For God’s Sake, Don’t Normalize Immutable Data


– Unless It’s to Optimize Space Utilization…
Culture:
the Way We Do Things Around Here
People Normalize ‘Cuz their Professor Said To
-- That’s Why We Need All Those Joins…

If All You Have Is a Database,


Everything Looks Like a Nail…

You might also like