2

I have a table Player where playerID is the primary key. Then I have a table Game where gameDate is the primary key (of type DATETIME). Each game is played by 2 players and each player can play many games. So I believe there is a many to many relationship between Player and Game. I want to store both players for each game. I thought of adding player1ID and player2ID on the Game table or to have a bridge table PlayerPlaysGame with playerID and gameDate and then try to find who played the same game so that I get the pair. Any advice as to how I should design my database would be really helpful. Thanks

PhilTM
32k10 gold badges86 silver badges108 bronze badges
asked Apr 25, 2013 at 13:10
2
  • Which RDBMS are you using? Commented Apr 25, 2013 at 13:12
  • @Phil I'm using MySQL Commented Apr 25, 2013 at 13:13

1 Answer 1

4

Given that a game can only ever have two players, I suggest the following design:

create table PLAYER
(
 playerid INTEGER PRIMARY KEY,
 -- add your other columns here
);
create table GAME
(
 gameid INTEGER PRIMARY KEY,
 gamedate DATETIME,
 player1id INTEGER,
 player2id INTEGER,
 -- add your other columns here
);

If you required a differing number of players per game, then I would have designed it differently - with your requirements there is no need to add an extra table & increase the query complexity.

Also note that I have made gameid the PRIMARY KEY. Using a DATETIME as the PK is generally not a good idea - what would happen if two games were created simultaneously?

You'll also probably want to add foreign keys to/from GAME.player1id/player2id and PLAYER.playerid.

answered Apr 25, 2013 at 13:19
2
  • What will be the relationship between these two tables? Two players can have the same gameID and one player can play more than 1 games. Is it many-to-many? But if it is , then wouldn't I need a bridge table? Commented Apr 25, 2013 at 13:29
  • A game only ever has 2 players. You don't ever even need to join the two tables unless you need more information about a specific player. You don't need a bridge table because there are two playerid columns (player1id and player2id) in the GAME table. Commented Apr 25, 2013 at 13:31

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.