我有一个关于交接表的问题,我真的希望你可以帮助我,因为它让我感到困惑。我知道连接表通常用于创建两个一对多关系而不是一对多关系,但请参阅下面的示例:
在假设情况下,用户可以拥有多张照片(如投资组合),但也有可以拥有多张照片的群组。
我认为情况看起来像这样(如果我在这里已经错了,请纠正我): Image 1
但是,使用如下图所示的联结表来创建情境不是更好:
Image 2
通过这种方式,您可以防止Photo表获取大量NULL值,假设您将两个外键User_ID和Group_ID设置为NOT NULL。
感谢您的时间,我希望有人能指导我。
答案 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)
没有空。我已经使用了很多成功的设计模式。
它基本上是一个通用的连接表,给出了你的例子。