我要在我的网站上建立一个竞赛功能。我有关于建模和postgresql数组数据类型的使用的问题,以及这是否是正确的使用。
规范:
我的应用程序确实有一些用户,但我不认为竞争会面临巨大的压力,用户/条目方面。应用程序使用ruby 2.1.3、rails 4.1.6和postgresql 9.3.5运行。
我的想法:
在预测方面,不同的竞赛将是相似的。每一场比赛都会有多个选手/队(这在每一场比赛中都是不同的)。用户将被要求预测哪些球队/球员完成了第一名、第二名、第三名、第四名、第四名和第四名。
有了这种心态,我想我可以跳过把球队/球员放到自己的模式中,而把可供选择的球队/球员放在竞赛表内的数组中。
我也在想,我可以把位置预测放在条目表中,比如:1,2,3-4(数组),5-8(数组),同样的结果也可以放在竞赛表中。
关系,如下所示:
竞赛
用户
条目
I将在:时查询数组
1)条目--新条目:用户需要查看哪些团队在以该形式进行预测时可用。
2)竞赛-编辑:我需要更新比赛与团队的位置。
3)条目更新:自动评分,将条目预测与竞赛答案/结果进行比较。
这是否很好地使用postgresql数组类型?
发布于 2016-05-26 09:16:28
Postgreq的JSONB允许索引,这使得它比非索引的JSON类型更有效,理论上允许在关系数据库中进行非关系存储。
但是,在您的具体情况下,我将不使用数组类型。这是个人观点,我认为Rails的ORM对于查询复杂的JSONB还不够友好,特别是当您决定添加更复杂的特性时。
根据经验,我将使用JSONB类型进行缓存和简单的值存储(即。标签或关键字的列表。是的,您可以将用户看作一个数组,但是,如果您想要更改某些内容或添加额外的信息,您将最终修改它,这将是很难处理的),而不是在具有复杂关系的表上。
https://stackoverflow.com/questions/37455847
复制相似问题