appengine でシステムを作成していますが、これをデータストアに実装する正しい方法が見つかりません。私は通常のリレーショナルデータベースでそうすることができましたが、これを理解することはできません.
データストアにはエンティティがあり、このエンティティには毎日の「閉店時間」と「開店時間」があります。
ここまでは簡単ですが、1 日に 2 回以上の「オープン」と「クローズ」が発生する場合があります。
誰でも正しい実装についてアドバイスを提供できますか?
appengine でシステムを作成していますが、これをデータストアに実装する正しい方法が見つかりません。私は通常のリレーショナルデータベースでそうすることができましたが、これを理解することはできません.
データストアにはエンティティがあり、このエンティティには毎日の「閉店時間」と「開店時間」があります。
ここまでは簡単ですが、1 日に 2 回以上の「オープン」と「クローズ」が発生する場合があります。
誰でも正しい実装についてアドバイスを提供できますか?
Java、Python、または Go で作業しているかどうかを指定しなかったので、Python の例を示しますが、一般的な概念はどちらでも実装できます。
Python には、「繰り返し」プロパティ フラグを含む NDB API (DB API よりも新しい) があります: https://developers.google.com/appengine/docs/python/ndb/properties#repeated
プロパティを繰り返し作成すると、「プロパティは、単一の値ではなく、基になる型の値のリストを取ります。」このように、複数の開閉時間を指定できます。
特定の日の情報を取得すると、リストをループして、これを処理している時間が開閉ウィンドウのいずれかの間にあるかどうかを確認できます。1 つのオープン/クローズが見つかった場合は、ループを中断して要求を処理します。
私が強くお勧めすることの 1 つは、開始/終了のペアを追跡し、検証との重複を排除することです。これにより、処理が容易になります。
開閉日の各ペアを保持するモデルを作成できます。名前を付けましょうWorkingPeriod
。WorkingPeriod
次に、メイン エンティティで、埋め込まれた値のリストまたはエンティティKey
を指すリストのいずれかを持つことができますWorkingPeriod
。どのアプローチがニーズに最も適しているかによって異なります。
お役に立てれば!