gpt4 book ai didi

MySQL:当表中有2个 `Unique Key`时,是否必须创建 `Primary Keys`?

转载 作者:行者123 更新时间:2023-11-29 07:48:00 25 4
gpt4 key购买 nike

请注意以下分步说明。

  1. 我有 2 个表:TransactionTransaction_FeeTransaction主键idTransaction,它是一个自动生成的值。 Transaction_Fee主键idTransaction_Fee,它也是一个自动生成的值。

  2. 每个Transaction都有一个Transaction_Fee,因此,idTransaction外键Transaction_Fee 表。

  3. 每个交易只能有一个Transaction_Fee

现在,我想我需要将 idTransactionidTransaction_Fee 作为 Transaction_Fee 表中的主键,因为每个交易Transaction_Fee不能重复。

现在我的问题是,由于idTransaction_Fee将有2个主键,是否强制创建一个唯一Transaction_Fee 的 key ?我问这个问题的原因是在某些情况下,我看到人们在表中有 2 个主键时创建唯一键。但就我而言,由于可以使用自动生成的 ID idTransaction_Fee 轻松识别 Transaction_Fee,因此我认为不需要 Unique Key

但是,我愿意在继续之前听取专家的建议。

最佳答案

在一个表中永远不会有两个主键,根据定义,您只有一个主键。

您的要求似乎是:

  • 交易表中的唯一 ID。
  • 费用表中的唯一 ID。
  • 每笔交易最多收取一笔费用。

在这种情况下,您要做的就是在两个表中为其相应的 ID 创建主键,这将防止这些表中出现重复的 ID。

然后,您需要对 Transaction_Fee 表中的 idTransaction 列进行唯一约束。这将防止两项费用属于同一笔交易,因为任何两项费用都不可能具有相同的交易 ID。

此列还应该有一个外键约束,引用 Transaction(idTransaction),以确保它指向有效交易(即没有孤立费用)。

这仍然允许交易费用,并且还有一些方法可以确保这种关系在两个方向上都是真正一对一的(如果是这样的话)您想要的(每笔交易只需一笔费用,而不是零或一)。

但是,在这种情况下,费用实际上似乎是交易本身的属性,并且可能应该直接进入交易表。

关于MySQL:当表中有2个 `Unique Key`时,是否必须创建 `Primary Keys`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27222021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com