2013-02-25 41 views
0

我有一個表,有很多領域保持它作爲一個表持有「總計」,例如:當鏈接表或多個字段

UserID | total_classA | total_classB | total_classC // and so on 

我能有第二個表但是有:

ClassType | Total | UserID 

但我真的不知道第二張桌子對於多對一的關係是多麼有益,首先我將不得不存儲更多行數據,並且我必須使用連接來選擇數據。

但很多事情我讀會建議有兩個表是最好的了一個表,有很多領域......這是爲什麼,因爲我看不到的優點是,在上述情況=/

+0

那麼,你需要在將來能夠添加'total_classD'嗎? 'classA','classB'或'classC'在數據庫的其他地方具有語義含義嗎? – 2013-02-25 03:23:30

+0

他們沒有意義,如果沒有,你們將來會有更多的班級。 – Sir 2013-02-25 03:25:08

回答

2

商店你的數據乾淨利落,就像你提出的「第二張桌子」一樣。

您總是可以使用PIVOT(取決於您的平臺)或專業查詢(如果需要時)獲得彙總列總顯示。

這樣做的最大好處就是無需改變你的表格結構,因爲你決定引入其他的類型。只需添加行(DML而不是DDL),您就可以擴展數據跟蹤功能。

查看second normal form獲取更多有關走這條路線的技術說明。

+0

所以它更多的是爲了方便設計而不是提高性能? – Sir 2013-02-25 04:00:28

+0

我會要求你展示一下你的「性能收益」指標。通過多個請求來阻止對更新單個記錄的爭用通常會降低更新速度,減少爭用更少的粒度數據。 – Tahbaza 2013-02-25 15:12:02