数据库设计中的敏捷方法

引言

在过去几年中,我们将敏捷方法应用于数据库设计中。我们总结出一些技巧,使得当应用程序 发展时,数据库也能够进化,这是敏捷方法的一个重要属性。我们的方法是通过持续集成以及自动重构, 通过数据库管理人员(DBA)和应用开发人员的紧密合作。这些技巧在应用开发的各个时期都有效。

1 敏捷方法学

近年来,出现了一种新的软件开发方法学—敏捷方法学。这给数据库设计提出了一些新的、巨大的需 求。这些需求的一个中心就是进化设计。在一个敏捷项目中,需要假定我们并不能事先确定系统的需求。 因此在项目的初期有一个详细设计阶段的想法是不现实的。系统的设计必须随着软件的变化而进化。敏捷 方法,尤其是极限编程(XP),通过一些实践使这种进化设计成为可能。在数据库设计采用敏捷方法,反 复迭代。

许多人会怀疑敏捷方法能否用于有大型数据库组件的系统。但我们的确使用了许多敏捷和XP技巧,用 于解决基于大型数据库的项目中的进化与迭代问题。

本文将介绍一些在数据库设计采用敏捷方法的实践。当然,这并不是说我们已经完全解决了数据库进 化的问题,但是我们想提供一些行之有效的方法。

2 积极应对变化

敏捷编程的一个显著特点就是它面对变化的态度。

对软件过程的一般解释是尽早理解需求,停止需求的变动,将这些需求作为设计的基础,停止设计的 变动,然后开始构筑体系。这就是瀑布方法--基于计划的生命周期。

这种方法通过大量的前期工作来减少变化。一旦前期工作完成,需求变化会引起很大的问题。因此当 需求变化时,这样的方法就会有很大的问题,因此需求变动是这种过程的一个很大的问题。

而敏捷编程却以另外一种方式来面对变化。拥抱变化,甚至允许在项目开发的后期发生变化。尽管变 化会被控制,但是这种态度会允许尽可能多的变化。变化部分来自于项目需求的不稳定,部分来自于要支 持变化的商业环境来面对竞争压力。

为了做到这样,必须采取不同的设计态度。设计不仅仅是一个阶段—-在开始建筑之前就大部分完成的 一个阶段;设计是一个持续的过程,与编码、测试甚至发布相关。这是计划设计与进化设计的不同之处。 敏捷方法的一个重要贡献是提出了在可控制方式下的进化设计。因此不是由于设计没有预先计划好,产生 了混乱。

敏捷方法提供了控制进化设计和使其可行的技巧。敏捷方法的一个重要特点就是迭代式开发,即整个 项目生命周期中运行多个完整的软件生命周期循环。敏捷过程在每次迭代中都会度过一个完整的生命周期 。迭代可以完成最终产品的需求子集中编码、测试以及集成代码。敏捷方法迭代时间较短,通常是一周到 两个月之间,而且我们更倾向于更短的迭代周期。

当使用敏捷方法时,最大的问题就是数据库如何进行进化设计。许多人认为数据库设计是前期计划的 工作,而在后期改变数据库设计计划会引起应用软件的崩溃;在配置以后改变数据库设计计划会导致数据 迁移问题。

在过去三年我们参加了一个大型的项目,其中用到了切实可行的进化设计的方法。该项目包括100人的 项目组, 200多张表格,数据库在一年半的最初开发中一直在进化,甚至在为多用户分发的过程中也在进 化。一开始我们一个月迭代一次,过了几个月之后变为2周迭代一次。

随着我们将这些经验推广到项目中越来越多的部分,从越来越多的案例中获得经验。同时,我们也从 其他敏捷项目中吸收了一些经验。

时间: 2024-11-03 20:32:19

数据库设计中的敏捷方法的相关文章

数据库设计中的14个技巧

1. 原始单据与实体之间的关系  可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处.  [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是"一张原始单据对应多个实体"的典型例子.  2. 主键

[收藏]数据库设计中的反规范技术探讨

规范|设计|数据|数据库|数据库设计   数据库设计中的反规范技术探讨   注:这是很久以前在一个论坛看到的文章,觉得写的不错:本着与众多业内人士交流.传播思想的目的展示在此,原论坛的名称已经不记得了,当时亦是转载.你可以任意转载此文,但由此引起的任何道德.法律纠纷与http:blog.csdn.net/aceplus无关,且http:blog.csdn.net/aceplus保证没有将此文用作任何商业和非法用途:如果您是本文的原作者,认为http:blog.csdn.net/aceplus转载

数据库设计中的小经验

http://www.cnblogs.com/guojingyang/archive/2008/11/26/1341406.html   1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处.[例1]:一份员工履历资料,在人力资源信息系统

艾伟也谈项目管理,克服在企业中应用敏捷方法的技术挑战

在企业中应用敏捷方法是一项具有挑战性的任务.实现敏捷不像安装软件那样能在一天内完成.而是需要适应企业环境,其中包括:文化.技术和组织方面.本文将探讨面临的一些挑战,这些挑战与建立开发环境.自动化测试.持续集成相关,并且同在企业环境中明确完成的定义(DoD)相关. 建立开发环境 每位技术负责人和开发经理都想缩减团队成员建立开发环境的时间.然而,为了在项目中获得较高的产出,开发人员要持续投入许多精力,让事情变得有条不紊.缺乏文档,是建立开发环境时间过长的关键原因.第二个关键原因是建立过程中包含多少手

数据库设计中 1对多的关系(专业对学生)问题

问题描述 数据库设计中 1对多的关系(专业对学生)问题 专业表 和 学生表 我想在 专业表里显示学生的信息怎么办 解决方案 另外设计一个数据表来存储对应关系吧. 解决方案二: 专业表里加一个学生id 解决方案三: select 学生表.姓名,学生表.性别 from 学生表 inner join 专业表 on 专业表.专业=学生表.专业 where 专业表=专业 解决方案四: 最简单的是在sql server里面创建一个视图,把两个表拖上来,在专业表的id和学生表的专业id之间画一根线,设置为1:

数据库设计中,范式越高,数据库系统性能会下降吗?

问题描述 在数据库设计中,数据库设计的范式越高,数据库系统性能会下降吗?欢迎大家来发表意见. 解决方案 解决方案二:企业信息化交流QQ群:117973677.欢迎来互动交流解决方案三:一般是的,因为范式越高,需要检查的约束.连接操作越多.解决方案四:空间和时间的权衡

UML在关系型数据库设计中的应用

设计|数据|数据库|数据库设计 1. 介绍 许多人认为面向对象概念和关系型数据库相互不一致,并且不能结合.事实上完全相反!经过灵活的使用,一个关系型数据库能够为面向对象(OO)模型提供一套优秀的实现.同样的模型能够用来开发编程代码和关系型数据库结构. 关系型数据库技术是意义深远的.强大的,但它比许多开发商使你相信的要难得多.单个表是简单易懂的.直观的.但由数以百计的表组成(这是常见的)的应用要彻底了解是相当困难的.这正是OO模型有用之处. OO模型使你深入地.连贯地思考问题. OO模型提供一种问

mysql 整型(int)数字溢出在程序和数据库设计中的考虑

    以下试以整型(int)抛砖引玉: 一:MySQL5     以MySQL5版本为例,大多数管理员可能把自增数字.或者其它应用数字字段的列属性设置为int类型,int占用4个字节,而int又分为无符号型和有符号性.对于无符号型的范围是0 到 4294967295:有符号型的范围是-2147483648 到 2147483647.参考资料可见mysql手册:11.2. 数值类型.     当要在一个数值列内保存一个超出该列允许范围的值时,MySQL的操作取决于此时有效的SQL模式.如果模式未

数据库设计方法、规范与技巧

规范|技巧|设计|数据|数据库|数据库设计 数据库设计方法.规范与技巧(推荐)   一.数据库设计过程数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求.数据库设计中需求分析阶段综合各个用户的应用需求(现实世界的需求),在概念设计阶段形成独立于机器特点.独立于各个DBMS产品的概念模式(信息世界模型),用E-R图来描述.在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系