数据库在哪里适合面向对象的设计?让我们说例如我有一个简单直接的文章数据库,我的用例图有搜索文章的场景,查看文章和创建文章。
我是否应该有一个与类中的数据库连接的文章类,或者只是一个全局数据库类,以便其他类说用户类可以访问同一个连接?
我是否应该使用表格作为对象,例如文章是它自己的数据对象,然后像ArticleApi这样的类用于CRUD操作?
另外,如果有人有任何从头到尾的面向对象的分析和设计教程,那就太好了。
对于这样一个新手问题我很抱歉,我来自程序编程实践,并试图进入软件开发的面向对象部分。
答案 0 :(得分:2)
您没有指定任何特定平台,因此它不会是一个非常准确的答案。
数据库在哪里适合面向对象的设计?
我想我们正在谈论RDBMS,对吗?好吧,他们没有。这就是我们需要ORM software的原因,例如Hibernate for Java或Doctrine for PHP。
我是否应该有一个带有与类中数据库连接的文章类,或者只是一个全局数据库类,以便其他类说用户类可以访问同一个连接?
我是否应该使用表格作为对象,例如文章是它自己的数据对象,然后像ArticleApi这样的类用于CRUD操作?
ORM架构基本上有两种常用方法:
在我个人看来,数据映射器方法优于活动记录,因为它遵循SOLID原则。但积极的记录也可能非常有用。
您通常应该记住,您的域模型(面向对象)和数据库模型(rdbms)是两个不同的东西,必须使用不同的指南建模。
答案 1 :(得分:0)
没有一个正确答案 - 全部取决于您正在构建的应用程序。对于最简单的应用程序,您可以使用Transaction Script方法(这是非常程序化的)。
然后你可以演变为Table Module - 方法,它为数据库中的每个表使用类,该类负责管理表中的所有数据。
对于更复杂的应用程序,您将拥有Domain Model(通常甚至在您拥有数据库之前)。您需要Data Mapper将您的域模型类映射到数据库中的表(您可以将单个类映射到多个表,反之亦然)。随着现代Object Relational Mappers使用领域模型的力量变得更加容易,因为这种映射的大部分内容是自动完成的。 .NET中的Entity Framework等工具甚至允许您从数据库表生成域模型。