2

我有几个下面列出的查找表。据我了解,每个数据库表都需要一个模型,但这是否也适用于查找/映射表?创建模型时使用的最佳实践是什么?以下是我的查找表示例...

Transaction     Customer     Transaction_Lookup       
id              Id           transection_id
date            name         customer_id
active          active

我已经创建了与 Transaction 和 Customer 表对应的模型,是否还需要为 Transaction_Lookup 创建相应的模型?

此外,我正在使用 Data Mapper 模式,这意味着我还必须为每个模型创建一个 Mapper 类......

提前感谢您的帮助....

4

1 回答 1

1

我要说的一句话是不要将模型视为与表格一一对应的。这在您的 OOP 设计中可能会受到很大限制。也就是说,您的模型通常会与单个表格对齐。查找表是一个明显的场景,这是正确的。

至于每个查找表需要一个具体模型......我会考虑编写一个通用模型,该模型可用于与“查找”表对应的所有对象。然后,您可以使用该泛型类,或者将其编写为抽象类并扩展它并创建命名的具体类。利用您在父类中已有的代码,所需的唯一代码数量可能非常有限。如果您想要一个特定于查找表的摘要,您可以抽象字段key(id)valuefriendly nameactive? 并将表上的相应字段映射到这些通用属性。真的有很多方法可以解决这个问题,希望我解释得很好。

我通常编写两种风格的映射器,一种本质上是表行网关,如 Zend_Db_Table,另一种更自定义,可能我使用存储过程或复杂的 Zend_Db_selects 连接多个表。使用表行网关样式映射器,我通常只需要指定一个表名、适配器和映射对象供映射器使用。在自定义映射器上,我通常需要逐个从头开始编写更多的实现代码。

我喜欢这种使用Data Mapper的方法。既方便又强大。

于 2013-02-20T17:51:57.423 回答