【问题标题】:CakePHP Model Design Advice: Associating a RDBMS model with an extensible/hierarchical model (JSON/XML/Array)CakePHP 模型设计建议:将 RDBMS 模型与可扩展/分层模型(JSON/XML/Array)相关联
【发布时间】:2014-03-24 21:38:31
【问题描述】:

继续阅读之前
我主要寻求关于数据建模策略而不是实施的建议(尽管我在最后谈到了一点)——我主要知道如何做我正在做的事情描述,但我不相信某些方法不是傻瓜的差事。

问题

总的来说,我有一个模型(称为Game,因为我的实际上下文非常深奥)主要具有已知结构和大小的属性(titleplayer_id 等)。除了一个属性 game_template 保证模型本身是一个分层模型——我使用的是 JSON,但它可以是 XML,无论如何。重要的是,我确实不需要查询game_template;它总是需要全部或全部,它确实是Game 模型的属性,除非在Game 的父实例的上下文中进行操作。

我真的需要两个模型吗?
尽管每个游戏-游戏模板关系总是一对一的,但所有模板都应该共享一些方法并且具有共同的必填字段(即 params 属性,其中可能有 0-n 个参数,每个都有 0-n 个不同类型的字段)

我不确定如何在 Cake 中有效地将这些链接在一起。

我正在考虑的两种解决方案(尽管我对任何一种都持开放态度)

1) 使用从一个模型对象中“提取”的数据来创建另一个模型对象
将 JSON 作为文本包含在数据库中的一列中,即。 games.game_template。当控制器实例化Game 记录时,它是否还通过解析原始文本(即json_decode('game_template', true))来实例化Game Template 模型并将结果作为array datasource 传递以对其建模?

2) 将数据保存在单独的文件中并使用模型关联
将 .JSON 文件保存在本地某处(比如lib/game_templates/<id>.json),然后将此 id 与父模型 vis-a-vis cakephp 约定相关联(即gamegame_template_id 字段?直觉上我可以想到去的理由但是,如果这个合适的解决方案,我不知道 CakePHP 是否可以处理完全不同的数据源之间的关联,或者是否有任何超出我所描述的我需要做。

【问题讨论】:

    标签: cakephp database-design model data-modeling


    【解决方案1】:

    您确定这是适合您问题的论坛吗?您的问题涉及 JSON、数据库列上的文本、模型的实例化、解析原始文本、传递结果、数组、存储文件的位置等。

    我认为这些主题都与数据建模无关。对我来说,它们都与设计或实现相关。

    【讨论】:

    • 我看到了困惑——欢迎提出更好标记的建议。我试图确定的是如何最好地模拟数据根据 cakephp 的约定。我想我真的指的是 MVC 上下文中的模型设计。我试图弄清楚我是否更适合将层次结构视为模型的复杂属性(即选项 1),或者我上面描述的内容是否更适合认为是两个相关的模型(即选项 2 )。不过,感谢您抽出宝贵时间询问
    • 您说您正在尝试根据您选择的实现(cakephp 约定)对数据进行建模。做完全相反的事情不是更好吗:使模型依赖于客户需求,并使实现依赖于模型? (我不是这方面的专家,我的理念可能不实用。)
    【解决方案2】:

    您在这里陈述问题的方式(“我应该将结构视为属性还是模型?”)确实(对我而言)似乎是一个纯粹的数据建模问题。所以也许按照这些思路编辑 OP 并保留标签原样会更好?

    对我来说,考虑到所有与实现相关的东西都被删掉的问题会容易得多。如果我不必考虑工具、编程语言、表、列和协议,至少在开始时,我可以更好地考虑有关类、属性、键和关系的问题。当然,如果您有两种模型可以准确地描述客户的未来世界,那么您必须注意选择最适合您的目标实现的模型。但很难一下子想到所有事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多