【问题标题】:How to design a database to create associations between multiple modules?如何设计一个数据库来创建多个模块之间的关联?
【发布时间】:2013-09-01 01:00:08
【问题描述】:

假设我们的 Web 应用程序由许多模块组成。每个模块都有自己的表格。

现在,如果我需要保持我的模块和另一个模块之间的关系,理想情况下,我将创建另一个表,例如 module1_module2_relationship,其中包含模块 1 pk 和模块 2 pk。假设我还需要存储更多关于此关系的列,我将在此关系表中添加更多列。

但我的模块可以与许多模块有关系,我不想为每个模块创建新表。

这里的重点是给定我的模块 ID,我需要知道它关联的所有模块是什么?而且我不想对每个关系表运行查询,只是找出表中是否存在模块 ID。

我该如何设计这样的数据库?

【问题讨论】:

    标签: database-design


    【解决方案1】:

    您可以制作一张表来保存与描述模块的列以及模块的 PK 的所有关系:

    tblModuleRelationship
    ---------------------
    Module1_Name
    Module1_PK
    Module2_Name
    Module2_PK
    

    并在所有 4 列中创建唯一约束。

    这样做的明显缺点是您不能真正使用 FK 关系

    【讨论】:

      【解决方案2】:

      我们的 Web 应用程序由许多模块组成。每个模块都有自己的表格。

      好的。这很有趣...

      如果我需要保持我的模块和另一个模块之间的关系,理想情况下我会创建另一个表

      是的。完全正确。

      但是我的模块可以和很多模块有关系

      没问题!

      我不想为每个模块创建新表。

      哇!!!!

      您将拥有完全 一个“模块关系”表。每行将有 两个 外键:每个“模块”一个。

      添加新关系?很简单:添加一个新行。

      创建与新模块的新关系?同样简单:只需添加另一行。

      一个关系表。尽可能多/尽可能少的行。真的就这么简单:)

      【讨论】:

      • 感谢您的回答。如果我只有一个只有 pk 列的关系表,我如何通过查看 pk 知道模块名称。同样很可能,我可能不仅需要为一个模块存储 pk ,而且还需要存储该模块的更多列。例如Module 1 PK - Module 2 PK,Module 2(其他一些列。每个模块的列数可能会有所不同。
      • 您可以朝着某个方向前进,例如您可以在关系表中添加更多列,例如 module1name、module1ID、module2Name、module2ID。我认为是否可以解决您的问题?
      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2011-08-27
      相关资源
      最近更新 更多