GAE建模关系选项

时间:2010-04-07 04:16:29

标签: google-app-engine data-modeling entity relationship

我需要模拟以下情况,我似乎无法找到一个 关于如何“正确”为谷歌应用程序做这个一致的例子 发动机。

假设我遇到如下情况:

Company 1 -----> M Store

一家公司有一到多家商店。每家商店都有一个地址组成 地址行1,城市,州,国家,邮政编码等。

确定。让我们说我们需要创建一个“审计”。审计是针对a 公司,可以跨越一对多的目光。

类似于:

Audit 1 ------> 1 Company
      1 ------> M Store

现在我们需要根据商店查询所有“审核” “地址”,以便将“审计员”发送到正确的位置。

似乎有很多这样的文章:

http://code.google.com/appengine/articles/modeling.html

其中给出了创建“ContactCompany”模型类的示例。 但他们也说你应该使用这种关系 只有当你“真的需要”和“关心”表现时才会有。

我也经常阅读 - 你应该尽可能地反规范化 因此可以将所有“可查询”数据移动到审计中 类。

那么您认为什么是解决这个问题的最佳方法?

我已经看到有一个Expando类,但我不确定是不是 这是“最好”的选择。

对此的任何帮助或想法都将完全受到赞赏。

提前致谢, 马特

1 个答案:

答案 0 :(得分:1)

class Company(db.Model):
   name = db.StringProperty()

class address(db.Model):
   address = db.PostalAddressProperty()

class store(db.Model):
   company = db.ReferenceProperty(Company)
   address = db.ReferenceProperty(Address)

现在您可以按

查询所有公司商店
company_oject.address_set.all().filter().fetch()

除非它是具有数千个商店的MNC,否则此查询在大多数情况下都可以正常工作。

http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html#References

进一步帮助。