【问题标题】:How to choose what FOREIGN KEY to create on what attribute?如何选择在什么属性上创建什么 FOREIGN KEY?
【发布时间】:2020-05-06 10:39:25
【问题描述】:

假设我有 2 个具有以下属性的表。

表 1(客户):id (PRIMARY)、customer (UNIQUE)、totalspent

表 2(收据):id、成本

我需要在客户或收据上创建哪些索引,以便在从表中删除客户时,通过 id 与他绑定的所有收据也会被删除?

我将receipts.id 设置为主键,但是在删除客户的条目时,它们不会从收据中删除。我应该让customers.id 成为引用receipts.id 的外键吗?主键可以是外键吗?

【问题讨论】:

  • 收据需要一个客户ID列(外键)。
  • 那么我是否将receipts.customerid 标记为引用customers.id 的外键?我不需要在customers.id 上创建任何额外的索引?
  • FOREIGN KEYINDEX 是不同的东西。)

标签: mysql sql database database-design


【解决方案1】:

您正在寻找级联外键约束,而不是索引。

alter table receipts add constraint fk_receipts_cust
    foreign key (cust) reference customers(id)
        on delete cascade;

在 MySQL 中,外键也发生来创建索引。这是 MySQL 的“特殊功能”。您正在寻找的功能是级联部分。您可以在documentation 中阅读更多相关信息。

【讨论】:

  • 谢谢,这就是我的目的!
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 2016-07-12
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多