2010-08-12 13 views
0

今天我重構了一些代碼,並重新訪問了一個老朋友Address類(見下文)。在我看來,在我們的應用程序中,我們沒有對地址做任何特殊處理 - 沒有查詢,只有輕量級驗證和頻繁序列化到JSON。從開發者角度來看,唯一的「有用」屬性是標籤和人員。因此,我考慮重構Address模型以使用自定義AddressProperty(見下文),這讓我覺得這是一件好事,但我沒有看到任何引人注目的優勢。設計高爾夫:在appengine中建模一個地址,又名AddressProperty?

你會選擇哪種方法,爲什麼以及什麼權衡來指導這個決定?

# a lightweight Address for form-based CRUD 
# many-to-one relationship with Person objects 
class Address(db.Model): 
    label=db.StringProperty() 
    person=db.ReferenceProperty(collection_name='addresses') 
    address1=db.StringProperty() 
    address2=db.StringProperty() 
    city=db.StringProperty() 
    zipcode=db.StringProperty() 


# an alternate representation -- worthwhile? tradeoffs? 
class Address(db.Model): 
    label=db.StringProperty() 
    person=db.ReferenceProperty(collection_name='addresses') 
    details=AddressProperty() # like db.PostalAddressProperty, more methods 
+0

兩件事之間的選擇不是「高爾夫」:) – kennytm 2010-08-12 20:34:47

+0

你可以添加自己的選擇 – 2010-08-12 20:35:57

+3

一個優點是你可以抽象出所有地址都是美國人的假設。 – 2010-08-12 20:36:01

回答

0

如果你想成爲一個有點不同,你總是可以在一個表中的數據存儲的結構,然後對查找另一個表和元數據 alt text

+0

AAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaa !!!!!!! – unbeli 2010-08-13 09:34:13

1

既然你不需要查詢在地址上,並且考慮到它們往往相當小(相對於一個大的二進制blob),我會建議與後者一起。這將節省空間和時間(取得它) - 唯一真正的缺點是你必須自己實施財產。

相關問題