gpt4 book ai didi

database - 表模块与领域模型

转载 作者:太空狗 更新时间:2023-10-30 01:39:59 24 4
gpt4 key购买 nike

我问了 Choosing a method to store user profiles前几天收到一个interesting response from David Thomas Garcia建议我使用表模块设计模式。看起来这可能是我想要走的方向。我在 Google 上发现的所有内容似乎都是相当高层次的讨论,所以如果有人能给我指出一些例子的方向,或者让我更好地了解所涉及的具体细节,那就太棒了。

最佳答案

最好的引用是 Martin Fowler 的“Patterns of Enterprise Application Architecture”:

以下是表格模块部分的摘录:

A Table Module organizes domain logic with one class per table in the database, and a single instance of a class contains the various procedures that will act on the data. The primary distinction with Domain Model is that, if you have many orders, a Domain Model will have one order object per order while a Table Module will have one object to handle all orders.

表模块在您为用户配置文件数据描述的灵活数据库架构中特别有用,基本上是 Entity-Attribute-Value设计。

通常,如果您使用域模型,基础表中的每一行都会成为一个对象实例。由于您将用户配置文件信息存储在多行中,因此您最终不得不创建许多域模型对象,而您真正想要的是一个封装所有用户属性的对象。

相反,表模块使您可以更轻松地编写适用于基础数据库表中多行的逻辑。如果您为给定用户创建配置文件,您将指定所有这些属性,并且表模块类将具有将其转换为一系列 INSERT 语句的代码,每个属性一行。

$table->setUserProfile( $userid, array('firstname'=>'Kevin', 'lastname'=>'Loney') );

同样,查询给定用户的个人资料将使用表模块将查询结果集的多行映射到对象成员。

$hashArray = $table->getUserProfile( $userid );

关于database - 表模块与领域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com