许多表关系的困境

时间:2014-04-26 14:48:01

标签: mysql sql database

通过构建一个brigde表,我将链接许多推销员和组合

我已经制作了三张如下表

salesman
========
uId

salesGroupLinked
================
uId
groupId

group
======
groupId

因此它应该能够允许1个销售人员可以拥有多个团队,并且许多团队可以拥有1个销售人员。但现在我想扩大关系。

我希望每位推销员都能获得每组的表现评分。我应该把列放在哪里?如果它在组表中然后被淘汰,因为groupId是唯一的,所以它可以给许多推销员一个分数。

2 个答案:

答案 0 :(得分:1)

只需考虑问题:绩效得分的关键是什么?它是一个销售人员组的设置。因此,设置应该在它们链接的表上。它对于每对(salesman, group)都是唯一的。

所以表格看起来像

salesGroupLinked
================
uId
groupId
PerformanceScore

答案 1 :(得分:0)

将得分放在链接表中。

该表上的pk仍应为uIdgroupId,但它也应该有一个得分列。

已编辑以将DDL语句购买为使用主键创建表

create table salesGroupLinked
( uId integer not null, 
  groupId integer not null,
  performanceScore integer null,
  Constraint PK_salesGroupLinked Primary Key clustered (uId, groupId)
 )

此表的复合PK本身保证此表中永远不会有多行与uId和groupId具有相同的值。