在同一 table 中的记录之间建模抽象 "compatibility" 的最佳 RDBMS 结构是什么

What's the best RDBMS structure to model an abstract "compatibility" between records in the same table

我有 table 个小部件。一些 Widgets 通过抽象分组与其他 Widgets 兼容:一个组中的所有 Widgets 都与所有其他 Widgets 兼容,尽管分组本身没有具体定义。实际上,当添加一个新的“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 是一个完全任意的对象,没有属性,但必须通过 link table.

有一个或多个相关的 Widget

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

(我的第一个 SO post,在此先感谢您的耐心等待)

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