SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[categories]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[categories]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](128) NOT NULL, [parent_id] [int] NULL, CONSTRAINT [PK_categories] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[orders]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[orders]( [key1] [int] NOT NULL, [key2] [int] NOT NULL, [name] [varchar](128) NOT NULL, CONSTRAINT [PK_orders] PRIMARY KEY CLUSTERED ( [key1] ASC, [key2] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[types]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[types]( [int_col] [int] NOT NULL, [int_col2] [int] NULL CONSTRAINT [DF_types_int_col2] DEFAULT (1), [char_col] [char](100) NOT NULL, [char_col2] [varchar](100) NULL CONSTRAINT [DF_types_char_col2] DEFAULT ('something'), [char_col3] [text] NULL, [float_col] [real] NOT NULL, [float_col2] [float] NULL CONSTRAINT [DF_types_float_col2] DEFAULT (1.23), [blob_col] [image] NULL, [numeric_col] [numeric](5, 2) NULL CONSTRAINT [DF_types_numeric_col] DEFAULT (33.22), [time] [datetime] NULL CONSTRAINT [DF_types_time] DEFAULT ('2002-01-01 00:00:00'), [bool_col] [bit] NOT NULL, [bool_col2] [bit] NOT NULL CONSTRAINT [DF_types_bool_col2] DEFAULT (1) ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[users]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[users]( [id] [int] IDENTITY(1,1) NOT NULL, [username] [varchar](128) NOT NULL, [password] [varchar](128) NOT NULL, [email] [varchar](128) NOT NULL, CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[post_category]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[post_category]( [category_id] [int] NOT NULL, [post_id] [int] NOT NULL, CONSTRAINT [PK_post_category] PRIMARY KEY CLUSTERED ( [category_id] ASC, [post_id] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[items]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[items]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](128) NULL, [col1] [int] NOT NULL, [col2] [int] NOT NULL, CONSTRAINT [PK_items] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[comments]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[comments]( [id] [int] IDENTITY(1,1) NOT NULL, [content] [text] NOT NULL, [post_id] [int] NOT NULL, [author_id] [int] NOT NULL, CONSTRAINT [PK_comments] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[posts]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[posts]( [id] [int] IDENTITY(1,1) NOT NULL, [title] [varchar](128) NOT NULL, [create_time] [datetime] NOT NULL, [author_id] [int] NOT NULL, [content] [text] NULL, CONSTRAINT [PK_posts] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[profiles]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[profiles]( [id] [int] IDENTITY(1,1) NOT NULL, [first_name] [varchar](128) NOT NULL, [last_name] [varchar](128) NOT NULL, [user_id] [int] NOT NULL, CONSTRAINT [PK_profiles] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] END GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_categories_categories]') AND type = 'F') ALTER TABLE [dbo].[categories] WITH CHECK ADD CONSTRAINT [FK_categories_categories] FOREIGN KEY([parent_id]) REFERENCES [dbo].[categories] ([id]) GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_category_categories]') AND type = 'F') ALTER TABLE [dbo].[post_category] WITH CHECK ADD CONSTRAINT [FK_post_category_categories] FOREIGN KEY([category_id]) REFERENCES [dbo].[categories] ([id]) ON DELETE CASCADE GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_category_posts]') AND type = 'F') ALTER TABLE [dbo].[post_category] WITH NOCHECK ADD CONSTRAINT [FK_post_category_posts] FOREIGN KEY([post_id]) REFERENCES [dbo].[posts] ([id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[post_category] CHECK CONSTRAINT [FK_post_category_posts] GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_items_orders]') AND type = 'F') ALTER TABLE [dbo].[items] WITH CHECK ADD CONSTRAINT [FK_items_orders] FOREIGN KEY([col1], [col2]) REFERENCES [dbo].[orders] ([key1], [key2]) ON DELETE CASCADE GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_comments_users]') AND type = 'F') ALTER TABLE [dbo].[comments] WITH NOCHECK ADD CONSTRAINT [FK_comments_users] FOREIGN KEY([author_id]) REFERENCES [dbo].[users] ([id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[comments] CHECK CONSTRAINT [FK_comments_users] GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_post_comment]') AND type = 'F') ALTER TABLE [dbo].[comments] WITH NOCHECK ADD CONSTRAINT [FK_post_comment] FOREIGN KEY([post_id]) REFERENCES [dbo].[posts] ([id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[comments] CHECK CONSTRAINT [FK_post_comment] GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_posts_users]') AND type = 'F') ALTER TABLE [dbo].[posts] WITH NOCHECK ADD CONSTRAINT [FK_posts_users] FOREIGN KEY([author_id]) REFERENCES [dbo].[users] ([id]) GO ALTER TABLE [dbo].[posts] CHECK CONSTRAINT [FK_posts_users] GO IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_profile_user]') AND type = 'F') ALTER TABLE [dbo].[profiles] WITH NOCHECK ADD CONSTRAINT [FK_profile_user] FOREIGN KEY([user_id]) REFERENCES [dbo].[users] ([id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[profiles] CHECK CONSTRAINT [FK_profile_user] INSERT INTO users (username, password, email) VALUES ('user1','pass1','email1') GO INSERT INTO users (username, password, email) VALUES ('user2','pass2','email2') GO INSERT INTO users (username, password, email) VALUES ('user3','pass3','email3') GO INSERT INTO profiles (first_name, last_name, user_id) VALUES ('first 1','last 1',1) GO INSERT INTO profiles (first_name, last_name, user_id) VALUES ('first 2','last 2',2) GO INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 1','2000-01-01',1,'content 1') GO INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 2','2000-01-02',2,'content 2') GO INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 3','2000-01-03',2,'content 3') GO INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 4','2000-01-04',2,'content 4') GO INSERT INTO posts (title, create_time, author_id, content) VALUES ('post 5','2000-01-05',3,'content 5') GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 1',1, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 2',1, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 3',1, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 4',2, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 5',2, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 6',3, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 7',3, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 8',3, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 9',3, 2) GO INSERT INTO comments (content, post_id, author_id) VALUES ('comment 10',5, 3) GO INSERT INTO categories (name, parent_id) VALUES ('cat 1',NULL) GO INSERT INTO categories (name, parent_id) VALUES ('cat 2',NULL) GO INSERT INTO categories (name, parent_id) VALUES ('cat 3',NULL) GO INSERT INTO categories (name, parent_id) VALUES ('cat 4',1) GO INSERT INTO categories (name, parent_id) VALUES ('cat 5',1) GO INSERT INTO categories (name, parent_id) VALUES ('cat 6',5) GO INSERT INTO categories (name, parent_id) VALUES ('cat 7',5) GO INSERT INTO post_category (category_id, post_id) VALUES (1,1) GO INSERT INTO post_category (category_id, post_id) VALUES (2,1) GO INSERT INTO post_category (category_id, post_id) VALUES (3,1) GO INSERT INTO post_category (category_id, post_id) VALUES (4,2) GO INSERT INTO post_category (category_id, post_id) VALUES (1,2) GO INSERT INTO post_category (category_id, post_id) VALUES (1,3) GO INSERT INTO orders (key1,key2,name) VALUES (1,2,'order 12') GO INSERT INTO orders (key1,key2,name) VALUES (1,3,'order 13') GO INSERT INTO orders (key1,key2,name) VALUES (2,1,'order 21') GO INSERT INTO orders (key1,key2,name) VALUES (2,2,'order 22') GO INSERT INTO items (name,col1,col2) VALUES ('item 1',1,2) GO INSERT INTO items (name,col1,col2) VALUES ('item 2',1,2) GO INSERT INTO items (name,col1,col2) VALUES ('item 3',1,3) GO INSERT INTO items (name,col1,col2) VALUES ('item 4',2,2) GO INSERT INTO items (name,col1,col2) VALUES ('item 5',2,2) GO