在关系数据库中使用与简单数据的多对多关系的替代方法

时间:2011-08-26 00:57:59

标签: ruby-on-rails database-design relational-database

我正在开发一个ruby on rails项目,需要记录一些适合多对多关系的简单用户数据(将其视为一组用户兴趣)。我有很多经验,使用has_many:through和HABTM做很多关系,但是当事情很简单以至于它可以表示为单个单词时,创建新模型并且必须执行所需的连接似乎有点过头了访问它。我没有太多需要记录其他属性而不是兴趣本身的名称,因此使用模型的参数并不具有说服力。我知道noSQL对此可能有好处,但是我想知道使用关系数据库执行此操作的正确方法是什么(我正在使用postgres),从性能和良好的设计角度来看。我正在考虑使用的方法是使用text数据类型将其记录为用户模型中的分隔字符串,然后将其解析为数组。或者这可以是表示散列键数组的字符串,然后散列键查询数据的散列表或键/值存储数据库。我确信有很多不同的方法,但我很高兴知道最佳实践是什么,因为我希望将来必须要实现这一点。此外,如果您可以推荐任何有助于此的工具/宝石/框架,那将非常有用。

谢谢。

1 个答案:

答案 0 :(得分:1)

基本上以某种方式序列化数据并将其存储在列中,事先知道您不会查询它。我见过人们使用的一个相当紧凑的解决方案是将它存储为json,这可以减轻你不得不做任何复杂的事情。您只需要一个足够大的varchar类型来存储json字符串。