子类型的表关系

问题描述:

我有一个名为“网站”的父表,它保存关于网站的记录。我有一个名为'SupportSystem'的子表,它保存关于不同类型的支持系统的记录,例如电子邮件,电话,票务,实时聊天等。有一个中间表'Website_SupportSystem',它以许多关系连接这些表。子类型的表关系

如果网站的支持系统是票务,我也想记录软件平台。 WHMCS。我的直觉是创建一个名为SupportPlatform的新查找表,并将其与现有连接表'Website_SupportSystem'相关联并将数据存储在那里。但是,SupportSystem和SupportPlatform之间没有关系。如果我把它们联系起来,那么我最终会得到一个循环引用。

你能看到我在做什么错吗?建立这些数据的最佳方法是什么?

您可以使用超类型/子类型关系,如图所示。

  • SupportSystem表包含适用于所有支持系统列。
  • 电子邮件票务电话ID登录表有具体到每一个列。
  • 子类型表中的主键也是超类型表的外键。

supportsystem_model_01

我会在查找“SupportPlatform”表的“SupportSystem”表中添加一个新的'SupportPlatformId'列,因为从“SupportSystem”到“SupportPlatform”可能是一对一或多对一的。

因此:网站 - >(通过Website_SupportSystem)SupportSystem - >载体 -

约的支撑平台数据应该存储在载体 - 表

您可以添加第三个外键,即SupportPlatfromID,对。 Website_SupportSystem表。如果你这样做,你的中间表现在记录一个三元关系离子,这种类型的多对多。如果这反映了现实,那就这样吧。

如果您想关联SupportSystems和SupportPlatforms,只需使用中间表作为联接中的中间表即可。您甚至可以通过中间表执行三种方式的联接来加入所有三个实体。

另一种方法是使用一对外键创建另一个中间表SupportPlatform_SupportSystem,即SupportSystemID和SupportPlatformID。如果这能更好地反映现实,那就这样吧。然后,如果需要的话,您可以连同五个表连接一起加入。