CSDN博客

img wildhorseli

设计数据层组件及各层间数据流通(2)

发表于2004/6/25 10:10:00  917人阅读

技术上的思考

2 展示了在技术实现上对于数据存取逻辑组件和业务实体的影响。本文对每一个技术上的思考给予分析并提供参考建议。

关系数据到业务实体的映射

数据库通常包括多个表,并且通过主外键建立关系。当在你的.Net应用中定义业务实体表示数据是,你必须首先决定如何映射这些表和业务实体。

考虑假设的零售商数据库 如图3

以下是在例子数据库中的表概要

Type of relationship

Example

Description

One-to-many

Customer: Address



Customer: Order

A customer can have many addresses, such as a delivery address, a billing address, and a contact address.

A customer can place several orders.

Many-to-many

Order: Product

An order can comprise many products; each product is represented by a separate row in the OrderDetails table. Likewise, a product can be featured in many orders.

当你定义了业务实体来模拟数据库中的信息时,要考虑如何在应用中使用这些信息。确认封装你应用中的关键功能到核心业务实体中,然后是一些分离的业务实体对应于每一张表。

在假定的零售商应用中,典型的操作如下:

·                        取得(或更新)用户信息,包括他/她的地址

·                        取得客户的订单列表

·                        取得一个特定订单的订货详单

·                        下一个新订单

·                        取得(或更新)一个或多个产品的信息

为了完成这些应用的需求,这儿有3种逻辑业务实体需要应用处理:客户,订单,产品。每一个业务实体,是一个分离数据存取逻辑组件,定义如下

·                        客户数据存取逻辑组件 该类将有获取和修改客户表和地址表数据的功能。

·                        订单数据存取逻辑组件   该类将有获取和修改订单表和订单详表数据的功能

产品数据存取逻辑组件 该类将有获取和修改产品表数据的功能

4 描述了数据存取逻辑组件和对应数据库表中的关系

对于实施数据存取逻辑组件,看本文后面的部分:实施数据存取逻辑组件

关系数据到业务实体映射的建议

关系数据到业务实体的映射,考虑以下建议

·                        花时间分析应用的逻辑业务实体并建模,而不是对每个表定义分离的业务实体。 如何实现建模工作,使用UML UML是一个正式的用于基于物件应用建模的设计符号,用来捕获物件表示信心和自动处理过程,人为因素,相互关系。更多信息:http://msdn.microsoft.com/architecture/application/default.aspx?pull=/library/en-us/vsent7/html/vxoriModelingYourApplicationData.asp 为你的应用和数据建模

·                        不要定义分离的业务石头来表示数据库中多对多的表;这些关系通过实施数据存取逻辑组件的方法来展示。例如,先前例子中的订单详单表没有被映射成多个业务实体,相反的,订单数据存取逻辑组件封装了订单详单表来取得订单和产品之间多对多的关系。

·                        如果你的方法返回一个特定类型的业务实体,那么把这些方法放到数据存取逻辑组件来表达这种类型。例如,为一客户取得所有的订单,在订单数据存取逻辑组件中实现这个方法,因为你的返回值是一个订单类型。相反地,如果要取得指定产品的所有订单客户,应该在客户数据存取逻辑组件中实现该功能。

·                        数据存取逻辑组件通常在单个的数据源中存取数据。若需要聚合多个数据源,推荐定义各个分离的数据存取逻辑组件来取得各个数据源数据,然后在较高层次上实现集成。推荐这种方式有两个原因:

·                                      事务管理集中在业务处理组件中,并不需要数据存取逻辑组件的显示控制。如果需要从一个数据存取逻辑组件取得多个数据源,你需要数据存取逻辑组件作为事务的基础,在你仅仅是读取数据的时候它将引进附加的高层的功能。

·                                      集成通常不需要在应用的所有领域,通过分离存取数据,当需要时你可以让特定类型作为集成的一个部分。

 

 

0 0

相关博文

我的热门文章

img
取 消
img