2015-07-30 2 views
0

Я создаю систему дискуссий с использованием Parse.comАнализировать DB Design: Как получить все сообщения для конкретной категории

В моей [упрощенном] системе есть Post s, Category s и Comment s.

Как вы, вероятно, предположили, Post s может принадлежать одному или нескольким Category s и может иметь несколько Comment s.

Однако часто пользователи захотят увидеть все Post s в Category. Если я создал свою базу данных как этот

Post (name, content, categories) 
Category(name) 

Я беспокоюсь, что запрашивая все Post с в Category будет очень ineffeficient (так как он должен будет проверить categories поле каждого Post.

Тем не менее, если я проектирую базы данных, как

Post (name, content) 
Category(name, posts) 

это будет неэффективно для меня, чтобы запросить, что Category са Post принадлежит, так как он должен будет опалить ch все массивы Post s во всех Category s.

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

ответ

1

Что вы ищете, это двунаправленное отношение «многие ко многим» между Post и Category. С Parse существует, по крайней мере, три подхода, которые вы можете предпринять.

  1. Вы можете добавить столбец в качестве PFRelation в таблицу Post. Вы можете задать Post для своего отношения categories, создать запрос и запустить его. И наоборот, если у вас есть category, вы можете создать запрос Post с предложением where на клавише categories. PFRelation s хороши, если у вас будут большие коллекции.
  2. Если вы считаете, что лучше как реляционная модель, просто создайте таблицу «join» под названием CategoryPosts. Он имел бы два столбца указателя, один для Post и другой для Category. Это также очень эффективно.
  3. Наконец, вы можете добавить столбец массива в любой класс. Поскольку все результаты загружаются сразу, это лучше всего подходит для небольших коллекций.

Эти параметры описаны более подробно в Parse Relations Documentation.

+0

С Вариантом 2 каждый раз, когда создается новая 'Post' или новая' Category', мне нужно сделать запись в таблице «CategoryPosts»? Это будет очень скоро, особенно потому, что 'Post' может иметь более 10 категорий? – CodyBugstein

+0

Правильно, эта таблица может стать большой. Это нормально. Он еще эффективнее, чем столбец массива типов. – picciano

+0

ОК, это здорово. Я думаю, что я сделаю это, поэтому у меня нет дублированной информации и проблем позже – CodyBugstein

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