【问题标题】:Inserting records in a primary;foreign key columns from another table在主表中插入记录;来自另一个表的外键列
【发布时间】:2018-05-24 13:07:54
【问题描述】:

编辑:似乎“桥接表”这个词得到了我的需要

我正在尝试在表 produ_tag 中插入一条记录,其中主键和外键作为列。

产品标签

产品

标签

第一列refHeproducts 表中产品的代码,第二列包含tags 表中产品的标签。建模软件制作了这个额外的表格,以便它可以保存哪些产品包含哪些标签是必要的。

问题是它们是主要的,所以如果我有一个带有 2 个标签的产品,则不会插入记录,因为它之前已经插入了相同的产品。

我应该删除两者的主要内容吗?或者还有另一种方法来处理这个问题,因为建模软件会以这种方式呈现它。

【问题讨论】:

  • 听起来您正在寻找一个桥接表,但是您能否分享一下您的products 表和tags 表的结构?
  • 我把这两个都加到主题里了
  • 不同的建模工具以不同的方式处理桥接表中的 PK。一种方法是复合键。如果我正确地阅读了您的描述,那么 produ_tsag 的 PK 是 (refHe, namCh) ,它是一个复合键。这应该可行,并且应该允许您插入带有 2 个标签的产品,或带有相同标签的 2 个产品。

标签: php mysql mysqli database-design


【解决方案1】:

produ_tag 表是一个“桥接表”,复合主键允许任意数量的标签 (namCh) 与产品 (refHe) 相关联,前提是标签存在于tags 表和 (refHe, nameCh) 对是唯一的(即您不能多次关联相同的产品和标签)。

如果您在尝试插入标签时遇到错误,这不是由于 PK 设置错误。您要么尝试引用不存在的标记,要么插入表中已存在的值的组合。

不要删除您的主键。我看到的唯一明显问题是从 produ_tag.refHeproducts.refHe 没有 FK 约束。

【讨论】:

猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 2014-03-23
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多