# 文檔模型
> 前臺所顯示的?**任何類型的文章(資訊、投票、下載、帖子)**均可以看成一個文檔,而他們的類型則對應各個文檔擴展模型
* 數據上,文檔由兩部分組成:
1. 文檔基礎數據
2. 文檔擴展數據
* 表結構上,擴展文檔模型是繼承基礎文檔模型的,且兩張表以id字段為關聯。
* 擴展文檔模型的表名為:表前綴_document_擴展名。如在OT里,定義成onethink_document_article。
## 文檔基礎數據
所有文章都有統一的基礎數據,如:唯一編號、唯一標識、標題……。
## 文檔擴展數據
擴展數據是每個文檔所在類型的特有數據,如下載模型里有:詳細內容、附件信息、下載次數等; 而文章模型里有文章詳細內容。
# 文檔類型
> 不同于文檔模型控制文檔的數據,文檔類型(think_document表里的type字段)僅用于標示這個文檔是什么,方便前臺展示(如:目錄就只展示其標題)。
>
> 目前規定文檔類型有:**目錄**,**主題**,**段落**
>
> 由于文檔可以有子文檔,所以添加子文檔時規則如下:
1. 目錄下面可以添加任意類型
2. 主題下面只能添加段落
3. 段落下面不能添加任何類型的文檔
# 文檔模型的優缺點
優點:
1. 由于所有文檔都共用一張基礎表,所以對于實現`全站搜索`,`文檔統計、分析`之類的功能就很方便。
2. 基礎字段公用,減少設計表時字段的重復
3. 擴展新的文檔模型非常方便
缺點:同樣由于數據的集中,在較大的站,基礎表的數據量會比較大,所以需要適時地優化。