2017-02-24 33 views
0

我有一所擁有許多班級(1-10級)的學校,每個班級都有很多學生,我需要每年存儲學生的記錄這樣我可以更好地進行分區。所以它基本上是Class-> N年 - > N的學生。如何模擬此問題以將其存儲在Dynamo DB上我如何在Dynamo DB中建模1:N:N關係

回答

2

在NoSQL上,設計取決於查詢訪問模式(QAP)。正如你還沒有提到QAP,你想如何檢索數據。我假定了一個典型的場景並提供了下面的設計。

表:學生

分區鍵:學生證

排序關鍵字:一年

其他屬性:學生姓名,班級等

年被定義爲排序鍵,因爲學生可以在不同年份的多個年級(1-10)學習。對於例如,

  • 2010 - 他/她可以在5級
  • 2011 - 他/她可能是在6年級

在情況下,如果你想獲得的所有學生一年的ID,你可以年創建GSI(全球二級指數)。該指數

分區鍵:今年

如果您有任何其他訪問模式,請更新的問題。以便我們可以討論該特定查詢訪問模式(QAP)的答案。

+0

讓我把這個不同作爲一個商人,我運行多個商店,每個商店每天都有多個交易。每個交易包含一組訂購的產品。 作爲一名商人,我需要跟蹤我的庫存,管理賬戶/帳單等 – Bukhtawar

+0

在NoSQL中,關係並不重要。您需要提供訪問模式,即如何查詢數據庫表。示例:由店主或交易或商店進行查詢。這比關係更重要。你需要在這裏完全不同。設計NoSQL數據庫時,您需要刪除SQL設計帽。否則,它將無法正常工作。 – notionquest