- 所有开发人员共用一个数据库。
- 每个开发者都有自己的数据库。
两者皆可 -
我喜欢在上线或进入“正式”测试环境之前对更改进行测试的单个数据库。这是开发人员的理智检查; 它与实时系统保持同步,并确保他们始终考虑彼此的更改。规则应该是,如果更改可能会破坏其他内容,则不会在此处执行更改。
当有多个开发人员进行更新时,每个开发人员都拥有自己的数据库是很好的(甚至必要的)选择。它允许他们获得所有想要的开发灵活性,而不会破坏其他开发人员的工作。
关键是建立一个从开发到实时系统的数据库更改流程,并遵循此流程。
共享数据库
个人数据库
我们使用共享的开发数据库,并且效果很好。我们的架构很少更改以一种使其与旧版本不兼容的方式,但有时会在上线之前出现设计变更,然后我们只需要求其他开发人员进行更新即可。
我们确实有单独的开发应用程序(Web)服务器,但它们共享同一个数据库。我们的开发人员确实有使用自己的数据库的选项,因为他们知道如何设置这个,而且偶尔会这样做,但仅是暂时的。对我们来说,通常情况下是共享数据库。
我会选择解决方案#1:所有开发人员共用一个数据库。
优点
缺点
至于解决方案#2:每个开发人员拥有独立的数据库;
优点
缺点
考虑到上述情况,我建议根据您公司的规模而定:
如果您的公司不需要进行集成测试,则应选择验收测试,这一步在进入生产之前非常关键。
每个开发者加上一个持续集成和构建服务器来运行单元测试和集成测试。这样可以让你兼顾两全。
一旦数据库的修改量达到一定级别,让所有开发人员修改同一个开发数据库就会迅速变得不太生产力,因为它会强制开发人员在准备好检入之前部署共享数据库的更改,这意味着代码其他部分可能会不必要地出现故障。
我们两者都做:
我们在这里使用代码生成,并且我们的数据库也是由它生成的。因此,每个开发人员的电脑上都有一个实例,用于生成数据库。然后,我们使用生成的脚本将更改应用于中央测试数据库。如果一切顺利,我们会在发布期间将更改应用于生产数据库。
这种方法的好处在于,当我们的“真相之源”被检入源代码控制时,所有数据库更改都会在其他开发人员重新基础和重新生成时自动分发。对我们来说效果很好。
最好的方法是在测试/质量保证服务器上使用单个数据库,每个开发人员都有自己的一个数据库(可能在本地计算机上),这样10个开发人员就可以使用10+1个数据库。
与一般开发相同的方法:每个开发人员在本地计算机上拥有源代码的副本。
此外,多数据库方法简化了将数据库模式保存在版本控制系统中。 我们在SVN中保存数据库创建脚本。
我们使用此方法,如此处所述: http://www.sqlaccessories.com/Howto/Version_Control.aspx