1、MYSQL 数据库命名和设计规范 1.设计标准 1) 标准化和规范化 数据标准化有利于消除数据库中数据冗余。标准化有好多个形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达成了最好平衡。简单来说,遵守3NF 标准数据库表设计标准是:“One Fact in One Place”即某个表只包含其本身基础属性,当不是它们本身所含有属性时需进行分解。表之间关系经过外键相连接。它含有以下特点:有一组表专门存放经过键连接起来关联数据。 举例:某个存放用户及其相关定单3NF 数据库就可能有两个表:Customer和Order。Order表不包含定单关联用户任何信
2、息,但表内会存放一个键值,该键指向Customer表里包含该用户信息那一行。 实际上,为了效率缘故,对表不进行标准化有时也是必需。 2) 数据驱动 采取数据驱动而非硬编码方法,很多策略变更和维护全部会方便得多,大大增强系统灵活性和扩展性。 举例,假如用户界面要访问外部数据源(文件、XML 文档、其它数据库等),不妨把对应连接和路径信息存放在用户界面支持表里。还有,假如用户界面实施工作流之类任务(发送邮件、打印信笺、修改统计状态等),那么产生工作流数据也能够存放在数据库里。角色权限管理也能够经过数据驱动来完成。实际上,假如过程是数据驱动,你就能够把相当大责任推给用户,由用户来维护自己工作流过程。
3、 3) 考虑多种改变 在设计数据库时候考虑到哪些数据字段未来可能会发生变更。 举例,姓氏就是如此(注意是西方人姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存放用户信息时,在单独一个数据表里存放姓氏字段,而且还附加起始日和终止日等字段,这么就能够跟踪这一数据条目标改变。 2.数据库包含字符规范 采取26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共63个字符.不能出现其它字符(注释除外). 注意事项: 1) 以上命名全部不得超出30个字符系统限制.变量名长度限制为29(不包含标识字符). 2) 数据对象、变量命名全部采取英文字符,严禁使用汉字命名.绝对不要在对象名字符之间
4、留空格. 3) 小心保留词,要确保你字段名没有和保留词、数据库系统或常见访问方法冲突 5) 保持字段名和类型一致性,在命名字段并为其指定数据类型时候一定要确保一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了. 3.数据库命名规范 数据库,数据表一律使用前缀 正式数据库名使用小写英文和下划线组成,尽可能说明是那个应用或系统在使用.比如: web_19floor_net web_car 备份数据库名使用正式库名加上备份时间组成,如: web_19floor_net_0403 web_car_0403 4.数据库表命名规范 数据表名使用小写英文和下划线组成,尽可能说明是那个应用
5、或系统在使用. 相关应用数据表使用同一前缀,如论坛表使用cdb_前缀,博客数据表使用supe_前缀,前缀名称通常不超出5字 比如: web_user web_group supe_userspace 备份数据表名使用正式表名加上备份时间组成,如: web_user_0403 web_group_0403 supe_userspace_0403 5.字段命名规范 字段名称使用单词组合完成,首字母小写,后面单词首字母大写,最好是带表名前缀. 如 web_user 表字段: userId userName userPassword 表和表之间相关联字段要用统一名称, 如 web_user 表里面 u
6、serId 和 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.数据库设计文档规范 全部数据库设计要写成文档,文档以模块化形
7、式表示.大致格式以下: - 表名: web_user 作者: Aeolus(傻鱼) 日期: -04-11 版本: 1.0 描述: 保留用户资料 具体内容: UserID int,自动增量 用户代码 UserName char(12) 用户名字 8.索引使用标准: 1) 逻辑主键使用唯一成组索引,对系统键(作为存放过程)采取唯一非成组索引,对任何外键列采取非成组索引.考虑数据库空间有多大,表怎样进行访问,还有这些访问是否关键用作读写. 2) 大多数数据库全部索引自动创建主键字段,不过可别忘了索引外键,它们也是常常使用键,比如运行查询显示主表和全部关联表某条统计就用得上. 3) 不要索引blob/
8、text等字段,不要索引大型字段(有很多字符),这么作会让索引占用太多存放空间. 4) 不要索引常见小型表 不要为小型数据表设置任何键,假如它们常常有插入和删除操作就更别这么作了.对这些插入和删除操作索引维护可能比扫描表空间消耗更多时间. 9.sql语句规范 全部sql关键词全部大写,比如SELECT,UPDATE,FROM,ORDER,BY等,全部表名和库名全部要用“包含 如: SELECT COUNT(*) FROM cdb_members WHERE userName = aeolus; 10.其它设计技巧 1) 避免使用触发器 触发器功效通常能够用其它方法实现.在调试程序时触发器可能成
9、为干扰.假如你确实需要采取触发器,你最好集中对它文档化. 2) 使用常见英语(或其它任何语言)而不要使用编码或拼音首字母缩写 在创建下拉菜单、列表、报表时最好根据英语名排序.假如需要编码或拼音首字母缩写,能够在旁边附上用户知道英语. 3) 保留常见信息 让一个表专门存放通常数据库信息很有用.在这个表里存放数据库目前版本、最近检验/修复(对Access)、关联设计文档名称、用户等信息.这么能够实现一个简单机制跟踪数据库,当用户埋怨她们数据库没有达成期望要求而和你联络时,这么做对非用户机/服务器环境尤其有用. 4) 包含版本机制 在数据库中引入版本控制机制来确定使用中数据库版本.时间一长,用户需求
10、总是会改变.最终可能会要求修改数据库结构.把版本信息直接存放到数据库中更为方便. 5) 编制文档 对全部快捷方法、命名规范、限制和函数全部要编制文档. 采取给表、列、触发器等加注释数据库工具.对开发、支持和跟踪修改很有用. 对数据库文档化,或在数据库本身内部或单独建立文档.这么,当过了十二个月多时间后再回过头来做第2 个版本,犯错机会将大大降低。 6) 测试、测试、反复测试 建立或修订数据库以后,必需用用户新输入数据测试数据字段.最关键是,让用户进行测试而且同用户一道确保选择数据类型满足商业要求.测试需要在把新数据库投入实际服务之前完成。 7) 检验设计 在开发期间检验数据库设计常见技术是经过其所支持应用程序原型检验数据库.换句话说,针对每一个最终表示数据原型应用,确保你检验了数据模型而且查看怎样取出数据。