本管理系统的数据库采用SQL Server2005,主要有T_Category、T_Content、T_Tag和T_TagInContent这4个表。为了简单起见,用户验证功能等将使用Membership提供者实现,因而用户表和角色表将使用aspnet_regsql.exe自动生成,这个可参阅有关的网上资料,在此就不赘述了。以下是4个表格的详细说明。
1. 分类表:T_Category
字段名称 | 类型 | 允许空 | 说明 |
CategoryId | int | 否 | 分类编号,主键,自动增量,起始值为10000,主要是为了使用FULLPath进行排序时能直接排序出树结构。如果90000多分类觉得不够,可以设置更大的起始值。 |
ParentId | int | 是 | 父节点的id |
Hierarchylevel | int | 是 | 节点的层数,该字段将通过触发器自动生成 |
FullPath | nvarchar(100) | 是 | 节点的全路径,例如父节点编号为10000,节点编号为10001,则全路径为“.10000.10001.”,这样通过一次排序就可列出数结构。该字段也将通过触发器自动生成。正常来说,只要字段长度足够,可以实现无限层的数,在这里设置为100,大概可以达到10多层,估计也足够了,如果觉得不够,可以加大字段长度。 |
Title | nvarchar(255) | 否 | 分类标题 |
Image | nvarchar(255) | 是 | 题图 |
[Content] | nvarchar(MAX) | 是 | 分类说明 |
SortOrder | int | 否 | 排序序数,默认值为0,用于分类列表时的排序。 |
State | tinyint | 否 | 状态,默认值为0,表示可用。值为1表示已删除。 |
Created | datetime | 否 | 创建时间,默认值为getdate() |
本表包含trg_CategoryInsert和trg_CategoryUpdate两个触发器,用于在插入或更新分类时更新节点层数和全路径,具体情况可下载数据库并附加到数据库上查看,在这就不列出来了。
还需要创建一个“未分类”的分类,这样,就可在分类被删除时,将该分类下的内容全部转移到“未分类”下。
2. 内容表:T_Content
字段名称 | 类型 | 允许空 | 说明 |
ContentId | int | 否 | 内容编号,主键,自动增量,起始值为1。 |
Title | nvarchar(255) | 否 | 内容标题。 |
CategoryId | int | 否 | 内容所属分类。 |
Image | nvarchar(255) | 是 | 题图 |
Summary | nvarchar(500) | 是 | 内容摘要 |
[Content] | text | 是 | 内容 |
Created | datetime | 否 | 创建时间,默认值为getdate() |
Hits | int | 否 | 点击量,默认值为0。 |
State | tinyint | 否 | 状态,默认值为0,表示可用。值为1表示已删除。 |
SortOrder | int | 否 | 排序序数,默认值为0,用于内容列表时的排序。 |
3. 标签表:T_Tag
字段名称 | 类型 | 允许空 | 说明 |
TagId | int | 否 | 标签编号,主键,自动增量,起始值为1。 |
TagName | nvarchar(255) | 否 | 标签,为它创建一个唯一索引。 |
4. 标签与内容关联表:T_TagInContent
字段名称 | 类型 | 允许空 | 说明 |
ContentId | Int | 否 | 内容编号,外键,与TagId组成复合主键 |
TagId | Int | 否 | 标签编号,外键,与ContentId组成复合主键 |