【问题标题】:What is the database schema of a one-to-one relationship involving a weak entity set?涉及弱实体集的一对一关系的数据库模式是什么?
【发布时间】:2013-02-26 05:19:30
【问题描述】:

这是我的问题:

“LoanRequest”在批准后变为“贷款”。


在这里,将有 2 个表:LoanRequest & Loan

LoanRequest 的键是

 {RequestDate, Borrower}

考虑到“贷款”是一个弱实体集,贷款的键应该是{ApprovalDate, Borrower, RequestDate},然而,一个键决定了实体的其余属性。那么,这里{RequestDate, Borrower}可以单独确定“贷款”,那为什么{ApprovalDate, Borrower, RequestDate}是关键呢?

另外,既然 Loan 实际上是一个批准的贷款请求,为什么我们不能认为 Loan “是” LoanRequest?

【问题讨论】:

  • “'LoanRequest' 一经批准就变成了 'Loan'。” 如果你要成为一个冷酷的数据库老兄,你就必须停止这样说.贷款请求在获得批准后不会不复存在。贷款申请是一回事;批准的贷款申请是另一回事,不管你怎么称呼它。

标签: sql database-design relational-database entity-relationship database-schema


【解决方案1】:

大概这不是(强制性)1-1 关系,因为并非所有贷款请求也是批准的贷款?我希望关系是 1 - 0/1。

如果借款人每天只能申请一笔贷款确实是一条业务规则,那么 {Borrower, RequestDate} 似乎是贷款和已批准贷款的候选键。如果 {Borrower, RequestDate} 是候选键,则 {ApprovalDate, Borrower, RequestDate} 不能也是键 - 键必须是不可约的。

写下您打算通过数据模型表示的事实类型和业务规则。在您确定想要图表显示的内容之前,您似乎已经陷入了 ER 图的局限性。

【讨论】:

    【解决方案2】:

    你想太多了,这通常会让你走错路。

    1. 没有批准日期的贷款不存在。那么,借款人和请求日期如何告诉您有关不存在的贷款的任何信息?你不觉得钥匙不错吗?

    2. 贷款请求不是贷款,而是请求。它们具有不同的属性,并且在业务中服务于两个不同的目的。

    【讨论】:

    • 是的...那么,贷款请求的键是 {RequestDate, Borrower} 还是 {ApprovalDate, Borrower, RequestDate}?我很困惑,因为根据@sqlvogel {RequestDate,Borrower} 将是 Loan 和 LoanRequest 的关键。但是您说,“借款人和请求日期如何告诉您有关不存在的贷款的任何信息”?
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2012-05-26
    • 2012-12-31
    相关资源
    最近更新 更多