终于写完了,可能后续的修改不会少,先备份一下吧。

更多信息: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,1NOT NULL,
    
[CreatorUserId] [int] NOT NULL,
    
[Slug] [nvarchar](128NOT NULL,
    
[LoweredSlug] [nvarchar](128NOT NULL,
    
[DisplayName] [nvarchar](256NOT NULL,
    
[LoweredDisplayName] [nvarchar](256NOT NULL,
    
[Description] [nvarchar](512NOT NULL,
    
[Theme] [nvarchar](256NOT 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  = ONON [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  = ONON [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  = ONON [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](maxNOT NULL,
    
[FormattedBody] [nvarchar](maxNOT 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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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,1NOT 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](256NOT NULL,
    
[PostAuthor] [nvarchar](256NOT NULL CONSTRAINT [DF_Comments_PostAuthor]  DEFAULT (''),
    
[IPAddress] [bigint] NOT NULL CONSTRAINT [DF_Comments_IPAddress]  DEFAULT ((0)),
    
[EmailAddress] [nvarchar](256NOT NULL,
    
[WebUrl] [nvarchar](256NOT NULL,
    
[TotalViews] [int] NOT NULL,
    
[CommentDateUtc] [datetime] NOT NULL CONSTRAINT [DF_Comments_CommentDateUtc]  DEFAULT (getutcdate()),
    
[FormattedBody] [nvarchar](maxNOT 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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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  = ONON [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](128NOT 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  = ONON [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,1NOT NULL,
    
[BlogId] [int] NOT NULL,
    
[LinkCategoryId] [int] NOT NULL,
    
[Title] [nvarchar](256NOT NULL,
    
[Description] [nvarchar](512NOT NULL CONSTRAINT [DF_Links_Description]  DEFAULT (''),
    
[Url] [nvarchar](256NOT NULL,
    
[RSS] [nvarchar](256NOT 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  = ONON [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  = ONON [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,1NOT NULL,
    
[BlogId] [int] NOT NULL,
    
[UserId] [int] NOT NULL,
    
[PostAuthor] [nvarchar](256NOT NULL CONSTRAINT [DF_Posts_PostAuthor]  DEFAULT (''),
    
[Slug] [nvarchar](128NOT NULL,
    
[LoweredSlug] [nvarchar](128NOT NULL CONSTRAINT [DF_Posts_LoweredSlug]  DEFAULT (''),
    
[Subject] [nvarchar](256NOT NULL CONSTRAINT [DF_Posts_Subject]  DEFAULT (''),
    
[Summary] [nvarchar](512NOT 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  = ONON [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  = ONON [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  = ONON [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,1NOT NULL,
    
[BlogId] [int] NOT NULL,
    
[ParentId] [int] NOT NULL CONSTRAINT [DF_Categories_ParentId]  DEFAULT ((0)),
    
[CategoryType] [tinyint] NOT NULL,
    
[CategoryName] [nvarchar](256NOT NULL,
    
[LoweredCategoryName] [nvarchar](256NOT NULL,
    
[Slug] [nvarchar](128NOT NULL,
    
[LoweredSlug] [nvarchar](128NOT NULL,
    
[Description] [nvarchar](512NOT 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  = ONON [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  = ONON [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  = ONON [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) + 11),    -- 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

相关文章: