我正在 appengine 中制作一个系统,但找不到在数据存储区中实现此功能的正确方法。我可以在普通的关系数据库中这样做,但就是无法理解这一点。
数据存储区中是一个实体,该实体每天都有“关闭”和“打开”时间。
到目前为止,这一切都很容易,但是:有时一天内可能会有 2 次“打开”和“关闭”时间。
任何人都可以就正确的实施提供一些建议吗?
我正在 appengine 中制作一个系统,但找不到在数据存储区中实现此功能的正确方法。我可以在普通的关系数据库中这样做,但就是无法理解这一点。
数据存储区中是一个实体,该实体每天都有“关闭”和“打开”时间。
到目前为止,这一切都很容易,但是:有时一天内可能会有 2 次“打开”和“关闭”时间。
任何人都可以就正确的实施提供一些建议吗?
由于您没有指定您使用的是 Java、Python 还是 Go,所以我将给您一个 Python 示例,但一般概念可以在任何一个中实现。
Python 具有包含“重复”属性标志的 NDB API(比 DB API 更新):https ://developers.google.com/appengine/docs/python/ndb/properties#repeated
当您重复某个属性时,“该属性采用基础类型的值列表,而不是单个值。”,因此您可以指定多个打开和关闭时间。
当您检索特定日期的信息时,您可以循环浏览列表以查看您处理此信息的时间是否介于打开/关闭窗口之一之间。如果找到一个打开/关闭,则中断循环并处理请求。
我强烈推荐的一件事是跟踪打开/关闭对并消除与验证的任何重叠。这将使您的处理更容易。
您可以创建一个模型来保存每对开闭日期,让我们将其命名为WorkingPeriod
。然后,在您的主要实体中,您可以拥有嵌入WorkingPeriod
值列表或Key
指向WorkingPeriod
实体的列表。这取决于哪种方法最适合您的需求。
希望这可以帮助!