2013-02-17 30 views
1

我們目前在我們的系統中有一個設置層次結構,允許爲個人用戶和設置組保存設置(每個用戶可以綁定到一個設置組,但設置組位於嵌套集中,因此我們查詢樹來檢查來自父設置組的繼承值)或客戶級別設置(每個用戶可以綁定到一個客戶)。SQL表結構 - 如何設計?

目前我們有三個表存儲的設定值,每個級別:

  • user_setting_values
  • setting_group_setting_values
  • customer_setting_values

我已經被管理層問(也是花花公子誰最初編寫系統)將這些表合併成一個包含所有設置的表。除了「把所有的東西都放在一張桌子上是合理的」之外,他還沒有提出一個特別好的理由。

那麼這是一個好主意嗎?優缺點都有什麼?

+3

您是否考慮過創建一個視圖以保持老闆滿意,他可以根據自己的意願查詢組合表視圖,而無需實際組合底層表。要了解更多有關意見檢查:http://en.wikipedia.org/wiki/View_(database) – alalani 2013-02-17 10:18:07

+2

爲了顯示當前的形式更好,考慮爭取所請求的形式:1.重複數據; 2.丟失信息/功能或; 3.(較弱)需要更多的NULL值。 – 2013-02-17 10:22:52

+0

@alalani在一個地方看它們並不是一個真正的問題,更多的是他認爲建築是錯誤的,因爲它們在3個獨立的表格中而不是一個。感謝評論。 – MeatPopsicle 2013-02-17 10:26:16

回答

0

臨:以下表
缺點:總是一個好主意,以避免空值,通常concolidating不同程度的導致空值

如果concolidated到一個表通常兩種解決方案有實施

  1. 如果設置的類型每個級別相同,則使用類型列,值反映哪些級別的數據與之相關,例如用戶,組或客戶。

  2. 展開的列數,如果設置類型爲每平不同

空值用於指示給定列

N/A值。如果設置的類型爲是/否存儲值作爲布爾可能會很方便。