Friday, June 27, 2008

Suggestions for Scott Hanselman’s Updated Northwind Sample Database

Scott’s not a fan of Northwind, but when he suggested a completely new replacement for Northwind in his Community Call to Action: NOT Northwind post of May 29, 2008, many developers, including me, pushed back.

I left the following comment to Scott’s NotNorthwind - Update #1 - All Your Northwind Are Belong To Us post on June 27, 2008:


As a long-time and widespread Northwind user, I'd prefer Southwind (the maker of aircraft cabin heaters that have kept me warm on many cold nights at 9,500 ft.)

I use Northwind rather than AdventureWorks because AW is overly normalized and the added joins confuse readers by diverting their attention to database structure from the issue at hand.

I'd also suggest some additions:

  1. Add an item number (tinyint) and shipped (bit) field for backorders below.
  2. Invoices from shipped order with backorders. An sproc to issue an invoice with and without backordered items would be nice.
  3. A relation table for a one:many relationship between sales orders and invoices to support the above.
  4. Inventory transactions table to provide on-demand calculated data for related field in Products table
  5. Change Products table to many:many relationship with suppliers and add multiple suppliers for some products
  6. A Purchase orders table with line items as in #1 with received field working with inventory table.
  7. Sproc to automatically add or remove timestamp field for each table
  8. Sproc to automatically add or remove usual audit fields for each table
  9. Sproc to automatically add or remove Sync framework fields for each table
  10. Sproc to substitute surrogate for natural PKs or vice-versa
  11. Product reviews (by customers, suggested by someone else) would be great

Deletions: Remove CustomerDemographics, Territories, Region
Thanks for considering the above,


If you have any suggestions for improving Northwind, add a comment to Scott’s Update#1 or my blog. I’ll send posts here to Scott.