将数据存储为mysql中的json是一个好主意吗?

时间:2013-06-07 06:39:58

标签: json activerecord ruby-on-rails-3.2 rails-activerecord

我有一个场景让关系表像“一个部分有很多元素”,所以我想到了像一个部分有很多元素的has_many关系模型。

我从客户那里得到了一些建议,要求将数据保存为列中的JSON而不是多个表。

我有点困惑我应该采用哪种方法。

欢迎提出建议。

这是我提议的模型

例如:section has_many elements

表:部分

id  type                
1   page     

表:元素

id   type   content           section_id
1    text   <p>lipsum lipsum</p>     1
2    image  /images/test.png         1

客户提案是

id  type   content             
 1  page    {:text => "<p>lipsum</p>", image => "/images/test.png"}

2 个答案:

答案 0 :(得分:0)

如果可能的话,请查看像MongoDB这样的记录存储解决方案,它允许您本地存储JSON。这需要一些时间来适应,但如果JSON将是您的主要存储方法,这将是一个明智的选择。

答案 1 :(得分:0)

将数据作为JSON存储在单个数据库字段中通常是个坏主意。这意味着您将无法使用SQL操作/查询数据 - 这种方式无法将数据存储在数据库中。

我建议section表与textsimages的表格之间建立一对多的关系。这可以通过Rails中的belongs_tohas_many关联来实现。

无论如何,只有当一个部分有多个文本和图像时,创建新表才会有所帮助。如果您的每个部分都有单个文本和单个图像(如示例所示),那么使用sectionsid的单个type表格可能会很好, textimage属性。