银行数据库设计

时间:2016-12-01 22:58:55

标签: database-design relational-database

我在数据库中有Banks,Products和Rate_Term实体。

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

银行,产品和Rate_Term下的日常汇率将发生变化。所以今天的费率将如下所示:

enter image description here

我设计了如下表格:

银行

  • ID
  • 名称

产品

  • ID
  • 名称

Bank_Product

  • ID
  • bank_id
  • PRODUCT_ID

Rate_Term

  • ID
  • 学期(30,60,90 ......)

费率(按日费率计算)

  • ID
  • bank_product_id(来自Bank_Product表)
  • rate_term_id(来自Rate_Term表)
  • 日期
  • 费率(百分比)

我的设计好吗? 我应该为Bank_Product_Rate_Term提供另一个表吗?

提前致谢, Arefin

1 个答案:

答案 0 :(得分:0)

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

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

在数据库外部的业务中使用永久唯一标识符是很好的。但您的代码似乎是这样做的。 条款以其天数标识。银行产品代码对识别银行 - 产品对。所以不清楚为什么/你需要任何 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)和费率FK (term) references Term。)

PS:表上有一个有趣的约束表示像你这样的报告if(与你的示例报告一致)它有一个网格条目,从一个维度为每个可能的组合(subrow) )来自其他一些维度的价值观。约束是将表格投影到所有其他维度上,可以为表格提供这些值的连接。