320 lines
8.4 KiB
Transact-SQL
320 lines
8.4 KiB
Transact-SQL
IF (OBJECT_ID('FK_posts_users', 'F') IS NOT NULL)
|
|
BEGIN
|
|
ALTER TABLE [posts] DROP CONSTRAINT [FK_posts_users]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('FK_posts_categories', 'F') IS NOT NULL)
|
|
BEGIN
|
|
ALTER TABLE [posts] DROP CONSTRAINT [FK_posts_categories]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('FK_post_tags_tags', 'F') IS NOT NULL)
|
|
BEGIN
|
|
ALTER TABLE [post_tags] DROP CONSTRAINT [FK_post_tags_tags]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('FK_post_tags_posts', 'F') IS NOT NULL)
|
|
BEGIN
|
|
ALTER TABLE [post_tags] DROP CONSTRAINT [FK_post_tags_posts]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('FK_comments_posts', 'F') IS NOT NULL)
|
|
BEGIN
|
|
ALTER TABLE [comments] DROP CONSTRAINT [FK_comments_posts]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('products', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [products]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('events', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [events]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('countries', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [countries]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('users', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [users]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('tags', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [tags]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('posts', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [posts]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('post_tags', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [post_tags]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('comments', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [comments]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('categories', 'U') IS NOT NULL)
|
|
BEGIN
|
|
DROP TABLE [categories]
|
|
END
|
|
GO
|
|
IF (OBJECT_ID('tag_usage', 'V') IS NOT NULL)
|
|
BEGIN
|
|
DROP VIEW [tag_usage]
|
|
END
|
|
GO
|
|
CREATE TABLE [categories](
|
|
[id] [int] IDENTITY,
|
|
[name] [nvarchar](max) NOT NULL,
|
|
[icon] [varbinary](max) NULL,
|
|
PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [comments](
|
|
[id] [int] IDENTITY,
|
|
[post_id] [int] NOT NULL,
|
|
[message] [nvarchar](max) NOT NULL,
|
|
PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [post_tags](
|
|
[id] [int] IDENTITY,
|
|
[post_id] [int] NOT NULL,
|
|
[tag_id] [int] NOT NULL,
|
|
PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [posts](
|
|
[id] [int] IDENTITY,
|
|
[user_id] [int] NOT NULL,
|
|
[category_id] [int] NOT NULL,
|
|
[content] [nvarchar](max) NOT NULL,
|
|
PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [tags](
|
|
[id] [int] IDENTITY,
|
|
[name] [nvarchar](max) NOT NULL,
|
|
PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [users](
|
|
[id] [int] IDENTITY,
|
|
[username] [nvarchar](max) NOT NULL,
|
|
[password] [nvarchar](max) NOT NULL,
|
|
[location] [geometry] NULL,
|
|
CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [countries](
|
|
[id] [int] IDENTITY,
|
|
[name] [nvarchar](max) NOT NULL,
|
|
[shape] [geometry] NOT NULL,
|
|
CONSTRAINT [PK_countries] PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [events](
|
|
[id] [int] IDENTITY,
|
|
[name] [nvarchar](max) NOT NULL,
|
|
[datetime] [datetime2](0) NOT NULL,
|
|
[visitors] [int] NOT NULL,
|
|
CONSTRAINT [PK_events] PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE VIEW [tag_usage]
|
|
AS
|
|
SELECT top 100 PERCENT name, COUNT(name) AS [count] FROM tags, post_tags WHERE tags.id = post_tags.tag_id GROUP BY name ORDER BY [count] DESC, name
|
|
|
|
GO
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE TABLE [products](
|
|
[id] [int] IDENTITY,
|
|
[name] [nvarchar](max) NOT NULL,
|
|
[price] [decimal](10,2) NOT NULL,
|
|
[properties] [xml] NOT NULL,
|
|
[created_at] [datetime2](0) NOT NULL,
|
|
CONSTRAINT [PK_products] PRIMARY KEY CLUSTERED
|
|
(
|
|
[id] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
|
|
|
GO
|
|
SET IDENTITY_INSERT [categories] ON
|
|
GO
|
|
INSERT [categories] ([id], [name], [icon]) VALUES (1, N'announcement', NULL)
|
|
GO
|
|
INSERT [categories] ([id], [name], [icon]) VALUES (2, N'article', NULL)
|
|
GO
|
|
SET IDENTITY_INSERT [categories] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [comments] ON
|
|
GO
|
|
INSERT [comments] ([id], [post_id], [message]) VALUES (1, 1, N'great')
|
|
GO
|
|
INSERT [comments] ([id], [post_id], [message]) VALUES (2, 1, N'fantastic')
|
|
GO
|
|
INSERT [comments] ([id], [post_id], [message]) VALUES (3, 2, N'thank you')
|
|
GO
|
|
INSERT [comments] ([id], [post_id], [message]) VALUES (4, 2, N'awesome')
|
|
GO
|
|
SET IDENTITY_INSERT [comments] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [post_tags] ON
|
|
GO
|
|
INSERT [post_tags] ([id], [post_id], [tag_id]) VALUES (1, 1, 1)
|
|
GO
|
|
INSERT [post_tags] ([id], [post_id], [tag_id]) VALUES (2, 1, 2)
|
|
GO
|
|
INSERT [post_tags] ([id], [post_id], [tag_id]) VALUES (3, 2, 1)
|
|
GO
|
|
INSERT [post_tags] ([id], [post_id], [tag_id]) VALUES (4, 2, 2)
|
|
GO
|
|
SET IDENTITY_INSERT [post_tags] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [posts] ON
|
|
GO
|
|
INSERT [posts] ([id], [user_id], [category_id], [content]) VALUES (1, 1, 1, N'blog started')
|
|
GO
|
|
INSERT [posts] ([id], [user_id], [category_id], [content]) VALUES (2, 1, 2, N'It works!')
|
|
GO
|
|
SET IDENTITY_INSERT [posts] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [tags] ON
|
|
GO
|
|
INSERT [tags] ([id], [name]) VALUES (1, N'funny')
|
|
GO
|
|
INSERT [tags] ([id], [name]) VALUES (2, N'important')
|
|
GO
|
|
SET IDENTITY_INSERT [tags] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [users] ON
|
|
GO
|
|
INSERT [users] ([id], [username], [password], [location]) VALUES (1, N'user1', N'pass1', NULL)
|
|
GO
|
|
INSERT [users] ([id], [username], [password], [location]) VALUES (2, N'user2', N'pass2', NULL)
|
|
GO
|
|
SET IDENTITY_INSERT [users] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [countries] ON
|
|
GO
|
|
INSERT [countries] ([id], [name], [shape]) VALUES (1, N'Left', N'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))')
|
|
GO
|
|
INSERT [countries] ([id], [name], [shape]) VALUES (2, N'Right', N'POLYGON ((70 10, 80 40, 60 40, 50 20, 70 10))')
|
|
GO
|
|
SET IDENTITY_INSERT [countries] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [events] ON
|
|
GO
|
|
INSERT [events] ([id], [name], [datetime], [visitors]) VALUES (1, N'Launch', N'2016-01-01 13:01:01', 0)
|
|
GO
|
|
SET IDENTITY_INSERT [events] OFF
|
|
GO
|
|
SET IDENTITY_INSERT [products] ON
|
|
GO
|
|
INSERT [products] ([id], [name], [price], [properties], [created_at]) VALUES (1, N'Calculator', N'23.01', N'<root type="object"><depth type="boolean">false</depth><model type="string">TRX-120</model><width type="number">100</width><height type="null" /></root>', '1970-01-01 01:01:01')
|
|
GO
|
|
SET IDENTITY_INSERT [products] OFF
|
|
GO
|
|
ALTER TABLE [comments] WITH CHECK ADD CONSTRAINT [FK_comments_posts] FOREIGN KEY([post_id])
|
|
REFERENCES [posts] ([id])
|
|
GO
|
|
ALTER TABLE [comments] CHECK CONSTRAINT [FK_comments_posts]
|
|
GO
|
|
ALTER TABLE [post_tags] WITH CHECK ADD CONSTRAINT [FK_post_tags_posts] FOREIGN KEY([post_id])
|
|
REFERENCES [posts] ([id])
|
|
GO
|
|
ALTER TABLE [post_tags] CHECK CONSTRAINT [FK_post_tags_posts]
|
|
GO
|
|
ALTER TABLE [post_tags] WITH CHECK ADD CONSTRAINT [FK_post_tags_tags] FOREIGN KEY([tag_id])
|
|
REFERENCES [tags] ([id])
|
|
GO
|
|
ALTER TABLE [post_tags] CHECK CONSTRAINT [FK_post_tags_tags]
|
|
GO
|
|
ALTER TABLE [posts] WITH CHECK ADD CONSTRAINT [FK_posts_categories] FOREIGN KEY([category_id])
|
|
REFERENCES [categories] ([id])
|
|
GO
|
|
ALTER TABLE [posts] CHECK CONSTRAINT [FK_posts_categories]
|
|
GO
|
|
ALTER TABLE [posts] WITH CHECK ADD CONSTRAINT [FK_posts_users] FOREIGN KEY([user_id])
|
|
REFERENCES [users] ([id])
|
|
GO
|
|
ALTER TABLE [posts] CHECK CONSTRAINT [FK_posts_users]
|
|
GO
|