引用两个相互关联的表

Reference two tables that are related to each other

假设我有这些实体:FolderGroupDocument

现在,每个 Folder 有很多 Document,这些 Document 可以有一个 Group,也可以没有,在 Folder 里面。

因此,Folder 将同时包含分组和未分组的 Document

我将如何构建这样的关系?

我想到了两个办法:

  1. Document 属于 GroupGroup 属于 Folder。这个 要求我对每个 Folder 总是有一个 "ungrouped" Group (真的很丑)
  2. Document属于FolderGroupGroup属于 Folder。这样我就可以参考 FolderGroup,其中 group_id 可以为 null 以表示 "ungrouped"。 但这为错误打开了大门,通过将 Document 分配给 a Group/Folder 其中 Group 不属于 Folder.

两种解决方案似乎都不对。这可能需要某种复合键,Document 会引用它。

这样做的正确方法是什么?

我希望您的第二种方法在实际应用程序中最不会让您头疼。虽然这可能取决于实际应用程序的细节。

另一种选择是让组 not 属于文件夹(因为这不是明确的要求),因此相同的 group_id 可能跨越各种文件夹。然后,您会将 (folder_id, group_id) 对解释为 Document table.

中的实际组标识符