Структура Appropiate для базы данных Firebase для управления баскетбольными матчами - PullRequest
0 голосов
/ 24 октября 2019

Я создаю базу данных в Firebase для управления местной баскетбольной лигой, для первой части разработки я хочу работать над управлением матчами, в основном за счет забитых мячей и нечестной регистрации. игрок может набрать 1, 2 или 3 очка, и есть разные виды фолов, такие как обычные фолы и технические фолы, я хочу различать их.

Кроме того, небольшая деталь заключается в том, что человекмогу играть за разные команды в разных дивизионах

Вот моя идея структуры данных в Firebase:

divisions:{
  division1:{
    name:"first division"
    teams:{
      team1:true
      team2:true
    }
  }
}

teams:{
  team1:{
    name:"Team 1"
    division: division1
    players:{
      player1:true
      player2:true
    }
    matches:{
      match1: true
    }
  }
}

players:{
  player1:{
    name:"Player 1"
    phoneNumber:"555-XXXX"
    address:"123 address"
    teams:{ //A player can play for different teams in different divisions
      team1:true
      team2:true
    }
  }
}


matches:{
  match1:{
    date:10-20-2019
    court:"West Park"
    referee:"John Doe"
    players:{
      player1:{
        /*Should I store points scored and fouls comitted in here and
          the players collection?*/
      }
      player2:{...}
    }
  }

Я не уверен относительно того, куда поместить данные относительно очков и фолов,в будущем я планирую использовать базу данных для создания статистики и тому подобного, но пока я просто хочу иметь реестр для матчей, включающий игроков, их очки и фолы.

1 Ответ

0 голосов
/ 24 октября 2019

Не существует единственно правильного способа моделирования данных в базе данных NoSQL. Все зависит от вариантов использования приложения, которое вы хотите создать. Фактически, при использовании базы данных NoSQL довольно часто адаптировать вашу модель данных при добавлении новых вариантов использования в ваше приложение.

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

matches: {
  matchid1: {
    teams: {
      team1: true,
      team2: true
    },
    events: {
      "-Lasdkjhd31": {
        time: "2m44",
        type: "foul",
        player: "player1id",
        team: "team1"
      }
    }
  }
}

Но, как уже говорилось, это зависит от вариантов использования приложения. Таким образом, моя структура выше позволяет хранить информацию о событиях для каждого матча, что, безусловно, было бы полезно, если вы хотите показать временную шкалу того, что происходило в каждом матче.

Вне общего руководства трудно быть конкретным. Я рекомендую вам прочитать / посмотреть их, хотя:

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