引用两个彼此相关的表

时间:2015-01-18 20:16:08

标签: mysql sql relational-database

想象一下,我有这些实体:FolderGroupDocument

现在,每个Folder都有DocumentDocument,这些Group可以FolderFolderDocument 1}}。

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

我将如何构建这种关系?

我在考虑两种方式:

  1. Group属于FolderGroup属于Folder。这个 要求我总是有一个" ungrouped"每Document Folder Group (真的很难看。)
  2. Group同时属于FolderFolderGroup属于 group_id。这样我就可以参考Document和。{ Group,其中Folder可以为null以表示"未组合"。 但是,通过为a分配Group,这会打开错误的大门 Folder / Document,{{1}}不属于{{1}}。
  3. 两种解决方案似乎都没有。这可能需要某种复合键,而{{1}}会引用它。

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

1 个答案:

答案 0 :(得分:0)

我希望您的第二种方法能够让您在实际应用中遇到最少的麻烦。虽然它可能取决于实际应用的具体情况。

另一种选择是让的组属于文件夹(因为它不是明确的要求),因此相同的group_id可能跨越各种文件夹。然后,您将在(folder_id, group_id)表中将一对Document解释为实际的组标识符。