通过多个表链接多对多关系的查询

问题描述:

我在制作一个测验程序。在测验中,我有很多参与者,但另一方面参与者可以输入很多测验(随着时间的推移)。所以我用链接表克服了这种多对多的关系。到目前为止,我可以理解..现在为我的困难:参与者可以是一个组或一个单一的球员。通过多个表链接多对多关系的查询

所以测验有一个参与者(一个链接表),这参与者要么其中有几个人,或该参与者是球员,只有一个单人组。

table Quiz : PrimaryKey = quiz_id, (name, date,...) 
table QuizParticipant : PrimaryKey = quiz_participant_id, quiz_id 
table ParticipantGroup : PrimaryKey = quiz_participant_id, group_id 
table participantPlayer : PrimaryKey = quiz_participant_id, person_id 

这个问题对我来说是:我怎么查询测验的所有参与者通过quiz_id,最好按类型(组或播放器)对它们进行排序?

诀窍,谷歌这个东西是有用的,以及:)

这是一个有趣的设计决定。你继续的方式可以塑造你的整个应用程序。

我的建议是记录每次参加参与者的参与者类型。这将是“GROUP”或“PLAYER”,并将定义ParticipantID是指GroupID还是PlayerID。这最终将导致最干净的数据库设计和应用程序逻辑。

所以,你的表是这样的:

测验(QuizID,QuizName) QuizParticipation(ParticipationID,参与方,ParticipantID) 集团(组ID,组名) GroupMembers(组ID,PlayerID) 播放器(PlayerID,名称)

您可能需要进行自定义约束,以确保无法在QuizParticipation表的ParticipantID和ParticipationType组合字段中创建重复项,或仔细管理主键的生成。

我的建议是你的测验始终链接到组(多对多)和治疗单球员一组1.所以,你的组连接到播放器(也多对多)

如果一个人可以属于多个组和一组可以有很多人,这是另一种多对多的关系。由于您知道如何创建这些链接表,请为此关系创建一个。