Mysql SQL数据透视表中的外键-数据库设计

Mysql SQL数据透视表中的外键-数据库设计,mysql,sql,database,foreign-keys,Mysql,Sql,Database,Foreign Keys,我正在使用DBDesigner 4设计数据库关系 我有一张users表和一张recipes表。一个用户可以拥有多个食谱,但一个食谱不能被多个用户拥有。此关系由图中的用户配方关系显示。(从用户到配方的一对多关系) 但是,用户可以喜欢这些食谱。许多用户可以喜欢许多食谱。这是用户和配方之间的多对多关系,其透视表是用户喜欢的配方 但是当我创建这个透视表时,我只需要users\u id和recipes\u id列。recipes\u users\u id列将自行添加,我无法删除它。它说第三列来自模型中定义

我正在使用DBDesigner 4设计数据库关系

我有一张
users
表和一张
recipes
表。一个用户可以拥有多个食谱,但一个食谱不能被多个用户拥有。此关系由图中的
用户配方
关系显示。(从
用户
配方
的一对多关系)

但是,用户可以喜欢这些食谱。许多用户可以喜欢许多食谱。这是
用户
配方
之间的多对多关系,其透视表是
用户喜欢的配方

但是当我创建这个透视表时,我只需要
users\u id
recipes\u id
列。
recipes\u users\u id
列将自行添加,我无法删除它。它说第三列来自模型中定义的另一个关系。我猜这是
user\u recipes
关系

当我删除
user\u recipes
关系时,我得到了我想要的透视表。

但是我也需要
user\u recipes
关系


求你了。任何帮助都将不胜感激。

我建议将用户id作为主键从recipes表中删除。目前,if id和user_id的组合为您的配方表提供标识。在这种情况下,多个用户id可以创建相同的配方id,因为组合必须是唯一的。用户id只能是表中的正常列。如果你真的想,你可以在(id,user_id)上设置一个备用键,但你不需要它,因为id是唯一的。

我建议你停止使用设计工具,键入你自己的创建表查询。更多的表即将出现,我需要一个软件来维护视觉关系。你知道其他数据库设计工具吗?老问题,但你可以试试。但是我更喜欢分别构建数据库和图表,因为我不喜欢一个程序根据我画的线来决定如何构建数据库。当我需要起草图表时,我用它来管理我的db和Workbench。我将用户id视为外键,而不是主键。这没有意义,因为它不是主键的一部分,所以在透视表中无法获得recipes\u user\u id。如果你建立外键关系,你总是得到整个主键,而没有其他任何东西。“我明白了”,在我之前的评论中指的是问题的内容,而不是我对表应该如何设计的看法。我不能将
users\u id
作为一个普通列,因为当我添加
user\u recipes
关系时,
users\u id
自动作为外键出现。我猜这种机制只是为了确保数据的完整性而实施的,而且保留另一个额外的列也不会有任何伤害。@DanBracuk列名称之前的键符号表示它们是主键。但是用作外键