表模块与域模型

2024-01-26

我问的是选择存储用户配置文件的方法 https://stackoverflow.com/questions/429878/choosing-a-method-to-store-user-profiles前几天收到了大卫·托马斯·加西亚的有趣回应 https://stackoverflow.com/questions/429878/choosing-a-method-to-store-user-profiles#430044建议我使用表模块设计模式。看起来这可能就是我想要走的方向。我在谷歌上发现的所有内容似乎都是相当高水平的讨论,所以如果有人能给我指出一些例子的方向,或者让我更好地了解所涉及的具体细节,那就太好了。


最好的参考是 Martin Fowler 的《企业应用程序架构模式》:

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

A 表格模块组织域 逻辑中每个表一个类 数据库和单个实例 类包含各种过程 这将对数据起作用。这 主要区别与领域 模型就是说,如果你有很多 订单,一个领域模型会有一个 每个订单的订单对象桌子 模块将有一个对象要处理 所有订单。

表模块在您为用户配置文件数据描述的灵活数据库体系结构中特别有用,基本上是实体-属性-值 http://en.wikipedia.org/wiki/Entity-attribute-value_model design.

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

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

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

同样,查询给定用户的配置文件将使用表模块将查询结果集的多行映射到对象成员。

$hashArray = $table->getUserProfile( $userid );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表模块与域模型 的相关文章

  • 如何使用 django 更新会计应用程序中的余额?

    我正在学习 Django 尝试制作一个会计应用程序来跟踪我的开支等 我使用两种模型创建数据库 一种用于帐户 一种用于操作 但我不知道如何在每次操作时更新我的 余额 我在想 也许每次我保存一个新操作时 我都会通过覆盖操作模型的保存方法来更新余
  • Codeigniter 处理大文件时允许的内存大小耗尽

    我发布此内容是为了防止其他人正在寻找相同的解决方案 因为我刚刚在这个废话上浪费了两天时间 我有一个 cron 作业 每天使用一个非常大的文件更新数据库一次 使用以下代码 if handle fopen dirname FILE uncomp
  • Firebird数据库模式/数据差异工具

    RedGate http www red gate com为 Microsoft SQL Server 制作一个工具 允许您捕获两个数据库之间的差异 它生成更新数据库模式所需的脚本 同时保留数据 我需要为 Firebird 数据库找到这样的
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • 无法更改 MS Access 2007 上的数据类型

    我有一个巨大的数据库 800MB 其中包含一个名为 上次修改日期 的字段 目前该字段作为文本数据类型输入 但需要将其更改为日期 时间字段以执行一些查询 我有另一个完全相同的数据库 但其中只有 35MB 的数据 当我更改数据类型时 它工作正常
  • 寻找免费的 GUI 工具来使用 PostgreSQL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目前 我正在使用独立的 GUI 工具DbSchema http www dbschema com 设计
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 如何在 SQL 中存储目标(例如 RPG Quest)

    今天有人问我他们应该如何将任务目标存储在 SQL 数据库中 在这种情况下 请考虑角色扮演游戏 目标可能包括以下一些内容 发现 地点 杀死 n MOB 类型 获取 对象 的 n 个 实现 技能组 中的 技能 你在角色扮演游戏中获得的所有其他东
  • 删除 mysql 数据库中超过 3 个月的行的作业

    我们使用 mysql 服务器作为集中式日志系统 我希望有一项工作来定期删除 清理超过 3 个月的表条目 做这个的最好方式是什么 提前致谢 hinling 您是否在字段中存储项目的创建日期 If so DELETE FROM myTable
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • PostgreSQL 如何创建数据库或模式的副本?

    有没有一种简单的方法可以在 PostgreSQL 8 1 中创建数据库或模式的副本 我正在测试一些软件 它对数据库中的特定模式进行大量更新 我想复制它 以便我可以与原始版本进行一些比较 如果它位于同一服务器上 则只需使用带有 TEMPLAT
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 无法删除数据库 mysql:错误 3664 (HY000)

    我的应用程序中有一个名为X Files 我想要drop它 但每当我运行命令时drop database X Files我收到以下错误 mysql gt drop database X Files ERROR 3664 HY000 Faile
  • 工厂模式和策略模式

    我需要创建一个类来负责结果集处理 但可能会发生应该使用不同的算法来处理该结果集的情况 我知道以下选项 1 使用策略模式 伪代码如下 interface Strategy processResultSet ResultSet rs class
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self

随机推荐

  • 如何在 JavaScript 中使用媒体查询

    我对 JavaScript 知之甚少 所以我什至不确定我的问题是否有意义 然而 我的观点是如何应用相同的媒体查询原理来根据屏幕的宽度更改脚本上的特定值 在下面的示例中 我使用滚动间谍活动菜单 并使用 100px 的负滚动来进行标题补偿 此偏
  • ruby(1.9.3) on Rails(3.2.3) Activerecord-odbc-适配器

    我有一个遗留数据库 Progress OpenEdge 我需要将其用于大量报告 我可以使用 ruby 1 8 6 和 Rails 2 0 odbc adapter 和 odbc rails 由于不再支持 1 8 6 并且 Rails 2 0
  • 将 json 数据格式化为驼峰式

    我从服务器收到一个 json 响应 如下所示 Response FirstName John LastName Smith NickNames NameOne Johnny NameTwo JohnS NameThree Smithy Su
  • 如何克服Python 3.4 NameError:名称'basestring'未定义

    我在本地目录中有一个名为 hello txt 的文件以及 test py 其中包含以下 Python 3 4 代码 import easywebdav webdav easywebdav connect 192 168 1 6 userna
  • 数组和隐式生命周期对象创建

    有些类型被标准定义为隐式生命周期类型 数组就是其中之一 一些函数隐式创建具有隐式生命周期的对象 malloc 等就是其中之一 包含隐式创建具有隐式生存期的对象的操作列表 可在此处找到 https en cppreference com w
  • React Native:我应该使用哪个导航器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我必须在 3 个月内构建一个相对较大的跨平台 iOS 和 Android 应用程序 到目前为止 当谈到
  • 具有嵌入式竞技场的堆栈分配器问题

    我在使用 Howard Hinnant 时遇到崩溃基于堆栈的分配器 http howardhinnant github io stack alloc h 都在 MacOS 和 64 位 Linux 上的 Clang 3 4 这是一个最小的例
  • 百分比和树木

    我有一棵无序的树 每个节点代表一个可以完成 1 未完成 0 或有子任务的任务 例如 1 1 1 1 2 1 2 1 1 2 2 1 3 2 3 3 1 4 4 1 4 1 1 5 假设叶子 1 2 1 3 1 和 5 是done 1 1 1
  • 如何强制 Flutter 重建/重绘所有 widget?

    有没有办法强制 Flutter 重绘所有小部件 例如 在区域设置更改后 Your Widget应该有一个setState 方法 每次调用该方法时 都会重新绘制小部件 文档 Widget setState https api flutter
  • 如何打开并查看Excel文件的XML结构?

    我想打开Excel文件的路径xl worksheets sheet1 xml 当我谷歌如何执行此操作时 一篇文章要求我将 Excel 文件重命名为 zip 然后解压缩该文件并检查结构 但即使在我压缩并解压 Excel 文件后 我也没有在提取
  • 如何在使用 GROUP BY 时返回数组

    现在 我有这样的疑问 SELECT COUNT AS Count SUM Ask AS Ask SUM Cost AS Cost Provider Factura FROM store items WHERE Provider NOT IN
  • 按键时从 NSTextField 发送操作而不是返回

    我想显示解除按键后新推文剩余的字符数 目前 只有在取消退货时才会发生这种情况 IBAction updateCharacterCountFromNewTweetField id sender newTweetCharacterCount s
  • 如何将活动指示器放在表格视图中间

    我已经设置了活动指示器 spinner center CGPointMake UIScreen mainScreen bounds size width 2 UIScreen mainScreen bounds size height 2
  • 较大的纹理图集会因内存压力而导致终止

    我正在 iOS Swift 中设计一款游戏 我有一个大约 100 个 1920x1080p PNG 的大型纹理图集 当我调用这些函数时 它会由于内存压力而导致应用程序崩溃 当我禁用该功能时 我的应用程序运行得很好 我可以通过编辑代码来防止这
  • MongoMapper(或任何其他 Mongodb 适配器)是否有类似“accepts_nested_attributes_for”的方法?

    我正在考虑在一个新项目中使用 mongodb 但在深入研究之前 我想知道它是否支持一些关键功能 我知道您不需要迁移 并且可以添加嵌入对象 但这是否意味着它的行为也就像 accepts nested attributes for 方法始终存在
  • 给定一组 0-9 的整数,在用完某个整数之前我能写的最后一个数字是多少?

    正如标题所说 给定一组整数 0 9 在用完某个整数之前我能写的最后一个数字是多少 因此 如果给我一个库存 比如从 0 到 9 的每个数字都有 10 个 那么在用完某个数字之前我可以写的最后一个数字是多少 例如 如果库存为 2 我可以写数字
  • 登录会员.NET

    您好 我想知道强制用户在到达 net 网站时登录的最佳方法是什么 我已经设置了会员功能 我想知道什么是最好的方法来确保无论用户到达哪个地址 他们都必须首先经过身份验证 然后才能进入他们请求的页面 任何资源都会很棒 谢谢 Alter Web
  • 尝试设置 .SSH 密钥以通过 Cygwin 连接到 Github

    我刚刚在 Windows 7 上安装了 Cygwin 来开发 RoR 应用程序 问题是我试图通过 Cygwin 将 Git 与我的 Github 帐户连接起来 但由于某种原因 当我运行命令时ssh keygen t rsa C email
  • Parse API - Facebook 登录无法在 iPhone 设备上运行

    当我点击 使用 Facebook 登录 按钮时 在 IOS 模拟器上它工作正常 获取 PFIzer 对象 然后 如果我在 iPhone 设备上运行相同的代码 则获取 PFUser 对象为 null 没有错误 Code func loginW
  • 表模块与域模型

    我问的是选择存储用户配置文件的方法 https stackoverflow com questions 429878 choosing a method to store user profiles前几天收到了大卫 托马斯 加西亚的有趣回应