什么第一个模型或数据库?

时间:2011-04-22 13:52:24

标签: database-design class-design

我的问题是关于软件开发应该先做什么:数据库模型或域模型?或者这些概念是相似的? 感谢。

6 个答案:

答案 0 :(得分:8)

这取决于您是数据库还是对象。每个人都要求至高无上,并说他们的专长应该先行。

我不同意这两点。你应该做的第一件事是很好地理解你的问题。模型和架构将从中流出。

无论你做什么,你都无法摆脱对象关系的不匹配阻碍。对象是基于实例的; SQL是基于集合的。你还有问题。

答案 1 :(得分:1)

设计好的数据库和对象模型,并利用对象关系映射(ORM)层来解决阻抗不匹配问题(这就是它们的设计目的)。

答案 2 :(得分:1)

答案很大程度上取决于您正在开发的应用程序类型以及您正在使用的语言/框架。如果您要在数据库中编写大量业务逻辑(如存储过程,视图,触发器),那么首先设计数据库是有意义的。 如果您打算使用一些将域模型映射到数据库的框架(以及可能的模式生成,如hibernate),那么您将首先编写Domain类。

答案 3 :(得分:1)

首先应该是概念设计(以利益相关者所熟悉的方式描述问题域),而模型是基于概念设计的逻辑设计。有一套相当全面的工具和技术可用于从概念要求中导出对象模型。从概念到模式设计的映射很少有通常熟悉的工具和技术。 (我唯一熟悉的,它是一个很好的,是对象角色建模。)但是,有很好的方法可以使用对象模型来开发模式。所以我更喜欢概念到对象模型到数据模型。

另一种查看问题的方法是,如果您开发数据库,​​那么应用程序往往会将用户转变为服务于数据模型的数据收集代理,从而失去基于用户故事和用例的良好需求的价值(其中第二个)似乎变成了CRUD。)

注意:令人困惑的是,ORM(对象角色建模与ORM(对象关系映射)无关。

答案 4 :(得分:0)

这种血仇比海盗与忍者的年龄大。 :)

在我看来,只是从领域模型开始,首先有助于弥合功能需求和技术设计之间的差距。对象模型比数据模型更能代表业务数据,并且可以在项目早期通过非技术业务分析师和项目经理更好地理解它们。

答案 5 :(得分:0)

盗!忍者!鸡!蛋!

每个项目都不同,有时,数据库的设计决定了您的任务是否成功。如今,这种情况非常罕见,因为硬件和软件已经发生了变化 - 但如果您必须存储和计算大量数据,那么架构可能是您关注的主要问题之一。

大多数情况下,挑战是业务领域。我推荐Evans关于该主题的“域驱动设计” - 但我鼓励您首先使用用例或用户故事捕获业务域;将这些转变为软件是关键的挑战,如果你和你的同事在实体关系中做得最好,那就去做吧;如果你对类层次结构和责任图表感到满意,那也很酷。

我的印象是,行业正在转向对象,而不是表格 - 从职业角度来说,这可能是要走的路。