MySQL データベースを使用するプロジェクトがあり、さまざまなデータセットをアップロードできるようにしたいと考えています。レストランのレビューアグリゲーターを構築しているとしましょう。そのため、入手できるすべてのレストラン レビュー ソースを追加し、すべての情報を保持したいと考えています。
テーブル review_sources があります
=========================
| id | name |
=========================
| 1 | Zagat |
| 2 | GoodEats Magazine|
| ... |
| 50 | Allergy News |
=========================
テーブルレビューがあるとしましょう
=====================================================================
| id | Restaurant Name | source_id | Star Rating | Description |
=====================================================================
| 0 | Joey's Burgers | 1 | 3.5 | Wow! |
| 1 | Jamal's Steaks | 1 | 3.5 | Yummy! |
| 2 | Jenny's Crepes | 1 | 4.5 | Sweet! |
| .... |
| 253| Jeeva's Curries | 3 | 4 | Spicy! |
=====================================================================
ここで、誰かが「アレルギー ニュース」からのレビューを追加したいとします。彼らは「ナッツフリー」というフィールドを持っています。または、レビューのソースは、カシュルートの遵守、ハラールの遵守、またはビーガンフレンドリーの程度を説明することができます. 私は設計者として、将来のデータ ソースが持つ可能性のあるオプション フィールドを知りません。質問に答えられるようになりたい:
- Zagat レビューのすべてのフィールドは何ですか?
- レビュー id=x の場合、オプション フィールド「ビーガン フレンドリー」の値は何ですか?
では、これらの異種のデータ ソースを処理し、これらのクエリに応答できるスキーマを設計するにはどうすればよいでしょうか? NoSQL を使用しない理由は、特定の種類の正規化が必要であり、これが既存の MySQL ベースのプロジェクトの一部であるためです。