设计SQL表并在第一时间将其正确

设计SQL表并在第一时间将其正确,sql,database-design,Sql,Database Design,我目前正在为我的公司开发一个问题跟踪器,帮助他们跟踪网络出现的问题。我正在使用C#和SQL 每个问题都有大约20件我们需要跟踪的事情(状态、工作损失、谁创建的、谁在处理的等等)。我需要将受问题影响的团队列表附加到我的主要问题表中的每个条目。理想情况下,受影响的团队列表包含指向唯一表实例的某种链接,仅针对该问题,该表显示了受影响团队的列表以及每个团队实验室受影响的百分比 所以我的问题是,在问题表条目和该问题的唯一表之间实现这种“链接”的最佳方式是什么?或者我对这个问题的想法是错误的。如果我正确理解

我目前正在为我的公司开发一个问题跟踪器,帮助他们跟踪网络出现的问题。我正在使用C#和SQL

每个问题都有大约20件我们需要跟踪的事情(状态、工作损失、谁创建的、谁在处理的等等)。我需要将受问题影响的团队列表附加到我的主要问题表中的每个条目。理想情况下,受影响的团队列表包含指向唯一表实例的某种链接,仅针对该问题,该表显示了受影响团队的列表以及每个团队实验室受影响的百分比


所以我的问题是,在问题表条目和该问题的唯一表之间实现这种“链接”的最佳方式是什么?或者我对这个问题的想法是错误的。

如果我正确理解了这个问题,我会创建

  • 包含20个一般项目的问题表
  • 包含团队列表的团队表
  • 团队发布包含两者之间链接的表
TEAM_ISSUES表需要包含问题和团队表的外键(即它应该包含问题ID和团队ID…因此它充当两个“主”表之间的交集。听起来这也是放置百分比的地方


这有意义吗?

如果我正确理解这个问题,我会创建

  • 包含20个一般项目的问题表
  • 包含团队列表的团队表
  • 团队发布包含两者之间链接的表
TEAM_ISSUES表需要包含问题和团队表的外键(即它应该包含问题ID和团队ID…因此它充当两个“主”表之间的交集。听起来这也是放置百分比的地方

这有意义吗?

我们可以在您的域中看到这些实体:

  • 问题
  • 团队”受该问题影响,占一定比例
  • 因此,在确定了这两个项目之后,您可以用两个表来表示,它们之间的关系是另一个表,也可以跟踪百分比影响

    希望这有帮助。

    我们可以在您的域中看到这些实体:

  • 问题
  • 团队”受该问题影响,占一定比例
  • 因此,在确定了这两个项目之后,您可以用两个表来表示,它们之间的关系是另一个表,也可以跟踪百分比影响


    希望这能有所帮助。

    这听起来像是一个经典的多对多关系。。。 你可能想要三张桌子

  • 一个用于问题,每个单独的唯一问题创建一条记录(行)

  • 一个代表团队,一个记录代表你公司的每个团队

  • 还有一个叫做say,“IssueTeams”或“TeamIssueAssociations”或“IssueAffectedTeams”的表格,用来保存两者之间的关联

    最后一个表将为受问题影响的每个团队提供一条记录(行)…此表将在列IssueId和TeamId上具有一个2列复合主键…每行必须具有这两个值的唯一组合…每一个值都单独是一个外键(FK)分别添加到问题表和团队表

  • 对于每个团队,此表中可能有零到多条记录,对于团队受到影响的每个问题


    对于每个问题,可能有零到多个记录,每个记录都代表问题影响的团队。

    这听起来像是一个经典的多对多关系。。。 你可能想要三张桌子

  • 一个用于问题,每个单独的唯一问题创建一条记录(行)

  • 一个代表团队,一个记录代表你公司的每个团队

  • 还有一个叫做say,“IssueTeams”或“TeamIssueAssociations”或“IssueAffectedTeams”的表格,用来保存两者之间的关联

    最后一个表将为受问题影响的每个团队提供一条记录(行)…此表将在列IssueId和TeamId上具有一个2列复合主键…每行必须具有这两个值的唯一组合…每一个值都单独是一个外键(FK)分别添加到问题表和团队表

  • 对于每个团队,此表中可能有零到多条记录,对于团队受到影响的每个问题


    对于每个问题,可能有零到多个记录,每个记录代表问题影响的团队。

    我不会为每个问题创建唯一的表。我会这样做

    Table: Issue IssueId primary key status workLoss createdby etc Table: Team TeamID primary key TeamName etc Table: IssueTeam IssueID (foreign key to issue table) TeamID (foreign key to team table) PercentLabsAffected 表:问题 IssueId主键 地位 工作损失 创建者 等 表:团队 TeamID主键 团队名称 等 表:IssueTeam IssueID(问题表的外键) TeamID(团队表的外键) 受影响百分比
    我不会为每个问题创建一个唯一的表。我会这样做

    Table: Issue IssueId primary key status workLoss createdby etc Table: Team TeamID primary key TeamName etc Table: IssueTeam IssueID (foreign key to issue table) TeamID (foreign key to team table) PercentLabsAffected 表:问题 IssueId主键 地位 工作损失 创建者 等 表:团队 TeamID主键 团队名称 等 表:IssueTeam IssueID(问题表的外键) TeamID(团队表的外键) 受影响百分比
    除非我理解错误,否则您不应该为问题的每个实例都有一个唯一的表


    您的数据库应该有三个表:一个问题表、一个团队表和一个IssueTeams联接表。IssueTeams表将包括外键(即TeamID和IssueID),它们引用团队中的相应团队和问题中的问题。因此,问题团队可能有如下记录(Issue1,Team1)、(Issue1,Team3)。您可以将每个团队实验室的受影响百分比保留在联接表中。

    除非我对您试图执行的操作理解错误,否则您不应该为问题的每个实例使用唯一的表

    您的数据库应该有三个表:一个问题表,一个团队选项卡