2013-06-08 3 views
1

У меня есть база данных, которую я бы хотел импортировать на Parse.com, но не могу обойтись вокруг того, как данные должны храниться в Parse и поддерживать связь между этими данными ,Как поддерживать отношения при импорте данных в Parse.com

Вот мои текущие данные и их отношения.

Таблица 1: Видео

-> VideoName

-> URL-

Таблица 2: Исполнители

-> PerformerName

-> Био

Таблица 3 : Игры

-> GameName

-> GameDetail

Таблица 4: Времена года

-> SeasonName

-> SeasonDetail

Отношения являются:

-> Каждый Сезон может иметь более одного видео, но каждое видео может быть связано только с одним сезоном.

-> Каждое видео может иметь один или больше игр

-> Каждый видео может иметь один или несколько исполнитель

-> Каждая игра может быть связана с одним или несколько видео

-> Каждая игра может быть связан с одним или несколькими Performer

-> Каждый исполнитель может находиться в одном или нескольких видео

-> Каждый исполнитель может быть связанных с одной или несколькими Играми.

Это означает, что между данными существует много разных взаимосвязей.

Если кто-то может помочь мне разобраться в том, как Parse делает реляционные базы данных/информацию, я был бы признателен. Я уже прочитал документацию Relational Data, но я не совсем понимаю, как это относится к моим данным.

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

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

-> Извлечь все видео, где исполнитель = х

-> Получить все игры, где исполнитель = х

- > Получить все исполнители, где игра = х

-> Извлечь все видео, где сезон = х

плюс другие по мере необходимости.

Я надеюсь, что кто-то может помочь. Если вы можете предоставить конкретные примеры, основанные на информации, которую я получил выше, это было бы отлично! :-)

+0

Нет ответа на этот вопрос Stion ?? –

+0

Вы проверили документы Parse.com (JS)? Они дают действительно хороший пример в соответствии с тем, что вы просите. ССЫЛКА: [Реляционные объекты] (https://parse.com/docs/#objects-pointers) LINK2: [Реляционные запросы] (https://parse.com/docs/js_guide#queries-relational) – jmk2142

ответ

3

Анализировать поддерживает отношения в ряде способов:

  • Pointer (думаю, внешний ключ ID)
  • массив указателей (думаю присоединиться к таблице, но только тогда, когда вы всегда хотите, чтобы получить все их)
  • связи (думают присоединиться к столу, где вы хотите запросить для подмножества)

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

Видео:

  • Имя (строка)
  • URL (строка)
  • сезон (указатель)
  • Games (массив, предполагая, что это короткий список)
  • Исполнители (массив)

Исполнители:

  • Имени (строка)
  • Bio (строка, возможно, с HTML или другой разметкой)

Игр:

  • Имя (строка)
  • Detail (строка)
  • Исполнители (массивы)

Сезоны:

  • Имя (строка)
  • Detail (строка)

Для запросов (в JavaScript, так как вы не указали язык):

// setup bits 
var Video = Parse.Object.extend("Video"); 
var Performer = Parse.Object.extend("Performer"); 
var Game = Parse.Object.extend("Game"); 
var Season = Parse.Object.extend("Season"); 

// All videos where performer = x 
var videosForPerformerQuery = new Parse.Query(Video); 
// assumes performerX has been retrieved or initialised with an ID 
// equalTo in this case will find records where performerX is in the array of performers 
videosForPerformerQuery.equalTo('performers', performerX); 
// if you need to output the full list of performers: 
videosForPerformerQuery.include('performers'); 
// if you need the full season object: 
videosForPerformerQuery.include('season'); 
videosForPerformerQuery.find({ 
    success: function(results) { 
     // TODO: handle array of video objects in results 
    }, 
    error: function(error) { 
     // TODO: handle error 
    } 
}); 

// All games where performer = x 
var gamesForPerformerQuery = new Parse.Query(Game); 
// .. identical to above .. 

// All performers where game = x 
var gameQuery = new Parse.Query(Game); 
gameQuery.include('performers'); 
// gameObjectID is a string key, e.g. "xWMyZ4YEGZ" 
gameQuery.get(gameObjectId, { 
    success: function(game) { 
     // TODO: game.performers array should be populated, use it 
    }, 
    // .. error handler too .. 
}); 

// All videos where season = x 
var videosForSeason = new Parse.Query(Video); 
videosForSeason.equalTo('season', seasonX); 
// .. find same as above examples .. 

Иногда вам понадобятся двунаправленные соединения. Вы можете вручную заполнить Array/Relation на каждом конце или использовать новый объект для хранения отношений (особенно, если отношение содержит дополнительную информацию). Пример:

GamePerformers:

  • игры (указатель)
  • исполнитель (указатель)
  • Роль (строка)

Запрос это и include Игра/исполнитель в случае необходимости:

var GamePerformers = Parse.Object.extend("GamePerformers"); 
var performersForGameQuery = new Parse.Query(GamePerformers); 
performersForGameQuery.equalTo('game', gameX); 
performersForGameQuery.include('performer'); 
performersForGameQuery.find({ 
    success: function(results) { 
     for (var i = 0; i < results.length; i++) { 
      var object = results[i]; 
      console.log('Performer: ' 
       + object.get('performer').get('name') 
       + ' played role: ' 
       + object.get('role')); 
     } 
    } 
}); 
Смежные вопросы