首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户与游戏数据库的多对多连接

用户与游戏数据库的多对多连接
EN

Stack Overflow用户
提问于 2015-04-12 00:03:34
回答 1查看 87关注 0票数 1

我在试着创建一个游戏数据库。我已经创建了一个用户表,其中存储了用户、密码和电子邮件。

代码语言:javascript
复制
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` char(40) DEFAULT NULL,
  `email` varchar(60) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=111 DEFAULT CHARSET=utf8;

我还创建了一个游戏表,其中包含游戏类型、游戏名称、持续时间、描述、活动和谁创建了游戏。

代码语言:javascript
复制
CREATE TABLE `games` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `type` varchar(30) DEFAULT NULL,
      `name` varchar(60) DEFAULT NULL,
      `duration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `description` varchar(255) DEFAULT NULL,
      `Active` tinyint(1) DEFAULT NULL,
      `Completed` tinyint(1) DEFAULT NULL,
      `createdBy` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;

用户将能够创建游戏并邀请x个用户,因此这将是一个多对多的关系。我曾尝试创建一个名为active_games的表,但我不确定应该如何继续。我需要一个连接,这样我才能知道谁创建了游戏,谁在玩这个游戏。

代码语言:javascript
复制
CREATE TABLE `active_games` (
  `user_id` int(11) NOT NULL DEFAULT '0',
  `game_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`user_id`,`game_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

下一步会是什么?如果用户创建了一个游戏并将"invite“发送给其他朋友,是否可以自动分配一个游戏ID和被邀请到该游戏ID的用户?如果我想要找到特定用户的所有活动游戏,我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2015-04-12 00:09:03

你还需要两张桌子。UserGames会有关于创建游戏的用户的信息:

代码语言:javascript
复制
CREATE TABLE UserGames (
    UserGameId int not null auto_increment primary key,
    userid int NOT NULL references users(id),
    gameid int not null references games(id),
    CreationDate datetime,
    . . .
);

GameInvites

代码语言:javascript
复制
CREATE TABLE GameInvites (
    GameInviteId int not null auto_increment primary key,
    UserGamesId int not null references UserGames(UserGamesId),
    invited_userid int NOT NULL references users(id),
    AcceptedFlag bit
    . . .
);

. . .表示可能希望存储有关每个关系的附加信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29579954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档