对同一表中记录之间的抽象“兼容性”进行建模的最佳 RDBMS 结构是什么?

问题描述

我有一个小部件表。一些小部件通过抽象分组与其他小部件兼容:组中的所有小部件都与所有其他小部件兼容,尽管分组本身没有具体定义。在实践中,当添加一个新的“Widget B”时,用户可以标记它与现有“Widget A”的兼容性,然后业务逻辑将确保正确的数据结构来表达与已经与Widget A共享兼容性的所有其他Widget的兼容性。

我目前的概念:

Widget (widget_id PK,name)  
Compatibility (compat_id PK)  
Widget_Compatibility (widget_id FK,compat_id FK)

其中 Compatibility 是一个完全任意的对象,没有属性,但必须通过链接表具有一个或多个相关的 Widget。

问题是:是否有其他常见(或更有效)的模式来表示这个概念?

(我的第一个 SO 帖子,所以提前感谢您的耐心)

解决方法

为什么不将“兼容性组”字段添加到您的小部件表中?当您想表明 2 个小部件兼容时,如果任一小部件已填充此字段,则使用该字段中的值,否则生成一个新值并更新两个小部件记录上的字段