繁体   English   中英

MySQL两栏表作为主键

[英]MySQL two-column table as primary key

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

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

我需要的只是用户ID和成就ID(如果已经获得)。 我需要选择的全部是SELECT achievement_id WHERE user_id=x 因此,无需使用我永远不会使用或不知道其包含的人工自动增量列。 但是需要设置一个主键,所以问题是-制作这样的2列表并将两个列都设置为多列主键是个好主意吗? 我已经有一组3列的表,其中2个是主键,因为这是逻辑...对我来说,但是对数据库来说逻辑呢?

在nn关系,多值属性和弱实体的情况下,这些类型的表很常见。 它与建模有很大不同,但是是的,在某些情况下这是一个很好的解决方案。 主键通常是列的关系。 在您的情况下,它将是user_id和Achievement_id。

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

然后,主键为(玩家ID,成就ID)。

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

我希望这能帮到您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM