CakePHP模型设计建议:将RDBMS模型与可扩展/分层模型(JSON/XML/Array)相关联



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

总的来说,我有一个模型(称之为Game,因为我的实际背景相当深奥),其主要属性是已知结构& &;尺寸(title, player_id等)。除了一个属性game_template之外,它本身需要一个模型,但是是一个分层模型——我使用JSON,但它可以是XML,等等。重要的是,我做需要查询game_template;它将总是是全或无需要的,它确实是Game模型的属性,除非在它的父Game实例的上下关系中被操纵。

我真的需要两个模型吗?
尽管每个game-game_template关系总是"有-和-属于-一个",但所有模板都应该共享一些方法,并拥有共同的必填字段。一个params属性,其中可能有0-n个参数,每个参数有0-n个不同类型的字段)

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

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

1)使用从一个模型对象中"提取"的数据创建另一个
包括JSON作为文本的一列在数据库中,即。games.game_template。当控制器实例化Game记录时,让它也通过解析原始文本实例化Game Template模型。json_decode('game_template', true))和传递的结果作为一个数组数据源,从中建模吗?

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

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

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

您在这里陈述问题的方式('我应该将结构视为属性还是模型?')(对我来说)似乎是一个纯粹的数据建模问题。因此,也许沿着这些行编辑OP会更好,并保留标签原样?

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

最新更新