Scott on Writing

Musings on technical writing...

Not NotNorthwind

Scott Hanselman, one of my favorite bloggers, has expressed his deep disdain for Northwind.

I'm just sick of Northwind. Sick to death of the Northwind Database. You know, this is the Products, Categories, Suppliers, yada yada yada sample database that you've been seeing in Microsoft demos since the beginning of time. (FYI, the beginning of time was about 1997. ;) ) ... When I'm showing some technology that is talking to a Database or to POCO (Plain Ol' CLR Objects) I still need good sample data to pull from. Thus, the Northwind Virus continues. And I hate it with the heat of a thousand suns.

Sure, there are other Microsoft endorsed sample databases (most notably, AdventureWorks), but Northwind, despite its age and limitations, is still the de facto database for articles, demos, and talks involving Microsoft technologies.

What's wrong with Northwind? Scott focuses on his emotional distate and doesn't really provide any logical or rational reasons as to why he hates Northwind so passionately. Northwind certainly has its shortcomings - it's at times overly simple (very small amounts of data in each table, for example). The main two shortcomings that get under my skin are:

  • It is, literally, very dated. The date/time values in the database are from the mid-1990s, for instance. Which is a little odd and discomforting when demoing an application that allows users to filter orders by their date, and having to enter sample dates within the year 1996.
  • The images stored in the Categories table are stored as grainy, low-quality 16-color BMP images that includes an OLE header that must be stripped out. I detail these pains in Displaying Binary Data in the Data Web Controls. The short of it is that the category images are ugly and use a poor image file format for the web with antequated image quality settings. 

Scott proposes that the community band together and develop a new sample database:

I suspect, though, that if we (the community) took a few weeks, did some Skype conference calls, assigned some tasks, brainstormed and did it, we could come up with NotNorthwind. The Lazy Web, the Web of Clay Shirkey, .NET Flash Mobs included, could create a sample database, (we can argue about whether to start in the middle or in the db in the first meeting) as well as some good examples of things like NHibernate, LINQ to SQL or Whatever.

I don't know if this makes the most sense or if it's the best use of time and energy and effort. As Steve Smith points out, the reason Northwind 'works' is because virtually anyone who has attended a Microsoft talk knows what Northwind is already. There's no need to spend 5-10 minutes explaining the data model of some new, community-created database. Steve explains:

The first stated requirement for NotNorthWind is this:

  • Complex enough to be called Real World but simple enough that someone could "get it" in 5-10 minutes

That alone is enough for me, as a presenter, to suggest that perhaps this is not a good idea. In the course of such presentations, which usually have 75 minutes or so allocated to them and very little tolerance for going over, I don't have an extra 5-10 minutes per presentation to stop everything and explain what the heck I'm using as my data for this thing. ... Enter NorthWind, the HTTP standard of databases, understood by virtually all Microsoft developers without need for preamble.  It just works.  With the words, "I'm using Northwind for my database." I now have the complete understanding of 95% of the people in the room - we're all on the same page - and I can continue with the actual point of the presentation or demo, which is not, has not, and probably will never be, "why this database isn't Northwind."

But that isn't Northwinds only selling point. Other benefits include:

  • It has few enough tables to not overwhelm a person new to the data model, yet enough that interesting and real-world examples can still be drawn from it.
  • It has stored procedures and views. Granted, there are only a handful of sprocs and views, and neither are very interesting, but at least there are some sprocs and views, so that demos can use these features, if needed.
  • It has Unicode characters (in the Products.ProductName column).
  • It has examples of storing binary data directly in the database in the form of the category images, albeit the images leave a lot to be desired.
  • There are foreign key constraints in place.
  • It models a common business scenario that everyone can wrap their heads around: products, categories, suppliers, employees, customers, orders, and order details.
  • And, perhaps most importantly, it is a Microsoft-approved database. In short, Microsoft has the license to use the product names, supplier names, and employee names in Northwind in their literature and technical papers. When reviewing some sort of database viewer for my Toolbox column in MSDN Magazine, I cannot show a screen shot of the tool displaying any old database. Rather, I have to use one of the Microsoft-approved databases: AdventureWorks or Northwind.

I'll be honest, I like Northwind. I don't love it, but I don't hate it, and I certainly don't hate it with the heat of a thousand suns. :-) I used Northwind extensively in my Working with Data tutorials, and I use it in LUG talks and in the classroom. I've used it so often I have many of the values memorized. For example, I can recite from memory the categories in order of CategoryID - Beverages, Condiments, Confections, Dairy, Grains, Meat, Produce, Seafood. I know that Chai Tea is the first product, and Chang the second. I know the big boss man is Andrew Fuller. You could say I have a sort of affinity for this database, its products, categories, employees, and customers. Yes, it is far from perfect and could use some updating with regards to the date/time values and the category pictures, but those warts aside, it does a good job at what it was designed to do.

posted on Thursday, June 12, 2008 10:44 AM

Feedback

# re: Not NotNorthwind 6/12/2008 1:18 PM Cato Antonsen

Just a suggestion to overcome two of the shortcomings; update all dates and images. Then you have the classic, simple Northwind - but in a new look! ;-)

# Not NotNorthwind 6/13/2008 1:56 AM ReBitting

Not NotNorthwind

# Link Listing - June 13, 2008 6/13/2008 3:47 AM Christopher Steen

Link Listing - June 13, 2008

# Link Listing - June 13, 2008 6/13/2008 3:48 AM Christopher Steen

ASP.NET Disabling a User Interface Element During a Partial Page Postback [Via: 4 Guys from Rolla ]...

# re: Not NotNorthwind 6/13/2008 6:33 AM Alex Simkin

And we do not want AdventureWorks because...?

# re: Not NotNorthwind 6/21/2008 11:20 AM Andrey

I know that The Northwind is Canada's national Australian rules football team that represents the clubs and teams of AFL Canada.

# ScottMi said "Not NotNorwhind" (so?) 6/24/2008 9:37 PM Jersson on Geeks·ms

Recuerdan lo publicado hace unas semanas ? Bueno, en resumen les comentaba el post de ScottHa , en el

# NotNorthwind - Update #1 - All Your Northwind Are Belong To Us 6/26/2008 4:54 PM Scott Hanselman's Computer Zen

# NotNorthwind - Update #1 - All Your Northwind Are Belong To Us 6/26/2008 5:23 PM ASPInsiders

I posted a little rant against the Northwind Database a few weeks back, and suggested that we, the community,

# NotNorthwind - Update #1 - All Your Northwind Are Belong To Us 6/26/2008 5:45 PM Readed By Wrocław NUG members

I posted a little rant against the Northwind Database a few weeks back, and suggested that we, the community

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

My Links

Ads Via DevMavens

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<March 2010>
SMTWTFS
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Comment Stats

DayTotal% of Total
Sunday 2056.8%
Monday 42514.1%
Tuesday 51917.2%
Wednesday 55618.4%
Thursday 58019.2%
Friday 54718.1%
Saturday 1886.2%
Total 3020100.0%

Hour1Total% of Total
12:00 AM 782.6%
1:00 AM 812.7%
2:00 AM 682.3%
3:00 AM 822.7%
4:00 AM 692.3%
5:00 AM 1264.2%
6:00 AM 1193.9%
7:00 AM 1816.0%
8:00 AM 1926.4%
9:00 AM 1585.2%
10:00 AM 1886.2%
11:00 AM 1936.4%
12:00 PM 2016.7%
1:00 PM 1846.1%
2:00 PM 1695.6%
3:00 PM 1354.5%
4:00 PM 1153.8%
5:00 PM 1073.5%
6:00 PM 1013.3%
7:00 PM 1073.5%
8:00 PM 923.0%
9:00 PM 882.9%
10:00 PM 913.0%
11:00 PM 953.1%
Total 3020100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 5.00160
Monday 4.80384
Tuesday 4.04477
Wednesday 7.39680
Thursday 6.26676
Friday 5.07466
Saturday 4.78177
Total 5.403020

Hour1 Entry MadeAvg.Total
12:00 AM 5.2937
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 3.8550
8:00 AM 3.72134
9:00 AM 6.06297
10:00 AM 5.63276
11:00 AM 4.22194
12:00 PM 6.16351
1:00 PM 3.09133
2:00 PM 4.89230
3:00 PM 7.67322
4:00 PM 4.00108
5:00 PM 6.07170
6:00 PM 4.64116
7:00 PM 8.95188
8:00 PM 8.63164
9:00 PM 5.00115
10:00 PM 6.31101
11:00 PM 4.5732
Total 5.403020

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles