我已经建立了一个Web应用程序(PHP / MySQL),供人们预测足球比赛。


对于leagues表中的每个条目,matches表中都有许多条目。
对于matches表中的每个条目,predictions表中都有许多条目。


我应该明确设置从predictions表到leagues表的关系吗?换句话说,我应该在league_id表中添加predictions列吗?

专业版

查询更容易,某些情况下要读取的表更少。查询示例,以查找具有该关系的某个联赛的某人的预测:

SELECT * FROM predictions p
WHERE p.league_id:league_id AND p.user_id=:user_id


没有关系:

SELECT * FROM predictions p
INNER JOIN matches m ON m.match_id=p.match_id AND m.league_id=:league_id
WHERE p.user_id=:user_id


骗子

它是已经存在的数据,因此它是重复数据(使数据库更大)。

最佳答案

期望数据库的正确规范化是要避免重复,首先是要避免使用冗余数据来避免关系。您应该毫无疑问地喜欢第二个查询Theproposed和相关架构

SELECT * FROM predictions p
INNER JOIN matches m ON m.match_id=p.match_id AND m.league_id=:league_id
WHERE p.user_id=:user_id

关于mysql - 设置 child 的祖 parent 关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38812265/

10-11 01:31