用于标记照片中人物的SQL关系

时间:2017-08-15 21:10:53

标签: c# sql-server

我在C#中使用SQL Server编写了一个文档映像应用程序来编目祖先照片。在一个表中是所有的祖先,在另一个表中我存储照片以及有关照片的信息。显然,每个祖先都可以有一张或多张照片。这个设计很简单,我建立了一对多的关系,它很有效。

问题在于:如何处理包含多个人的照片?这似乎是多对一的关系,除了许多也会很多。

2 个答案:

答案 0 :(得分:1)

您描述的是多对多关系。这实际上很常见。

通常在额外的桌子的帮助下解决。

因此,如果你有人物和照片,你可以创建一个额外的表PersonPhoto。

此表包含(至少)两个字段,PersonId和PhotoId。

根据PhotoId,你没有定义基于PersonId的Person到PersonPhoto之间的一对多关系,以及从Photo到PersonPhoto的另一个一对多关系。

有效地,你现在在人与照片之间有多对多的关系:任何照片都可以包含很多人,任何人都可以拍很多照片。

答案 1 :(得分:0)

知道了! BJ,感谢您编辑我的初始帖子,而不仅仅是删除它。好多了。 oerkelens,谢谢你的快乐。

我使用三个字段创建了额外的表:keyPersonID,keyLineNo和fldPhotoID。 keyLineNo为一个人提供一对多以及外键字段以及对结果进行排序的方法。然后我使用fldPhotoID为我的照片一对一。

一旦我看到你的反应,这一切都是有道理的。