【问题标题】:Multi level unique index(Database)多级唯一索引(数据库)
【发布时间】:2021-02-06 21:42:42
【问题描述】:

假设我们有 3 个表(分层)

表 A

id, name, ....

表 B

id, a_id, name

表 C

id, b_id, name
table A (id, name, ....)
^
|
table B (id, a_id, name)
^
|
table C (id, b_id, name)

我想在表 C 上创建唯一的 Index(a_id, name) 而不是 (b_id, name) 没有多余的并在每个表中插入 a_id 如何!!!

【问题讨论】:

  • 一个索引不能跨越两个表。

标签: mysql database database-design erd


【解决方案1】:

您的要求与关系数据库的设计原则相冲突。

我假设从 C 到 A 的索引应该反映从 C 到 B 再从 B 到 A 的关系的传递闭包。现在,如果 C 本身包含到 A 的链接,如果 B 记录会发生什么b 将其关联从 a1 更改为 a2?相应的 C 记录不会注意到这一点,因此实际上从它们到 a1 的链接将具有它们自己的含义,而不是连接到 b 的含义。

所以,除非有语义上的原因将 C 链接到 A 并将链接存储在 C 中,否则您将不得不从 C 中找到 B 的当前状态。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2023-03-08
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2010-09-05
    相关资源
    最近更新 更多