我正在爲保險行業開發一個Web API,並試圖找出合適的保險報價數據結構。SQL數據規範化/性能
該數據庫已經包含了一個 「評分」 表基本上是:
sysID (PK, INT IDENTITY)
goods_type (VARCHAR(16))
suminsured_min (DECIMAL(9,2))
suminsured_max (DECIMAL(9,2))
percent_premium (DECIMAL(9,6))
[Unique Index on goods_type, suminsured_min and suminsured_max]
[編輯] 每種類型的產品通常具有3 - 爲suminsured [/編輯] 4範圍
的goods_types列表很少發生變化,大多數保險查詢將涉及價值低於100美元的商品。正因爲如此,我正在考慮(通過到$ 100.00從$ 0.00的所有值)使用以下格式表去正火:
Table Name: tblRates[goodstype]
suminsured (DECIMAL(9,2)) Primary Key
premium (DECIMAL(9,2))
Denormalising這個數據應該是易於維護的利率一般只更新一次每月最多。所有價值> 100美元的請求將始終在主表中查找並計算。
我的問題是:
1.我最好將存儲的值作爲DECIMAL(9,2)或存儲在BIGINT中的分值?
2.此解除歸一化方法涉及在可能的20個表格中存儲10,001個值($ 0.00到$ 100.00以$ 0.01爲增量)。這可能比查找percent_premium和執行計算更有效嗎? - 或者我應該堅持主表並進行計算?
感謝您的回答。對於DECIMAL(9,2)中使用的存儲幣種值和使用BIGINT的幣值,您有任何想法嗎? – John 2009-02-02 11:00:43
其實,我不知道。我不太瞭解數據庫的具體情況,以瞭解哪個最有效。不要相信我;) 我最初的想法是,整數更快,如果你乘,但我不知道bigint如何反應分裂 - 取決於你如何存儲結果,你可能會失去數據。 – 2009-02-02 11:44:12