GAE无需反规范化的结构化模型

2024-10-03 21:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为googleappengine重新构建一个关系数据库,但我在建模一组关系时遇到了一些问题,这些关系可以让我高效地查询所需的数据。你知道吗

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

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

每次租赁都可以包含多个独角兽,所以如果我能帮忙的话,我宁愿不把RentalRentalData模型结合起来。我几乎总是从一个给定的Unicorn开始,并且我希望能够查询,比如说,unicorn是否在上一次x租车时返回,而不必迭代unicorn的rentals集合中的每一个RentalData并查询父对象,只是为了得到排序的日期。你知道吗

我必须咬紧牙关去正常化吗?我尝试过在RentalData中复制date,并在需要属性时根据需要使用parent()来获取相应的Rental。这很管用,但我担心我只是走简单的路。你知道吗


Tags: 模型dbdatemodel关系etcclasscollection