如何在sql server 2008中建模兼容性矩阵数据库; 即我有4组设计。如果我选择第1组和第4组,我的选择将影响第2组和第3组,并且会使它们无法选择,因为它们与我的选择不兼容。
我是初学者,所以我的解释可能看似水汪汪,请原谅!
答案 0 :(得分:1)
任何类型的“矩阵”本质上都是M:N关系,只有在这种情况下,矩阵的“轴”代表相同的东西(“设计组”)。表格与其自身的M:N关系可以这样建模:
假设关系是双向的,您还应在COMPATIBILITY表中添加:CHECK(GROUP_ID1 < GROUP_ID2)
。例如,这将允许(1,4),但阻止(4,1)进入表格。
您问题中的示例将由数据库中的以下数据表示:
<强> GROUP:强>
GROUP_ID
--------
1
2
3
4
<强>兼容性:强>
GROUP_ID1 GROUP_ID2
--------- ---------
1 4
当用户选择组X时,您将运行以下查询以查找与其兼容的组。其余组 - 兼容。
SELECT GROUP_ID1
FROM COMPATIBILITY
WHERE GROUP_ID2 = :X
UNION ALL
SELECT GROUP_ID2
FROM COMPATIBILITY
WHERE GROUP_ID1 = :X
对于1,这将返回4,对于4,它将返回1.在任何一种情况下,2和3都不会返回 - 这是一个不兼容的标志。
另一方面,如果你想在选择1 和 4时禁用2和3,但是当只选择1或只选择4时则不行,这是一个不同的问题,会更多复杂的关系范式模型。如果那是你真正需要的,请告诉我......