我正在为保险业开发一个 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))
对这些数据进行非规范化应该很容易维护,因为费率通常最多每月更新一次。所有价值大于 100 美元的请求将始终在主表中查找并计算。
我的问题是:
1. 我最好将总和值存储为 DECIMAL(9,2) 还是存储在 BIGINT 中的美分值?
2. 这种反规范化方法涉及在可能的 20 个表中存储 10,001 个值(0.00 美元到 100.00 美元,增量为 0.01 美元)。这可能比查找 percent_premium 并执行计算更有效吗?- 还是我应该坚持使用主表并进行计算?