如何在 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)
);
我正在 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)
);