2012-11-13 2 views
0

Я разрабатываю свою первую большую базу данных и хочу проверить, согласен ли я в обеспечении связей таблиц.Концепция взаимоотношений взаимоотношений: проверьте мое понимание, пожалуйста

Я проектирования веб-приложение, где

  1. users может играть games в teams
  2. каждый game имеет это categories
  3. users создавать свои team для game и выбрать их teamcategory
  4. каждый game имеет собственный подмножество categories enabled
  5. Фактически categories немного отличается от игры к игре. Например, есть slowpoke категории в категории: game1 и game2, но они различаются в разное время.

Как я надеюсь сохранить это:

  1. есть таблицы users, teams, games, categories, каждый с его адекватные поля данных и INT primary_key s
  2. есть user - team М.Н. таблица взаимосвязей
  3. есть game - category таблица отношений MN, с задержкой времени c olumn
  4. есть category_id и game_id столбцы внешних ключей в team таблице

Мои общие запросы:

  1. пользователя -> все его/ее команды, в которых они были игры, категории
  2. игра -> все это его категории
  3. игра -> все команды paticipated, с категорией, с пользователями
  4. ga я -> все пользователи участвовали
  5. команды -> это игра, категория

Мои предложения ко мне:

  1. Сделать реальной идентификатор категории создания отдельного INT первичного индекса в category - game отношения таблицу и использовать ее в таблице команд
  2. Создайте отдельную таблицу с team_id category_id game_id и установите все их как объединенный первичный индекс
  3. Только что установленный game_id в teams стол как ИНДЕКС

Вопрос: если эта штука в порядке и какие предложения принять?

+0

Если вы чувствуете, что все в порядке, оставьте комментарий. –

ответ

1

Некоторые мысли:

  • Используйте UNSIGNED INT для первичных ключей, а не INT.
  • У вас должно быть отображение TEAM -> GAME, верно?

Учитывая, что вы можете легко обработать свои «общие запросы».

Какие проблемы были решены вашими «предложениями»?

+0

1. Спасибо. Это хорошо. 2. Да. И я просто не уверен, как организовать это: наличие внешнего ключа в таблице команд или наличие специальной таблицы для отношений групповой игры. 3. С удовольствием слышу это :) 4. Предложения представлены только для того, чтобы показать, в каких точках дизайна я не уверен. Они показывают варианты, которые я не выбрал, но на самом деле не знаю, почему. –

+0

Если в игре может быть только одна команда, вы можете поместить team_id в таблицу игр. Если в игре более одной команды, используйте таблицу сопоставления, например. game_teams (game_id, team_id). –

+0

В игре может быть несколько команд, но команда участвует только в одной игре. Но я понял эту концепцию, спасибо :) –

Смежные вопросы