数据库表 — 综合设置表 讲解
发布时间:2015/12/30 22:11栏目:学习笔记
有朋友和我说,这个表他看不懂存在的意义,不懂为什么要设计这一张表,其实我想说这个表很重要,基本所有的CMS系统都有。一两句说不清,就写一篇文章,也给一些朋友科普一下,大神请绕过勿喷。。。
在我的博客数据库中,有一张表为:toilove_seting — 综合设置表 ,里面记录了一些数据,其内容截图为:
关于隐私部门已打码...
先来说说为什么要设计这个表吧。
很多人在设置一些基本信息,比如站点信息的时候,会单独直接一张表,然后各种字段(比如:站点名称、站点logo等等)就是自己想要的信息,不知道你们是不是,至少我以前也是这样,在我的站点1.1版本之前是这样的。这样设计表结构,刚开始写起来确实很简单,但是在后面开发会有很大的问题。
一:当你的想增加一个信息的时候,你需要增加一个字段。
二:当你有很多想要保存的信息,比如站点信息、站长信息、邮箱设置,你就要设计很多表,字段依次为这些信息,当然你可以将很多融合到一张表,但是你会碰见第三个问题。
三:当你只需要某几个甚至某一个的信息时,那么多字段你控制起来很麻烦。
四:字段太多,看起来太复杂,
差不多就这四点吧,我也记不清当初是因为什么让我放弃了用表的字段记录关键字,在寻求新的解决方法,所以就出现了这张表,在1.2版本叫 about表,只用了记录站点和我的信息,随着我不断学习,版本更新,发现它的重要性,发现在很多CMS都用这些方式记录。
现在说说 综合设置表 的字段各个意义吧。
ID、type、attribute、value、explain (暂时用的是这五个,但是我已经有了新的表结构设计,会在我的Toilove Admin系统 中使用,到时候再做讲解)
1:我们先说 attribute 和 value ,这个从字面意义大家都明白,属性和值,合起来称之为键值对,通俗一点,就是一个键对一个值。
例如: author -> 陈都 、name -> Toilove个人博客
可以说,键值对是这张表的灵魂,没有键值对,这张表就没有意义。
键值对应用来站点中,充当着参数设置,很多信息需要保存,比如站名、域名、备案很多很多,当然,白板站就除外了。
当你要做一个属性可控制的网站时,你不可能将站名和域名写死,至少我不是这样的,一般开源站点都这样吧,方便他人搭建学习,修改参数。
也许你会问,怎么使用呢,我先说不急,介绍完字段再说。
2:其次我们来说说 type 这个字段 ,类型字段。这个大家很容易理解,很多键值对其实会同时用到,比如:站点名称、站点链接、站点备案、站点地址,基本属于站点的一些基本信息,所以这个 type 字段的作用就在分类,当我们需要什么类型的时候,就根据这个type,来得到相应的键值对。
3:最后来说 explain 和 ID 吧,也很好懂,前者是备注的意思,一是怕你记性不好(反正我是咋地...),给这个字段做个备注,二则会在表单设置的时候充当字段说明。比如:
看看,在你设置属性的时候,他就可以告诉你是你填的是啥。
好了,现在和你们说说怎么使用这个吧。
这个表会在两种情况时使用。
1:显示信息
2:设置信息
在显示信息的时候,我写了一个函数,为
// 站点数据函数
// 功能:获取站点的相关数据
// 变量: $typeId -> 数据的类型
function wwwData($typeId){ $where['se_type'] = $typeId; $data = M('seting') -> where($where) -> select(); for ($i=0; $i < count($data); $i++) { $wwwData[$data[$i]['se_attribute']] = $data[$i]['se_value']; } return $wwwData; }
他会将你输入的类型,以键值对的方式返回,比如你要在页面标题<title>中显示站点名称,就直接:<title>{$wwwData['name']}</title> 。以此为例,其他地方也有。
在设置数据的时候,则直接根据类型进行数据全部获取,这个涉及到很多方面,在这里就不展开说明了,大家看我博客的后台信息设置页面就可以了,不明白的可以随时问我。
好了,该休息了。
预祝各位 元旦快乐~