Listing 1: Examples of Bad Table Design USE MyDatabase GO /* --------------------------------------------------------------------------- Example table dbo.BadDesign_ProcessOrder. Total row length (native data types), 2800 bytes, 2 recs/page --------------------------------------------------------------------------- */ CREATE TABLE dbo.BadDesign_ProcessOrder ( ProcOrderID int IDENTITY(1, 1) NOT NULL , /* pkey */ SaleID int NOT NULL , /*fkey links back to dbo.Sale */ ProcessStatus char(10) NOT NULL , ProcessStatusDescr varchar(50) NULL , ' BEGIN CALLOUT A ItemWoodType char(30) NOT NULL , ItemFinishColor char(30) NOT NULL , ItemSize char(30) NULL , ' END CALLOUT A CustDesignDate datetime NULL , CustOrderDate datetime NULL , BlanksOrderDate datetime NULL , BlanksArriveDate datetime NULL , BeginProdDate datetime NULL , BeginFinishDate datetime NULL , CompleteProdDate datetime NULL , EmailSentDate datetime NULL , ' BEGIN CALLOUT B ShipOption char(20) NULL , ShipTrackingNbr char(50) NULL , ShipDate datetime NULL , DeliverDate datetime NULL , ' END CALLOUT B CustDesignNotes char(500) NULL , ProdNotes char(500) NULL , FinishNotes char(500) NULL , ShipNotes char(500) NULL , DeliverNotes char(500) NULL ) ON MyDatabase_data /* --------------------------------------------------------------------------- Example table dbo.MoreBadDesign_ProcessOrder Total row length assuming 40 percent of varchar space used, 1176 bytes, 6 recs/page --------------------------------------------------------------------------- */ CREATE TABLE dbo.MoreBadDesign_ProcessOrder ( ProcOrderID int IDENTITY(1, 1) NOT NULL , /* pkey */ SaleID int NOT NULL , /*fkey, links to dbo.Sale */ ProcessStatus varchar(10) NOT NULL , ProcessStatusDescr varchar(50) NULL , ItemWoodType varchar(30) NOT NULL , ItemFinishColor varchar(30) NOT NULL , ItemSize varchar(30) NULL , CustDesignDate datetime NULL , CustOrderDate datetime NULL , BlanksOrderDate datetime NULL , BlanksArriveDate datetime NULL , BeginProdDate datetime NULL , BeginFinishDate datetime NULL , CompleteProdDate datetime NULL , EmailSentDate datetime NULL , ShipOption varchar(20) NULL , ShipTrackingNbr varchar(50) NULL , ShipDate datetime NULL , DeliverDate datetime NULL , CustDesignNotes varchar(500) NULL , ProdNotes varchar(500) NULL , FinishNotes varchar(500) NULL , ShipNotes varchar(500) NULL , DeliverNotes varchar(500) NULL ) ON MyDatabase_data