WebsiteDdesign

网站设计

028微信开发 > 资讯 > 028微信PHP开发中的数据库设计
联系我们

028微信PHP开发中的数据库设计

来源:028微信开发 | 2016-03-01

微信是一个产品,也是一种现象,移动互联网的发展趋势势不可挡,据统计显示,从网民的上网习惯的分布来看,移动终端已经占据了超过PC端的流量,随着移动设备的发展和现在人们的碎片化上网习惯,移动端的营销是当下营销的一个趋势。而微信作为当前最热门的应用,有着超过6亿的用户,3亿的活跃用户,微信作为企业营销和服务的入口已经成为一种趋势。


微信营销主要体现在商家通过微信公众平台二次开发系统展示商家微官网、微会员、微推送、微支付、微活动、微CRM、微统计、微库存、微提成、微提醒等,已经形成了一种主流的线上线下微信互动营销方式。

越来越多的企业利用微信开发来进行微信营销,那么在微信PHP开发中应该注意哪些问题呢?


SQL语句

所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如select * from ims_members;是不符合规范的写法。

很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。

通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。

参考PHP编码规范中的数据库操作指南运算与检索

数值运算一般比字符串运算更快。例如比较运算,可在单一运算中对数进行比较。而串运算涉及几个逐字节的比较,如果串更长的话,这种比较还要多。

如果串列的值数目有限,应该利用普通整型或emum类型来获得数值运算的优越性。

更小的字段类型永远比更大的字段类型处理要快得多。对于字符串,其处理时间与串长度直接相关。一般情况下,较小的表处理更快。对于定长表,应该选择最小的类型,只要能存储所需范围的值即可。例如,如果mediumint够用,就不要选择bigint。对于可变长类型,也仍然能够节省空间。一个TEXT 类型的值用2 字节记录值的长度,而一个LONGTEXT 则用4字节记录其值的长度。如果存储的值长度永远不会超过64KB,使用TEXT 将使每个值节省2字节。


表和字段命名

表和字段的命名以PHP编码中的命名规范为基本准则。

所有数据表名称,只要其名称是可数名词,则必须以复数方式命名,例如:ims_members(用户表)、ims_rules(规则定义表);

存储多项内容的字段,或代表数量的字段,也应当以复数方式命名,例如:params(parameters,参数个数)、views(查看次数)、replies(回复次数)。

当几个表间的字段有关连时,要注意表与表之间关联字段命名的统一,如 ims_rule_keywords表中的rid与ims_rules表中的rid。

代表id自增量的字段,通常用以下几种形式:

最常用的核心id,或经常在URL中进行调用的,尽量用简写的形式,例如rid、weid、uid;

有功能性作用,URL中偶尔用到的id,使用全称的形式,例如pluginid;

没有功能性作用,只为管理和维护方便而设的id,可以使用全称的形式,也可只将其命名为id。

所有与表、字段相关的命名,请参考微擎系统现有字段的命名方式,以保证命名的系统性和统一性。


字段结构

基于效率的考虑,所有字段均不能为空,即全部NOT NULL,可以设置默认值来代替。

预计不会存储非负数的字段,例如各项id、统计数等,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间。

储开关、选项数据的字段,通常使用tinyint(1)非UNSIGNED类型,少数情况也可能使用enum()结果集的方式。tinyint作为开关字段时,通常1为打开;0为关闭;-1为特殊数据,例如N/A(不可用),高于1的为特殊结果或开关二进制数组合。

任何类型的数据表,字段空间应当本着足够用,不浪费的原则。MEMORY/HEAP类型的表中,尤其要注意规划节约使用存储空间,这将节约更多内存。


性能优化

主要分为:表结构优化,索引优化,查询优化。取决于开发人员经验和个人能力。不详述。