2010-04-07 3 views
0

Мне нужно смоделировать следующую ситуацию, и я не могу найти подходящий пример о том, как это сделать «правильно» для приложения Google .Параметры отношения моделирования GAE

Предположит, что у меня есть простая ситуация, как следующее:

Company 1 -----> M Store 

Компания имеет один для многих магазинов. Каждый магазин имеет адрес, состоящий из адресной строки 1, города, штата, страны, почтового индекса и т.д.

Ok. Допустим, нам нужно создать «Аудит». Аудит предназначен для компании и может быть от одного до многих.

Так что-то вроде:

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

Теперь мы должны запросить все «проверки» на основе магазина «адрес» для того, чтобы отправить «Аудитор» в нужных места.

Там, кажется, много статей, как этот:

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

которые дают примеры создания «КонтактКомпания» класс модели. Однако они также говорят, что вы должны использовать такие отношения только тогда, когда вам «действительно нужно» и «заботиться» о производительности.

Я также читал - часто - что вы должны денормализовать столько, сколько возможно, тем самым перемещая все «запрашиваемые» данные в класс Аудита .

Так что бы вы предложили как лучший способ решить эту проблему?

Я видел, что есть класс Expando, но я не уверен, что это вариант «лучший» для этого.

Любая помощь или мысли об этом были бы полностью оценены.

Заранее спасибо, Matt

ответ

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() 

, если это не МНК с тысячами магазина, этот запрос должен работать нормально в большинстве случаев.

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

помогает в дальнейшем.

+0

Спасибо за ваш ответ. – Sway