数据库设计
本文整理于网络,仅供阅读参考,如有不妥之处,敬请批评指正!如果您想加入微擎社区版技术大牛微信群和QQ群,请联系微信: ccccyyyy4444 或者 QQ:155120699
表和字段命名
- 表和字段的命名以PHP编码中的命名规范为基本准则。
- 所有数据表名称,一律使用单数的形式,比如:命名为 user 而不是 users
- 当几个表间的字段有关联时,要注意表与表之间关联字段命名的统一,如 ims_rule_keywords表中的rid与ims_rules表中的rid。
主键
每个表必须包含一个名称为 id 的自增主键。
字段结构
- 基于效率的考虑,所有字段均不能为空,即全部NOT NULL,可以设置默认值来代替。
- 预计不会存储非负数的字段,例如各项id、统计数等,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间。
- 储开关、选项数据的字段,通常使用tinyint(1)非UNSIGNED类型,少数情况也可能使用enum()结果集的方式。tinyint作为开关字段时,通常1为打开;0为关闭;-1为特殊数据,高于1的为特殊结果或开关二进制数组合。
- 任何类型的数据表,字段空间应当本着足够用,不浪费的原则。MEMORY/HEAP类型的表中,尤其要注意规划节约使用存储空间,这将节约更多内存。
SQL语句
- 所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如SELECT * FROM ims_members;
- 很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。
- 通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。
运算与检索
- 数值运算一般比字符串运算更快。例如比较运算,可在单一运算中对数进行比较。而串运算涉及几个逐字节的比较,如果串更长的话,这种比较还要多。
- 如果串列的值数目有限,应该利用普通整型或emum类型来获得数值运算的优越性。
- 更小的字段类型永远比更大的字段类型处理要快得多。对于字符串,其处理时间与串长度直接相关。一般情况下,较小的表处理更快。对于定长表,应该选择最小的类型,只要能存储所需范围的值即可。例如,如果mediumint够用,就不要选择bigint。对于可变长类型,也仍然能够节省空间。一个TEXT 类型的值用2 字节记录值的长度,而一个LONGTEXT 则用4字节记录其值的长度。如果存储的值长度永远不会超过64KB,使用TEXT 将使每个值节省2字节。
性能优化
- 主要分为:表结构优化,索引优化,查询优化。取决于开发人员经验和个人能力。不详述。
如果看不懂微擎社区版二次开发手册或者遇到问题,请联系微信: ccccyyyy4444 或者 QQ:155120699 ,如果我们有空闲时间,可以免费为您答疑解惑。