2016-07-20 15 views
1

Was ist der beste Weg, eine Datenbank in Firebase für das folgende Szenario zu strukturieren:Wie strukturiere ich eine Firebase-Datenbank für eine statische Liste?

Ich baue eine App, die die grundlegenden Funktionen von Yelp hat (listet Unternehmen basierend auf einer ausgewählten Stadt).

Ich muss viele Informationen (Adresse, Öffnungszeiten, E-Mails, etc.) für die einzelnen Unternehmen speichern. Ich muss auch sicherstellen, dass ich jedes Unternehmen eindeutig identifizieren kann - meine Lösung bestand darin, die geschäftliche Telefonnummer oder E-Mail zu verwenden.

Seit Suchanfragen nach Stadt durchgeführt werden, dachte ich, die beste Art und Weise meine Daten Baum wäre zu strukturieren:

die Verwendung der richtigen NoSQL/Firebase Datenstruktur
Cities 
    Phone 
    Business Name 
    City 
    Contact Name 
    Contact E-Mail 
    E-Mail 

Bin ich völlig weg Basis hier in Bezug auf oder ich bin Auf dem richtigen Weg? Wenn nicht, wie kann ich den Datenbaum verbessern?

Antwort

3

Diese Struktur ist wahrscheinlich in Ordnung, obwohl ich einen stabileren eindeutigen Schlüssel empfehlen würde (E-Mails und Telefonnummern können sich ändern). Ich würde eine Struktur so etwas wie empfehlen:

/businesses/{cityId}/{businessId} 
    name 
    phone 
    contactName 
    contactEmail 
    email 

Wo cityId könnte nur eine URL freundliche Stadtnamen wie sf oder nyc sein. Die primäre Herausforderung bei der Strukturierung von Daten für die Firebase Realtime Database besteht darin, dass Sie nur eine Eigenschaft gleichzeitig abfragen können. Sie müssen also sicherstellen, dass ein Großteil Ihrer Datensegmentierung über die Pfadstruktur erzwungen wird (weshalb Sie nicht möchten) city als Eigentum des Unternehmens).

+0

Dies beantwortete meine Frage, aber wenn ich eine erweiterte Frage stellen kann: Wie würde ich die Daten am besten strukturieren, wenn ich Geolocation-Daten verwenden würde (z. B. Datenbank für die nächsten 10 Unternehmen vom aktuellen Standort abfragen)? – Abhi

+1

Sie sollten dafür [GeoFire] (https://github.com/firebase/geofire) ansehen. :) –

Verwandte Themen