哪个应该先做?域模型或数据模型?

时间:2013-07-14 16:16:11

标签: oop database-design model domain-driven-design

嗨,大家好,我说我有一个新项目库存系统。我将使用Java。我去我的客户收集一些要求,在我收集它们之后,我将对这些要求进行建模。我应该先做哪个?我的类图/域模型?还是数据模型?为什么?我真的很想你的意见。你在软件开发的现实世界中做了什么?

我正在使用这些技术:Java,Hibernate(ORM),Scrum(方法论),postgresql(数据库)

3 个答案:

答案 0 :(得分:2)

不要先做任何一个。并行创建域(对象)模型和ER模型。它们应该非常相似,除了域模型关注数据和行为,而ER模型只关注数据。

然而,你需要非常小心,以避免许多从业者,甚至专家,陷入陷阱。这就是分析和设计之间的混淆。您的域模型和ER模型都应该是分析模型而不是设计模型。这意味着它们描述了问题和要求,而不是您在设计解决方案时要添加的功能。

特别是,您在本论坛中看到的许多ER图都是关系数据模型,即使它们使用ER表示法。它们结合了外键等设计功能,并不局限于信息要求中固有的功能。

在设计开始之前未能相当精确地确定要求是大型项目失败的主要原因。在小规模的项目中,不是那么多。

答案 1 :(得分:2)

我的2美分......

数据往往寿命更长,更稳定,最终比代码更重要。所以你的方法应该是以数据为中心的。如果您正确地构建和规范化数据(并且ER图是这样做的重要工具),其余的将自然地遵循。

答案 2 :(得分:1)

IMO你绝对不应该首先考虑你的数据模型。

原因在于您的域层可以满足所有业务需求 您的域层必须是不可知的。它不应该与任何特定的技术实现联系在一起,也不应该引用任何类型的框架。它应该是独立的并且单独工作。在设计域层时,不要考虑持久性,甚至不要考虑数据的显示方式。如果您需要存储数据的方法或从Session等特定UI容器收集信息的方法,请使用Interfaces

在设计数据模型时,您将与用于存储数据的RDBMS绑定。您将考虑构建架构以有效存储和访问数据的方式。但事情是,业务部门并不关心您的查询有多好。

如果可以的话,推迟UI,框架,数据库等关键决策是一件好事。这样你就只关注业务需求。