2017-08-23 7 views
1

firebaseにイベントカレンダーを実装する必要があります。Firebaseデータベースのイベントカレンダーをモデル化する方法

要件は次のとおりです。

  • ユーザー(エージェント)が一の以上の機関のために働くことができます(エージェントは無料または特定の日付の予約しているアーティストを参照する必要があります)
  • ユーザー(管理者)パブリックユーザーが特定のアーティスト/会場のすべてのイベント

は、誰かがこのデータを格納するための良いfirebase構造を見つける私を助けてくださいことはできますか?一覧を見ることができます

  • 一つ以上の機関/施設のために働くことができますか

    calendar: 
    - calendarId 
    - timestamp 
    - description 
    
    user-calendars: 
    - calendar1Id:true 
    - calendar2Id:true 
    

    私は、これはプライベートカレンダーの良い構造になると思いますが、どのように特定のアーティストや特定の開催地のためにすべてのイベントを取得するには?

    venue-events: 
    -id 
    -timestamp 
    -name 
    
    agency-events: 
    -id 
    -timestamp 
    -name 
    

    users: 
    -id 
    -name 
    
    agency: 
    -id 
    -name 
    
    venue: 
    -id 
    -name 
    
    artist: 
    -id 
    -name 
    

    アップデート1:

    私はイベント・テーブルを作成する場合:

    events: 
    -eventId1 
        -name: "Firebase is awesome" 
        -date: 09092017 
        -artists: 
        -artist1Id:true 
        -artost2Id:true 
        -venues: 
        -venue1Id:true 
    

    今私は、共通のイベントテーブルを持っているが、私は特定のアーティストのためのイベントを考えフェッチします必要:

    -artist-events: 
        -artist1Id: 
        -event1Id:{copy all data of the event} 
    

    Morover私は代理店、会場でもこれが必要です。これは後で自分のデータを検索する唯一の効果的な方法です。

    私の懸念は、すべてのノードを更新するにはそれほど複雑ではないということですか?

    私はまだ機能を使用していますが、

    は、あなたの芸術家のための

    +0

    これらはすべて有効な構造のように聞こえ、ノードを追加したり、ユースケースの必要に応じてデータを複製したりします。あなたの懸念事項は何ですか? –

    +0

    質問のupdate1を確認してください。 ありがとうございました – Miha

    +0

    私はまだあなたが求めていることを完全に理解していません。データの重複が正常かどうか疑問に思うなら、そうです。しかし、最適な複製レベルはアプリや他のニーズに依存しているため、正面から言い表すのは難しいです。非正規化/複製データを同期させるための戦略を知りたい場合は、私の答えはこちらをご覧ください:https://stackoverflow.com/questions/30693785/how-to-write-denormalized-data-in-firebase –

    答えて

    1
    user-calenders: 
        canlenderId: 
         venue/agency-event:id:name // fetch more details using id 
    user: 
        ... 
        ... 
        agencies:[agency1,agency2,...] 
    

    に感謝し、あなたが同じカレンダーを使用することになりますか?

    +1

    良い出発点。しかし、セットをモデル化するために配列を使用しないでください。したがって、「代理店:[代理店1、代理店2、...]」→代理店:{代理店1:真、代理店2:真実、...}。私の答えはこちらhttp://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –

    +0

    非常に良い説明(Y)、私もこのことを混乱させていました私のユースケースの選択肢もあります。 –

    関連する問題