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) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库.换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据

转载于:https://www.cnblogs.com/mo-beifeng/archive/2011/08/17/2143235.html

MYSQL数据库命名及设计规范相关推荐

  1. mysql数据库是的缩写_MYSQL数据库命名与其设计规范

    你是否对获得MYSQL数据库命名与其设计规范 的实际操作感到十分头疼?如果是这样子的话,以下的文章将会给你相应的解决方案,以下的文章主要是介绍获得MYSQL数据库命名与其设计规范 的方案,以下就是相关 ...

  2. mysql 表名规范_MYSQL数据库命名及设计规范

    1.设计原则 1) 标准化和规范化 数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能.扩展性和数据完整性方面达到了最好平衡. ...

  3. 数据库命名和设计规范

    数据库规范 命名规则 全局命名规则 使用具有意义的英文词汇命名,词汇中间以下划线分隔"_" 命名只能使用英文字母.数字.下划线,以英文字母开头 避免用数据库中的保留字如:SELEC ...

  4. 宝塔中mysql数据库命名小坑

    今天在通过宝塔新建网站,添加mysql数据库,名字中间有下划线,发现能够创建成功,但是实际链接后,是没有这个数据库的.是宝塔的原因还是liunx服务器的原因? 不支持下划线的数据库名字吗? 比如 bo ...

  5. mysql数据库命名规范

    文档摘抄来自:https://blog.csdn.net/chl191623691/article/details/78247497/ 本人经验:不要出现短横线等等其他字符!! 1. 数据库涉及字符规 ...

  6. MySQL数据库命名规范及约定

    一.[操作规范] 1. 如无备注,则表中的第一个id字段一定是主键且为自动增长: 2. 如无备注,则数值类型的字段请使用UNSIGNED属性: 3. 如无备注,排序字段order_id在程序中默认使用 ...

  7. MySQL数据库名字能不能用中划线 ‘-’ ?

    MySQL数据库名字能不能用中划线 '-' ? 问题 解决办法 问题 MySQL数据库命名:   按规定来讲,MySQL数据库命名规范有以下几条: 不能与其他数据库重名,否则将发生错误 名称可以由任意 ...

  8. 202-8-15第八组---MySQL数据库

    目录 一.数据库 二.MySql 1.概念 2.基本操作 (1)登录MySQL (2)创建一个数据库 (3)查看所有的数据库 (4)使用数据库 ​编辑 3.SQL语言 4.SQL分类 三.DCL--- ...

  9. web mysql 界面表命名规范_MySql数据库表字段命名及设计规范

    1.设计原则 1) 标准化和规范化web 数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)一般被认为在性能.扩展性和数据完整性方面达到了最 ...

最新文章

  1. php mysql千万级数据修改_PHP 结合 MySQL 千万级数据处理
  2. ASP.NET MVC中你必须知道的13个扩展点
  3. android汽车之家顶部滑动菜单,Android自定义控件之仿汽车之家下拉刷新
  4. .bin 文件用excel文件打开_用PYTHON读写excel文件
  5. invalid floating point operation什么意思_Point-MVSNet:基于多视角的点云重建网络
  6. DWR实现服务器端向客户端推送消息
  7. js怎么获取ueditor值_UEditor获取内容
  8. 简单的编程用c语言,终于学会了用c语言实现简单的面相对象的编程方法了
  9. [转]麻省理工学院(MIT)研究生学习指导[上]
  10. 利用WebUtil删除Cookies
  11. CodeForces 746D Green and Black Tea 有坑
  12. ‘,‘ expected.Vetur(1005)
  13. 使用最小二乘法计算机器学习算法之线性回归(计算过程与python实现)
  14. 学生计算机编程比赛获奖感言,学生比赛获奖感言4篇
  15. TNS-12547和TNS-12555错误解决
  16. phpadmin安装到mysql中,mysql 和phpadmin安装
  17. Java程序员情人节_关于程序员:一封来自Java程序员的情书
  18. 送给23岁的风华年少
  19. 深度残差网络(ResNet)浅析
  20. 满满的大片既视感,还原 Pwn2Own 黑客大赛首日战况

热门文章

  1. SOA改变的企业软件生态
  2. 这两天被木马程序搞得好烦
  3. IT人母亲的美国之行(7)
  4. Vivado不同版本打开IP核锁定的解决办法
  5. FPGA中IBERT 核的应用(二)
  6. 解决Moodle日历乱码的最佳方案
  7. filebeat配置详解
  8. 使用阿里云配置管理ACM实现zookeeper依赖服务的透明Failover迁移
  9. Jquery封装(学习)01
  10. 常见拒绝服务攻击行为特征与防御方法