0

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

4

3 回答 3

2

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

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

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

于 2012-11-07T14:58:45.227 回答
1

如果您使用数据库并创建域对象,则两者兼而有之。数据库设计和类设计是两件不同的事情,如果您使用数据库和类,两者都是必要的。这不像你选择一个或另一个。

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

然后你的 ORM 在持久化数据时会做相反的事情:它需要一个域实体并将其转换回可以保存到数据库中的关系结构。

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

于 2012-11-07T14:53:10.507 回答
1

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

自从我工作的 Cobol 团队雇佣了一名系统~~无政府主义者~~分析师以来,我还没有见过这种问题规范。从那以后,我从事的几乎每个项目的要求都不是关于如何存储数据,而是关于数据的含义。

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

于 2012-11-07T15:22:33.383 回答