代码之家  ›  专栏  ›  技术社区  ›  SidC

需要开发SQL Server 2005数据库来存储保险费率

  •  0
  • SidC  · 技术社区  · 15 年前

    大家晚上好,

    一位客户要求我开发一个Web应用程序,作为他现有网站的一部分,该网站内置了ASP.NET 3.5,使他的经纪人能够为潜在的客户群生成报价。这些报价将需要使用存储在SQL Server 2005数据库中的费率表来派生。

    表结构如下:

    [dbo].[PlanRates](
    [AgeCategory] [int] NULL,
    [IndustryType] [int] NULL,
    [CoverageType] [int] NULL,
    [PlanDeductible] [float] NULL,
    [InpatientBenefit] [float] NULL,
    [Rate] [float] NULL,
    [OPMD15Copay] [float] NULL,
    [OPMD25Copay] [float] NULL
    

    问题:假设我在Web应用程序中使用页面验证来验证输入是否符合业务逻辑,那么您是否预计到与使用上述数据库表布局返回报价的Web应用程序相关的问题?如果是这样,你能建议一个更好的方法来安排我的桌子吗?

    任何一个编程了基于网络的保险报价系统的人都可以获得奖金。

    非常感谢您的帮助和指导。

    3 回复  |  直到 15 年前
        1
  •  3
  •   marc_s HarisH Sharma    15 年前

    我肯定会添加一个代理主键,例如 PlanRatesID INT IDENTITY(1,1) 使每个条目唯一可识别。

    其次,我认为“可扣除计划”、“住院病患福利”、“费率”字段是货币值,因此我肯定会将它们设置为 DECIMAL ,不是浮动。浮动不太准确,可能导致舍入误差。对于十进制,您还需要指定小数点前后的有效位数,例如 DECIMAL(12,3) 或者类似的。

    就这样!:)

        2
  •  2
  •   Gratzy    15 年前

    我建议使用参数化查询保存检索数据,以防止SQL注入。

    编辑

    看起来像

    [AgeCategory] [int] NULL,
    [IndustryType] [int] NULL,
    [CoverageType] [int] NULL,
    

    可能是外键,如果是这样,您可能不希望使它们可以为空。

        3
  •  1
  •   devio    15 年前

    可以为空的类别、类型和费率?

    “类别”和“类型”列是存储每种类型的附加信息的其他表的查阅字段。

    您应该检查哪些列是 真的? 可以为空,并定义如何处理空值。

    由于利率可能发生变化,您还应考虑表中的日期范围(validFrom、validTo datetime),或与上表关联的历史记录表,以确保可以重复以前的利率计算。(可能是法律/财务要求)