模型User
有很多Project
有很多Task
User(id, email, password)
Project(id, user_id, name)
Task(id, user_id, project_id, title)
在user_id
模型上拥有像Task
这样的较高父母的缓存列是一个好习惯,可以更快地访问而无需加入,或者我应该坚持好的:through
解决方案?
我很乐意听到这方面的想法,因为如果弊大于利,我一直都很担心。
答案 0 :(得分:3)
我不会说这样做是好习惯。您现在必须使该附加密钥与父级上的相同密钥保持同步,并且数据不会像它那样正常化。
除非你有理由这样做,否则我不会走这条路。
如果原因是您发现不必经历模型层次结构以获取相关的用户模型太不方便,那么也许有更好的方法可以表达该代码,因此您不必继续做这么多的查找/加入?
如果主要是出于性能原因,可能会有更好的解决方案 - 缓存,数据库索引和其他可能有用的技术。
如果添加额外的密钥是您尝试做的最佳/最简单的解决方案,那么很好。我会先考虑是否有更好的方法。