网站大量收购独家精品文档,联系QQ:2885784924

MySQL设计规范.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL设计规范

MySQL设计规范 MySQL设计规范 1 1. 数据库设计 1 1.1. 字段 1 1.1.1. 表和字段命名 1 1.1.2. 字段结构 2 1.2. SQL语句 2 1.3. 性能与效率 3 1.3.1. 定长与变长表 3 1.3.2. 运算与检索 3 1.3.3. 结构优化与索引优化 4 1.3.4. 查询优化 4 1.3.5. 兼容性问题和效率查询语句 6 1.3.6. 分享一些SQL语句 7 数据库设计 字段 表和字段命名 MySQL常见的表类型介绍: A:MyISAM数据表又分为MyISAM Satic (静态MyISAM)、MyISAM Dynamic (动态MyISAM)、MyISAM Compressed (压缩MyISAM)。 B:InnoDB占用空间大,但是支持事务处理。 C:HELP表类型是放在内存中的速度很快。 所有数据表名称,只要其名称是可数名词,则必须以复数方式命名,例如:oms_members(用户表)、oms_serverlist(主机表);存储多项内容的字段,或代表数量的字段,也应当以复数方式命名,例如:params(parameters,自定义代码的参数个数)。 当几个表间的字段有关连时,要注意表与表之间关联字段命名的统一,如omsgroup表中的id与groupcorr表中的id。(举例) 代表id自增量的字段,通常用以下几种形式: 最常用的核心id,或经常在URL中进行调用的,尽量用简写的形式,例如tid、pid、uid; 有功能性作用,URL中偶尔用到的id,使用全称的形式,例如pluginid; 没有功能性作用,只为管理和维护方便而设的id,可以使用全称的形式,也可只将其命名为id。 字段结构 允许NULL值的字段,数据库在进行比较操作时,会先判断其是否为NULL,非NULL时才进行值的比对。因此基于效率的考虑,所有字段均不能为空,即全部NOT NULL; 预计不会存储非负数的字段,例如各项id、数量等,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间; 存储开关、选项数据的字段,通常使用tinyint(1)非UNSIGNED类型,少数情况也可能使用enum()结果集的方式。tinyint作为开关字段时,通常1为打开;0为关闭;-1为特殊数据,例如N/A(不可用);高于1的为特殊结果或开关二进制数组合; 任何类型的数据表,字段空间应当本着足够用,不浪费的原则,数值类型的字段取值范围见下表: 字段类型 存储空间(b) UNSIGNED 取值范围 tinyint 1 否 -128~127 是 0~255 smallint 2 否 -32768~32767 是 0~65535 mediumint 3 否 -8388608~8388607 是 0 Int 4 否 -2147483648~2147483647 是 0~4294967295 bigint 8 否 -9223372036854775808 ~9223372036854775807 是 0 ~18446744073709551615 SQL语句 所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如select * from members;是不符合规范的写法。 很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。 通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。 如下的语句范例,是符合规范的: $query = $db-query(SELECT s.*, m.* FROM {$tablepre}sessions s, {$tablepre}members m WHERE m.uid=s.uid AND s.sid=$sid); 性能与效率 定长与变长表 包含任何varchar、text等变长字段的数据表,即为变长表,反之则为定长表。 对于变长表,由于记录大小不同,在其上进行许多删除和更改将会使表中的碎片更多。需要定期运行OPTIMIZE TABLE以保持性能。而定长表就没有这个问题; 如果表中有可变长的字段,将它们转换为定长字段能够改进性能,因为定长记录易于处理。但在试图这样做之前,应该考虑下列问题: 使用定长列涉及某种折衷。它们更快,但占用的空间更多。char(n) 类型列的每个值总要占用n 个字节(即使空串也是如此),因为在表中存储时,值的长度不够将在右边补空格; 而varchar(n)类型的列所占空间较少,因为只给

文档评论(0)

youshen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档