2017-10-12 241 views
1

我正在開發一個Android應用程序,大齡兒童可以撿起年幼的孩子並步行上學。隨着應用程序的認證(電子郵件和密碼)年輕的孩子可以選擇三個地址之間得到拾取。截至目前我的實時數據庫是這樣的:Android - Firebase數據庫結構

Database as of now

我應該命名爲「不會忽略」一個新節點,有一個像這樣下方的結構?

Adresses 
    Sherman Street 
    username: Jannie 

因爲我要檢索的街道名稱和所有選擇了ADRESS在ListView用戶

回答

0

你的建議的方法是很好的做法:你應該嘗試儘可能多的扁平化你的數據結構儘可能。

我建議使用用戶的ID作爲每個地址的成員資格,因此很容易識別。通過這種方式,您可以從/addresses/Sherman Street獲得「謝爾曼街」成員名單,然後輕鬆地將其中列出的關鍵字與/users/的用戶進行匹配。

{ 
    "users": { 
    "oXrJPVZsnMP3VKp9palSBfdnntk1": { ... }, 
    "xQDx3ntavhV3c02KFRPS8lxYfC62": { ... } 
    }, 

    "addresses": { 
    "Sherman Street": { 
     "members": { 
     "xQDx3ntavhV3c02KFRPS8lxYfC62": true 
     } 
    }, 
    "Wallaby Way": { 
     "members": { 
     "oXrJPVZsnMP3VKp9palSBfdnntk1": true 
     } 
    } 
    } 
} 

你也可以通過添加address場相匹配的地址名稱的用戶添加向後鏈接太:

{ 
    "users": { 
    "oXrJPVZsnMP3VKp9palSBfdnntk1": { ... }, 
    "xQDx3ntavhV3c02KFRPS8lxYfC62": { 
     "username": "Jannie", 
     "address": "Sherman Street" 
    } 
    }, 

    "addresses": { 
    "Sherman Street": { ... } 
    } 
} 

同時使用起來可以很容易地確定哪些用戶已選擇其地址,無論您目前在應用內處理哪個對象。

查看Firebase documentation on database structure瞭解有關如何構建數據的更多詳細信息。

+0

我喜歡你的第一個解決方案,因爲我想爲「謝爾曼街」的孩子添加更多的屬性,比如「時間到了」,所以我會試一試。感謝您的回答 – JDoe

+0

感謝您的接受,很高興我能提供幫助。如果你願意,你可以同時使用這兩種方法,但是這意味着當用戶改變他們的地址選擇時,更新'/ users/$ uid/address'和'/ addresses/$ name/members'下的地址成員列表。儘管(用戶到地址和用戶地址)這兩個對象的鏈接都是有用的。該文檔有一個很好的例子:[更新特定字段](https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields)(參見'writeNewPost()'方法)。 – Grimthorr

+0

嘿,再次感謝昨天的幫助。我發佈了一個關於數據庫結構的新問題。如果你有時間,歡迎來看看這個問題。 https://stackoverflow.com/questions/46732732/android-retrieving-data-from-firebase – JDoe