在系统开发的设计阶段,类设计应该主导数据库的设计,还是数据库设计应该主导类设计?我意识到有几种情况下,一方已经存在,需要围绕现有的设计另一方。但是,假设您可以从头开始,哪种方法更好?我倾向于先进行类设计,然后再进行数据库设计,但希望听取一些关于这个想法的意见。需要考虑哪些扩展问题?实施问题?
我认为这取决于应用程序的性质。如果您的应用程序主要关注数据方面,那么您应该优先考虑数据库而不是应用程序设计;如果您的应用程序主要是业务逻辑或计算方面,那么您可能想优先考虑应用程序设计。
另一个考虑因素是应用程序的长期性和覆盖范围 - 正如Jay所说,多个应用程序使用同一个数据库并不罕见。但我实际上建议为数据库提供基于服务或消息的接口 - 我认为您不希望允许多个应用程序直接访问数据。在这种情况下,我认为您会在服务层方面非常重视设计工作。
您还可以考虑将设计映射到业务领域 - 理想情况下,您希望您的软件反映业务概念(请查看Evans的“领域驱动设计”)。通常情况下,使用对象技术而不是实体关系模型(经典问题是如何将继承映射到数据库模型)更容易实现此目标。
最后,重要的是考虑团队的技能和倾向 - 让一群数据库专家设计对象模型通常会导致陡峭的学习曲线(反之亦然)。
你的数据库应该经过深思熟虑,但是应用程序和数据库设计都不应该对彼此产生重大影响。你的应用程序应该是数据库无关的。为了存储应用程序数据,你应该依赖于一个提供必要的翻译从你的领域对象到数据库表的层。