0

我目前正在使用Python在AppEngine上構建一個網站,並且我必須在數據存儲上存儲一些信息。Google APP引擎數據存儲設計

我所有的信息都在三個不同的類別拆分如下:

1°/ - 文章(主頁新聞條目)。 2°/ - 產品(產品頁面描述條目)。 3°/ - 導航(包含所有標題菜單條目)。

現在,我存儲他們這樣的:

from google.appengine.ext import db 

class article(db.Model): 

    title = db.StringProperty() 
    body = db.TextProperty() 
    author = db.StringProperty() 
    aside = db.StringProperty() 
    comment = db.StringProperty() 
    date = db.DateProperty(auto_now_add=True) 


class navigation(db.Model): 

    title = db.StringProperty() 
    comment = db.StringProperty() 
    link = db.StringProperty() 

class products(db.Model): 

    title = db.StringProperty() 
    body = db.TextProperty() 
    author = db.StringProperty() 
    aside = db.StringProperty() 
    comment = db.StringProperty() 
    date = db.DateProperty(auto_now_add=True) 

我知道這是不是優化,你可以看到,我的產品類是同一個作爲文章。我想我可以從第一條中得出結論,或者從第一條中得出結論,但我不確定。

所以我的問題是:

我需要使用命名空間嗎? (我想清楚地將產品與產品分開)。

這種數據存儲的通常設計是什麼?

我的文章body屬性永遠不會超過50個單詞,我怎麼能限制stringProperty範圍?在我致電此屬性期間是否必須設置它,或者是否有任何選項可以使用DB類的默認方法?

非常感謝。

回答

1

如果我沒理解:一個作家可以寫/發表評論文章,其具有的描述和其他屬性約一(?只有一個)的產品,所以我想我們應該有這樣的事情

class products(db.Model): 
    name_product = db.StringProperty() # For Example 
    description_product = db.StringProperty() # For Example 


class article(db.Model): 
    my_product = db.ReferenceProperty(products, required=True) 

    # Properties of the article 
    title = db.StringProperty() 
    body = db.TextProperty() 
    author = db.StringProperty() 
    aside = db.StringProperty() 
    comment = db.StringProperty() 
    date = db.DateProperty(auto_now_add=True) 

在一篇文章涉及多個產品的情況下,您可以創建另一個用於映射文章和產品的數據庫模型。由於一些產品可以在幾個文章中mentionned,我們將有:

class products(db.Model): 
    name_product = db.StringProperty() # For Example 
    description_product = db.StringProperty() # For Example 


class article(db.Model): 
    # Properties of the article 
    title = db.StringProperty() 
    body = db.TextProperty() 
    author = db.StringProperty() 
    aside = db.StringProperty() 
    comment = db.StringProperty() 
    date = db.DateProperty(auto_now_add=True) 

class map_Article_Products(db.Model): 
    my_article = db.ReferenceProperty(article, required=True) 
    my_product = db.ReferenceProperty(products, required=True) 

注意,DB模式「的文章」在這種情況下的變化

+0

不完全。 實際上,文章只是包含在幻燈片放映區中的新聞,所以文字只是一個簡短的文字。 和產品是產品說明,但產品的模式是相同的文章。除了身體比500個字符更長以外,它是一個TextProperty。 –