如何确保两个引用的外键 table 与另一个 table 具有相同的外键?

How to ensure two referenced foreign key tables have the same foreign key to another table?

假设我想在关系数据库(在我的例子中是 PostgreSQL)中对具有不同形状和内容的矩阵进行建模。我们可以存储多个不同的矩阵。每个矩阵都有许多行和列,每个行和列都可能有一些属性(例如名称、位置...)。我们可以在矩阵的每个单元格(行 + 列组合)中存储值条目。

所以我们有一个分层设计,从上到下有 1:n 关系,行 + 列作为兄弟姐妹,它们都被一个条目引用。

行和列 table 都有一个 matrixId 外键。条目 table 将 rowIdcolumnId 作为外键。

但是,如果不采取进一步措施,可能会创建一个引用属于不同矩阵的行和列的条目。

确保条目始终引用具有相同 matrixId 的行和列的最佳做法是什么?

我想,我们可能还需要在条目中添加一个 matrixId 字段,尽管这会引入某种冗余。

是,在 entryrowcolumn 中的(不一定是主要的)^1 键中包括 matrixid 以及 rowidcolumnid,分别参考 entry.

附带说明:拼写为“PostgreSQL”。 “postGreSQL”真的很蛋疼...

^1:尽管 rowidcolumnid 是矩阵中行或列的序数,这会使 (matrixid, rowid)(matrixid, columnid) 一个很好的主键候选者。