zenglcms无论是mysql数据库类型还是sqlite数据库类型,数据库的表结构都是一致的。数据库表是通过common_fun目录下的db_class.php的db类来创建的。数据库的表结构如下:  &nbsp...

    zenglcms无论是mysql数据库类型还是sqlite数据库类型,数据库的表结构都是一致的。数据库表是通过common_fun目录下的db_class.php的db类来创建的。数据库的表结构如下:

    其中zengl_archives表("zengl_"是安装时设置的数据库表前缀)是和附件相关的表,其中包括archive_ID附件记录的主键id,title 附件的名称,path 附件的路径 ,smimgpath 附件的缩略图路径 ,time 附件添加时间的unix时间戳 ,userID 附件所属用户的用户id ,permis 用户权限控制字段 ,该字段里存放的是序列化过的PHP数组,数组里存放着用于控制某用户是否具有编辑,删除附件等权限的信息。
    zengl_articles表是存放文章数据的表。包括articleID文章记录的主键id,title文章的标题字段, author文章的作者字段, time文章添加和修改时间的unix时间戳字段,content文章的内容字段,descript文章的描述(简介)字段,smimgpath文章的缩略图路径字段,scansCount文章访问次数字段,sec_ID所属栏目的栏目ID字段,userID所属用户的用户ID字段,permis控制用户操作权限字段。

    zengl_comment表则是存放文章的评论数据的表,包括comment_ID评论的主键ID,username发表评论时所填写的昵称,showtime显示时间(因为当某篇评论有回复时,就会更新此字段,然后可以根据此字段进行排序,比按发表时间进行排序更合理),time评论的发表时间字段,content评论的内容字段,articleID评论所属文章的主键ID(任何评论都是针对某篇文章的),uid发表评论的用户主键ID(如果为0则表明是游客)ip_address评论的来源IP,permis控制用户是否有操作管理评论的权限。

    zengl_commentreply表用于存放评论的回复信息,包括reply_ID回复的主键ID,username发表回复时所填写的昵称,time回复的发表时间,content具体的回复内容,commentID回复所对应的评论ID,uid发表回复的用户ID(如果为0则表明是游客)ip_address发表回复的来源IP,permis控制用户是否具有管理回复的权限。

    zengl_level用于存放用户组信息的表,包括levelID用户组的主键ID,levelname用户组的名称,permission用户组所拥有的权限,权限信息是以序列化的PHP数组的形式存放在表中的。虽然数据库在初始化的时候默认添加了四个组:系统管理员,高级用户,中级用户,初级注册用户,但是在实际的程序中只用到了系统管理员和初级注册用户两个组,另外两个组留作以后扩展。

    zengl_section表是用于存放栏目信息的。其中包括sec_ID栏目的主键ID,sec_name栏目的名称,sec_dirname是存放该栏目html静态文件的目录名,sec_parent_ID该栏目所属父栏目的栏目ID,sec_content如果该栏目下面含有子栏目,则将子栏目的栏目ID以逗号连接存储到该字段(栏目ID的先后顺序决定了栏目在菜单中的前后顺序)。sec_weights栏目的权重值(在首页中布置栏目块时,权重值高的排在前面),permis用于控制用户对某栏目的管理权限。

    zengl_tags用于存放文章的tag标签数据,其中包括tag_ID标签的主键ID,tag_name标签的名称,time时间字段(暂时没用到),count标签计数器(统计有多少篇文章包含该标签),articles将所有包含此标签的文章ID以逗号连接并存放到该字段。

    zengl_user用于存放用户信息的表,其中包括userID用户的主键ID,username用户名,password用户密码(用户密码是实际的密码加上安装时生成的随机的密码掩码,再通过md5进行加密的,所以config.inc.php里的db_pass_suffix随机密码掩码很重要,一旦丢失就无法验证用户的密码了),regtime用户的注册时间的unix时间戳格式,lastlogtime最后登录时间(目前暂未投入使用,其值和注册时间一样),level用户所属的用户组ID,permis用户所具有的权限(当permis为空时,自动继承所属组的权限信息)。

    db_class.php中在create_tables方法创建所有的表结构时,是通过sql类的createTable方法依次创建各个表结构的,例如:

..................................... //省略N行代码
        if($this->sql == null)
            $this->sql = new sql('utf8');  //初始化sql类
        $sql = &$this->sql;
        if ($sql->db_type == MYSQL) //对MYSQL类型的数据库的处理
        {
            $sql->createTable('articles',
                            'articleID int NOT NULL AUTO_INCREMENT,
                            PRIMARY KEY(articleID),
                            title tinytext,
                            author varchar(30),
                            time int,
                            content mediumtext,
                            descript mediumtext,
                            smimgpath mediumtext,
                            scansCount int,
                            sec_ID int,
                            userID int,
                            permis mediumtext
', true); //通过createTable方法创建articles文章表。
            if ($sql->err == SQL_SUCCESS)
                echo "创建表: $db_tables_prefix".'articles 成功!
';
            flush_buffers();

..................................... //省略N行代码

    上面介绍了CMS系统的数据库表结构和创建原理,其实一个小型的个人 网 站并不需要像dedecms或destoon那样有上百的数据库表,destoon之所以有上百个表是因为B2B电子商务除了资讯模块外,还有商城,供应 等模块,所以表的结构就比较复杂,对于一般的博客性质的网站,8到10个表结构就足够了。

    OK,休息,休息一下,
O(∩_∩)O~

上下篇

下一篇: zenglcms CKEditor在线编辑器

上一篇: zenglcms 目录结构

相关文章

zenglcms v1.2.0 数据库结构

zenglcms v1.2.0 正则表达式模板引擎

zenglcms 缓存和模板

zenglcms v1.2.0 水印功能和进度条类

zenglcms v1.2.0发布版

zenglcms v1.2.0 自定义栏目类型