Listing 3: Cleanup -- Drop existing foreign key constraints. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('dbo.FK_ProcessOrder2Sale') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1) ALTER TABLE dbo.ProcessOrder DROP CONSTRAINT FK_ProcessOrder2Sale GO IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('dbo.FK_ProcessOrder2ProcessStatus') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1) ALTER TABLE dbo.ProcessOrder DROP CONSTRAINT FK_ProcessOrder2ProcessStatus GO IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('dbo.FK_ProcessOrderStep2ProcessOrder') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1) ALTER TABLE dbo.ProcessOrderStep DROP CONSTRAINT FK_ProcessOrderStep2ProcessOrder GO IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('dbo.FK_ProcessOrderStep2ProcessStep') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1) ALTER TABLE dbo.ProcessOrderStep DROP CONSTRAINT FK_ProcessOrderStep2ProcessStep GO -- Drop existing tables. IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.BadDesign_ProcessOrder') AND type = 'U') DROP TABLE dbo.BadDesign_ProcessOrder GO IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.MoreBadDesign_ProcessOrder') AND type = 'U') DROP TABLE dbo.MoreBadDesign_ProcessOrder GO IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.ProcessStatus') AND type = 'U') DROP TABLE dbo.ProcessStatus GO IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.ProcessStep') AND type = 'U') DROP TABLE dbo.ProcessStep GO IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.ProcessOrder') AND type = 'U') DROP TABLE dbo.ProcessOrder GO IF EXISTS (SELECT 1 FROM sysobjects WHERE id = object_id('dbo.ProcessOrderStep') AND type = 'U') DROP TABLE dbo.ProcessOrderStep GO