通过以下实体关系结构,我很难弄清楚LOAN和ITEM实体之间的关系是否有效?
LOAN的弱实体使用“loan_dateLeant”的部分键和来自CUSTOMER和ITEM的主键来形成LOAN主键。 然而,贷款与ITEM有“一对多”的关系,因为贷款可以包含多个项目。 但肯定这意味着如果借出多个项目,那么贷款记录的部分主键将有两个item_id值?
答案 0 :(得分:3)
你是对的,这是无效的 - 你不能使用多对多关系作为主键的定义部分。您可能会考虑做的是添加一个唯一的loan_id
,您可以将其作为主键的一部分,而不是贷款包含的项目;然后单个贷款由其客户和贷款ID(或客户,日期和贷款ID)定义。
如果这不起作用,请将date_leant
设为日期时间字段,并增加其精度,直到您不可能(在系统的约束范围内)同时发生两笔贷款 - 如何可能是单个客户在几毫秒内交易两笔不同的贷款?
注意这并不妨碍LOAN实体作为“一”参与关系;它只是意味着你不能使用“很多”来定义弱实体。
答案 1 :(得分:0)
实际上,你可以这样做。
请记住,LOAN的主键仅取决于日期+客户标识符。只要“可以制造”关系中的最大基数为“1”(即贷款仅与1个客户相关),您就可以使用LOAN来获得主键。
ITEM表将把贷款的(单个)标识符(customerID + date)作为ITEM中的外键。 LOAN的主键不受此建模的影响。