2017-01-18 7 views
0

В настоящее время я работаю над приложением IOS с бэкэндом, предоставляемым Firebase. Это мой первый опыт работы с базой данных NOSql и хотел внести свой вклад в то, как лучше структурировать мои данные. В настоящее время приложение будет пользовательским приложением, которое содержит только данные, связанные с каждым пользователем, появляющимся в фиде. Поэтому, если они отправляют заметку в область заметок, только они будут иметь доступ к ней. Не будет обмена этой информацией. Как настроить мои данные в настоящее время, это иметь конечную точку, называемую «заметки», и конечную точку, называемую «пользователи». Я планировал размещать все примечания в «заметках», а затем записывать запись под каждым пользователем «заметок» со ссылкой на «noteId» в основной области «примечания». Означает ли это смысл, а только что ребенок «пользователей» является «заметками» с фактическими данными заметки?Правильная структура данных для Firebase

notes > 
    noteId > 
     noteName 
     noteDetails 
    noteId > 
     noteName 
     noteDetails 
    noteId > 
     noteName 
     noteDetails 

user > 
    notes > 
     noteId 
     noteId 
     noteId (these would reference the note in notes) 
    name 
    dateAdded 

Это несколько, как данные выглядят в настоящее время. Это лучший подход. У меня есть фон mySql, и у меня проблемы с полным пониманием noSql.

ответ

3

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

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

notes > 
    user1 > 
    noteId > 
     noteName 
     noteDetails 
    noteId > 
     noteName 
     noteDetails 
    user2 > 
    noteId > 
     noteName 
     noteDetails 

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

Помимо этого, вы вложенности данные, которые должны быть сплющенный: профили пользователей и пользовательские заметки, должны находиться в отдельных узлах верхнего уровня:

users > 
    userId > 
     name 
     dateAdded 
userNotes > 
    userId > 
     noteId 
     noteId 
     noteId (these would reference the note in notes) 

При этом вы можете получить список имен пользователей , не получая также все свои идентификаторы заметок. Затем, когда вам нужно показать заметки для конкретного пользователя, вы просто получаете доступ к своим клавишам заметок под /userNotes/<uid> и затем загружаете каждый узел.

Если вы новичок в моделировании данных NoSQL, я рекомендую прочитать NoSQL data modeling. Если вы пришли из реляционного/SQL-фона, я рекомендую просмотреть Firebase for SQL developers.

+0

Awesome. что полностью все имеет смысл. С годами php и реляционными базами данных я с трудом справлялся с методом сглаженных данных. Спасибо. – user1881482

+1

Ты не один в этом. :-) В основном это требует некоторого «unlearning», а затем логического мышления (без постоянного сравнения с SQL). Я добавил некоторые ссылки для чтения/просмотра. –