2016-12-27 25 views
0

選項1:哪個表是正確的數據庫設計?

Country  | Risk Category | Value 
USA   |  Health  | 0.75 
USA   |  Market  | 0.66 
USA   | Technology | 0.35 

選項2:到,而無需添加列時的變化來動態地添加允許新的風險類別:

Country  | Health Risk | Market Risk | Technology Risk 
USA   |  0.75 |  0.66 |  0.35 

選項1發生,但我必須運行算法來找到我要找的,因爲它不使用LINQ很好的工作值。

選項2:更容易在實體框架與工作,因爲一切都腳手架出來。但是,每次添加新類別時都需要更改數據庫。此外,可能有200多列。

哪個選項是最好的長期成功和可維護性?

回答

2

老實說,也不是最佳的長期&可維護性,但如果我不得不選擇我會去選擇2

既然你在國家實體和風險實體之間有多對多的關係,我會分開信息多一點,並且這樣做。

國家

ID   |  Name | 
1   |  USA  |  
2   | CANADA |  

風險

Id  |  Name  | 
1   |  Health | 
2   |  Market | 
3   | Technology | 

CountryRisk

CountryId | RiskId | Value | 
1   |  1 | 0.75 | 
1   |  2 | 0.66 | 
1   |  3 | 0.35 | 
1

選項2

如果每一個國家總是要有一個健康風險,市場風險和技術風險 - 你永遠不會冒險重複數據。數據庫應該從未重複數據。

老實說,我看不出有什麼好處選項1比選項2

+0

謝謝,我同意!作爲獎勵問題。初級軟件開發人員如何利用有限的數據庫設計經驗說服高級DBA?去選項2,而不是他們的選擇1設計? – HelloWorld1010

+0

我說做一些調查,看看人都有過類似的經歷。根據我的經驗,作爲一名初級軟件開發人員,你會試圖告訴一位高級開發人員,他們做了一場艱難的戰鬥,他們做錯了什麼。 :) –

+0

謝謝你的建議。我會說,我一直有同樣的經歷,你笑了 – HelloWorld1010