终于写完了,可能后续的修改不会少,先备份一下吧。
更多信息:http://openlab.codeplex.com/SourceControl/list/changesets
blogs
/****** 对象: Schema [blogs] 脚本日期: 01/07/2010 18:18:37 ******/
CREATE SCHEMA [blogs] AUTHORIZATION [dbo]
GO
/****** 对象: Table [blogs].[Blogs] 脚本日期: 01/07/2010 18:18:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Blogs](
[BlogId] [int] IDENTITY(1,1) NOT NULL,
[CreatorUserId] [int] NOT NULL,
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
[DisplayName] [nvarchar](256) NOT NULL,
[LoweredDisplayName] [nvarchar](256) NOT NULL,
[Description] [nvarchar](512) NOT NULL,
[Theme] [nvarchar](256) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_CreatedDateUtc] DEFAULT (getutcdate()),
[LastPostDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_LastPostDateUtc] DEFAULT (((1900)-(1))-(1)),
[LastCommentDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_LastCommentDateUtc] DEFAULT (((1900)-(1))-(1)),
[TotalPosts] [int] NOT NULL CONSTRAINT [DF_Blogs_TotalPosts] DEFAULT ((0)),
[TotalComments] [int] NOT NULL CONSTRAINT [DF_Blogs_TotalComments] DEFAULT ((0)),
[SortOrder] [int] NOT NULL CONSTRAINT [DF_Blogs_SortOrder] DEFAULT ((0)),
[EnableComments] [bit] NOT NULL CONSTRAINT [DF_Blogs_EnableComments] DEFAULT ((1)),
[IsActive] [bit] NOT NULL CONSTRAINT [DF_Blogs_IsActive] DEFAULT ((1)),
[Property] [xml] NOT NULL,
CONSTRAINT [PK_Blog] PRIMARY KEY CLUSTERED
(
[BlogId] 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
CREATE UNIQUE NONCLUSTERED INDEX [IX_Blogs_Name] ON [blogs].[Blogs]
(
[LoweredDisplayName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Blogs_Slug] ON [blogs].[Blogs]
(
[LoweredSlug] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,用来唯一标识一个博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建者的用户Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'CreatorUserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客站点的英文标识,即友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的博客站点的英文标识' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客显示名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'DisplayName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的博客显示名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LoweredDisplayName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客描述,即副标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客使用的主题名' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Theme'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最近发帖时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LastPostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最近一次回复的时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LastCommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子总数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'TotalPosts'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论总数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'TotalComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排序编号' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否允许评论; 1:允许 0:不允许' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'EnableComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否激活
true, 已激活,可正常访问
false, 未激活,不能正常访问' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'IsActive'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列化XML存储扩展属性,详见Openlab.Modules.Forums.ForumPostProperty类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Property'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客表
说明:
记录所有博客站点以及其相关属性配置。提供博客Id,作为其他博客相关表的外键。' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs'
GO
/****** 对象: Table [blogs].[PostBody] 脚本日期: 01/07/2010 18:18:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostBody](
[PostId] [int] NOT NULL,
[Body] [nvarchar](max) NOT NULL,
[FormattedBody] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_PostBody] PRIMARY KEY CLUSTERED
(
[PostId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子原始内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'Body'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'格式化后的帖子内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'FormattedBody'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 帖子内容表
说明:
记录帖子的实际内容和格式化内容,通过[PK, FK]PostId进行查询' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody'
GO
/****** 对象: Table [blogs].[PostComments] 脚本日期: 01/07/2010 18:19:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostComments](
[PostId] [int] NOT NULL,
[CommentId] [int] NOT NULL,
[BlogId] [int] NOT NULL,
[CommentDateUtc] [datetime] NOT NULL,
CONSTRAINT [PK_PostComments] PRIMARY KEY NONCLUSTERED
(
[CommentId] 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
CREATE CLUSTERED INDEX [IX_PostComments_CommentDateUtc] ON [blogs].[PostComments]
(
[CommentDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostComments_BlogId] ON [blogs].[PostComments]
(
[BlogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostComments_PostId] ON [blogs].[PostComments]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子编号,标识评论所属的帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论编号,唯一标识一个评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'CommentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客编号,标识评论所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'CommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客/帖子下评论索引表
说明:
博客/帖子下所有评论索引表,按照评论时间排序。
查询某博客/帖子下所有评论时,使用当前表;
“假”删除评论时,从该表中删除;
' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments'
GO
/****** 对象: Table [blogs].[Comments] 脚本日期: 01/07/2010 18:18:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Comments](
[CommentId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[ParentId] [int] NOT NULL CONSTRAINT [DF_Comments_ReplyId] DEFAULT ((0)),
[Subject] [nvarchar](256) NOT NULL,
[PostAuthor] [nvarchar](256) NOT NULL CONSTRAINT [DF_Comments_PostAuthor] DEFAULT (''),
[IPAddress] [bigint] NOT NULL CONSTRAINT [DF_Comments_IPAddress] DEFAULT ((0)),
[EmailAddress] [nvarchar](256) NOT NULL,
[WebUrl] [nvarchar](256) NOT NULL,
[TotalViews] [int] NOT NULL,
[CommentDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Comments_CommentDateUtc] DEFAULT (getutcdate()),
[FormattedBody] [nvarchar](max) NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Comments_State] DEFAULT ((0)),
CONSTRAINT [PK_Comment] PRIMARY KEY CLUSTERED
(
[CommentId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论Id,唯一标识一个评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'CommentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论所属的帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者的UserId' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'本条评论所回复的评论Id,默认为0' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'ParentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'Subject'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者昵称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'PostAuthor'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者IP' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'IPAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论人Email' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'EmailAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论人网站Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'WebUrl'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'TotalViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论添加时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'CommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'格式化后的评论内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'FormattedBody'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客评论列表
说明:
记录所有博客的评论信息
向其它评论信息相关表提供[FK]CommentId
通过[FK]BlogId指定所属的博客
通过[FK]PostId指定所属的帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments'
GO
/****** 对象: Table [blogs].[BlogPosts] 脚本日期: 01/07/2010 18:18:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[BlogPosts](
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
CONSTRAINT [PK_BlogPosts] PRIMARY KEY NONCLUSTERED
(
[PostId] 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
CREATE CLUSTERED INDEX [IX_BlogPosts_PostDateUtc] ON [blogs].[BlogPosts]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_BlogPosts_BlogId] ON [blogs].[BlogPosts]
(
[BlogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,标识帖子所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id, 唯一标识一个帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖用户的Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客/用户下帖子论索引表
说明:
博客/用户下所有帖子索引表,按照评论时间排序。
查询某博客/用户下所有帖子时,使用当前表;
“假”删除帖子时,从该表中删除;
' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts'
GO
/****** 对象: Table [blogs].[PostCategoryRelationship] 脚本日期: 01/07/2010 18:19:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostCategoryRelationship](
[PostCategoryId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_PostCategoryRelationship_State] DEFAULT ((0)),
CONSTRAINT [PK_PostsInCategory] PRIMARY KEY NONCLUSTERED
(
[PostCategoryId] ASC,
[PostId] 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
CREATE CLUSTERED INDEX [IX_PostCategoryRelationship_PostDateUtc] ON [blogs].[PostCategoryRelationship]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostCategoryRelationship_PostId] ON [blogs].[PostCategoryRelationship]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子分类Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostCategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子的状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: Post, Category关系表
说明:
通过[FK]PostId和[FK]CategoryId链接帖子和帖子所属的分类;
分类与帖子为多对多的关系;
查询分类下的帖子时使用:通过CategoryId获取PostIds
查询帖子所属分类时使用:通过PostId获取CategoryIds' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship'
GO
/****** 对象: Table [blogs].[PostTagRelationship] 脚本日期: 01/07/2010 18:19:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostTagRelationship](
[PostId] [int] NOT NULL,
[PostTagId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_PostTagRelationship_State] DEFAULT ((0)),
CONSTRAINT [PK_PostTagRelationship] PRIMARY KEY NONCLUSTERED
(
[PostId] ASC,
[PostTagId] 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
CREATE CLUSTERED INDEX [IX_PostTagRelationship_PostDateUtc] ON [blogs].[PostTagRelationship]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostTagRelationship_PostId] ON [blogs].[PostTagRelationship]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'标记Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostTagId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子的状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: Post,PostTag关系表
说明:
通过[FK]PostId和[FK]PostTagId链接帖子和帖子所属的PostTag;
PostTag与帖子为多对多的关系;
查询PostTag下的帖子时使用:通过PostTagId获取PostIds
查询帖子所属PostTag时使用:通过PostId获取PostTagIds' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship'
GO
/****** 对象: Table [blogs].[PostSlugs] 脚本日期: 01/07/2010 18:19:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostSlugs](
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
CONSTRAINT [PK_PostSlugs] PRIMARY KEY CLUSTERED
(
[LoweredSlug] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的帖子Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
/****** 对象: Table [blogs].[Links] 脚本日期: 01/07/2010 18:18:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Links](
[LinkId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[LinkCategoryId] [int] NOT NULL,
[Title] [nvarchar](256) NOT NULL,
[Description] [nvarchar](512) NOT NULL CONSTRAINT [DF_Links_Description] DEFAULT (''),
[Url] [nvarchar](256) NOT NULL,
[RSS] [nvarchar](256) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Links_CreatedDateUtc] DEFAULT (getutcdate()),
[NewWindow] [bit] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Links_State] DEFAULT ((0)),
[SortOrder] [int] NOT NULL,
CONSTRAINT [PK_Link] PRIMARY KEY CLUSTERED
(
[LinkId] 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
CREATE NONCLUSTERED INDEX [IX_Links_CategoryId] ON [blogs].[Links]
(
[BlogId] ASC,
[LinkCategoryId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接Id,唯一标识一个链接' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'LinkId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接所属的分类Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'LinkCategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Title'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接描述' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接地址' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Url'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接目标的RSS地址' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'RSS'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否在新窗口中打开' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'NewWindow'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 友情链接表
说明:
记录博客的友情链接信息
通过[FK]BlogId指定所属的博客
通过[FK]CategoryId指定所属的分类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links'
GO
/****** 对象: Table [blogs].[Posts] 脚本日期: 01/07/2010 18:19:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Posts](
[PostId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[PostAuthor] [nvarchar](256) NOT NULL CONSTRAINT [DF_Posts_PostAuthor] DEFAULT (''),
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL CONSTRAINT [DF_Posts_LoweredSlug] DEFAULT (''),
[Subject] [nvarchar](256) NOT NULL CONSTRAINT [DF_Posts_Subject] DEFAULT (''),
[Summary] [nvarchar](512) NOT NULL CONSTRAINT [DF_Posts_Summary] DEFAULT (''),
[PostDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Posts_PostDate] DEFAULT (getutcdate()),
[ApprovedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Posts_ApprovedDate] DEFAULT (((1900)-(1))-(1)),
[TotalViews] [int] NOT NULL CONSTRAINT [DF_Posts_TotalViews] DEFAULT ((0)),
[TotalComments] [int] NOT NULL CONSTRAINT [DF_Posts_TotalComments] DEFAULT ((0)),
[TotalAggViews] [int] NOT NULL CONSTRAINT [DF_Posts_TotalAggViews] DEFAULT ((0)),
[RatingAverage] [float] NOT NULL CONSTRAINT [DF_Posts_RatingAverage] DEFAULT ((0)),
[IPAddress] [bigint] NOT NULL CONSTRAINT [DF_Posts_IPAddress] DEFAULT ((0)),
[EnableComments] [bit] NOT NULL CONSTRAINT [DF_Posts_EnableComments] DEFAULT ((1)),
[EnableRatings] [bit] NOT NULL CONSTRAINT [DF_Posts_EnableRatings] DEFAULT ((1)),
[IsBodyHtml] [bit] NOT NULL CONSTRAINT [DF_Posts_IsBodyHtml] DEFAULT ((1)),
[State] [tinyint] NOT NULL CONSTRAINT [DF_Posts_State] DEFAULT ((0)),
[Property] [xml] NOT NULL,
CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED
(
[PostId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id,用来唯一标识一个帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人UserId' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人显示名' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostAuthor'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的Slug' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Subject'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子摘要' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Summary'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发布时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'通过审核时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'ApprovedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalAggViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评分平均值' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'RatingAverage'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人IP' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'IPAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否可以评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'EnableComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否可以评分 ' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'EnableRatings'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子内容是否为Html' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'IsBodyHtml'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'对于帖子的其他信息,序列化为XML保存,详见Openlab.Modules.Forums.ForumThreadProperty类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Property'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 帖子信息表
说明:
记录帖子信息, 包括帖子各种参数、设置等短属性;
通过[FK]BlogId指定所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts'
GO
/****** 对象: Table [blogs].[BlogOwners] 脚本日期: 01/07/2010 18:18:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[BlogOwners](
[BlogId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[CreateDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Owner_CreateDateUtc] DEFAULT (getutcdate()),
CONSTRAINT [PK_Owner] PRIMARY KEY CLUSTERED
(
[BlogId] ASC,
[UserId] 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
CREATE NONCLUSTERED INDEX [IX_Owners_UserId] ON [blogs].[BlogOwners]
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,外键,见Blog表' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用户Id,外键,见Membership表' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客添加时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'CreateDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客用户表
说明:
通过[FK]BlogId和[FK]UserId记录所有博客站点及其所有者的映射关系;记录博客开通时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners'
GO
/****** 对象: Table [blogs].[Categories] 脚本日期: 01/07/2010 18:18:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Categories](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[ParentId] [int] NOT NULL CONSTRAINT [DF_Categories_ParentId] DEFAULT ((0)),
[CategoryType] [tinyint] NOT NULL,
[CategoryName] [nvarchar](256) NOT NULL,
[LoweredCategoryName] [nvarchar](256) NOT NULL,
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
[Description] [nvarchar](512) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL,
[TotalEntities] [int] NOT NULL,
[SortOrder] [int] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Categories_State1] DEFAULT ((0)),
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(
[CategoryId] 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
CREATE UNIQUE NONCLUSTERED INDEX [IX_Categories_Name] ON [blogs].[Categories]
(
[BlogId] ASC,
[CategoryType] ASC,
[LoweredCategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Categories_Slug] ON [blogs].[Categories]
(
[BlogId] ASC,
[CategoryType] ASC,
[LoweredSlug] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类Id,用来唯一标识一个分类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,用来标识分类所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'父分类的Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'ParentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类类别,对应//todo枚举
1. 帖子类别
2. 帖子Tag
3. 链接类别' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryType'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的分类名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'LoweredCategoryName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的分类友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类描述' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类下的实体数量' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'TotalEntities'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排列顺序号,用于显示' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 实体分类表
说明:
存储所有实体的分类,通过CategoriesType区分为:
1. 帖子类别
2. 帖子Tag
3. 链接类别
通过[FK]BlogId指定所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories'
GO
/****** 对象: ForeignKey [FK_Owner_Blog] 脚本日期: 01/07/2010 18:18:38 ******/
ALTER TABLE [blogs].[BlogOwners] WITH CHECK ADD CONSTRAINT [FK_Owner_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[BlogOwners] CHECK CONSTRAINT [FK_Owner_Blog]
GO
/****** 对象: ForeignKey [FK_BlogPosts_Blogs] 脚本日期: 01/07/2010 18:18:40 ******/
ALTER TABLE [blogs].[BlogPosts] WITH CHECK ADD CONSTRAINT [FK_BlogPosts_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[BlogPosts] CHECK CONSTRAINT [FK_BlogPosts_Blogs]
GO
/****** 对象: ForeignKey [FK_BlogPosts_Posts] 脚本日期: 01/07/2010 18:18:40 ******/
ALTER TABLE [blogs].[BlogPosts] WITH CHECK ADD CONSTRAINT [FK_BlogPosts_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[BlogPosts] CHECK CONSTRAINT [FK_BlogPosts_Posts]
GO
/****** 对象: ForeignKey [FK_Categories_Blogs] 脚本日期: 01/07/2010 18:18:50 ******/
ALTER TABLE [blogs].[Categories] WITH CHECK ADD CONSTRAINT [FK_Categories_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Categories] CHECK CONSTRAINT [FK_Categories_Blogs]
GO
/****** 对象: ForeignKey [FK_Comment_Blog] 脚本日期: 01/07/2010 18:18:54 ******/
ALTER TABLE [blogs].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comment_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Comments] CHECK CONSTRAINT [FK_Comment_Blog]
GO
/****** 对象: ForeignKey [FK_Comment_Post] 脚本日期: 01/07/2010 18:18:54 ******/
ALTER TABLE [blogs].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comment_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[Comments] CHECK CONSTRAINT [FK_Comment_Post]
GO
/****** 对象: ForeignKey [FK_Links_Blogs] 脚本日期: 01/07/2010 18:18:58 ******/
ALTER TABLE [blogs].[Links] WITH CHECK ADD CONSTRAINT [FK_Links_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Links] CHECK CONSTRAINT [FK_Links_Blogs]
GO
/****** 对象: ForeignKey [FK_Links_Categories] 脚本日期: 01/07/2010 18:18:58 ******/
ALTER TABLE [blogs].[Links] WITH CHECK ADD CONSTRAINT [FK_Links_Categories] FOREIGN KEY([LinkCategoryId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[Links] CHECK CONSTRAINT [FK_Links_Categories]
GO
/****** 对象: ForeignKey [FK_PostBody_Posts] 脚本日期: 01/07/2010 18:18:59 ******/
ALTER TABLE [blogs].[PostBody] WITH CHECK ADD CONSTRAINT [FK_PostBody_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostBody] CHECK CONSTRAINT [FK_PostBody_Posts]
GO
/****** 对象: ForeignKey [FK_PostCategoryRelationship_Categories] 脚本日期: 01/07/2010 18:19:01 ******/
ALTER TABLE [blogs].[PostCategoryRelationship] WITH CHECK ADD CONSTRAINT [FK_PostCategoryRelationship_Categories] FOREIGN KEY([PostCategoryId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[PostCategoryRelationship] CHECK CONSTRAINT [FK_PostCategoryRelationship_Categories]
GO
/****** 对象: ForeignKey [FK_PostsInCategory_Post] 脚本日期: 01/07/2010 18:19:01 ******/
ALTER TABLE [blogs].[PostCategoryRelationship] WITH CHECK ADD CONSTRAINT [FK_PostsInCategory_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostCategoryRelationship] CHECK CONSTRAINT [FK_PostsInCategory_Post]
GO
/****** 对象: ForeignKey [FK_PostComments_Blogs] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Blogs]
GO
/****** 对象: ForeignKey [FK_PostComments_Comments] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Comments] FOREIGN KEY([CommentId])
REFERENCES [blogs].[Comments] ([CommentId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Comments]
GO
/****** 对象: ForeignKey [FK_PostComments_Posts] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Posts]
GO
/****** 对象: ForeignKey [FK_PostSlugs_Blogs] 脚本日期: 01/07/2010 18:19:04 ******/
ALTER TABLE [blogs].[PostSlugs] WITH CHECK ADD CONSTRAINT [FK_PostSlugs_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[PostSlugs] CHECK CONSTRAINT [FK_PostSlugs_Blogs]
GO
/****** 对象: ForeignKey [FK_PostSlugs_Posts] 脚本日期: 01/07/2010 18:19:04 ******/
ALTER TABLE [blogs].[PostSlugs] WITH CHECK ADD CONSTRAINT [FK_PostSlugs_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostSlugs] CHECK CONSTRAINT [FK_PostSlugs_Posts]
GO
/****** 对象: ForeignKey [FK_PostTagRelationship_Categories] 脚本日期: 01/07/2010 18:19:06 ******/
ALTER TABLE [blogs].[PostTagRelationship] WITH CHECK ADD CONSTRAINT [FK_PostTagRelationship_Categories] FOREIGN KEY([PostTagId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[PostTagRelationship] CHECK CONSTRAINT [FK_PostTagRelationship_Categories]
GO
/****** 对象: ForeignKey [FK_PostTagRelationship_Post] 脚本日期: 01/07/2010 18:19:06 ******/
ALTER TABLE [blogs].[PostTagRelationship] WITH CHECK ADD CONSTRAINT [FK_PostTagRelationship_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostTagRelationship] CHECK CONSTRAINT [FK_PostTagRelationship_Post]
GO
/****** 对象: ForeignKey [FK_Post_Blog] 脚本日期: 01/07/2010 18:19:13 ******/
ALTER TABLE [blogs].[Posts] WITH CHECK ADD CONSTRAINT [FK_Post_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Posts] CHECK CONSTRAINT [FK_Post_Blog]
GO
/****** 对象: StoredProcedure [blogs].[up_GetAllBlogIds] 脚本日期: 01/07/2010 18:20:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-23>
-- Description: <Get ALL BlogIds>
-- =============================================
CREATE PROCEDURE [blogs].[up_GetAllBlogIds]
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[BlogId]
FROM
[Blog] B (NOLOCK)
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_GetCategoryIdsBySlug] 脚本日期: 01/07/2010 18:20:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-25>
-- Description: <Get CategoryIds by its slug and location>
-- =============================================
CREATE PROCEDURE [blogs].[up_GetCategoryIdsBySlug]
(
@BlogId INT,
@CategoryType TINYINT,
@Slug NVARCHAR(128)
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
WHERE
[BlogId] = @BlogId
AND [CategoryType] = @CategoryType
AND [LoweredSlug] = LOWER(@Slug)
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_GetCategoryIds] 脚本日期: 01/07/2010 18:20:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-25>
-- Description: <Get CategoryIdS by Blog and Type>
-- Memo: Maybe we should store the relationship in a individual table.
-- =============================================
CREATE PROCEDURE [blogs].[up_GetCategoryIds]
(
@BlogId INT,
@CategoryType TINYINT
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
WHERE
[BlogId] = @BlogId AND [CategoryType] = @CategoryType
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_SavePostViews] 脚本日期: 01/07/2010 18:20:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2010-01-06>
-- Description: <Batch save post views>
-- =============================================
CREATE PROCEDURE [blogs].[up_SavePostViews]
(
@PostViews XML
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- reutrn if no data.
IF @PostViews IS NULL
RETURN
-- update.
UPDATE
[Posts] WITH (ROWLOCK)
SET
[Posts].[TotalViews] = [Posts].[TotalViews] + [TVT].[TotalViews]
FROM
[Posts] JOIN
(
SELECT
TV.Vs.value('@id','int') AS PostId,
TV.Vs.value('@v','int') AS TotalViews
FROM
@PostViews.nodes('/vs/v') TV(Vs)
) TVT
ON
[Posts].[PostId] = [TVT].[PostId]
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_CreateGetTagIds] 脚本日期: 01/07/2010 18:20:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2010-01-06>
-- Description: <Make sure all the tag EXISTS in DB, and then get their ids.>
-- =============================================
CREATE PROCEDURE [blogs].[up_CreateGetTagIds]
(
@BlogId INT,
@TagNames XML
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
BEGIN TRANSACTION;
-- Create temp table.
CREATE TABLE #TagsTable
(
TagName NVARCHAR(64)
)
-- Insert into temp table.
INSERT INTO #TagsTable
( TagName )
SELECT
TG.Tags.value('@t','nvarchar(64)') AS TagName
FROM
@TagNames.nodes('/ts/t') TG(Tags)
-- Create new tags.
BEGIN
INSERT INTO
[Categories]
(
[BlogId]
,[ParentId]
,[CategoryType]
,[CategoryName]
,[LoweredCategoryName]
,[Slug]
,[LoweredSlug]
,[Description]
,[CreatedDateUtc]
,[TotalEntities]
,[SortOrder]
,[State]
)
SELECT
@BlogId,
0, -- ParentId, 0 as default.
2, -- CategoryType, 2 as Post Tag.
TT.TagName,
LOWER(TT.TagName),
TT.TagName, -- Slug, use CategoryName as default.
LOWER(TT.TagName), -- LoweredSlug, use LoweredCategoryName as default.
'', -- Description, Empty as default.
GETUTCDATE(),
0, -- TotalEntities, 0 as default.
COALESCE(MAX(C.SortOrder) + 1, 1), -- SortOrder.
1 -- State, 1 as Normal.
FROM
#TagsTable TT, [Categories] C ( NOLOCK )
WHERE
LOWER(TT.TagName) NOT IN
(
SELECT
[LoweredCategoryName]
FROM
[Categories] ( UPDLOCK, HOLDLOCK )
WHERE
[BlogId] = @BlogId
AND [CategoryType] = 2 -- Post Tag.
)
AND C.[BlogId] = @BlogId
AND C.[CategoryType] = 2 -- Post Tag.
END
-- Batch Get Tag Ids.
BEGIN
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
JOIN
#TagsTable TT
ON
LOWER(TT.TagName) = C.[LoweredCategoryName]
WHERE
C.[BlogId] = @BlogId
AND C.[CategoryType] = 2 -- Post Tag.
AND C.[State] = 1 -- 1 as Normal status.
END
-- clear and drop temp table
TRUNCATE TABLE
#TagsTable
DROP TABLE
#TagsTable
IF( @@ERROR <> 0 )
BEGIN
ROLLBACK TRANSACTION
RETURN -1
END
ELSE
BEGIN
COMMIT
CREATE SCHEMA [blogs] AUTHORIZATION [dbo]
GO
/****** 对象: Table [blogs].[Blogs] 脚本日期: 01/07/2010 18:18:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Blogs](
[BlogId] [int] IDENTITY(1,1) NOT NULL,
[CreatorUserId] [int] NOT NULL,
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
[DisplayName] [nvarchar](256) NOT NULL,
[LoweredDisplayName] [nvarchar](256) NOT NULL,
[Description] [nvarchar](512) NOT NULL,
[Theme] [nvarchar](256) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_CreatedDateUtc] DEFAULT (getutcdate()),
[LastPostDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_LastPostDateUtc] DEFAULT (((1900)-(1))-(1)),
[LastCommentDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Blogs_LastCommentDateUtc] DEFAULT (((1900)-(1))-(1)),
[TotalPosts] [int] NOT NULL CONSTRAINT [DF_Blogs_TotalPosts] DEFAULT ((0)),
[TotalComments] [int] NOT NULL CONSTRAINT [DF_Blogs_TotalComments] DEFAULT ((0)),
[SortOrder] [int] NOT NULL CONSTRAINT [DF_Blogs_SortOrder] DEFAULT ((0)),
[EnableComments] [bit] NOT NULL CONSTRAINT [DF_Blogs_EnableComments] DEFAULT ((1)),
[IsActive] [bit] NOT NULL CONSTRAINT [DF_Blogs_IsActive] DEFAULT ((1)),
[Property] [xml] NOT NULL,
CONSTRAINT [PK_Blog] PRIMARY KEY CLUSTERED
(
[BlogId] 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
CREATE UNIQUE NONCLUSTERED INDEX [IX_Blogs_Name] ON [blogs].[Blogs]
(
[LoweredDisplayName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Blogs_Slug] ON [blogs].[Blogs]
(
[LoweredSlug] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,用来唯一标识一个博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建者的用户Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'CreatorUserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客站点的英文标识,即友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的博客站点的英文标识' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客显示名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'DisplayName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的博客显示名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LoweredDisplayName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客描述,即副标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客使用的主题名' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Theme'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最近发帖时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LastPostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最近一次回复的时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'LastCommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子总数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'TotalPosts'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论总数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'TotalComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排序编号' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否允许评论; 1:允许 0:不允许' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'EnableComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否激活
true, 已激活,可正常访问
false, 未激活,不能正常访问' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'IsActive'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列化XML存储扩展属性,详见Openlab.Modules.Forums.ForumPostProperty类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs', @level2type=N'COLUMN',@level2name=N'Property'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客表
说明:
记录所有博客站点以及其相关属性配置。提供博客Id,作为其他博客相关表的外键。' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Blogs'
GO
/****** 对象: Table [blogs].[PostBody] 脚本日期: 01/07/2010 18:18:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostBody](
[PostId] [int] NOT NULL,
[Body] [nvarchar](max) NOT NULL,
[FormattedBody] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_PostBody] PRIMARY KEY CLUSTERED
(
[PostId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子原始内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'Body'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'格式化后的帖子内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody', @level2type=N'COLUMN',@level2name=N'FormattedBody'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 帖子内容表
说明:
记录帖子的实际内容和格式化内容,通过[PK, FK]PostId进行查询' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostBody'
GO
/****** 对象: Table [blogs].[PostComments] 脚本日期: 01/07/2010 18:19:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostComments](
[PostId] [int] NOT NULL,
[CommentId] [int] NOT NULL,
[BlogId] [int] NOT NULL,
[CommentDateUtc] [datetime] NOT NULL,
CONSTRAINT [PK_PostComments] PRIMARY KEY NONCLUSTERED
(
[CommentId] 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
CREATE CLUSTERED INDEX [IX_PostComments_CommentDateUtc] ON [blogs].[PostComments]
(
[CommentDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostComments_BlogId] ON [blogs].[PostComments]
(
[BlogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostComments_PostId] ON [blogs].[PostComments]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子编号,标识评论所属的帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论编号,唯一标识一个评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'CommentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客编号,标识评论所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments', @level2type=N'COLUMN',@level2name=N'CommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客/帖子下评论索引表
说明:
博客/帖子下所有评论索引表,按照评论时间排序。
查询某博客/帖子下所有评论时,使用当前表;
“假”删除评论时,从该表中删除;
' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostComments'
GO
/****** 对象: Table [blogs].[Comments] 脚本日期: 01/07/2010 18:18:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Comments](
[CommentId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[ParentId] [int] NOT NULL CONSTRAINT [DF_Comments_ReplyId] DEFAULT ((0)),
[Subject] [nvarchar](256) NOT NULL,
[PostAuthor] [nvarchar](256) NOT NULL CONSTRAINT [DF_Comments_PostAuthor] DEFAULT (''),
[IPAddress] [bigint] NOT NULL CONSTRAINT [DF_Comments_IPAddress] DEFAULT ((0)),
[EmailAddress] [nvarchar](256) NOT NULL,
[WebUrl] [nvarchar](256) NOT NULL,
[TotalViews] [int] NOT NULL,
[CommentDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Comments_CommentDateUtc] DEFAULT (getutcdate()),
[FormattedBody] [nvarchar](max) NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Comments_State] DEFAULT ((0)),
CONSTRAINT [PK_Comment] PRIMARY KEY CLUSTERED
(
[CommentId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论Id,唯一标识一个评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'CommentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论所属的帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者的UserId' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'本条评论所回复的评论Id,默认为0' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'ParentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'Subject'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者昵称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'PostAuthor'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论者IP' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'IPAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论人Email' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'EmailAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论人网站Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'WebUrl'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'TotalViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论添加时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'CommentDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'格式化后的评论内容' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'FormattedBody'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客评论列表
说明:
记录所有博客的评论信息
向其它评论信息相关表提供[FK]CommentId
通过[FK]BlogId指定所属的博客
通过[FK]PostId指定所属的帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Comments'
GO
/****** 对象: Table [blogs].[BlogPosts] 脚本日期: 01/07/2010 18:18:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[BlogPosts](
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
CONSTRAINT [PK_BlogPosts] PRIMARY KEY NONCLUSTERED
(
[PostId] 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
CREATE CLUSTERED INDEX [IX_BlogPosts_PostDateUtc] ON [blogs].[BlogPosts]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_BlogPosts_BlogId] ON [blogs].[BlogPosts]
(
[BlogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,标识帖子所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id, 唯一标识一个帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖用户的Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客/用户下帖子论索引表
说明:
博客/用户下所有帖子索引表,按照评论时间排序。
查询某博客/用户下所有帖子时,使用当前表;
“假”删除帖子时,从该表中删除;
' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogPosts'
GO
/****** 对象: Table [blogs].[PostCategoryRelationship] 脚本日期: 01/07/2010 18:19:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostCategoryRelationship](
[PostCategoryId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_PostCategoryRelationship_State] DEFAULT ((0)),
CONSTRAINT [PK_PostsInCategory] PRIMARY KEY NONCLUSTERED
(
[PostCategoryId] ASC,
[PostId] 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
CREATE CLUSTERED INDEX [IX_PostCategoryRelationship_PostDateUtc] ON [blogs].[PostCategoryRelationship]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostCategoryRelationship_PostId] ON [blogs].[PostCategoryRelationship]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子分类Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostCategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子的状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: Post, Category关系表
说明:
通过[FK]PostId和[FK]CategoryId链接帖子和帖子所属的分类;
分类与帖子为多对多的关系;
查询分类下的帖子时使用:通过CategoryId获取PostIds
查询帖子所属分类时使用:通过PostId获取CategoryIds' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostCategoryRelationship'
GO
/****** 对象: Table [blogs].[PostTagRelationship] 脚本日期: 01/07/2010 18:19:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostTagRelationship](
[PostId] [int] NOT NULL,
[PostTagId] [int] NOT NULL,
[PostDateUtc] [datetime] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_PostTagRelationship_State] DEFAULT ((0)),
CONSTRAINT [PK_PostTagRelationship] PRIMARY KEY NONCLUSTERED
(
[PostId] ASC,
[PostTagId] 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
CREATE CLUSTERED INDEX [IX_PostTagRelationship_PostDateUtc] ON [blogs].[PostTagRelationship]
(
[PostDateUtc] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PostTagRelationship_PostId] ON [blogs].[PostTagRelationship]
(
[PostId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'标记Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostTagId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子发布时间,在此表中用于排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子的状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: Post,PostTag关系表
说明:
通过[FK]PostId和[FK]PostTagId链接帖子和帖子所属的PostTag;
PostTag与帖子为多对多的关系;
查询PostTag下的帖子时使用:通过PostTagId获取PostIds
查询帖子所属PostTag时使用:通过PostId获取PostTagIds' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostTagRelationship'
GO
/****** 对象: Table [blogs].[PostSlugs] 脚本日期: 01/07/2010 18:19:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[PostSlugs](
[BlogId] [int] NOT NULL,
[PostId] [int] NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
CONSTRAINT [PK_PostSlugs] PRIMARY KEY CLUSTERED
(
[LoweredSlug] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的帖子Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'PostSlugs', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
/****** 对象: Table [blogs].[Links] 脚本日期: 01/07/2010 18:18:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Links](
[LinkId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[LinkCategoryId] [int] NOT NULL,
[Title] [nvarchar](256) NOT NULL,
[Description] [nvarchar](512) NOT NULL CONSTRAINT [DF_Links_Description] DEFAULT (''),
[Url] [nvarchar](256) NOT NULL,
[RSS] [nvarchar](256) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Links_CreatedDateUtc] DEFAULT (getutcdate()),
[NewWindow] [bit] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Links_State] DEFAULT ((0)),
[SortOrder] [int] NOT NULL,
CONSTRAINT [PK_Link] PRIMARY KEY CLUSTERED
(
[LinkId] 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
CREATE NONCLUSTERED INDEX [IX_Links_CategoryId] ON [blogs].[Links]
(
[BlogId] ASC,
[LinkCategoryId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接Id,唯一标识一个链接' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'LinkId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接所属的分类Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'LinkCategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Title'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接描述' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接地址' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'Url'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接目标的RSS地址' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'RSS'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'链接创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否在新窗口中打开' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'NewWindow'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排序' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 友情链接表
说明:
记录博客的友情链接信息
通过[FK]BlogId指定所属的博客
通过[FK]CategoryId指定所属的分类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Links'
GO
/****** 对象: Table [blogs].[Posts] 脚本日期: 01/07/2010 18:19:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Posts](
[PostId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[PostAuthor] [nvarchar](256) NOT NULL CONSTRAINT [DF_Posts_PostAuthor] DEFAULT (''),
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL CONSTRAINT [DF_Posts_LoweredSlug] DEFAULT (''),
[Subject] [nvarchar](256) NOT NULL CONSTRAINT [DF_Posts_Subject] DEFAULT (''),
[Summary] [nvarchar](512) NOT NULL CONSTRAINT [DF_Posts_Summary] DEFAULT (''),
[PostDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Posts_PostDate] DEFAULT (getutcdate()),
[ApprovedDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Posts_ApprovedDate] DEFAULT (((1900)-(1))-(1)),
[TotalViews] [int] NOT NULL CONSTRAINT [DF_Posts_TotalViews] DEFAULT ((0)),
[TotalComments] [int] NOT NULL CONSTRAINT [DF_Posts_TotalComments] DEFAULT ((0)),
[TotalAggViews] [int] NOT NULL CONSTRAINT [DF_Posts_TotalAggViews] DEFAULT ((0)),
[RatingAverage] [float] NOT NULL CONSTRAINT [DF_Posts_RatingAverage] DEFAULT ((0)),
[IPAddress] [bigint] NOT NULL CONSTRAINT [DF_Posts_IPAddress] DEFAULT ((0)),
[EnableComments] [bit] NOT NULL CONSTRAINT [DF_Posts_EnableComments] DEFAULT ((1)),
[EnableRatings] [bit] NOT NULL CONSTRAINT [DF_Posts_EnableRatings] DEFAULT ((1)),
[IsBodyHtml] [bit] NOT NULL CONSTRAINT [DF_Posts_IsBodyHtml] DEFAULT ((1)),
[State] [tinyint] NOT NULL CONSTRAINT [DF_Posts_State] DEFAULT ((0)),
[Property] [xml] NOT NULL,
CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED
(
[PostId] 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
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子Id,用来唯一标识一个帖子' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子所属的博客Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人UserId' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人显示名' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostAuthor'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的Slug' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子标题' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Subject'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子摘要' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Summary'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发布时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'PostDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'通过审核时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'ApprovedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论次数' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'TotalAggViews'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评分平均值' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'RatingAverage'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'发帖人IP' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'IPAddress'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否可以评论' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'EnableComments'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否可以评分 ' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'EnableRatings'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子内容是否为Html' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'IsBodyHtml'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'帖子状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'对于帖子的其他信息,序列化为XML保存,详见Openlab.Modules.Forums.ForumThreadProperty类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts', @level2type=N'COLUMN',@level2name=N'Property'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 帖子信息表
说明:
记录帖子信息, 包括帖子各种参数、设置等短属性;
通过[FK]BlogId指定所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Posts'
GO
/****** 对象: Table [blogs].[BlogOwners] 脚本日期: 01/07/2010 18:18:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[BlogOwners](
[BlogId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[CreateDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Owner_CreateDateUtc] DEFAULT (getutcdate()),
CONSTRAINT [PK_Owner] PRIMARY KEY CLUSTERED
(
[BlogId] ASC,
[UserId] 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
CREATE NONCLUSTERED INDEX [IX_Owners_UserId] ON [blogs].[BlogOwners]
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,外键,见Blog表' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用户Id,外键,见Membership表' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'UserId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客添加时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners', @level2type=N'COLUMN',@level2name=N'CreateDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 博客用户表
说明:
通过[FK]BlogId和[FK]UserId记录所有博客站点及其所有者的映射关系;记录博客开通时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'BlogOwners'
GO
/****** 对象: Table [blogs].[Categories] 脚本日期: 01/07/2010 18:18:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [blogs].[Categories](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[BlogId] [int] NOT NULL,
[ParentId] [int] NOT NULL CONSTRAINT [DF_Categories_ParentId] DEFAULT ((0)),
[CategoryType] [tinyint] NOT NULL,
[CategoryName] [nvarchar](256) NOT NULL,
[LoweredCategoryName] [nvarchar](256) NOT NULL,
[Slug] [nvarchar](128) NOT NULL,
[LoweredSlug] [nvarchar](128) NOT NULL,
[Description] [nvarchar](512) NOT NULL,
[CreatedDateUtc] [datetime] NOT NULL,
[TotalEntities] [int] NOT NULL,
[SortOrder] [int] NOT NULL,
[State] [tinyint] NOT NULL CONSTRAINT [DF_Categories_State1] DEFAULT ((0)),
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(
[CategoryId] 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
CREATE UNIQUE NONCLUSTERED INDEX [IX_Categories_Name] ON [blogs].[Categories]
(
[BlogId] ASC,
[CategoryType] ASC,
[LoweredCategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Categories_Slug] ON [blogs].[Categories]
(
[BlogId] ASC,
[CategoryType] ASC,
[LoweredSlug] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类Id,用来唯一标识一个分类' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'博客Id,用来标识分类所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'BlogId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'父分类的Id' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'ParentId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类类别,对应//todo枚举
1. 帖子类别
2. 帖子Tag
3. 链接类别' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryType'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CategoryName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的分类名称' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'LoweredCategoryName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'Slug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'小写的分类友好Url' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'LoweredSlug'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类描述' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'Description'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类创建时间' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'CreatedDateUtc'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'分类下的实体数量' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'TotalEntities'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'排列顺序号,用于显示' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'SortOrder'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'评论状态
0, 未设置
1, 正常
2, 待审核
3, 已删除' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories', @level2type=N'COLUMN',@level2name=N'State'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称: 实体分类表
说明:
存储所有实体的分类,通过CategoriesType区分为:
1. 帖子类别
2. 帖子Tag
3. 链接类别
通过[FK]BlogId指定所属的博客' , @level0type=N'SCHEMA',@level0name=N'blogs', @level1type=N'TABLE',@level1name=N'Categories'
GO
/****** 对象: ForeignKey [FK_Owner_Blog] 脚本日期: 01/07/2010 18:18:38 ******/
ALTER TABLE [blogs].[BlogOwners] WITH CHECK ADD CONSTRAINT [FK_Owner_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[BlogOwners] CHECK CONSTRAINT [FK_Owner_Blog]
GO
/****** 对象: ForeignKey [FK_BlogPosts_Blogs] 脚本日期: 01/07/2010 18:18:40 ******/
ALTER TABLE [blogs].[BlogPosts] WITH CHECK ADD CONSTRAINT [FK_BlogPosts_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[BlogPosts] CHECK CONSTRAINT [FK_BlogPosts_Blogs]
GO
/****** 对象: ForeignKey [FK_BlogPosts_Posts] 脚本日期: 01/07/2010 18:18:40 ******/
ALTER TABLE [blogs].[BlogPosts] WITH CHECK ADD CONSTRAINT [FK_BlogPosts_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[BlogPosts] CHECK CONSTRAINT [FK_BlogPosts_Posts]
GO
/****** 对象: ForeignKey [FK_Categories_Blogs] 脚本日期: 01/07/2010 18:18:50 ******/
ALTER TABLE [blogs].[Categories] WITH CHECK ADD CONSTRAINT [FK_Categories_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Categories] CHECK CONSTRAINT [FK_Categories_Blogs]
GO
/****** 对象: ForeignKey [FK_Comment_Blog] 脚本日期: 01/07/2010 18:18:54 ******/
ALTER TABLE [blogs].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comment_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Comments] CHECK CONSTRAINT [FK_Comment_Blog]
GO
/****** 对象: ForeignKey [FK_Comment_Post] 脚本日期: 01/07/2010 18:18:54 ******/
ALTER TABLE [blogs].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comment_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[Comments] CHECK CONSTRAINT [FK_Comment_Post]
GO
/****** 对象: ForeignKey [FK_Links_Blogs] 脚本日期: 01/07/2010 18:18:58 ******/
ALTER TABLE [blogs].[Links] WITH CHECK ADD CONSTRAINT [FK_Links_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Links] CHECK CONSTRAINT [FK_Links_Blogs]
GO
/****** 对象: ForeignKey [FK_Links_Categories] 脚本日期: 01/07/2010 18:18:58 ******/
ALTER TABLE [blogs].[Links] WITH CHECK ADD CONSTRAINT [FK_Links_Categories] FOREIGN KEY([LinkCategoryId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[Links] CHECK CONSTRAINT [FK_Links_Categories]
GO
/****** 对象: ForeignKey [FK_PostBody_Posts] 脚本日期: 01/07/2010 18:18:59 ******/
ALTER TABLE [blogs].[PostBody] WITH CHECK ADD CONSTRAINT [FK_PostBody_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostBody] CHECK CONSTRAINT [FK_PostBody_Posts]
GO
/****** 对象: ForeignKey [FK_PostCategoryRelationship_Categories] 脚本日期: 01/07/2010 18:19:01 ******/
ALTER TABLE [blogs].[PostCategoryRelationship] WITH CHECK ADD CONSTRAINT [FK_PostCategoryRelationship_Categories] FOREIGN KEY([PostCategoryId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[PostCategoryRelationship] CHECK CONSTRAINT [FK_PostCategoryRelationship_Categories]
GO
/****** 对象: ForeignKey [FK_PostsInCategory_Post] 脚本日期: 01/07/2010 18:19:01 ******/
ALTER TABLE [blogs].[PostCategoryRelationship] WITH CHECK ADD CONSTRAINT [FK_PostsInCategory_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostCategoryRelationship] CHECK CONSTRAINT [FK_PostsInCategory_Post]
GO
/****** 对象: ForeignKey [FK_PostComments_Blogs] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Blogs]
GO
/****** 对象: ForeignKey [FK_PostComments_Comments] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Comments] FOREIGN KEY([CommentId])
REFERENCES [blogs].[Comments] ([CommentId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Comments]
GO
/****** 对象: ForeignKey [FK_PostComments_Posts] 脚本日期: 01/07/2010 18:19:03 ******/
ALTER TABLE [blogs].[PostComments] WITH CHECK ADD CONSTRAINT [FK_PostComments_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostComments] CHECK CONSTRAINT [FK_PostComments_Posts]
GO
/****** 对象: ForeignKey [FK_PostSlugs_Blogs] 脚本日期: 01/07/2010 18:19:04 ******/
ALTER TABLE [blogs].[PostSlugs] WITH CHECK ADD CONSTRAINT [FK_PostSlugs_Blogs] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[PostSlugs] CHECK CONSTRAINT [FK_PostSlugs_Blogs]
GO
/****** 对象: ForeignKey [FK_PostSlugs_Posts] 脚本日期: 01/07/2010 18:19:04 ******/
ALTER TABLE [blogs].[PostSlugs] WITH CHECK ADD CONSTRAINT [FK_PostSlugs_Posts] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostSlugs] CHECK CONSTRAINT [FK_PostSlugs_Posts]
GO
/****** 对象: ForeignKey [FK_PostTagRelationship_Categories] 脚本日期: 01/07/2010 18:19:06 ******/
ALTER TABLE [blogs].[PostTagRelationship] WITH CHECK ADD CONSTRAINT [FK_PostTagRelationship_Categories] FOREIGN KEY([PostTagId])
REFERENCES [blogs].[Categories] ([CategoryId])
GO
ALTER TABLE [blogs].[PostTagRelationship] CHECK CONSTRAINT [FK_PostTagRelationship_Categories]
GO
/****** 对象: ForeignKey [FK_PostTagRelationship_Post] 脚本日期: 01/07/2010 18:19:06 ******/
ALTER TABLE [blogs].[PostTagRelationship] WITH CHECK ADD CONSTRAINT [FK_PostTagRelationship_Post] FOREIGN KEY([PostId])
REFERENCES [blogs].[Posts] ([PostId])
GO
ALTER TABLE [blogs].[PostTagRelationship] CHECK CONSTRAINT [FK_PostTagRelationship_Post]
GO
/****** 对象: ForeignKey [FK_Post_Blog] 脚本日期: 01/07/2010 18:19:13 ******/
ALTER TABLE [blogs].[Posts] WITH CHECK ADD CONSTRAINT [FK_Post_Blog] FOREIGN KEY([BlogId])
REFERENCES [blogs].[Blogs] ([BlogId])
GO
ALTER TABLE [blogs].[Posts] CHECK CONSTRAINT [FK_Post_Blog]
GO
/****** 对象: StoredProcedure [blogs].[up_GetAllBlogIds] 脚本日期: 01/07/2010 18:20:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-23>
-- Description: <Get ALL BlogIds>
-- =============================================
CREATE PROCEDURE [blogs].[up_GetAllBlogIds]
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[BlogId]
FROM
[Blog] B (NOLOCK)
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_GetCategoryIdsBySlug] 脚本日期: 01/07/2010 18:20:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-25>
-- Description: <Get CategoryIds by its slug and location>
-- =============================================
CREATE PROCEDURE [blogs].[up_GetCategoryIdsBySlug]
(
@BlogId INT,
@CategoryType TINYINT,
@Slug NVARCHAR(128)
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
WHERE
[BlogId] = @BlogId
AND [CategoryType] = @CategoryType
AND [LoweredSlug] = LOWER(@Slug)
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_GetCategoryIds] 脚本日期: 01/07/2010 18:20:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
ids
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2009-12-25>
-- Description: <Get CategoryIdS by Blog and Type>
-- Memo: Maybe we should store the relationship in a individual table.
-- =============================================
CREATE PROCEDURE [blogs].[up_GetCategoryIds]
(
@BlogId INT,
@CategoryType TINYINT
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- query.
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
WHERE
[BlogId] = @BlogId AND [CategoryType] = @CategoryType
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_SavePostViews] 脚本日期: 01/07/2010 18:20:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2010-01-06>
-- Description: <Batch save post views>
-- =============================================
CREATE PROCEDURE [blogs].[up_SavePostViews]
(
@PostViews XML
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
-- reutrn if no data.
IF @PostViews IS NULL
RETURN
-- update.
UPDATE
[Posts] WITH (ROWLOCK)
SET
[Posts].[TotalViews] = [Posts].[TotalViews] + [TVT].[TotalViews]
FROM
[Posts] JOIN
(
SELECT
TV.Vs.value('@id','int') AS PostId,
TV.Vs.value('@v','int') AS TotalViews
FROM
@PostViews.nodes('/vs/v') TV(Vs)
) TVT
ON
[Posts].[PostId] = [TVT].[PostId]
END
END
GO
/****** 对象: StoredProcedure [blogs].[up_CreateGetTagIds] 脚本日期: 01/07/2010 18:20:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
*/
-- =============================================
-- Author: <Lance Zhang>
-- Create date: <2010-01-06>
-- Description: <Make sure all the tag EXISTS in DB, and then get their ids.>
-- =============================================
CREATE PROCEDURE [blogs].[up_CreateGetTagIds]
(
@BlogId INT,
@TagNames XML
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN
BEGIN TRANSACTION;
-- Create temp table.
CREATE TABLE #TagsTable
(
TagName NVARCHAR(64)
)
-- Insert into temp table.
INSERT INTO #TagsTable
( TagName )
SELECT
TG.Tags.value('@t','nvarchar(64)') AS TagName
FROM
@TagNames.nodes('/ts/t') TG(Tags)
-- Create new tags.
BEGIN
INSERT INTO
[Categories]
(
[BlogId]
,[ParentId]
,[CategoryType]
,[CategoryName]
,[LoweredCategoryName]
,[Slug]
,[LoweredSlug]
,[Description]
,[CreatedDateUtc]
,[TotalEntities]
,[SortOrder]
,[State]
)
SELECT
@BlogId,
0, -- ParentId, 0 as default.
2, -- CategoryType, 2 as Post Tag.
TT.TagName,
LOWER(TT.TagName),
TT.TagName, -- Slug, use CategoryName as default.
LOWER(TT.TagName), -- LoweredSlug, use LoweredCategoryName as default.
'', -- Description, Empty as default.
GETUTCDATE(),
0, -- TotalEntities, 0 as default.
COALESCE(MAX(C.SortOrder) + 1, 1), -- SortOrder.
1 -- State, 1 as Normal.
FROM
#TagsTable TT, [Categories] C ( NOLOCK )
WHERE
LOWER(TT.TagName) NOT IN
(
SELECT
[LoweredCategoryName]
FROM
[Categories] ( UPDLOCK, HOLDLOCK )
WHERE
[BlogId] = @BlogId
AND [CategoryType] = 2 -- Post Tag.
)
AND C.[BlogId] = @BlogId
AND C.[CategoryType] = 2 -- Post Tag.
END
-- Batch Get Tag Ids.
BEGIN
SELECT
[CategoryId]
FROM
[Categories] C (NOLOCK)
JOIN
#TagsTable TT
ON
LOWER(TT.TagName) = C.[LoweredCategoryName]
WHERE
C.[BlogId] = @BlogId
AND C.[CategoryType] = 2 -- Post Tag.
AND C.[State] = 1 -- 1 as Normal status.
END
-- clear and drop temp table
TRUNCATE TABLE
#TagsTable
DROP TABLE
#TagsTable
IF( @@ERROR <> 0 )
BEGIN
ROLLBACK TRANSACTION
RETURN -1
END
ELSE
BEGIN
COMMIT