Mysql 设置儿童祖父母关系
我构建了一个web应用程序(PHP/MySQL),供人们预测足球比赛Mysql 设置儿童祖父母关系,mysql,sql,database,Mysql,Sql,Database,我构建了一个web应用程序(PHP/MySQL),供人们预测足球比赛 对于联盟表中的每个条目,匹配表中有许多条目 对于匹配表中的每个条目,预测表中有许多条目 我是否应该明确设置从预测表到联盟表的关系?换句话说,我是否应该在predictions表中添加league\u id列 PRO 查询更简单,在某些情况下需要读取的表更少。查询示例,以查找来自某个关系联盟的Someone预测: SELECT * FROM predictions p WHERE p.league_id:league_id
- 对于
表中的每个条目,联盟
表中有许多条目匹配
- 对于
匹配表中的每个条目,
预测表中有许多条目
预测
表到联盟
表的关系?换句话说,我是否应该在predictions
表中添加league\u id
列
PRO
查询更简单,在某些情况下需要读取的表更少。查询示例,以查找来自某个关系联盟的Someone预测:
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
没有关系:
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
数据已经存在,所以它是重复数据(使数据库更大)。数据库的正确做法是避免重复,首先是避免使用冗余数据来避免关系。毫无疑问,您应该更喜欢第二个查询,即建议的和相关的模式
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
一个正确的数据库应该避免重复,最重要的是避免使用冗余数据来避免关系。毫无疑问,您应该更喜欢第二个查询,即建议的和相关的模式
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
无需显式设置关系。拥有更大的数据库是冗余数据的最小问题。冗余不利于数据完整性,因为它违反了规则和原则。除非你已经证明了优化查询性能的必要性,否则我不会考虑保留一个冗余列。谢谢你的洞察力,我很抱歉我不能把它标记为正确的答案。你是对的,一些研究告诉我,如果不需要优化,就不需要优化。这基本上就是你在最后一句话中所说的:)不需要显式地设置关系。拥有一个更大的数据库是冗余数据的最小问题。冗余不利于数据完整性,因为它违反了规则和原则。除非你已经证明了优化查询性能的必要性,否则我不会考虑保留一个冗余列。谢谢你的洞察力,我很抱歉我不能把它标记为正确的答案。你是对的,一些研究告诉我,如果不需要优化,就不需要优化。这基本上就是你在最后一句话中所说的:)