笔记:CMS第一阶段-文章系统[的第一阶段](第一部分)
数据表设计
1. 国产CMS的终极功能就是要像所有国内门户网站那样,首页有无数的文章列表。因此,文章需要分类,可以拿分类类型做查询列为列表,显示在主页(显示许许多多短的列表)或者“查看更多”页面上(显示可分页、长列表)。目前考虑最多弄个二级类型,就像Joomla!1.5一样。那么,就加上个Catalog,SubCatalog字段。等等,用ID编码而非明文可能更方便编程、保证一致性,那么用CatalogID, SubCatalogID吧?想想这样的话,俩ID可以用一个字段,如‘0102’,解析成CatalogID=01,SubCatalogID=02。[挺有必要的,如果用ID表示类型,那么势必要有新表Catalog解释这些ID;当SubCatalogID单独出来建说明表时,则ID值可能重复。]用单个字段,建Catalogs解释表时,可以类似:
0100='Catalog A';
0101='SubCatalog a'; // belongs to Catalog A
0102='SubCatalog b'; // belongs to A
0200='Catalog B';
......
注意这个随意的编码方式限制分类的个数,如sub类为XX01~XX99。可以考虑使用其他精心设计的编码方式。
2. 文章需要先录入,后经批准才能发布。不发布不能被查找和显示。于是,文章需要Published字段来说明是否已经被发布。那么是否需要PublishedBy字段署名发布人?文章用Author说明录入人,在查看某人录入了多少文章可以用来做筛查。如果使用PublishedBy,则可以查找某人发布过的文章情况,也能追责。这么来说,为此目的需要的字段就是Author(NVarChar, user id), InputDate(datetime), Published(bit), PublishDate(datetime), PublishedBy(NVarChar, user id).
**特别声明:在这个第一阶段的第一阶段,不想分心去做用户系统。这几个字段保留、可空。
3. 关于文章正文,经实践论证,就用NText好了。[实践是用母版页+子页中的自定义控件显示文章,这样文章页实际上是动态产生的。。。],全是Html格式的文档,插入图片的话,在输入时用<img>自行加吧。使用Editor这样的ASPNET的Ajax空间好了,到时再说。
4. 站内搜索怎么做?数据库保存文章,动态生成页面,这个站内搜索实质上就是数据库搜索。全文搜索太恐怖了吧,关键词搜索凑合一下算了。于是,还得有关键词字段。录入时不写关键词的文章就忽略不搜(哈哈)。关键词字段用NVarChar就行,其中各关键词用某字符分隔。[是否还可以弄出‘相关文章’什么的,有待实践,在这个第一阶段的第一阶段,字段保留使用,但不真的搜索。]
5. 还有那个啥,‘阅读次数’,用一个字段Reads表示凑合一下,可以用来生成‘最热文章’列表了。。。
总结一下,CMS第一阶段第一阶段的第一部分的思考成果:
字段---
文章ID,文章Title,类别代码CatalogID,关键词KeyWords,作者Author,录入时间InputDate,已发布Published,发布人PublishedBy,发布时间PublishDate,阅读次数Reads,文章正文Content
[之后有心思再弄什么‘好评’,‘客户评论’什么的。评论肯定是另外表了,用文章ID连着。]