# 文档模型
> 前台所显示的 **任何类型的文章(资讯、投票、下载、帖子)**均可以看成一个文档,而他们的类型则对应各个文档扩展模型
* 数据上,文档由两部分组成:
1. 文档基础数据
2. 文档扩展数据
* 表结构上,扩展文档模型是继承基础文档模型的,且两张表以id字段为关联。
* 扩展文档模型的表名为:表前缀_document_扩展名。如在OT里,定义成onethink_document_article。
## 文档基础数据
所有文章都有统一的基础数据,如:唯一编号、唯一标识、标题……。
## 文档扩展数据
扩展数据是每个文档所在类型的特有数据,如下载模型里有:详细内容、附件信息、下载次数等; 而文章模型里有文章详细内容。
# 文档类型
> 不同于文档模型控制文档的数据,文档类型(think_document表里的type字段)仅用于标示这个文档是什么,方便前台展示(如:目录就只展示其标题)。
>
> 目前规定文档类型有:**目录**,**主题**,**段落**
>
> 由于文档可以有子文档,所以添加子文档时规则如下:
1. 目录下面可以添加任意类型
2. 主题下面只能添加段落
3. 段落下面不能添加任何类型的文档
# 文档模型的优缺点
优点:
1. 由于所有文档都共用一张基础表,所以对于实现`全站搜索`,`文档统计、分析`之类的功能就很方便。
2. 基础字段公用,减少设计表时字段的重复
3. 扩展新的文档模型非常方便
缺点:同样由于数据的集中,在较大的站,基础表的数据量会比较大,所以需要适时地优化。