新表中的冗余信息?

时间:2014-07-11 17:26:09

标签: database database-design

TASK链接到TASK_ROLE,它将party +角色与特定TASK相关联。我需要另一个表TASK_RATE,它存储参与特定任务的每一方的速率。我可以将这些与FK的关联转换为TASK_ROLE,但问题是一方可以拥有多个角色并且可以多次列出。

TASK:
PKIDTASK
1
2
3

TASK_ROLE:
PKIDTASK_ROLE | IDTASK | IDPARTY | IDROLE
  1              1        8         3
  2              1        8         2
  3              1        5         2
  4              1        4         2

我想要创建像这样的表

TASK_RATE:
PKIDTASK_RATE | IDTASK | IDPARTY
  1              1        8
  2              1        5
  3              1        4

IDTASK + IDPARTY是独一无二的,与TASK_ROLE不同。但是这不是多余的信息,因为PARTY-TASK关联已经在TASK_ROLE中定义了吗?

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果要完全规范化数据模型,可能需要以下内容:

ERD

由于各方被分配到任务,并且这些任务具有各种其他相关数据,因此您应该首先在PARTY和TASK之间交叉多对多。

您正在跟踪的其他内容是此交叉点的分支。例如,每个参与方被分配给可用的参与方任务分配中的一个(或多个?)角色。

同样,对于给定的一方任务分配,将有多个费率(随着时间的推移)。 Party Task Rate表将需要一个有效的到期日期(+时间,如果适用)。