关系数据库(拥有游戏的每个用户1个表)

时间:2015-12-30 23:10:11

标签: mysql database oracle

我不知道如何制作一个标题,但问题就在这里。

我有一个用户表(比方说有8百万人),我希望用所有用户拥有的游戏制作一份Steam副本。

(图1)用户为每个拥有的游戏制作每个用户的表格会更好吗?

OR

(图2)让游戏桌拥有拥有游戏的用户会更好。

enter image description here

2 个答案:

答案 0 :(得分:2)

这就是你需要的:

  

表用户

  $field = 233;
  $value = 234;
user_id  | user_name

1          Rick
2          Dwayne
3          Mark
  

桌面游戏

CREATE TABLE `users` (
    `user_id` INT(11) NOT NULL,
    `user_name` VARCHAR(30) NOT NULL,
    PRIMARY KEY (`user_id`)
)
game_id  | game_name
1          League of Legends
2          Dota
3          Skyrim
  

表own_games

 CREATE TABLE `games` (
    `game_id` INT(11) NOT NULL,
    `game_name` VARCHAR(30) NOT NULL,
    PRIMARY KEY (`game_id`)
)
user_id  | game_id

1          1
1          3
3          2
2          1

这是适合您情况的完美布局。约束将删除owned_games中提及已删除用户或游戏的任何行。

答案 1 :(得分:1)

3张桌有什么问题?

用户:保存所有用户信息

游戏:保存所有游戏信息

OwnedGames:2列。 UserID和GameID。保存用户拥有哪些游戏的映射。