如何确保两个引用的外键 table 与另一个 table 具有相同的外键?
How to ensure two referenced foreign key tables have the same foreign key to another table?
假设我想在关系数据库(在我的例子中是 PostgreSQL)中对具有不同形状和内容的矩阵进行建模。我们可以存储多个不同的矩阵。每个矩阵都有许多行和列,每个行和列都可能有一些属性(例如名称、位置...)。我们可以在矩阵的每个单元格(行 + 列组合)中存储值条目。
所以我们有一个分层设计,从上到下有 1:n 关系,行 + 列作为兄弟姐妹,它们都被一个条目引用。
行和列 table 都有一个 matrixId
外键。条目 table 将 rowId
和 columnId
作为外键。
但是,如果不采取进一步措施,可能会创建一个引用属于不同矩阵的行和列的条目。
确保条目始终引用具有相同 matrixId
的行和列的最佳做法是什么?
我想,我们可能还需要在条目中添加一个 matrixId
字段,尽管这会引入某种冗余。
是,在 entry
和 row
和 column
中的(不一定是主要的)^1 键中包括 matrixid
以及 rowid
或columnid
,分别参考 entry
.
附带说明:拼写为“PostgreSQL”。 “postGreSQL”真的很蛋疼...
^1:尽管 rowid
或 columnid
是矩阵中行或列的序数,这会使 (matrixid, rowid)
或 (matrixid, columnid)
一个很好的主键候选者。
假设我想在关系数据库(在我的例子中是 PostgreSQL)中对具有不同形状和内容的矩阵进行建模。我们可以存储多个不同的矩阵。每个矩阵都有许多行和列,每个行和列都可能有一些属性(例如名称、位置...)。我们可以在矩阵的每个单元格(行 + 列组合)中存储值条目。
所以我们有一个分层设计,从上到下有 1:n 关系,行 + 列作为兄弟姐妹,它们都被一个条目引用。
行和列 table 都有一个 matrixId
外键。条目 table 将 rowId
和 columnId
作为外键。
但是,如果不采取进一步措施,可能会创建一个引用属于不同矩阵的行和列的条目。
确保条目始终引用具有相同 matrixId
的行和列的最佳做法是什么?
我想,我们可能还需要在条目中添加一个 matrixId
字段,尽管这会引入某种冗余。
是,在 entry
和 row
和 column
中的(不一定是主要的)^1 键中包括 matrixid
以及 rowid
或columnid
,分别参考 entry
.
附带说明:拼写为“PostgreSQL”。 “postGreSQL”真的很蛋疼...
^1:尽管 rowid
或 columnid
是矩阵中行或列的序数,这会使 (matrixid, rowid)
或 (matrixid, columnid)
一个很好的主键候选者。