はじめに
Firebaseで「プリパラ」といったアニメのデータを集約できるようなプラットフォームを作ろうとしています.
FirebaseのRealtimeDBを用いてデータを管理しようと考えていますが,データ構造の設計に自信がありません.
以下に,私が仮として作ったサンプルを載せますので,意見や提案をいただけると嬉しいです.
また,何か追加で情報が必要な場合は遠慮なく言ってください.
想定しているシステム
前提
- 各エピソードでライブが行われます
- ライブは,任意のチームが,任意の曲を歌い,任意の演出(MD)を行います
- ライブをする際に,各キャラクターは衣装(コーデ)を着ます
使用例
- 任意のチームが出演するライブ一覧を取得する
- 任意のチームが歌う曲一覧を取得する
- 任意の曲がライブされるエピソード一覧を取得する
データの構造
構造を書いてみました.
[hoge]
は繰り返しの要素名です.
- songs - [曲名] - teams - [チーム名] : true - characters - [キャラクター名] - teams - [チーム名] : true - teams - [チーム名] - members - [キャラクター名] : true - songs - [曲名] : true - MDs - [MD名] : true - MDs - [MD名] - team : チーム名 - lives - [ライブID] : true - series - [シリーズ名] - start_at : 日付 - end_at : 日付 - episodes - [話数] : エピソードID - episodes - [エピソードID] - number : 話数 - series : シリーズ名 - title : タイトル名 - brands - [ブランド名] - coordinates - [コーデ名] : true - coordinates - [コーデ名] - brand : ブランド名 - character : キャラクター名 - live - [ライブID] - MD : MD名 - coordinates - [コーデ名] : true - time - start_at : 開始時間 - end_at : 終了時間 - episode : エピソードID - song : 曲名 - team : チーム名
作ったサンプル
json:sample.json
1{ 2 "songs":{ 3 "Make it!": { 4 "teams": { 5 "らぁら & みれぃ":true 6 }, 7 "lives": { 8 "任意のID_A": true, 9 "任意のID_B": true 10 } 11 }, 12 "ま~ぶるMake up a-ha-ha!": { 13 "teams": { 14 "らぁら & みれぃ":true 15 }, 16 "lives": { 17 "任意のID_C": true 18 } 19 } 20 }, 21 "characters":{ 22 "真中 らぁら":{ 23 "teams":{ 24 "らぁら & みれぃ": true 25 } 26 }, 27 "南 みれぃ":{ 28 "teams":{ 29 "らぁら & みれぃ": true 30 } 31 } 32 }, 33 "teams": { 34 "らぁら & みれい": { 35 "members": { 36 "南 みれぃ": true, 37 "真中 らぁら": true 38 }, 39 "songs":{ 40 "Make it!":true, 41 "ま~ぶるMake up a-ha-ha!": true 42 }, 43 "MDs":{ 44 "Let`s GOプリパラ": true 45 } 46 } 47 }, 48 "MDs": { 49 "Let`s GOプリパラ": { 50 "team": "らぁら & みれぃ", 51 "lives": { 52 "任意のID_A": true, 53 "任意のID_B": true 54 } 55 }, 56 "もぎたて!スイーツパーク": { 57 "team": "らぁら & みれぃ", 58 "lives": { 59 "任意のID_C": true 60 } 61 } 62 }, 63 "series": { 64 "プリパラ": { 65 "start_at": "TODO", 66 "end_at": "TODO", 67 "episodes":{ 68 "1":"任意のID1", 69 "2":"任意のID1", 70 "6":"任意のID1" 71 } 72 }, 73 "アイドルタイムプリパラ": { 74 "start_at": "TODO", 75 "end_at": "TODO", 76 "episodes":{ 77 78 } 79 } 80 }, 81 "episodes": { 82 "任意のID1": { 83 "number": 1, 84 "series": "プリパラ", 85 "title": "アイドル始めちゃいました!" 86 }, 87 "任意のID2": { 88 "number": 2, 89 "series": "プリパラ", 90 "title": "約束やぶっちゃダメぷりっ!" 91 }, 92 "任意のID3":{ 93 "number": 6, 94 "series": "プリパラ", 95 "title": "異議あり?らぁらがウチにやってきたっぷり!" 96 } 97 }, 98 "brands":{ 99 "Twinkle Ribbon":{ 100 "coordinates": { 101 "キューティーリボン": true 102 } 103 104 }, 105 "Candy Alamode":{ 106 "coordinates": { 107 "もぎたてライム": true, 108 "もぎたてオレンジ": true 109 } 110 } 111 }, 112 "coordinates": { 113 "キューティーリボン":{ 114 "brand":"Twinkle Ribbon", 115 "character":"真中 らぁら" 116 }, 117 "ワンダーランドマカロン":{ 118 "brand":"Twinkle Ribbon", 119 "character":"真中 らぁら" 120 }, 121 "もぎたてライム":{ 122 "brand":"Candy Alamode", 123 "character":"南 みれぃ" 124 }, 125 "もぎたてオレンジ":{ 126 "brand":"Candy Alamode", 127 "character":"真中 らぁら" 128 } 129 }, 130 "live": { 131 "任意のID_A": { 132 "MD": "Let`s GOプリパラ", 133 "coordinates":{ 134 "キューティーリボン": true 135 }, 136 "time": { 137 "start_at": "20:00", 138 "end_at": "23:00" 139 }, 140 "episode": "任意のID1", 141 "song": "Make it!", 142 "team":"らぁら & みれぃ" 143 }, 144 "任意のID_B": { 145 "MD": "Let`s GOプリパラ", 146 "coordinates":{ 147 "ワンダーランドマカロン": true 148 }, 149 "time": { 150 "start_at": "20:00", 151 "end_at": "23:00" 152 }, 153 "episode": "任意のID2", 154 "song": "Make it!", 155 "team":"らぁら & みれぃ" 156 }, 157 "任意のID_C": { 158 "MD": "もぎたて!スイーツパーク", 159 "coordinates": { 160 "もぎたてライム":true , 161 "もぎたてオレンジ": true 162 }, 163 "time": { 164 "start_at": "20:00", 165 "end_at": "23:00" 166 }, 167 "episode": "任意のID3", 168 "song": "ま~ぶるMake up a-ha-ha!", 169 "team": "らぁら & みれぃ" 170 } 171 } 172}
補足
何か根本的に間違えている可能性があるので,遠慮なく指摘していただけると助かります.
よろしくお願いいたします.
あなたの回答
tips
プレビュー