基本上我有一个第一个表,它有一些简单的信息可以存储在一列中,第二个表是一个大的二维数组。
我的第一个表中的每一列都对应于二维数组中的所有数据,所以因为我不想为第二个表中的每一行重复第一个表信息,所以我想创建一个主键到链接这两个表。
由于我的第二个表中的所有数据都与我的第一个数据相对应,因此如果我可以使用表名本身而不是任何值来链接这两个表,那将会很棒。
这可能吗?我只见过外键值与另一个表中的主键相对应。
答案 0 :(得分:2)
MySQL不要求外键引用主键,它甚至不必是唯一键。它只需要一个索引。因此,对于2-D数组的每一行,您的第二个表可以具有非唯一array_id
列,并且第一个表可以具有此外键。
CREATE TABLE table1 (
id INT PRIMARY KEY,
notes INT,
time INT,
...,
CONSTRAINT (notes) FOREIGN KEY REFERENCES table2 (array_id),
CONSTRAINT (time) FOREIGN KEY REFERENCES table2 (array_id),
...
);
CREATE TABLE table2 (
array_id INT,
row INT,
column INT,
value INT
PRIMARY KEY (array_id, row, col)
);
因此,如果您希望获取与notes
中特定行相关的table1
数组,则可以执行以下操作:
SELECT t2.*
FROM table1 AS t1
JOIN table2 AS t2 ON t1.notes = t2.array_id
WHERE t1.id = @id