一.mysql命名规范

1.设计原则

1) 标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但 Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原 则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键 相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
举例:某个存放客户及其有关定单的3NF 数据库就可能有两个 表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那 一行。
事实上,为了效率的缘故,对表不进行标准化有时也是必要的。
2) 数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和 维护都会方便得多,大大增强系统的灵活性和扩展性。
举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接 和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在 数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
3) 考 虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓 等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。

2. 数据库涉及字符规范

采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注 释除外).
注意事项:
1) 以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@).
2) 数据 对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格.
3) 小心保留词,要保证你的字段名没有和保留词、数据 库系统或者常用访问方法冲突
5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整 数,那在另一个表里可就别变成字符型了.

3.数据库命名规范

数据库,数据表一律使用前缀

正式数 据库名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.比如:

web_19floor_net
web_car

备 份数据库名使用正式库名加上备份时间组成,如:

web_19floor_net_20070403
web_car_20070403

4. 数据库表命名规范

数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.
相关应用的数据表使用同一前缀,如 论坛的表使用cdb_前缀,博客的数据表使用supe_前缀,前缀名称一般不超过5字
比如:

web_user
web_group
supe_userspace

备 份数据表名使用正式表名加上备份时间组成,如:

web_user_20070403
web_group_20070403
supe_userspace_20070403

5. 字段命名规范

字段名称使用单词组合完成,首字母小写,后面单词的首字母大写,最好是带表名前缀.
如 web_user 表的字 段:

userId
userName
userPassword

表与表之间的相关联字段要用统一名称,
如 web_user 表 里面的 userId 和 web_group 表里面的 userId 相对应

6.字段类型规范

规则:用尽量少的存储空间来存 数一个字段的数据.
比如能用int的就不用char或者varchar
能用tinyint的就不用int
能用 varchar(20)的就不用varchar(255)
时间戳字段尽量用int型,如created:表示从 '1970-01-01 08:00:00'开始的int秒数,采用英文单词的过去式;gmtCreated:表示datetime类型的时间,即形如 '1980-01-01 00:00:00'的时间串,Java中对应的类型为Timestamp

7.数据库设计文档规范

所 有数据库设计要写成文档,文档以模块化形式表达.大致格式如下:

'-------------------------------------------
'    表 名:    web_user
'    作者:    Aeolus(傻鱼)
'    日期:    2007-04-11
'    版 本:    1.0
'    描述:    保存用户资料
'    具体内容:
'    UserID int,自动增量 用户 代码
'    UserName char(12) 用户名字
'    ......
'--------------------------------------------

8. 索引使用原则:

1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引.考虑数 据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写.
2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也 是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上.
3) 不要索引blob/text等字段,不要索引大型字段(有很多字 符),这样作会让索引占用太多的存储空间.
4) 不要索引常用的小型表
不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别 这样作了.对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间.

9.sql语句规范

所有sql关键词全部大 写,比如SELECT,UPDATE,FROM,ORDER,BY等,所有的表名和库名都要用``包含
如:
SELECT COUNT(*) FROM `cdb_members` WHERE `userName` = 'aeolus';

10.其他设计技巧

1) 避免使用触发器
触发器的功能通常可以用其他方式实现.在调试程序时触发器可能成为干扰.假如你确实需要采用触发 器,你最好集中对它文档化.
2) 使用常用英语(或者其他任何语言)而不要使用编码或者拼音首字母缩写
在创建下拉菜单、列表、报表时最好 按照英语名排序.假如需要编码或者拼音首字母缩写,可以在旁边附上用户知道的英语.
3) 保存常用信息
让一个表专门存放一般数据库信息非 常有用.在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息.这样可以实现一种简单机制跟踪数据库,当客 户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用.
4) 包含版本机制
在数据库中引入版本控制 机制来确定使用中的数据库的版本.时间一长,用户的需求总是会改变的.最终可能会要求修改数据库结构.把版本信息直接存放到数据库中更为方便. 
5) 编 制文档
对所有的快捷方式、命名规范、限制和函数都要编制文档.
采用给表、列、触发器等加注释的数据库工具.对开发、支持和跟踪修改非常有 用.
对数据库文档化,或者在数据库自身的内部或者单独建立文档.这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。
6) 测 试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段.最重要的是,让用户进行测试并且同用户一道保证选择的数据类型 满足商业要求.测试需要在把新数据库投入实际服务之前完成。
7) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序 原型检查数据库.换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。

二.php命名规则

就一般约定而言,类、函数和变量的名字应该是能够让代码阅读者能够容易地知道这些代码的作用,应该避免使用凌磨两可的命名。

1.类命名

使用大写字母作为词的分割,其他的字母均使用小写。

名字的首字母使用大写。

不要使用下划线('_')。

如:Name、SuperMan、BigClassObject。

2.类属性命名

属性命名应该以字符‘m’为前缀。

前缀‘m’后采用与类命名一致的规则。

‘m’总是在名字的开头起修饰作用,就像以‘r’开头表示引用一样。

如:mValue、mLongString等

3.方法的命名

方法的作用都是执行一个动作,达到一个目的。所以名称应该说明方法是做什么的。一般名称的前缀都是有第一规律的,如is(判断)、get(得到),set(设置)。

方法的命名第一个单词的首字母小写,其后单词的首字母大写。。如:

class StartStudy{                       //设置类

$mLessonOne = "";               //设置类属性

$mLessonTwo = "";               //设置类属性

function getLessonOne(){        //定义方法,得到属性mLessonOne的值

...

}

}

4.方法中参数命名

第一个字符使用小写字母。

在首字符后的所有字符都按照类命名规则首字符大写。

如:

class EchoAnyWord{

function echoWord($firstWord,$secondWord){

...

}

}

5.引用变量

引用变量要带有‘r’前缀。如:

class Example{

$mExam = "";

funciton setExam(&$rExam){

...

}

function getExam(){

...

}

}

6.变量命名

所有字母都使用小写。

使用‘_’作为每个词的分界。

如:$msg_error、$chk_pwd等。

临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,s 它们一般用于字符型。

实例变量前面需要一个下划线, 首单次小写,其余单词首字母大写。

7.全局变量

全局变量应该带有前缀‘g’。如:global $gTest。

8.常量、全局常量

常量、全局常量,应该全部使用大写字母,单词之间用‘_’来分割。如

define('DEFAULT_NUM_AVE',90);

define('DEFAULT_NUM_SUM',500);

9.静态变量

静态变量应该带有前缀‘s’。如:

state $sStatus = 1;

10.函数命名

所有的名称都使用小写字母,多个单词使用‘_’来分割。如:

function this_good_idear(){

...

}

以上的各种命名规则,可以组合一起来使用,如:

class OtherExample{

$msValue = "";        //该参数既是类属性,又是静态变量

}

就一般约定而言,类、函数和变量的名字应该是能够让代码阅读者能够容易地知道这些代码的作用,应该避免使用凌磨两可的命名。

1.  类命名

  • 使用大写字母作为词的分割,其他的字母均使用小写。
  • 名字的首字母使用大写。
  • 不要使用下划线('_')。
  • 如:Name、SuperMan、BigClassObject。

2. 类属性命名

  • 属性命名应该以字符‘m’为前缀。
  • 前缀‘m’后采用与类命名一致的规则。
  • ‘m’总是在名字的开头起修饰作用,就像以‘r’开头表示引用一样。
  • 如:mValue、mLongString等

3. 方法的命名

  • 方法的作用都是执行一个动作,达到一个目的。所以名称应该说明方法是做什么的。一般名称的前缀都是有第一规律的,如is(判断)、get(得到),set(设置)。
  • 方法的命名第一个单词的首字母小写,其后单词的首字母大写。。如:
1
2
3
4
5
6
7
class StartStudy{                       //设置类
        $mLessonOne "";               //设置类属性
        $mLessonTwo "";               //设置类属性
        function getLessonOne(){        //定义方法,得到属性mLessonOne的值
            ...
    }
}

4. 方法中参数命名

  • 第一个字符使用小写字母。
  • 在首字符后的所有字符都按照类命名规则首字符大写。
  • 如:
1
2
3
4
5
class EchoAnyWord{
    function echoWord($firstWord,$secondWord){
        ...
    }
}

5. 引用变量

  • 引用变量要带有‘r’前缀。如:
1
2
3
4
5
6
7
8
9
class Example{
    $mExam "";
    funciton setExam(&$rExam){
        ...
    }
    function getExam(){
        ...
    }
}

6. 变量命名

  • 所有字母都使用小写。
  • 使用‘_’作为每个词的分界。
  • 如:$msg_error、$chk_pwd等。
  • 临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,s 它们一般用于字符型。
  • 实例变量前面需要一个下划线, 首单次小写,其余单词首字母大写。

7. 全局变量

  • 全局变量应该带有前缀‘g’。如:global $gTest。

8. 常量、全局常量

  • 常量、全局常量,应该全部使用大写字母,单词之间用‘_’来分割。如
1
2
define('DEFAULT_NUM_AVE',90);
define('DEFAULT_NUM_SUM',500);

9. 静态变量

  • 静态变量应该带有前缀‘s’。如:
1
state $sStatus = 1;

10. 函数命名

  • 所有的名称都使用小写字母,多个单词使用‘_’来分割。如:
1
2
3
function this_good_idear(){
    ...
}

以上的各种命名规则,可以组合一起来使用,如:

1
2
3
class OtherExample{
    $msValue "";        //该参数既是类属性,又是静态变量
}

mysql及php命名规范的更多相关文章

  1. MySQL大小写敏感问题和命名规范

    注:本文大部内容参考自互联网相关文章 1.MySQL大小写敏感规则 MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写 ...

  2. mysql命名规范

    1.数据库表命名规范: (1)表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部大写或首字母大写,表名中包含的单词首字母大写. (2)数据库表名应该有意义,并且易于理解,最好使用可以 ...

  3. mysql基本约定与命名规范

    一.约定 1.如无特殊需求,所有表使用innodb引擎 2.如无特殊需求,所有主键均为自增类型 3.如无特殊需求,所有字段均为NOT NULL,并给定默认值 4.所有字段均设置备注,枚举字段需要说明每 ...

  4. MySql数据库细节使用规范

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省 ...

  5. MySQL数据库25条规范解读

    一.基础规范 (1)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间(由于移动设备原因最好使用utf8mb4) (2)禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

  6. 关于redis key命名规范的设计

    一.实现目标 简洁,高效,可维护 二.键值设计规约 1 . Redis key命名风格 [推荐]Redis key命名需具有可读性以及可管理性,不该使用含义不清的key以及特别长的key名: [强制] ...

  7. MySQL 设计与开发规范

    MySQL 设计与开发规范 1 目的 本规范的主要目的是希望规范数据库设计与开发,尽量避免由于数据库设计与开发不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好保 ...

  8. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  9. Java命名规范

    驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名. 为避免歧 ...

随机推荐

  1. Echarts ecomfe 触摸屏 touch 在IE10下无法显示悬浮框

    问题描述: Windows 8 IE10浏览http://echarts.baidu.com/doc/example/line2.html 时,鼠标放置在数据点上时无法显示悬浮框. 正常情况为: 而现 ...

  2. cocospods的安装与应用

    安装cocospods 一,升级Ruby环境 ~ xxx$ sudo gem update --system   二,安装Cocoapods时需要访问cocoapods.org,该网站可能被墙掉,但是 ...

  3. Android按钮的四种点击事件

    本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(B ...

  4. iOS之 动态热修补技术JSPatch

    所谓动态热修补就是把能够导致app 崩溃的严重bug,提交新版本到appstore 审核速度太慢影响用户使用,这时候就可以利用 JSPatch 可以让你用 JavaScript 书写原生 iOS AP ...

  5. 分享git的常用命令

    Git操作笔记       1.创建目录         $ mkdir learngit         $ cd learngit       2.把新建的目录变成仓库         $ git ...

  6. Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver

    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver 报错信息:

  7. INFORMATICA 的调优之一 源数据的优化

    5W1H法来实现源数据的优化 做数据仓库项目的朋友都能感到数据质量和数据抽取展现的性能是整个数据仓库项目的重点.下面谈谈我在DW项目中处理源数据质量问题的5W1H方法. 5W : WHO ,WHAT, ...

  8. Sql server存储过程中常见游标循环用法

    用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE ), ), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELE ...

  9. Effective Java 60 Favor the use of standard exceptions

    Benefits to reuse preexisting exceptions It makes your API easier to learn and use. Programs using y ...

  10. 长文件名导致的0x80070057

    今天遇到件怪事. 把一个视频集(86G)从电脑硬盘转移动硬盘的时候里面时报里面的两个文件夹里的视频和字幕不能复制 错误代码0x80070057 这个视频集是从校内PT是下下来的,电脑是联想Y560-w ...