私は保険業界向けの Web API に取り組んでおり、保険の見積もりに適したデータ構造を考え出そうとしています。
データベースには、基本的に次の「評価」テーブルが既に含まれています。
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 ~ 4 あります [/編集]
goods_types のリストはめったに変更されず、ほとんどの保険のクエリには 100 ドル未満の商品が含まれます。このため、次の形式のテーブルを使用して非正規化することを検討していました ($0.00 から $100.00 までのすべての値)。
Table Name: tblRates[goodstype]
suminsured (DECIMAL(9,2)) Primary Key
premium (DECIMAL(9,2))
このデータの非正規化は維持が容易なはずです。レートは通常、多くても 1 か月に 1 回しか更新されないからです。$100 を超える値に対するすべてのリクエストは、常にプライマリ テーブルで検索され、計算されます。
私の質問は次のとおり
です。 1. 加算された値を DECIMAL(9,2) または BIGINT に格納されたセントの値として格納する方が良いですか?
2. この非正規化方法では、10,001 個の値 ($0.00 から $0.01 の増分で $100.00) をおそらく 20 個のテーブルに格納します。これは、percent_premium を調べて計算を実行するよりも効率的でしょうか? - または、メイン テーブルに固執して計算を行う必要がありますか?