我正在尝试为 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
集合中的每一个并查询父母,只是为了得到排序的日期。
我只需要硬着头皮去规范化吗?我尝试复制date
in RentalData
,并根据需要使用 parent() 以在我需要其中的属性时获取相应的Rental
属性。它有效,但我担心我只是采取简单的方法。