Ich bin neu mit Firebase und NoSQL, ich habe eine Struktur für meine Anwendung und ich habe ein paar Fragen.Firebase-Struktur-Duplizierung
Mein 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
|
ich mich fragen, ob diese Dinge gut sind oder nicht?
- Die Beiträge werden oft dupliziert.
- Die Benutzerinformationen sind in jedem Beitrag vorhanden, vielleicht brauche ich nur die Benutzer-ID und die Benutzerinformationen später anfordern?
- Sollte ich "likeCount" in einem anderen Objekt extrahieren?
- Wenn ich einen Benutzer oder einen Beitrag (oder "likeCount") aktualisieren möchte, habe ich viele Updates zu tun.
Vielen Dank im Voraus!
Vielen Dank für Ihre Antwort! Über den Benutzer dupliziert Daten in jedem Beitrag, Sie sagten "In diesem Fall werden doppelte Daten wahrscheinlich nicht benötigt", aber wenn ich den Benutzer mit dem Beitrag anzeigen möchte (wie Facebook oder Twitter zum Beispiel), sollte ich die Benutzerdaten nach dem anfordern Daten posten oder duplizieren? – Pipiks
@Pipiks Ich würde vorschlagen, laden Sie die Post-Daten für jeden Beitrag, die die Benutzer-ID enthalten würde, und dann die Benutzerdaten laden. Da Sie die UID haben, können Sie direkt auf den Benutzer über ein observeSingleEvent (Swift) unter/users/uid zugreifen, wodurch vermieden wird, dass eine Abfrage ausgeführt wird, die einen ressourcenintensiveren Vorgang als eine Beobachtung darstellt. – Jay
Vielen Dank :) – Pipiks