0

我正在尝试为 Google App Engine 重构一个关系数据库,但在对一组关系进行建模时遇到了问题,这种方式可以让我以一种有效的方式查询我需要的数据。

作为一个人为的例子,假设我有以下模型:

class Rental(db.Model):
    # ancestor of one or more RentalDatas
    date = db.DateProperty()
    location = db.IntegerProperty()
    # + customer, etc

class RentalData(db.Model):
    # a Rental is our parent
    unicorn = db.ReferenceProperty(Unicorn, collection_name='rentals')
    mileage_in = db.FloatProperty()
    mileage_out = db.FloatProperty()
    # + returned_fed, etc

class Unicorn(db.Model):
    name = db.StringProperty()
    color = db.IntegerProperty()
    # 'rentals' collection from RentalData

每次出租都可以包括多个独角兽,所以如果我能帮上忙,我宁愿不合并Rental和模型。RentalData我几乎总是从一个给定的开始Unicorn,并且我希望能够查询,比如说,独角兽是否是在最后x租赁中返回的,而不必遍历RentalData独角兽rentals集合中的每一个并查询父母,只是为了得到排序的日期。

我只需要硬着头皮去规范化吗?我尝试复制datein RentalData,并根据需要使用 parent() 以在我需要其中的属性时获取相应的Rental属性。它有效,但我担心我只是采取简单的方法。

4

0 回答 0