我在数据库中有Banks,Products和Rate_Term实体。
每家银行都有多种产品,如短期存款,长期存款。每个产品都有不同的费率条款,如30天,60天,90天,180天和360天。
银行,产品和Rate_Term下的日常汇率将发生变化。所以今天的费率将如下所示:
我设计了如下表格:
我的设计好吗? 我应该为Bank_Product_Rate_Term提供另一个表吗?
提前致谢, Arefin
答案 0 :(得分:0)
您的报告(从某个日期开始)具有给定银行产品期限三元组的费率。因此,利率可能取决于其银行,产品和期限。您建议使用(忽略日期)(银行产品) - 期限三元组的表格。这给出了一个取决于银行,产品和期限的费率。所以你目前的设计通常是足够的。添加日期时仍然如此。
这正是最近问题How can I make a schedule table for instructor from tables created和How 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) )来自其他一些维度的价值观。约束是将表格投影到所有其他维度上,可以为表格提供这些值的连接。