我有一个实体Status
,它(除其他外)与其自身具有多对多关系,代表“可能的下一个状态”。
这个想法是能够创建状态之间转换的“地图”。
现在,我正在尝试生成一个尚未链接到给定状态的状态列表,以填充“链接到此状态”表单中的组合框(换句话说,我想要那些可以链接的状态) .
到目前为止,我已经找到了 25 种不这样做的方法。:)
好的,所以很多人都在询问更多细节——我认为就合理的数据库设计而言,有些事情是理所当然的(实际上它们对于答案并不重要)。
a) 所有状态都有一个且只有一个 KEY 列,即它们的主键。
b) 状态通过连接表相互“连接”,该连接表有 2 个外键,都是状态的主键。
c) 如果我有状态 A、B、C 和 D - 并且我已经将状态 B 和 C 链接到 A,所以我有:A -> B 和 A -> C 目的是找到这些状态存在在状态表中,尚未连接到“A”。当我说“A”时,我的意思是作为参数给出的状态。所以,如果我正在查看状态 A,我希望所有未连接到“A”的人。如果我正在查看状态 CI,则无论它们是否连接到不同的状态,都希望所有未连接到状态 C 的人。
任何帮助,将不胜感激。我不是在逐字寻找确切的查询,而是在寻找“可以完成的方式”。我会很容易地弄清楚如何在我的特定数据库设计中应用该原则,但我找不到要应用的“原则”。