我已经建立了一个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/