我们应该首先进行实体关系建模还是面向对象建模?


Answers:


13

您可能想要尝试遵守尽可能延迟架构决策的原则。想法是,与现在相比,您对问题域的了解会更多,因此,您今天做出的任何决定都是可疑的。

与此搭配的另一个很好的原则可能是首先尝试尝试需求中风险最高的部分-这样的想法是,如果您做了简单的部分,然后发现风险高的部分将您朝着不同的方向发展,那么您就没有了重新做容易的部分。这里的冒险意味着您不确定应该如何做。

鉴于这两种情况,并且鉴于我经常尝试从OO角度着手,您可能会首先尝试从应用程序中风险最高的部分的OO模型入手,并实施最少数量的可满足要求的代码有风险的要求。然后,根据需要开始扩展OO模型,以添加所需的功能。一直以来,您可以完全推迟使用SQL或NoSQL还是平面文件或云存储等等的决定……您最终可能会发现根本不需要关系(消除了对ER模型的需求)。


7

ER模型决定了应用程序的数据将如何持久保存,而OO模型则决定了如何将相同的数据存储在内存中或应用程序运行时。因此,数据库模式设计(ER模型)和类结构设计(OO模型)是相关的设计考虑因素,通常甚至可以同时考虑。实际上,如果您使用的是对象关系映射(ORM)工具,则您的ER模型和OO模型可能是相同的。换句话说,您的类(OO模型)的注释方式可以使它们自己指定ER模型。

但是,在设计之前,请确保您对软件的实际需求,将要使用的软件,将如何使用它以及将由谁使用的软件有很好的了解。许多开发人员在完全理解产品要解决的需求之前就开始考虑设计决策,最终得出的设计不适合应用程序的真正目的。


+1用于识别两种建模类型之间的差异。我不太同意您可以同时考虑这两种模型。此外,一些面向对象的爱好者认为您的面向对象模型和ER模型不应始终相同。但是,可以使用OO模型作为数据库设计的基础,但是这种转换有些棘手。
NoChance 2012年

@EmmadKareem没错,同时考虑两个模型并不总是合适的。我说的是关于使用ORM和注释类的想法,因此可以将ER模型设计集成到OO模型中。有些人选择以这种方式开发应用程序,实质上是同时实现OO和ER。
CFL_Jeff 2012年

不要将域模型误认为数据模型-不要将对象(代表单个实例)与数据库表(其中包含事物的集合)混淆
Narender Parmar,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.