需要帮助在MySQL数据库中设置外键关系吗

需要帮助在MySQL数据库中设置外键关系吗,mysql,mysql-workbench,Mysql,Mysql Workbench,因此,我必须创建InnoDB表(产品)和(类别)。我想在Products表上的“Category”字段和Categories表的“CategoryId”之间建立一种关系 但在尝试创建FK时,它只允许我在Products表上选择主键“ProductsId”,并映射到Categories表上的PK“CategoryId” 也许我错过了设置外键的方式/原因。我的想法,如果我错了,告诉我: 1)需要将产品添加到类别中。添加时,类别必须存在,或者您必须先创建它。除非执行某些任务(通过编程或在DB后端)从要

因此,我必须创建InnoDB表(产品)和(类别)。我想在Products表上的“Category”字段和Categories表的“CategoryId”之间建立一种关系

但在尝试创建FK时,它只允许我在Products表上选择主键“ProductsId”,并映射到Categories表上的PK“CategoryId”

也许我错过了设置外键的方式/原因。我的想法,如果我错了,告诉我:

1)需要将产品添加到类别中。添加时,类别必须存在,或者您必须先创建它。除非执行某些任务(通过编程或在DB后端)从要删除的类别中删除产品,否则无法删除类别

2)我希望CategoryId值存储在Products表的“Category”字段中。然后,在我的视图中显示时,需要按CategoriesId值查找Categories.Name字段

编辑: 所以我知道外键中涉及的两个字段必须是相同的,大小、类型等等。然而,如何将ProductId和CategoryId链接到我上面提到的我想做的事情中呢。当我在ProductId和CategoryId之间创建FK时,我不允许添加产品记录

另外,Category Name字段和Product Category字段的类型、大小等都相同,但我没有在“外键”选项卡中选择它们的选项


我应该如何设置它,以便categories表知道哪些产品是每个类别的一部分

如果您在工作台上,请验证FK中涉及的两列的类型、长度和属性是否相同。

好的,很遗憾,我必须回答自己的问题。我的大多数技术问题的原因是因为您试图创建的字段“必须被索引”

我遇到的综合性问题是,我需要去掉Products表上实际的“Category”varchar字段,并创建一个CategoryId字段,该字段只有Category表CategoryId字段中存在的值

现在我只需要通过Products.CategoryId值引用Categories.Name字段


至少我已经明白了这一点。

你的想法是对的。但在我们能帮你之前,你是如何建立FK的?通过SQL语句,或者使用一些管理工具,例如phpMyAdmin?我使用的是MySQL工作台:-选择“Alter table”并选择“Products”表。在“外键”下,设置外键。在“引用表”下,我选择“类别”表。在右边的部分,它列出了所有的产品列,但它不允许我选中“类别”字段。我只能选择“ProductId”字段,该字段在“Referenced column”列下给出“CategoryId”字段。