我有一个名为'Website‘的父表,它保存有关网站的记录。我有一个名为'SupportSystem‘的子表,它保存了不同类型的支持系统的记录,如电子邮件、电话、票务、实时聊天等。还有一个中间表'Website_SupportSystem’,它以多对多的关系连接这些表。
如果网站的SupportSystem正在售票,我还想记录软件平台.e.g。WHMCS。我的直觉是创建一个名为SupportPlatform的新查找表,并将其与现有的连接表'Website_SupportSystem‘相关联,并将数据存储在那里。然而,SupportSystem和SupportPlatform之间就没有关系了。如果我将它们关联起来,那么我最终会得到一个循环引用。
你能看到我做错了什么吗?对此数据建模的最佳方式是什么?
发布于 2010-02-25 10:27:18
您可以使用超类型/子类型关系,如图所示。

发布于 2010-02-23 10:15:30
我会在"SupportSystem“表中添加一个新列”SupportPlatformId“,该列查找表"SupportPlatform",因为"SupportSystem”到"SupportPlatform“可能是一对一或多对一。
因此: Website -> (通过Website_SupportSystem) SupportSystem -> SupportPlatform
发布于 2010-02-23 17:57:50
有关支持平台的数据应存储在SupportPlatform表中。
您可以向Website_SupportSystem表添加第三个外键,即SupportPlatfromID。如果这样做,您的中间表现在记录了一种多对多对多的三元关系。如果这反映了现实,那么就这样吧。
如果您希望将SupportSystems和SupportPlatforms关联起来,只需在连接中使用中间表作为中间表。您甚至可以通过中间表执行三向连接来连接所有三个实体。
另一种方法是创建另一个中间表SupportPlatform_SupportSystem,其中包含一对外键,即SupportSystemID和SupportPlatformID。如果这能更好地反映现实,那就这样吧。然后,如果需要,您可以使用五个表连接将所有这些连接在一起。
https://stackoverflow.com/questions/2315692
复制相似问题