我已经构建了一个Web应用程序(PHP / MySQL),供人们预测足球比赛。
leagues
表中的每个条目,matches
表中有许多条目。matches
表中的每个条目,predictions
表中有许多条目。我应该明确设置从predictions
表到leagues
表的关系吗?换句话说,我应该在league_id
表中添加predictions
列吗?
PRO
查询更简单,在某些情况下可以读取更少的表。查询来自某个联盟的某人预测的示例查询:
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
CON
它的数据已经存在,因此它是重复的数据(使数据库更大)。
答案 0 :(得分:0)
预计数据库的正确规范是避免重复使用以避免使用冗余数据以避免关系。你应该怀疑第二个查询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