【问题标题】:Database design for banks银行数据库设计
【发布时间】:2016-12-05 11:44:05
【问题描述】:

我在数据库中有银行、产品和 Rate_Term 实体。

每家银行都有多种产品,例如短期存款、长期存款。每个产品都有不同的费率条款,例如 30 天、60 天、90 天、180 天和 360 天。

Bank、Product 和 Rate_Term 下的每日利率会发生变化。因此,今天的费率如下所示:

我设计了如下表格:

银行

  • 身份证
  • 代码
  • 姓名

产品

  • 身份证
  • 代码
  • 姓名

银行_产品

  • 身份证
  • bank_id
  • product_id

Rate_Term

  • 身份证
  • 期限(30、60、90....)

费率(每日费率)

  • 身份证
  • bank_product_id(来自 Bank_Product 表)
  • rate_term_id(来自 Rate_Term 表)
  • 日期
  • 率(百分比)

我的设计好吗? 我应该为 Bank_Product_Rate_Term 准备另一个表吗?

提前致谢, 阿瑞芬

【问题讨论】:

    标签: database-design relational-database


    【解决方案1】:

    您的报告(从某个日期开始)具有给定银行产品期限三元组的利率。因此,利率可能取决于其银行、产品和期限。您建议使用(忽略日期)(银行产品)-期限利率三元组的表格。这给出了一个取决于银行、产品和期限的利率。因此,您当前的设计通常是足够的。添加日期时仍然如此。

    这正是最近的问题How can I make a schedule table for instructor from tables createdHow to join section table with ERDigram 中的问题。 (您甚至都有一份初始报告,其中包含来自网格中一个维度的条目,其中一个维度在顶部变化,来自多个其他维度的子行在行中变化,一个维度实际上不在报告中。)

    最好在数据库之外的业务中使用永久唯一标识符。但是您的 代码 似乎可以做到这一点。 terms 由它们的天数标识。银行产品代码对标识银行产品对。所以不清楚为什么/你需要 any ids:

    Bank(code, name) -- PK (code)
    Product(code, name) -- PK (code)
    Bank_Product(bank_code, product_code)
        -- PK (bank_code, product_code)
        -- FK (bank_code) references Bank (code)
        -- FK (product_code) references Product (code)
    Rate(bank_code, product_code, term, date, rate)
        -PK (bank_code, product_code, term, date, rate)
        -FK (bank_code, product_code) references Bank_Product
    

    (如果术语不只是 Rate 中的术语,那么您还需要 Term(term) -- PK (term) 和 Rate 中的 FK (term) references Term。)

    PS:有一个有趣的约束表格代表像您这样的报告,如果(与您的示例报告一致)它有一个来自一个维度的网格条目,用于(子行) 来自其他一些维度的值。约束是在所有其他维度上投影表会连接贡献这些值的表。

    【讨论】:

    • 非常感谢您的回复。
    • @Arefin 感谢 cmets 不鼓励,但鼓励投票(单击三角形/箭头)和接受(单击复选标记)。
    猜你喜欢
    • 2013-03-22
    • 2011-03-16
    • 1970-01-01
    • 2020-07-25
    • 2013-01-04
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多