2014-01-28 46 views
0

数据库在哪里适合面向对象的设计?比方说,例如我有一个简单的文章数据库,我的用例图有搜索文章,查看文章和创建文章的场景。面向对象设计中的数据库?

我应该有一个文章类与类内的数据库连接或只是一个全局数据库类,以便其他类说用户类可以访问相同的连接?

我也应该使用表格作为对象,例如文章是它自己的数据对象,然后像ArticleApi这样的类用于CRUD操作?

另外,如果任何人有任何开始到结束的面向对象的分析和设计教程,将是伟大的。

对不起,我从程序编程实践中获得了这样一个新手问题,并试图进入软件开发的面向对象部分。

回答

1

你没有指定任何特定的平台,所以它不会是一个非常准确的答案。

数据库在哪里适合面向对象的设计?

我猜我们在谈论RDBMS吧?那么,他们没有。这就是为什么我们需要ORM software,如Hibernate for JavaDoctrine for PHP

我应该与类内或到数据库的连接只是一个全球数据库类,这样其他类的文章说类用户类可以访问相同的连接?

我也应该使用表格作为对象,例如文章是它自己的数据对象,然后像ArticleApi这样的类用于CRUD操作?

基本上有对ORM架构两种常用的方法:

  • Data Mapper,你的域对象只是普通的老物件,没有任何依赖关系ORM /数据库。您应该以OO方式为您的模型建模,然后将其映射到您的数据库中。你有一套独立的对象(EntityManagers)来处理实际的持久性。
  • Active Record,其中您的域对象与ORM紧密耦合,并且它们自己提供一组方法来处理与数据库相关的操作。

我个人认为数据映射的方法是优于活动记录,因为它遵循SOLID原则。但是主动记录也可能非常有用。


通常你应该记住,你的域模型(面向对象)和数据库模型(RDBMS)是必须用不同的准则来模拟两个不同的东西。

+1

我现在可以拥抱你,非常丰富,是的我正在谈论关于RDBMS的MySQL要具体 –

0

没有单一的正确答案 - 所有都取决于您正在构建的应用程序。对于最简单的应用程序,您可以使用Transaction Script方法(这非常程序化)。

然后,您可以演进到Table Module - 对数据库中的每个表使用类的方法,并且该类负责管理表中的所有数据。

对于更复杂的应用程序,您将有Domain Model(通常甚至在您拥有数据库之前)。您需要Data Mapper将您的Domain Model类映射到Database中的表(您可以将单个类映射到多个表,反之亦然)。随着现代的力量Object Relational Mappers领域模型的使用变得容易得多,因为这个映射的大部分是自动完成的。 .NET中的一些工具(如Entity Framework)甚至允许您从数据库表中生成域模型。