2017-06-27 34 views
-1

我歡迎通用的答案,但我還將提供我的具體情況稍微抽象版本不管怎樣,如果有json(b)列,哪些數據應該還有自己的列?

我有一個使用祖先寶石自我組織成的地圖和導航目的的樹頁面模型

每個頁面都有一個jsonb列,用於其他選項,但是有一些值我不確定它們是否應該在jsonb列中或者是單獨的數據類型中。

  • 隱藏:布爾
    如果爲true,頁面將不會被包括在導航菜單。
    它將主要被訪問在整個樹操作連同其他數據
    我在想這應該是一個列允許從查詢中輕鬆剔除隱藏頁面。

  • 重定向:字符串
    如果任何值爲零,將重定向到該值而不是呈現該頁面的內容。
    我不希望經常使用它,但是每次加載頁面時都會讀取它的值,這可以證明列是正確的。

我也願意就爲什麼在這裏會爲jsonb的解釋是一個壞主意,但是從一個「假設」的角度來看我還是想回答,其中必定存在一個jsonb列。

+1

看看[問]和[幫助/話題] – pvg

回答

0

使用單獨的列,如果:

  • 他們是有意義的唯一密鑰;
  • 它們是外鍵;
  • 他們很可能在不改變
  • 他們從更豐富的數據類型有利於數據的其餘部分的變化進行更新了很多,語義
  • 他們DB結構沒有有效載荷數據
  • 的一部分
  • 他們可能對指數有用謂詞

有時也值得分裂出來的索引,但表達指數,GIN和依據等作出這樣的不那麼重要。

有時候需要將JSON有效負載內的數據作爲單獨的列進行復制,並使用觸發器來保持該副本。通過這種方式,您可以將其保留在有效內容中,同時將副本保留爲單獨列以用作索引謂詞或任何其他內容。

相關問題