Я новичок в Firebase и NoSQL, я создал структуру для своего приложения, и у меня есть некоторые вопросы.Дублирование структуры Firebase
Мой stucture:
ROOT
|
+-- USERS
| |
| +-- USER_ID
| |
| +-- USERNAME
| |
| +-- DISPLAY_NAME
| |
| +-- PROFILE_PICTURE_URL
| |
| +-- POST_COUNT
|
+-- CATEGORIES
| |
| +-- CATEGORY_ID
| |
| +-- NAME
| |
| +-- POST_COUNT
|
+-- POSTS
| |
| +-- POST_ID
| |
| +-- MESSAGE
| |
| +-- USER_ID
| |
| +-- USERNAME
| |
| +-- DISPLAY_NAME
| |
| +-- PROFILE_PICTURE_URL
| |
| +-- CATEGORIES
| | |
| | +-- CATEGORY_ID
| |
| +-- LIKE_COUNT
|
+-- USERS_POSTS
| |
| +-- USER_ID
| |
| +-- POST_ID
| |
| +-- MESSAGE
| |
| +-- USER_ID
| |
| +-- USERNAME
| |
| +-- DISPLAY_NAME
| |
| +-- PROFILE_PICTURE_URL
| |
| +-- CATEGORIES
| | |
| | +-- CATEGORY_ID
| |
| +-- LIKE_COUNT
|
+-- CATEGORIES_POSTS
| |
| +-- CATEGORY_ID
| |
| +-- POST_ID
| |
| +-- MESSAGE
| |
| +-- USER_ID
| |
| +-- USERNAME
| |
| +-- DISPLAY_NAME
| |
| +-- PROFILE_PICTURE_URL
| |
| +-- CATEGORIES
| | |
| | +-- CATEGORY_ID
| |
| +-- LIKE_COUNT
|
Я спрашиваю себя, если эти вещи хороши или нет?
- Должности дублируются много раз.
- Информация о пользователе присутствует в каждом посте, возможно, мне просто нужен идентификатор пользователя и запросить информацию пользователя позже?
- Должен ли я извлечь «likeCount» в другом объекте?
- Когда я хочу обновить пользователя или сообщение (или «likeCount»), у меня есть много обновлений.
Заранее благодарю вас!
Спасибо за ваш ответ! Что касается дублированных данных пользователя в каждом сообщении, вы сказали: «В этом случае дублирующиеся данные, вероятно, не нужны», но если я хочу отобразить пользователя с сообщением (например, например, facebook или twitter), я должен запросить данные пользователя после отправить данные или дублировать? – Pipiks
@Pipiks Я бы предложил загрузить почтовые данные для каждого сообщения, которое будет содержать идентификатор пользователя, а затем данные пользователя загрузки. Так как у вас есть uid, вы можете напрямую обращаться к пользователю через watchSingleEvent (Swift) в/users/uid, что позволяет избежать выполнения запроса, который более ресурсоемкий, чем наблюдение. – Jay
Спасибо большое :) – Pipiks