一对多关系中的交汇表?

时间:2015-12-23 20:14:02

标签: mysql

我有一个关于交接表的问题,我真的希望你可以帮助我,因为它让我感到困惑。我知道连接表通常用于创建两个一对多关系而不是一对多关系,但请参阅下面的示例:

在假设情况下,用户可以拥有多张照片(如投资组合),但也有可以拥有多张照片的群组。

我认为情况看起来像这样(如果我在这里已经错了,请纠正我): Image 1

但是,使用如下图所示的联结表来创建情境不是更好: Image 2

通过这种方式,您可以防止Photo表获取大量NULL值,假设您将两个外键User_ID和Group_ID设置为NOT NULL。

感谢您的时间,我希望有人能指导我。

1 个答案:

答案 0 :(得分:0)

这就是我所做的......我创建了一个有三列的关联表

leftsideID,relatortype,RightSideID

在你的情况下..你有两种关系类型,将照片连接到事物。 用户和组。

所以我会有两个相关类型USERPHOTO和GROUPPHOTO。 所有RightSideID都指向照片表中的照片键。

所有leftside ID都带有userid或groupid,基于relator类型,例如:

leftsideid    relatortpype    rightside
==========    ============    =========
1             'userphoto'       1
2             'groupphoto'      1
1             'userphoto'       2

这说(三行),user1有两张照片(1,2),group2有照片(1)

没有空。我已经使用了很多成功的设计模式。

它基本上是一个通用的连接表,给出了你的例子。