数据库设计

表和字段命名

  • 表名和字段名一律使用下划线法命名,例如表admin_rule、字段 create_time

  • 当几个表间的字段有关联时,要注意表与表之间关联字段命名的统一,如 addons_template表中的addon与mini_template_log表中的addon一致

主键

每个表必须包含一个名称为 id 的主键。

字段结构

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

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

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

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

运算与检索

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

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

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

性能优化

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