2016-04-02 9 views
1

私は次のような状況のためにMySQLスキーマを構築しようとしています。配送経路のためのMySQLデータベーススキーマ、複雑さ回避

本はロケーションAからロケーションBからいくつかの他の場所を経由して配信されています。例えば、バンクーバーからロサンゼルスまでの本については、バンクーバーからシアトル、ポートランド、ロサンゼルス(ルート1)へ行くことができます。また、バンクーバーからカルガリー、ブレイン、シアトル、ロサンゼルス)。すべての本のために

は、私はそれが通過した場所を追跡したいと思い

  • を配信しました。
  • 私は、本が "on-time"または "late"の各地に到着したかどうかを把握したいと思っています。

その後、特定の書籍に関する情報をプルアップすると、その書籍の発送経路が表示されます。同様に、私はカルガリー(または他の場所)を通して出荷された本を引き上げることができます。また、私は同じ本の複数のコピーで取られた別の配送ルートを表示することができます。

すでに、このためのMySQLスキーマは非常に複雑に聞こえ始めています。私は、外部キーと結合操作を適切に使用することで、何かを有効にできることを理解しています。

しかし、コミュニティがこの情報を整理するためのより良い方法を推奨できるかどうかは疑問です。 MySQLはこの仕事に適していますか?私はこの情報を外部XMLファイルに保存しようとするべきですか?または、NoSQLのアプローチを検討する必要がありますか?コメントは大歓迎です。都市、時間、および時間経路上のインジケータ - 文書は、経路情報データの配列が含まれています

{ 
    _id:shippingIdHere, 
    book:{document containing book data} 
    routeInfo:[ {cityId(or just name), timeStamp, isOnTime}] 
} 

:のNoSQLソリューションの文書構造/スキーマの

+0

これは少しOTです。おそらくdbaフォーラムを試してみてください – Strawberry

答えて

0

は次のようになります。 次に、必要な情報を迅速に取得するためにrouteInfoフィールドにインデックスを追加する必要があります。行いますビューにタイムスタンプを

と作る| shipingId | | bookId | cityId | isOnTimeがこの

ROWIDのような表を作成することによって行うことができるよう

は、私は、MySQLには問題は見られません仕事。

+2

このnosqlスキーマは、コレクションごとに複数のインデックスをサポートするDBMSでのみ効率的に機能することを指摘する価値があります(そうでなければ複数のコレクションが必要です)。 XMLは完全な非スターターです。 – symcbean

関連する問題