Mysql 多对多关系桥牌困境

Mysql 多对多关系桥牌困境,mysql,sql,database,phpmyadmin,Mysql,Sql,Database,Phpmyadmin,我在上面有3个表,形成了多对多的关系,我会添加一个字段“performaces”(INT),这样每个销售人员都可以在每组中获得分数。我相信它应该位于salesGroupLinked表中。但是由于uId和groupId是FK,我无法插入/编辑数据(我使用的是phpmyadmin)。我不能使PerformancesCore字段唯一,因为它们可以是相同的值,例如一个销售人员得到10,另一个销售人员得到相同的值 我得到了这个消息: 此表不包含唯一的列。网格编辑,复选框, 编辑、复制和删除功能不可用 描述

我在上面有3个表,形成了多对多的关系,我会添加一个字段“performaces”(INT),这样每个销售人员都可以在每组中获得分数。我相信它应该位于salesGroupLinked表中。但是由于uId和groupId是FK,我无法插入/编辑数据(我使用的是phpmyadmin)。我不能使PerformancesCore字段唯一,因为它们可以是相同的值,例如一个销售人员得到10,另一个销售人员得到相同的值

我得到了这个消息:

此表不包含唯一的列。网格编辑,复选框, 编辑、复制和删除功能不可用

描述salesGroupLinked

该工具只是告诉您uId groupId组合可以有多个条目。例如:

salesman
========
uId

salesGroupLinked
================
uId
groupId
//add performacesScore field here

group
======
groupId
这将更新三条记录,而不是一条

update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;
这仍然会更新两条记录,而不是一条

update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;
因此,为了正确地更新和删除,您必须告诉dbms是什么使记录唯一。有四种可能性:

  • 如果您永远不想更新或删除单个记录,请保持原样
  • 如果您希望能够更新,并且uId groupId组合只能有一个条目,那么请告诉dbms,并将uId加groupId作为表的主键
  • 如果您希望能够更新,并且uId groupId组合可能存在重复项,但uId groupId PerformancesCore组合将始终是唯一的,那么请将这三个组合作为表的主键
  • 如果您希望能够进行更新,并且任何组合都可能存在重复项,那么请为该表提供另一列技术id,并将其作为主键

请返回并编辑它们,而不是询问更多问题。向我们展示您的表的定义
mysql>描述salesGroupLinked
@pc shooter,所以我只需在salesGroupLinked表中添加一个额外列,并将其设为PK?是否表示每一行都是唯一的组合?是的,您可以这样做。如果出现这种情况,你会说:“哦,记录4的性能核心应该是50而不是30”或者“哦,记录6必须删除”。只有你自己知道发生这种情况的可能性有多大。我认为,由于你们拥有的领域不多,这种情况不太可能发生。通常会有数据字段指示必须进行更改。例如:“3月15日的所有条目都应该是数值的两倍”或“所有负值都必须删除”。可以在不知道单个记录的情况下编写这些更新。但是,如果要手动浏览列表[待续]。。。但是,如果您希望手动浏览列表并逐个记录更新或删除记录,则需要这样的PK ID。
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1 and performacesScore = 30;