如何判断规范是使用面向数据库的方法还是面向类设计的方法建模的

时间:2012-11-07 14:49:57

标签: database oop database-design class-design

鉴于问题规范,如何判断它是数据库设计问题还是类设计(面向对象设计)问题?

3 个答案:

答案 0 :(得分:2)

我想到的是,在OOP中,类(对象)包含方法,而数据库只是关系和值的集合。 因此:

如果您可以说问题是关于规范中的“事物”如何相互关联,那么您就会遇到数据库设计问题。

如果它是关于规范中的“事物”可以做什么,那么你将在面向对象的编程中进行更多的建模。

答案 1 :(得分:1)

如果您正在使用数据库并创建域对象,那么两者都是。数据库设计和类设计是两回事,如果您使用的是数据库和类,则两者都是必需的。这不像你选择其中一个。

这是ORM发挥作用的地方。当数据层从数据库中检索信息时,一种典型的方法是将关系数据转换为域对象并将其传递给业务逻辑层,以便应用程序的其余部分可以处理域对象而不是关系模型

然后你的ORM在持久化数据时反其道而行之:它需要一个域实体并将其转换回可以保存到数据库的关系结构。

注意:我在这里假设一个关系数据库。如果没有,请将关系替换为您正在使用的任何类型的持久层。

答案 2 :(得分:1)

我认为,作为面向数据库的问题应该解决的唯一规范是那些专注于操纵结构化数据类型的规范。如果您的规范是关于“存储客户记录”,“删除订单记录”,“将价格值从12更改为33以进行记录匹配规范”,那么您就拥有了一个数据库项目。

我没有看到那种问题规范,因为我工作的Cobol团队雇用了一个系统~~无政府主义者~~分析师。几乎我以后所做的每一个项目都有一些要求,这些要求不是关于数据的存储方式,而是数据的含义。

如果您的要求是“用户可以创建客户。客户可以下订单。订单包含产品。订单可以有交货方式,付款方式和状态。状态遵循业务流程”,您有OO问题。您可能需要一个存储机制 - 数据库将是一个很好的选择 - 但您拥有的业务逻辑无法通过创建结构化数据类型和关系来专门实现。