Разработка базы данных Mysql для созданного пользователем сайта, основанного на ретро-достижениях - PullRequest
0 голосов
/ 13 октября 2011

История вопроса

Небольшая предыстория, прежде чем я вернусь к вопросу.

  • Я работаю над сайтом, управляемым Mysql, который позволяет людям отслеживать пользователя созданные достижения для «ретро» игр.
  • До этого момента я отслеживал достижения, но хотел бы открыть его для всех с самопроверкой на основе чести система.
  • У меня работает логин, поэтому есть таблица логина с именем пользователя и пароль. (также другие колонки, хотя я не думаю, что это имеет значение для ответить).
  • Первоначально я собирался создать таблицу для каждого пользователя, на которую я надеюсь попадет в тысячи, но после прочтения поста на сайте ive понять, что это плохая идея.

Вопросы

У меня следующий вопрос:

Какая структура таблиц наиболее эффективна?

  • Я хочу, чтобы у каждого пользователя был список достижений за игру, с достигнутые и недостигнутые представлены, поэтому они должны быть в состоянии добавить игры из предустановленного списка.
  • Будет несколько списков, так как у большинства людей более 1 игры.
  • Я думаю, что это отношения многие ко многим, но я не совсем уверен как связать все элементы вместе, чтобы я мог начать писать запросы.

Спасибо за чтение этого поста и любые предоставленные советы.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

У вас, вероятно, должны быть таблицы пользователей, игр, достижений и user_achievements. Каждая запись в таблице достижений может быть связана с идентификатором игры. Когда пользователь достигает определенного достижения, вы можете добавить запись с user_id и достижением_id в таблицу user_achievements. Если для этого пользователя и достижения нет записи, это означает, что они не достигли этого.

0 голосов
/ 13 октября 2011

Вы можете создать несколько таблиц, представляющих каждую из своих частей вашей системы. Пример.

Table 'Users':
id
username
password
usesgames

Table 'Games':
id
gamename
gamedescription

Table 'Achievements':
id
gameid
userid
achievement
points

Теперь вы можете создать как можно больше пользователей, не вмешиваясь в достижения, наоборот. Представьте, что вы создаете две игры. Эпоха империй и Эпоха империй II. Они будут созданы в базе данных с

1 Age of Empires - A fun strategy game
2 Age of Empires II - Version two of a fun strategy game

Допустим, что пользователь "BoomBlaster" владеет обеими играми, вы можете создать разделенный запятыми список, в котором строка табуляции "использует игры", например,

1,2

Представляя, что вы используете PHP, вы сможете отделить их, используя explode(); функцию

$games = "1,2";
$gamesarray = explode(",",$games);

Тем не менее, теперь вы можете соединить пользователя и игровое объединение, чтобы получить достижения в таблице базы данных «Достижения», сказав

SElECT * FROM Achievements WHERE gameid = $gameid AND userid = $userid;

Надеюсь, вы понимаете мою точку зрения. С наилучшими пожеланиями. Jonas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...