1.考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。
2.数据库表命名规范
数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.
相关应用的数据表使用同一前缀,如论坛的表使用cdb_前缀,博客的数据表使用supe_前缀,前缀名称一般不超过5字
比如:
web_user
web_group
supe_userspace
备份数据表名使用正式表名加上备份时间组成,如:
web_user_20070403
web_group_20070403
supe_userspace_20070403
3.字段类型规范
规则:用尽量少的存储空间来存数一个字段的数据.
比如能用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
4.数据库设计文档规范
所有数据库设计要写成文档,文档以模块化形式表达.大致格式如下:
'-------------------------------------------
' 表名: web_user
' 作者: Aeolus(傻鱼)
' 日期: 2007-04-11
' 版本: 1.0
' 描述: 保存用户资料
' 具体内容:
' UserID int,自动增量 用户代码
' UserName char(12) 用户名字
' ......
'--------------------------------------------
5.索引使用原则:
1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引.考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写.
2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上.
3) 不要索引blob/text等字段,不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间.
4) 不要索引常用的小型表
不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了.对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间.
6.sql语句规范
所有sql关键词全部大写,比如SELECT,UPDATE,FROM,ORDER,BY等,所有的表名和库名都要用``包含
如:
SELECT COUNT(*) FROM `cdb_members` WHERE `userName` = 'aeolus';
10.其他设计技巧
1) 避免使用触发器
触发器的功能通常可以用其他方式实现.在调试程序时触发器可能成为干扰.假如你确实需要采用触发器,你最好集中对它文档化.
2) 保存常用信息
让一个表专门存放一般数据库信息非常有用.在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息.这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用.
4) 包含版本机制
在数据库中引入版本控制机制来确定使用中的数据库的版本.时间一长,用户的需求总是会改变的.最终可能会要求修改数据库结构.把版本信息直接存放到数据库中更为方便.
5) 编制文档
对所有的快捷方式、命名规范、限制和函数都要编制文档.
采用给表、列、触发器等加注释的数据库工具.对开发、支持和跟踪修改非常有用.
对数据库文档化,或者在数据库自身的内部或者单独建立文档.这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少.
6) 测试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段.最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求.测试需要在把新数据库投入实际服务之前完成.
7) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库.换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据.
分享到:
相关推荐
总之,梁敬彬大师的《赢在起点-数据库设计规范》深入浅出地讲解了数据库设计的关键点,对于从事Oracle、MySql、DB2数据库工作的专业人士,是不可多得的学习资料。通过理解和应用这些规范,可以提高数据库的稳定性和...
本教程将详细讲解如何使用JSP(JavaServer Pages)配合JavaBean来实现MySQL数据库的子查询分页功能。在Eclipse 3.4环境下,我们可以轻松地完成这一过程。 首先,我们需要理解JSP和JavaBean的基本概念。JSP是一种...
在台湾地区,这本书被命名为《C++Builder数据库程式设计》。C++Builder是一款由Embarcadero Technologies开发的集成开发环境(IDE),它结合了C++编程语言和VCL(Visual Component Library)框架,为开发者提供了...
在这一章节,首先讲解了数据库运行的环境,可能涉及到的操作系统、数据库管理系统(如MySQL、PostgreSQL)和其他软件依赖。接着,描述了数据库的命名规则,这些规则通常是为了保持数据库对象(如表、字段)的命名...
3. **数据库设计**:介绍关系数据库理论,如范式,以及如何进行数据库规范化设计,优化查询性能。 4. **存储过程和触发器**:如何使用存储过程和触发器来增强数据库的功能和自动化任务。 5. **数据库备份与恢复**...
Java Bean遵循一定的命名和设计规范,具备属性、getter/setter方法以及构造函数。在这个场景下,Bean可能会有如下的属性: 1. **username**:数据库用户名。 2. **password**:数据库密码。 3. **url**:数据库连接...
它可能包含了SQL的各个版本(如SQL-92, SQL-99, SQL:2003等)的语法规范,以及各种数据库系统(如MySQL, Oracle, SQL Server等)之间的差异,帮助读者更好地理解和应用SQL。 综合以上,这个资源包对于初学者或者...
3. **MySQL.chm** - MySQL是一款广泛使用的开源关系型数据库管理系统,该手册提供了关于SQL语句、数据类型、存储引擎、事务处理、视图、触发器等全面的指南。对于理解数据库设计和管理,以及优化查询性能有极大的...
数据库实施是指根据数据库设计结果,创建MySQL数据库和表。数据库实施包括创建联系人表和用户表等。 公共模块的开发 公共模块的开发是指根据模块设计结果,开发公共模块的代码。公共模块的开发包括Contact类、...
PowerDesigner不仅支持物理建模,还支持概念建模和逻辑建模,使得数据库设计过程更为系统化和规范化。 在数据库建模过程中,PowerDesigner首先引入的是概念数据模型(Conceptual Data Model,CDM)。CDM是基于业务...
这是一个基于Java Swing和MySQL数据库实现的仓库商品管理系统项目。该系统提供了对仓库商品进行管理的完整功能,包括商品入库、出库、库存更新以及管理员登录等操作。下面将详细讲解这个系统涉及到的主要技术和知识...
在本教程中,你将学习到PHP如何与MySQL数据库交互,处理HTTP请求,生成动态网页内容,以及如何编写高效、可维护的PHP代码。 【内容概览】: 1. **数据库设计**:在新闻系统中,可能需要设计如`news`(新闻表)、`...
手册会详细讲解如何设计和使用这些类型,以及如何通过泛型、枚举等特性提高代码的灵活性和安全性。 此外,手册还强调了面向对象设计原则。这包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则...
总结来说,【家教平台管理系统】是一个全面的SSH框架实践案例,结合MySQL数据库,为学习者提供了实战练习的机会。通过学习和研究这套系统,不仅可以掌握SSH框架的使用,还能深入了解数据库设计、MVC模式、依赖注入等...
在MySQL数据库方面,手册详细讲解了建表规约、索引规约、SQL语句的编写以及ORM映射的注意事项,这些都是保证数据库操作性能和数据安全的关键。 工程结构部分关注了应用分层、二方库依赖和服务器配置,这些都是确保...
本手册包含了丰富的知识点,包括编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约等多个方面,覆盖了开发过程中的各个关键环节。 首先,编程规约部分强调了命名风格的一致性和可读性,...
3. 数据库设计:包括ER图(实体关系图)设计、范式理论和数据库规范化,帮助理解如何有效地组织和设计数据库架构。 4. 数据库性能优化:如何通过索引、查询优化、硬件配置调整等手段提升数据库性能。 5. 数据库备份...
军规适用场景:并发量大、数据量大的互联网业务,解读:讲解原因,解读比军规更重要”表明了这份文档旨在为处理高并发和大数据量场景下的数据库提供一套优化原则,并且强调了对这些原则背后原因的讲解比单纯规则更为...