创建一个多对多的表,当它们与同一个实体有关系时,可以重用这些表

时间:2016-09-05 16:25:52

标签: sql sql-server database database-design relational-database

我的数据库中有一个表[Team]。许多其他表需要与此表有多对多的关系。这主要是由于我的另一个表中的各种记录具有基于当前用户所在团队的授权设置。

例如,我的[User]表中的记录可以链接到许多团队,团队可以链接到许多[Ticket]记录。如果团队重叠,则该用户现在有权查看[故障单]。

我正在考虑两个选项,首先为每个[UserTeam]和[TicketTeam]分别有一个表,例如,票务团队将有以下列Id,TicketId,TeamId

我的第二个选择是将两者的数据存储在同一个表中。为此,我将创建一个[AuthorisationRecord]表,其中包含一个Id列和一个带有Id,AuthorisationId,TeamId的[AuthorisationRecordTeam]表。我还需要在[Ticket]和[User]表AuthorisationRecordId上添加一个额外的列。这有需要额外列的缺点,每次创建记录时我们还必须创建[AuthorisationRecord]记录。

如果只是这两个表,我认为每个表分别有多个表是有意义的。然而,由于有许多表需要与[Team]表具有相同的关系,并且未来还有更多的潜力,我倾向于我的第二个选项,因为每当我们添加需要的新功能时,这将简化开发过程基于团队的授权,我们不必再添加多个表,只需添加一个与我的[AuthorisationRecord]表有关系的额外列。

我的问题是天气这是一个很好的可扩展的想法?看起来它会大大简化我的数据库,因为我的[Team]表只有一个,而不是潜在的数百到多个表。但是,我无法在网上找到有关这种潜在方法的资源,所以我认为这可能是一个坏主意。

0 个答案:

没有答案