如何在 MySQL 中嵌入外键计算?

How can I embed calculations on foreign keys in MySQL?

我正在 MariaDB 中创建两个表,其中一个表有一列是外键的计算。脚本的简化版本遵循以下格式:

CREATE TABLE a {
pk     INT     PRIMARY KEY,
value  INT
}
CREATE TABLE b {
pk     INT     PRIMARY KEY,
value  INT,
calc   INT,
CONSTRAINT fk
  FOREIGN KEY (value)
  REFERENCES a (value)
}

原来'calc'总是等于'value'+1。当查询 'b' 时,b.value 永远不会被引用,但 b.calc 经常被引用。 我应该删除 'calc' 以保留第三范式,还是有办法删除 b.calc 对 b.value 的依赖?类似于:

CREATE TABLE b {
pk     INT     PRIMARY KEY,
calc   INT,
CONSTRAINT fk
  FOREIGN KEY (calc)
  REFERENCES a (value+1)
}

感谢您的帮助。

外键必须具有引用列的实际值。

您可以使用虚拟(AKA 生成的)列来创建计算列。

CREATE TABLE b (
    pk INT PRIMARY KEY,
    value INT,
    calc GENERATED ALWAYS AS value + 1,
    FOREIGN KEY (value) REFERENCES a (value)
);