2016-02-29 2 views
0

Я новичок в Firebase и не знаком с лучшим способом моделирования данных. Я - веб-дизайнер, который полюбил веб-разработчика и выбрал Firebase как сервис из-за простоты использования.Лучший способ моделирования данных в Firebase

Сейчас я моделирование моих данных, как:

[Firebase Root] 
    | 
    +--userId (Firebase unique UID) 
     | 
     +--Projects 
       | 
       + ProjectId (Firebase unique key) 
         | 
         +--Images 
          | 
          +--ImageId (Firebase unique key) 
           | 
           +--Comments 
             | 
             +--CommentId (Firebase unique key) 

Я интересно, если это хорошая практика? Насколько это масштабируемо?

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

+0

В дополнение к ответу Джей, документация Firebase содержит большую информацию о таких вещах. В этом конкретном случае см. Раздел [Использовать вложенные данные по-разному] (https://www.firebase.com/docs/web/guide/structuring-data.html#section-nested). –

ответ

4

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

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

Вы действительно хотите сгладить ваши данные, когда это возможно, - тем лучше.

Одна мысль состоит в том, чтобы сделать ваши данные повторно пригодными для использования. Не уверен, что это часть набора вверх, но что-то вроде этого:

users 
    uid_0 
    name: "Jeff" 
    uid_1 
    name: "Cole" 

projects 
    project_id_0 
    user: uid_0 
    images 
     image_id_0: true 
     image_id_1: true 
    comments: 
     comment_id_0: true 
    project_id_1 
    user: uid_1 
     image_id_1: true 
     comment_id_1: true 
images 
    image_id_0 
    image: "link to some image" 
    image_id_1 
    image: "link to another image" 

comments 
    comment_id_0 
    verbiage: "nice project_id_0!!!" 
    made_by: user_id_0 
    project: project_id_0 
    comment_id_1 
    verbiage: "project_id_1 is the best project evah" 
    made_by: user_id_1 
    project: project_id_1 

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

Вы даже можете немного раскрыть это и назначить нескольких пользователей для одного проекта.

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

Это также позволяет использовать одно и то же изображение для нескольких проектов.

+0

Это имеет смысл. Спасибо за ясное объяснение и даю мне некоторое представление о том, как смоделировать мой проект. –

+0

Отличный ответ Джей! –