2013-07-03 37 views
1

在您自己的觀點中,您如何設計蔚藍色的表格?特別是當表格可以與其他表格有一對多關係時。蔚藍表格中的邏輯表格設計

這裏是給定的數據:

由於是product表,與PartitionKeyRowkey
其中PartitionKey作爲Owner (the owner of the product) plus the categoryID

i.e: hashedowneridstringtype_Cellphone 

Rowkey作爲unique id of the product.

i.e: S6102DXMA2 

即Azure Table中的現有設計,並且我要創建下面的下面的表格。由於我沒有足夠的想法來反映它如何在天藍色,我必須使用關係表設計它:

產品可以有用戶的評論。

---------------------------------------------------------------------------------- 
Review table 

Fields: 
    ReviewID - long 
    Title  - string 
    Review  - string 
    OwnerID  - long 
    DatePosted - Date 
---------------------------------------------------------------------------------- 
ProductReview table 

Fields: 
    ProductID - long 
    ReviewID - long 
---------------------------------------------------------------------------------- 

用戶可以對評論意見。

---------------------------------------------------------------------------------- 
Comment table 

Fields: 
    CommentID - long 
    Comment  - string 
    OwnerID  - long 
    CommentDate - date 
    EmailUpdate - bool 
---------------------------------------------------------------------------------- 
    CommentReview table 

Fields: 
    ReviewID - long 
    CommentID - long 
---------------------------------------------------------------------------------- 

用戶能率的審查,評論和產品。

---------------------------------------------------------------------------------- 
Rating table 

Fields: 
    RatingID - long 
    Points  - double 
    RatedDate - date 
    OwnerID  - long 
---------------------------------------------------------------------------------- 
CommentRating table 

Fields: 
    CommentID - long 
    RatingID - long 
---------------------------------------------------------------------------------- 
ProductRating table 

Fields: 
    ProductID - long 
    RatingID - long 
---------------------------------------------------------------------------------- 

可能是什麼都在蔚藍的設計表時,我應該考慮的事情?

回答

2

在爲Azure中的存儲表進行設計時,應該考慮預期針對表運行的查詢。你需要真正快速地進行哪些查詢,哪些查詢可以慢得多,多長時間執行一次,他們需要進行多大程度的擴展等。

假設頻繁查詢是返回排序時間

Review table 

PartitionKey: ProductID 
RowKey: InvertedDatePosted+ReviewID 

Fields: 
    ReviewID - long 
    Title  - string 
    Review  - string 
    DatePosted - Date 
    OwnerID  - long 

如果你是一個等級排序,那麼你可能需要在RowKey評級,如果通過任一等級排序:對於給定的產品評價的列表中,我將通過構建您的評價表像開始或日期,那麼你可能需要有2個分開的評論表,一個按日期,另一個按評分鍵。

鑑於表連接相對較慢,您應該儘量減少它們發生的頻率。實現這一目標的一種方法是對數據進行非規範化處理,例如,在每個評論中包含您的評論所有者名稱和圖片網址。這意味着獲得評論列表的查詢將不必加入以獲取評論者的詳細信息,但是評論者更改他的名字時的更新速度會慢得多。

Review table 

Fields: 
    ReviewID - long 
    Title  - string 
    Review  - string 
    DatePosted - Date 
    OwnerID  - long 
    OwnerName - string 
    OwnerImgUrl - string 

正如你可能也想考慮使用聯邦Azure的SQL數據庫,周圍的ProductID水平縮放的替代品。

+0

+1。感謝這個想法。據我所知,表的數量越少越好,但我仍然需要考慮可能針對的查詢數量。 – fiberOptics