4

型号User有很多Project有很多Task

User(id, email, password)
Project(id, user_id, name)
Task(id, user_id, project_id, title)

在不进行连接的情况下,在模型上拥有一个更高父级的缓存列,以便更快地访问,或者我应该坚持使用好的 ol解决方案,这是一个好习惯吗?user_idTask:through

很想听听对此的想法,因为我一直担心这是否弊大于利。

4

1 回答 1

3

我不会说这样做是个好习惯。您现在必须使该附加密钥与父密钥上的相同密钥保持同步,并且数据没有达到应有的规范化程度。

除非你有理由这样做,否则我不会走这条路。

如果原因是您发现必须继续遍历模型层次结构以获取相关的用户模型太不方便了,那么也许有更好的方法可以表达该代码,这样您就不必继续这样做许多查找/连接?

如果主要是出于性能原因,那么可能会有更好的解决方案——缓存、数据库索引和其他可能有帮助的技术。

如果添加额外的密钥是您尝试做的最好/最简单的解决方案,那么很好。我只是先考虑是否有更好的方法。

于 2012-11-06T23:04:34.567 回答