我构建了一个网络应用程序 (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 - 设置子祖 parent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812265/