Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL两列表作为主键_Mysql_Primary Key - Fatal编程技术网

MySQL两列表作为主键

MySQL两列表作为主键,mysql,primary-key,Mysql,Primary Key,我有一个非常简单的想法:保存用户“成就”的表格。就这么简单: user_id | achievement_id 1 | 1 1 | 2 1 | 5 2 | 2 2 | 3 我所需要的只是用户id,如果他已经得到了,还有成就id。我需要选择的是选择成就id,其中user\u id=x。所以不需要一个我永远不会使用或知道它包含什么的人工自动增量列。但是设置主键是必需的,所以问题是-制作这样的2列表并将两列都设

我有一个非常简单的想法:保存用户“成就”的表格。就这么简单:

user_id | achievement_id
    1   |    1
    1   |    2
    1   |    5
    2   |    2
    2   |    3

我所需要的只是用户id,如果他已经得到了,还有成就id。我需要选择的是
选择成就id,其中user\u id=x
。所以不需要一个我永远不会使用或知道它包含什么的人工自动增量列。但是设置主键是必需的,所以问题是-制作这样的2列表并将两列都设置为多列主键是一个好主意吗?我已经有了一组3列的表,其中2是主键,因为这是逻辑。。。嗯,逻辑对我来说,但对数据库来说?

是的,因为这样一组n键的规则是:“我只想要一种具有这组(a,b)键的记录”。 ->因此,您将无法添加两次“Mario,achievement1”

主键将是(PlayerID、AchieventID)

如果您想添加有关此成就的一些信息(例如,当玩家获得该成就时),只需执行以下操作:(PlayerID,AchievementID,Date),并将PlayerID,AchievementID作为主键


我希望这将对您有所帮助。

是的,因为这样一组n键的规则是:“我只想要一种记录,其中包含这组(a,b)键”。 ->因此,您将无法添加两次“Mario,achievement1”

主键将是(PlayerID、AchieventID)

如果您想添加有关此成就的一些信息(例如,当玩家获得该成就时),只需执行以下操作:(PlayerID,AchievementID,Date),并将PlayerID,AchievementID作为主键


我希望这会对您有所帮助。

这些类型的表在n-n关系、多值属性和弱实体的情况下很常见。它与它的建模有很大的不同,但是是的,对于某些情况,它是一个很好的解决方案。主键通常是列之间的关系。在您的情况下,可能是用户id和成就id。

这些类型的表在n-n关系、多值属性和弱实体的情况下很常见。它与它的建模有很大的不同,但是是的,对于某些情况,它是一个很好的解决方案。主键通常是列之间的关系。在您的情况下,应该是用户id和成就id。

“但是需要设置主键,所以问题是-制作这样的两列表并将两列都设置为多列主键是否好?”没有人能回答这个问题,因为我们不知道您将要查询,但我在那里做了一个示例:
选择成就\u id,其中user\u id=x
。这就是除了插入数据之外我要做的所有事情。“但是设置一个主键是必需的,所以问题是——制作这样的两列表并将两列都设置为多列主键是好主意吗?”没有人能回答这个问题,因为我们不知道您将要查询,但我在那里做了一个示例:
选择成就\u id,其中user\u id=x
。这就是我要做的,除了插入数据。真的,谢谢。这只是我第一次遇到整个表都是主键的情况,所以我不确定这是否是一个错误。我很可能会在这里加上日期——这听起来是件好事。谢谢,是的,谢谢。这只是我第一次遇到整个表都是主键的情况,所以我不确定这是否是一个错误。我很可能会在这里加上日期——这听起来是件好事。谢谢