外键约束和桥接表

时间:2015-09-24 17:31:13

标签: mysql

我目前正在使用6个表:userscategoriesvideogamesvideogames_categories_bridgeusers_favoritesusers_dislikes。我正在尝试以最佳方式布置表格以向用户显示视频游戏首选项(请参阅下面的示例)。但是,我在创建表时遇到外键约束错误。我如何使用当前的表模式实现(如果可能)以下内容?另外,有没有办法避免插入的favoritedislike}值都标记为true的{​​{1}}? SQLFIDDLE

示例:显示game

的所有视频游戏偏好设置
userid 569723

1 个答案:

答案 0 :(得分:1)

您的外键和表格一般存在一些问题:

  • 必须将外键引用的“destination”列编入索引,以便InnoDB可以快速检查它是否存在等等(例如user_id表中的users只是您的第二列主键,它必须是某个索引中的第一个)
  • 在一个案例(videogames_categories_bridge.category_id)中,您尝试引用同一个表中的同一列,这没有意义
  • userscategories中的主键同时包含名称AND ID,因此它们不会强制执行 - 通常ID是外键的正确ID。您定义它的方式可能是多个不同名称的相同ID。

http://sqlfiddle.com/#!9/9e24b - 修改后的FK