如何构建一个包含所有类之间多对多关系的数据库?

时间:2017-08-30 19:08:28

标签: database-design

我有大约6节课。每个人与其他人有很多很多关系。我考虑过使用树形结构,但这是层次结构......它们的关系不是分层的。

2 个答案:

答案 0 :(得分:0)

一个灵魂就是在多对多的关系中添加一个额外的表格。它拥有的唯一值是对相关表的PK的引用。然后,这两个FK为m:m关系表本身构建PK。例如:

播放器表&锦标赛桌 - 一名球员可参加许多锦标赛,一场锦标赛可以让很多球员参加比赛。

m:m - > PlayerId +++ TournamentId;这两个是表格中的所有内容,它们应该是PK并且是独一无二的。所以你没有冗余数据。

答案 1 :(得分:0)

您可以为每个多对多关系使用所谓的联结表。例如,假设您将Users和Projects作为两个具有多对多关系的表。您使用UserId和ProjectId构建一个名为UserProjects的表,而不是其他任何内容。然后在这两个字段上创建主键。然后从UserId创建外键 - 用户表,在ProjectId上创建项目表。