Mysql 参考两个相互关联的表

Mysql 参考两个相互关联的表,mysql,sql,relational-database,Mysql,Sql,Relational Database,假设我有以下实体:文件夹,组,文档 现在,每个文件夹都有许多文档,这些文档,在文件夹内可以有一个组,也可以没有 因此,文件夹将同时包含分组和未分组的文档 我将如何构建这种关系 我在想两种方法: 文档属于组,组属于文件夹。这 要求我始终为每个文件夹 (真难看) 文档属于文件夹和组,组属于 文件夹。这样我就有了对文件夹的引用和 Group,其中Group\u id可以为空以表示“未分组”。 但是,通过将文档分配给 组/文件夹,其中组不属于该文件夹 这两种解决方案似乎都不对。这可能需要某种复合键,文档

假设我有以下实体:
文件夹
文档

现在,每个
文件夹
都有许多
文档
,这些
文档
,在
文件夹
内可以有一个
,也可以没有

因此,
文件夹
将同时包含分组和未分组的
文档

我将如何构建这种关系

我在想两种方法:

  • 文档
    属于
    属于
    文件夹
    。这 要求我始终为每个
    文件夹
    
    (真难看)
  • 文档
    属于
    文件夹
    属于
    文件夹
    。这样我就有了对
    文件夹的引用
    Group
    ,其中
    Group\u id
    可以为空以表示“未分组”。 但是,通过将
    文档
    分配给
    /
    文件夹
    ,其中
    不属于该
    文件夹
  • 这两种解决方案似乎都不对。这可能需要某种复合键,
    文档将引用它


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

    我希望您的第二种方法在实际应用程序中给您带来的麻烦最少。尽管这可能取决于实际应用程序的具体情况


    另一种选择是让组不属于文件夹(因为这不是明确的要求),这样相同的
    组id
    可能跨越不同的文件夹。然后,您会将一对
    (folder\u id,group\u id)
    解释为
    文档
    表中的实际组标识符。

    我实际上不希望组跨越多个文件夹,忘了提到这一点。我使用了第二种方法,验证应用程序中的关系。